35
35
36
36
namespace godot {
37
37
38
+ struct GDExtensionInterface {
39
+ GDExtensionGodotVersion godot_version;
40
+
41
+ GDExtensionInterfaceGetGodotVersion get_godot_version;
42
+
43
+ GDExtensionInterfaceMemAlloc mem_alloc;
44
+ GDExtensionInterfaceMemRealloc mem_realloc;
45
+ GDExtensionInterfaceMemFree mem_free;
46
+
47
+ GDExtensionInterfacePrintError print_error;
48
+ GDExtensionInterfacePrintErrorWithMessage print_error_with_message;
49
+ GDExtensionInterfacePrintWarning print_warning;
50
+ GDExtensionInterfacePrintWarningWithMessage print_warning_with_message;
51
+ GDExtensionInterfacePrintScriptError print_script_error;
52
+ GDExtensionInterfacePrintScriptErrorWithMessage print_script_error_with_message;
53
+
54
+ GDExtensionInterfaceGetNativeStructSize get_native_struct_size;
55
+
56
+ GDExtensionInterfaceVariantNewCopy variant_new_copy;
57
+ GDExtensionInterfaceVariantNewNil variant_new_nil;
58
+ GDExtensionInterfaceVariantDestroy variant_destroy;
59
+
60
+ GDExtensionInterfaceVariantCall variant_call;
61
+ GDExtensionInterfaceVariantCallStatic variant_call_static;
62
+ GDExtensionInterfaceVariantEvaluate variant_evaluate;
63
+ GDExtensionInterfaceVariantSet variant_set;
64
+ GDExtensionInterfaceVariantSetNamed variant_set_named;
65
+ GDExtensionInterfaceVariantSetKeyed variant_set_keyed;
66
+ GDExtensionInterfaceVariantSetIndexed variant_set_indexed;
67
+ GDExtensionInterfaceVariantGet variant_get;
68
+ GDExtensionInterfaceVariantGetNamed variant_get_named;
69
+ GDExtensionInterfaceVariantGetKeyed variant_get_keyed;
70
+ GDExtensionInterfaceVariantGetIndexed variant_get_indexed;
71
+ GDExtensionInterfaceVariantIterInit variant_iter_init;
72
+ GDExtensionInterfaceVariantIterNext variant_iter_next;
73
+ GDExtensionInterfaceVariantIterGet variant_iter_get;
74
+ GDExtensionInterfaceVariantHash variant_hash;
75
+ GDExtensionInterfaceVariantRecursiveHash variant_recursive_hash;
76
+ GDExtensionInterfaceVariantHashCompare variant_hash_compare;
77
+ GDExtensionInterfaceVariantBooleanize variant_booleanize;
78
+ GDExtensionInterfaceVariantDuplicate variant_duplicate;
79
+ GDExtensionInterfaceVariantStringify variant_stringify;
80
+
81
+ GDExtensionInterfaceVariantGetType variant_get_type;
82
+ GDExtensionInterfaceVariantHasMethod variant_has_method;
83
+ GDExtensionInterfaceVariantHasMember variant_has_member;
84
+ GDExtensionInterfaceVariantHasKey variant_has_key;
85
+ GDExtensionInterfaceVariantGetTypeName variant_get_type_name;
86
+ GDExtensionInterfaceVariantCanConvert variant_can_convert;
87
+ GDExtensionInterfaceVariantCanConvertStrict variant_can_convert_strict;
88
+
89
+ GDExtensionInterfaceGetVariantFromTypeConstructor get_variant_from_type_constructor;
90
+ GDExtensionInterfaceGetVariantToTypeConstructor get_variant_to_type_constructor;
91
+ GDExtensionInterfaceVariantGetPtrOperatorEvaluator variant_get_ptr_operator_evaluator;
92
+ GDExtensionInterfaceVariantGetPtrBuiltinMethod variant_get_ptr_builtin_method;
93
+ GDExtensionInterfaceVariantGetPtrConstructor variant_get_ptr_constructor;
94
+ GDExtensionInterfaceVariantGetPtrDestructor variant_get_ptr_destructor;
95
+ GDExtensionInterfaceVariantConstruct variant_construct;
96
+ GDExtensionInterfaceVariantGetPtrSetter variant_get_ptr_setter;
97
+ GDExtensionInterfaceVariantGetPtrGetter variant_get_ptr_getter;
98
+ GDExtensionInterfaceVariantGetPtrIndexedSetter variant_get_ptr_indexed_setter;
99
+ GDExtensionInterfaceVariantGetPtrIndexedGetter variant_get_ptr_indexed_getter;
100
+ GDExtensionInterfaceVariantGetPtrKeyedSetter variant_get_ptr_keyed_setter;
101
+ GDExtensionInterfaceVariantGetPtrKeyedGetter variant_get_ptr_keyed_getter;
102
+ GDExtensionInterfaceVariantGetPtrKeyedChecker variant_get_ptr_keyed_checker;
103
+ GDExtensionInterfaceVariantGetConstantValue variant_get_constant_value;
104
+ GDExtensionInterfaceVariantGetPtrUtilityFunction variant_get_ptr_utility_function;
105
+
106
+ GDExtensionInterfaceStringNewWithLatin1Chars string_new_with_latin1_chars;
107
+ GDExtensionInterfaceStringNewWithUtf8Chars string_new_with_utf8_chars;
108
+ GDExtensionInterfaceStringNewWithUtf16Chars string_new_with_utf16_chars;
109
+ GDExtensionInterfaceStringNewWithUtf32Chars string_new_with_utf32_chars;
110
+ GDExtensionInterfaceStringNewWithWideChars string_new_with_wide_chars;
111
+ GDExtensionInterfaceStringNewWithLatin1CharsAndLen string_new_with_latin1_chars_and_len;
112
+ GDExtensionInterfaceStringNewWithUtf8CharsAndLen string_new_with_utf8_chars_and_len;
113
+ GDExtensionInterfaceStringNewWithUtf16CharsAndLen string_new_with_utf16_chars_and_len;
114
+ GDExtensionInterfaceStringNewWithUtf32CharsAndLen string_new_with_utf32_chars_and_len;
115
+ GDExtensionInterfaceStringNewWithWideCharsAndLen string_new_with_wide_chars_and_len;
116
+ GDExtensionInterfaceStringToLatin1Chars string_to_latin1_chars;
117
+ GDExtensionInterfaceStringToUtf8Chars string_to_utf8_chars;
118
+ GDExtensionInterfaceStringToUtf16Chars string_to_utf16_chars;
119
+ GDExtensionInterfaceStringToUtf32Chars string_to_utf32_chars;
120
+ GDExtensionInterfaceStringToWideChars string_to_wide_chars;
121
+ GDExtensionInterfaceStringOperatorIndex string_operator_index;
122
+ GDExtensionInterfaceStringOperatorIndexConst string_operator_index_const;
123
+
124
+ GDExtensionInterfaceStringOperatorPlusEqString string_operator_plus_eq_string;
125
+ GDExtensionInterfaceStringOperatorPlusEqChar string_operator_plus_eq_char;
126
+ GDExtensionInterfaceStringOperatorPlusEqCstr string_operator_plus_eq_cstr;
127
+ GDExtensionInterfaceStringOperatorPlusEqWcstr string_operator_plus_eq_wcstr;
128
+ GDExtensionInterfaceStringOperatorPlusEqC32str string_operator_plus_eq_c32str;
129
+
130
+ GDExtensionInterfaceXmlParserOpenBuffer xml_parser_open_buffer;
131
+
132
+ GDExtensionInterfaceFileAccessStoreBuffer file_access_store_buffer;
133
+ GDExtensionInterfaceFileAccessGetBuffer file_access_get_buffer;
134
+
135
+ GDExtensionInterfaceWorkerThreadPoolAddNativeGroupTask worker_thread_pool_add_native_group_task;
136
+ GDExtensionInterfaceWorkerThreadPoolAddNativeTask worker_thread_pool_add_native_task;
137
+
138
+ GDExtensionInterfacePackedByteArrayOperatorIndex packed_byte_array_operator_index;
139
+ GDExtensionInterfacePackedByteArrayOperatorIndexConst packed_byte_array_operator_index_const;
140
+ GDExtensionInterfacePackedColorArrayOperatorIndex packed_color_array_operator_index;
141
+ GDExtensionInterfacePackedColorArrayOperatorIndexConst packed_color_array_operator_index_const;
142
+ GDExtensionInterfacePackedFloat32ArrayOperatorIndex packed_float32_array_operator_index;
143
+ GDExtensionInterfacePackedFloat32ArrayOperatorIndexConst packed_float32_array_operator_index_const;
144
+ GDExtensionInterfacePackedFloat64ArrayOperatorIndex packed_float64_array_operator_index;
145
+ GDExtensionInterfacePackedFloat64ArrayOperatorIndexConst packed_float64_array_operator_index_const;
146
+ GDExtensionInterfacePackedInt32ArrayOperatorIndex packed_int32_array_operator_index;
147
+ GDExtensionInterfacePackedInt32ArrayOperatorIndexConst packed_int32_array_operator_index_const;
148
+ GDExtensionInterfacePackedInt64ArrayOperatorIndex packed_int64_array_operator_index;
149
+ GDExtensionInterfacePackedInt64ArrayOperatorIndexConst packed_int64_array_operator_index_const;
150
+ GDExtensionInterfacePackedStringArrayOperatorIndex packed_string_array_operator_index;
151
+ GDExtensionInterfacePackedStringArrayOperatorIndexConst packed_string_array_operator_index_const;
152
+ GDExtensionInterfacePackedVector2ArrayOperatorIndex packed_vector2_array_operator_index;
153
+ GDExtensionInterfacePackedVector2ArrayOperatorIndexConst packed_vector2_array_operator_index_const;
154
+ GDExtensionInterfacePackedVector3ArrayOperatorIndex packed_vector3_array_operator_index;
155
+ GDExtensionInterfacePackedVector3ArrayOperatorIndexConst packed_vector3_array_operator_index_const;
156
+ GDExtensionInterfaceArrayOperatorIndex array_operator_index;
157
+ GDExtensionInterfaceArrayOperatorIndexConst array_operator_index_const;
158
+ GDExtensionInterfaceArrayRef array_ref;
159
+ GDExtensionInterfaceArraySetTyped array_set_typed;
160
+
161
+ GDExtensionInterfaceDictionaryOperatorIndex dictionary_operator_index;
162
+ GDExtensionInterfaceDictionaryOperatorIndexConst dictionary_operator_index_const;
163
+
164
+ GDExtensionInterfaceObjectMethodBindCall object_method_bind_call;
165
+ GDExtensionInterfaceObjectMethodBindPtrcall object_method_bind_ptrcall;
166
+ GDExtensionInterfaceObjectDestroy object_destroy;
167
+ GDExtensionInterfaceGlobalGetSingleton global_get_singleton;
168
+ GDExtensionInterfaceObjectGetInstanceBinding object_get_instance_binding;
169
+ GDExtensionInterfaceObjectSetInstanceBinding object_set_instance_binding;
170
+ GDExtensionInterfaceObjectSetInstance object_set_instance;
171
+ GDExtensionInterfaceObjectCastTo object_cast_to;
172
+ GDExtensionInterfaceObjectGetInstanceFromId object_get_instance_from_id;
173
+ GDExtensionInterfaceObjectGetInstanceId object_get_instance_id;
174
+
175
+ GDExtensionInterfaceRefGetObject ref_get_object;
176
+ GDExtensionInterfaceRefSetObject ref_set_object;
177
+
178
+ GDExtensionInterfaceScriptInstanceCreate script_instance_create;
179
+
180
+ GDExtensionInterfaceClassdbConstructObject classdb_construct_object;
181
+ GDExtensionInterfaceClassdbGetMethodBind classdb_get_method_bind;
182
+ GDExtensionInterfaceClassdbGetClassTag classdb_get_class_tag;
183
+
184
+ GDExtensionInterfaceClassdbRegisterExtensionClass classdb_register_extension_class;
185
+ GDExtensionInterfaceClassdbRegisterExtensionClassMethod classdb_register_extension_class_method;
186
+ GDExtensionInterfaceClassdbRegisterExtensionClassIntegerConstant classdb_register_extension_class_integer_constant;
187
+ GDExtensionInterfaceClassdbRegisterExtensionClassProperty classdb_register_extension_class_property;
188
+ GDExtensionInterfaceClassdbRegisterExtensionClassPropertyGroup classdb_register_extension_class_property_group;
189
+ GDExtensionInterfaceClassdbRegisterExtensionClassPropertySubgroup classdb_register_extension_class_property_subgroup;
190
+ GDExtensionInterfaceClassdbRegisterExtensionClassSignal classdb_register_extension_class_signal;
191
+ GDExtensionInterfaceClassdbUnregisterExtensionClass classdb_unregister_extension_class;
192
+
193
+ GDExtensionInterfaceGetLibraryPath get_library_path;
194
+ };
195
+
38
196
namespace internal {
39
197
40
- extern " C" const GDExtensionInterface *gde_interface;
198
+ extern " C" GDExtensionInterface *gde_interface;
41
199
extern " C" GDExtensionClassLibraryPtr library;
42
200
extern " C" void *token;
43
201
@@ -51,28 +209,28 @@ enum ModuleInitializationLevel {
51
209
};
52
210
53
211
class GDExtensionBinding {
212
+ private:
213
+ static GDExtensionInterface gdextension_interface;
214
+
54
215
public:
55
216
using Callback = void (*)(ModuleInitializationLevel p_level);
56
217
57
218
static Callback init_callback;
58
219
static Callback terminate_callback;
59
220
static GDExtensionInitializationLevel minimum_initialization_level;
60
- static GDExtensionBool init (const GDExtensionInterface *p_interface , GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization);
221
+ static GDExtensionBool init (GDExtensionInterfaceGetProcAddress p_get_proc_address , GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization);
61
222
62
223
public:
63
224
static void initialize_level (void *userdata, GDExtensionInitializationLevel p_level);
64
225
static void deinitialize_level (void *userdata, GDExtensionInitializationLevel p_level);
65
226
66
227
class InitObject {
67
- const GDExtensionInterface *gde_interface ;
228
+ GDExtensionInterfaceGetProcAddress get_proc_address ;
68
229
GDExtensionClassLibraryPtr library;
69
230
GDExtensionInitialization *initialization;
70
231
71
232
public:
72
- InitObject (const GDExtensionInterface *p_interface, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) :
73
- gde_interface (p_interface),
74
- library (p_library),
75
- initialization (r_initialization) {}
233
+ InitObject (GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization);
76
234
77
235
void register_initializer (Callback p_init) const ;
78
236
void register_terminator (Callback p_init) const ;
0 commit comments