1 module godot.abi.core; 2 3 public import godot.abi.gdextension; 4 import godot.api.types; 5 6 7 @nogc nothrow: 8 extern (C): 9 10 alias godot_api = GDExtensionInterface; 11 12 // TODO: make sure it is propely loaded within extensions 13 __gshared GDExtensionInterface* _godot_api; 14 15 enum GODOT_API_VERSION = 1; 16 17 ////// MethodBind API 18 19 struct godot_method_bind { 20 GDExtensionMethodBindPtr ptr; // TODO 21 alias ptr this; 22 } 23 /* 24 struct godot_gdnative_api_version { 25 uint major; 26 uint minor; 27 } 28 29 struct godot_gdnative_init_options { 30 godot_bool in_editor; 31 ulong core_api_hash; 32 ulong editor_api_hash; 33 ulong no_api_hash; 34 void function(const godot_object p_library, const char *p_what, godot_gdnative_api_version p_want, godot_gdnative_api_version p_have) report_version_mismatch; 35 void function(const godot_object p_library, const char *p_what) report_loading_error; 36 godot_object gd_native_library; // pointer to GDNativeLibrary that is being initialized 37 const(godot_gdnative_core_api_struct)* api_struct; // contains all C function pointers 38 const(godot_string)* active_library_path; 39 } 40 41 struct godot_gdnative_terminate_options { 42 godot_bool in_editor; 43 } 44 */ 45 // Alignment hardcoded in `core/variant/callable.h`. 46 enum GODOT_SIGNAL_SIZE = 16; 47 48 struct godot_signal { 49 ubyte[GODOT_SIGNAL_SIZE] _opaque; 50 } 51 52 version (none) : alias godot_class_constructor = godot_object function(); 53 54 ////// GDExtension procedure types 55 alias godot_gdextension_init_fn = void function(godot_gdextension_init_options*); 56 alias godot_gdextension_terminate_fn = void function(godot_gdextension_terminate_options*); 57 alias godot_gdextension_procedure_fn = godot_variant function(void*, godot_array*); 58 59 alias native_call_cb = godot_variant function(void*, godot_array*); 60 61 // Types for function pointers. 62 alias godot_validated_operator_evaluator = void function(const godot_variant* p_left, const godot_variant* p_right, godot_variant* r_result); 63 alias godot_ptr_operator_evaluator = void function(const void* p_left, const void* p_right, void* r_result); 64 alias godot_validated_builtin_method = void function(godot_variant* p_base, const godot_variant** p_args, int p_argument_count, godot_variant* r_return); 65 alias godot_ptr_builtin_method = void function(void* p_base, const void** p_args, void* r_return, int p_argument_count); 66 alias godot_validated_constructor = void function(godot_variant* p_base, const godot_variant** p_args); 67 alias godot_ptr_constructor = void function(void* p_base, const void** p_args); 68 alias godot_validated_setter = void function(godot_variant* p_base, const godot_variant* p_value); 69 alias godot_validated_getter = void function(const godot_variant* p_base, godot_variant* r_value); 70 alias godot_ptr_setter = void function(void* p_base, const void* p_value); 71 alias godot_ptr_getter = void function(const void* p_base, void* r_value); 72 alias godot_validated_indexed_setter = void function(godot_variant* p_base, godot_int p_index, const godot_variant* p_value, bool* r_oob); 73 alias godot_validated_indexed_getter = void function(const godot_variant* p_base, godot_int p_index, godot_variant* r_value, bool* r_oob); 74 alias godot_ptr_indexed_setter = void function(void* p_base, godot_int p_index, const void* p_value); 75 alias godot_ptr_indexed_getter = void function(const void* p_base, godot_int p_index, void* r_value); 76 alias godot_validated_keyed_setter = void function(godot_variant* p_base, const godot_variant* p_key, const godot_variant* p_value, bool* r_valid); 77 alias godot_validated_keyed_getter = void function(const godot_variant* p_base, const godot_variant* p_key, godot_variant* r_value, bool* r_valid); 78 alias godot_validated_keyed_checker = bool function(const godot_variant* p_base, const godot_variant* p_key, bool* r_valid); 79 alias godot_ptr_keyed_setter = void function(void* p_base, const void* p_key, const void* p_value); 80 alias godot_ptr_keyed_getter = void function(const void* p_base, const void* p_key, void* r_value); 81 alias godot_ptr_keyed_checker = uint function(const godot_variant* p_base, const godot_variant* p_key); 82 alias godot_validated_utility_function = void function(godot_variant* r_return, const godot_variant** p_arguments, int p_argument_count); 83 alias godot_ptr_utility_function = void function(void* r_return, const void** p_arguments, int p_argument_count);