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);