diff options
author | Thomas Herzog <thomas.herzog@mail.com> | 2017-11-20 15:43:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-20 15:43:36 +0100 |
commit | 30a82e5e007dfa6eca0bc2021381beae57293b91 (patch) | |
tree | 33327035eff99dc07aaf7418054e5905241ea1d3 | |
parent | 14ff5aa6ee19ba00237c57ec177ba67075644600 (diff) | |
parent | 5d666319e3f3ca784658b1d7f45f5f9a09929583 (diff) |
Merge pull request #13094 from karroffel/gdnative-api-register-nativecall
[GDNative] add a way to register call types
-rw-r--r-- | modules/gdnative/gdnative.h | 4 | ||||
-rw-r--r-- | modules/gdnative/gdnative/gdnative.cpp | 4 | ||||
-rw-r--r-- | modules/gdnative/gdnative_api.json | 8 | ||||
-rw-r--r-- | modules/gdnative/include/gdnative/gdnative.h | 3 |
4 files changed, 16 insertions, 3 deletions
diff --git a/modules/gdnative/gdnative.h b/modules/gdnative/gdnative.h index 7781cf1e10..052ce1fef1 100644 --- a/modules/gdnative/gdnative.h +++ b/modules/gdnative/gdnative.h @@ -99,12 +99,10 @@ public: static void _bind_methods(); }; -typedef godot_variant (*native_call_cb)(void *, godot_array *); - struct GDNativeCallRegistry { static GDNativeCallRegistry *singleton; - inline GDNativeCallRegistry *get_singleton() { + inline static GDNativeCallRegistry *get_singleton() { return singleton; } diff --git a/modules/gdnative/gdnative/gdnative.cpp b/modules/gdnative/gdnative/gdnative.cpp index 34b73558d5..92a88e354b 100644 --- a/modules/gdnative/gdnative/gdnative.cpp +++ b/modules/gdnative/gdnative/gdnative.cpp @@ -115,6 +115,10 @@ godot_dictionary GDAPI godot_get_global_constants() { } // System functions +void GDAPI godot_register_native_call_type(const char *p_call_type, native_call_cb p_callback) { + GDNativeCallRegistry::get_singleton()->register_native_call_type(StringName(p_call_type), p_callback); +} + void GDAPI *godot_alloc(int p_bytes) { return memalloc(p_bytes); } diff --git a/modules/gdnative/gdnative_api.json b/modules/gdnative/gdnative_api.json index 0a1c5095d4..007c7955d4 100644 --- a/modules/gdnative/gdnative_api.json +++ b/modules/gdnative/gdnative_api.json @@ -5549,6 +5549,14 @@ ] }, { + "name": "godot_register_native_call_type", + "return_type": "void", + "arguments": [ + ["const char *", "call_type"], + ["native_call_cb", "p_callback"] + ] + }, + { "name": "godot_alloc", "return_type": "void *", "arguments": [ diff --git a/modules/gdnative/include/gdnative/gdnative.h b/modules/gdnative/include/gdnative/gdnative.h index e8d509508e..0a884e6106 100644 --- a/modules/gdnative/include/gdnative/gdnative.h +++ b/modules/gdnative/include/gdnative/gdnative.h @@ -274,6 +274,9 @@ typedef godot_variant (*godot_gdnative_procedure_fn)(godot_array *); ////// System Functions +typedef godot_variant (*native_call_cb)(void *, godot_array *); +void GDAPI godot_register_native_call_type(const char *p_call_type, native_call_cb p_callback); + //using these will help Godot track how much memory is in use in debug mode void GDAPI *godot_alloc(int p_bytes); void GDAPI *godot_realloc(void *p_ptr, int p_bytes); |