diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2023-05-16 17:26:31 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-16 17:26:31 +0200 |
| commit | 1c18413de00f1a6265b2b6c30175b2f6a434b574 (patch) | |
| tree | f0fe493a7fe33a07046f94fcb9ac69f1a4a2f186 /include/godot_cpp | |
| parent | 813827c26ae079a9c29302a0a4d4c53dc4d89c19 (diff) | |
| parent | a5c6ca592023fea7317c0c3fb54639036c66dd76 (diff) | |
| download | redot-cpp-1c18413de00f1a6265b2b6c30175b2f6a434b574.tar.gz | |
Merge pull request #1095 from dsnopek/gdextension-interface
Update to load function pointers for GDExtension interface
Diffstat (limited to 'include/godot_cpp')
| -rw-r--r-- | include/godot_cpp/classes/ref.hpp | 6 | ||||
| -rw-r--r-- | include/godot_cpp/core/binder_common.hpp | 6 | ||||
| -rw-r--r-- | include/godot_cpp/core/class_db.hpp | 2 | ||||
| -rw-r--r-- | include/godot_cpp/core/engine_ptrcall.hpp | 10 | ||||
| -rw-r--r-- | include/godot_cpp/core/memory.hpp | 2 | ||||
| -rw-r--r-- | include/godot_cpp/core/method_ptrcall.hpp | 4 | ||||
| -rw-r--r-- | include/godot_cpp/core/object.hpp | 12 | ||||
| -rw-r--r-- | include/godot_cpp/godot.hpp | 148 |
8 files changed, 162 insertions, 28 deletions
diff --git a/include/godot_cpp/classes/ref.hpp b/include/godot_cpp/classes/ref.hpp index af7711c..301f847 100644 --- a/include/godot_cpp/classes/ref.hpp +++ b/include/godot_cpp/classes/ref.hpp @@ -242,7 +242,7 @@ struct PtrToArg<Ref<T>> { _FORCE_INLINE_ static Ref<T> convert(const void *p_ptr) { // Important: p_ptr is T*, not Ref<T>*, since Object* is what engine gives to ptrcall. ERR_FAIL_NULL_V(p_ptr, Ref<T>()); - return Ref<T>(reinterpret_cast<T *>(godot::internal::gde_interface->object_get_instance_binding( + return Ref<T>(reinterpret_cast<T *>(godot::internal::gdextension_interface_object_get_instance_binding( reinterpret_cast<GDExtensionObjectPtr>(const_cast<void *>(p_ptr)), godot::internal::token, &T::___binding_callbacks))); } @@ -256,7 +256,7 @@ struct PtrToArg<Ref<T>> { // This code assumes that p_ptr points to an unset Ref<T> variable on the Godot side // so we only set it if we have an object to set. if (p_val.is_valid()) { - godot::internal::gde_interface->ref_set_object(ref, p_val->_owner); + godot::internal::gdextension_interface_ref_set_object(ref, p_val->_owner); } } }; @@ -267,7 +267,7 @@ struct PtrToArg<const Ref<T> &> { _FORCE_INLINE_ static Ref<T> convert(const void *p_ptr) { ERR_FAIL_NULL_V(p_ptr, Ref<T>()); - return Ref<T>(reinterpret_cast<T *>(godot::internal::gde_interface->object_get_instance_binding( + return Ref<T>(reinterpret_cast<T *>(godot::internal::gdextension_interface_object_get_instance_binding( reinterpret_cast<GDExtensionObjectPtr>(const_cast<void *>(p_ptr)), godot::internal::token, &T::___binding_callbacks))); } diff --git a/include/godot_cpp/core/binder_common.hpp b/include/godot_cpp/core/binder_common.hpp index ed7c487..09da62b 100644 --- a/include/godot_cpp/core/binder_common.hpp +++ b/include/godot_cpp/core/binder_common.hpp @@ -148,7 +148,7 @@ template <class T> struct VariantCasterAndValidate { static _FORCE_INLINE_ T cast(const Variant **p_args, uint32_t p_arg_idx, GDExtensionCallError &r_error) { GDExtensionVariantType argtype = GDExtensionVariantType(GetTypeInfo<T>::VARIANT_TYPE); - if (!internal::gde_interface->variant_can_convert_strict(static_cast<GDExtensionVariantType>(p_args[p_arg_idx]->get_type()), argtype) || + if (!internal::gdextension_interface_variant_can_convert_strict(static_cast<GDExtensionVariantType>(p_args[p_arg_idx]->get_type()), argtype) || !VariantObjectClassChecker<T>::check(p_args[p_arg_idx])) { r_error.error = GDEXTENSION_CALL_ERROR_INVALID_ARGUMENT; r_error.argument = p_arg_idx; @@ -163,7 +163,7 @@ template <class T> struct VariantCasterAndValidate<T &> { static _FORCE_INLINE_ T cast(const Variant **p_args, uint32_t p_arg_idx, GDExtensionCallError &r_error) { GDExtensionVariantType argtype = GDExtensionVariantType(GetTypeInfo<T>::VARIANT_TYPE); - if (!internal::gde_interface->variant_can_convert_strict(static_cast<GDExtensionVariantType>(p_args[p_arg_idx]->get_type()), argtype) || + if (!internal::gdextension_interface_variant_can_convert_strict(static_cast<GDExtensionVariantType>(p_args[p_arg_idx]->get_type()), argtype) || !VariantObjectClassChecker<T>::check(p_args[p_arg_idx])) { r_error.error = GDEXTENSION_CALL_ERROR_INVALID_ARGUMENT; r_error.argument = p_arg_idx; @@ -178,7 +178,7 @@ template <class T> struct VariantCasterAndValidate<const T &> { static _FORCE_INLINE_ T cast(const Variant **p_args, uint32_t p_arg_idx, GDExtensionCallError &r_error) { GDExtensionVariantType argtype = GDExtensionVariantType(GetTypeInfo<T>::VARIANT_TYPE); - if (!internal::gde_interface->variant_can_convert_strict(static_cast<GDExtensionVariantType>(p_args[p_arg_idx]->get_type()), argtype) || + if (!internal::gdextension_interface_variant_can_convert_strict(static_cast<GDExtensionVariantType>(p_args[p_arg_idx]->get_type()), argtype) || !VariantObjectClassChecker<T>::check(p_args[p_arg_idx])) { r_error.error = GDEXTENSION_CALL_ERROR_INVALID_ARGUMENT; r_error.argument = p_arg_idx; diff --git a/include/godot_cpp/core/class_db.hpp b/include/godot_cpp/core/class_db.hpp index 3554299..1ac1f91 100644 --- a/include/godot_cpp/core/class_db.hpp +++ b/include/godot_cpp/core/class_db.hpp @@ -194,7 +194,7 @@ void ClassDB::_register_class(bool p_virtual) { (void *)&T::get_class_static(), // void *class_userdata; }; - internal::gde_interface->classdb_register_extension_class(internal::library, cl.name._native_ptr(), cl.parent_name._native_ptr(), &class_info); + internal::gdextension_interface_classdb_register_extension_class(internal::library, cl.name._native_ptr(), cl.parent_name._native_ptr(), &class_info); // call bind_methods etc. to register all members of the class T::initialize_class(); diff --git a/include/godot_cpp/core/engine_ptrcall.hpp b/include/godot_cpp/core/engine_ptrcall.hpp index 94da3c5..a5fd114 100644 --- a/include/godot_cpp/core/engine_ptrcall.hpp +++ b/include/godot_cpp/core/engine_ptrcall.hpp @@ -47,25 +47,25 @@ template <class O, class... Args> O *_call_native_mb_ret_obj(const GDExtensionMethodBindPtr mb, void *instance, const Args &...args) { GodotObject *ret = nullptr; std::array<GDExtensionConstTypePtr, sizeof...(Args)> mb_args = { { (GDExtensionConstTypePtr)args... } }; - internal::gde_interface->object_method_bind_ptrcall(mb, instance, mb_args.data(), &ret); + internal::gdextension_interface_object_method_bind_ptrcall(mb, instance, mb_args.data(), &ret); if (ret == nullptr) { return nullptr; } - return reinterpret_cast<O *>(internal::gde_interface->object_get_instance_binding(ret, internal::token, &O::___binding_callbacks)); + return reinterpret_cast<O *>(internal::gdextension_interface_object_get_instance_binding(ret, internal::token, &O::___binding_callbacks)); } template <class R, class... Args> R _call_native_mb_ret(const GDExtensionMethodBindPtr mb, void *instance, const Args &...args) { R ret; std::array<GDExtensionConstTypePtr, sizeof...(Args)> mb_args = { { (GDExtensionConstTypePtr)args... } }; - internal::gde_interface->object_method_bind_ptrcall(mb, instance, mb_args.data(), &ret); + internal::gdextension_interface_object_method_bind_ptrcall(mb, instance, mb_args.data(), &ret); return ret; } template <class... Args> void _call_native_mb_no_ret(const GDExtensionMethodBindPtr mb, void *instance, const Args &...args) { std::array<GDExtensionConstTypePtr, sizeof...(Args)> mb_args = { { (GDExtensionConstTypePtr)args... } }; - internal::gde_interface->object_method_bind_ptrcall(mb, instance, mb_args.data(), nullptr); + internal::gdextension_interface_object_method_bind_ptrcall(mb, instance, mb_args.data(), nullptr); } template <class R, class... Args> @@ -81,7 +81,7 @@ Object *_call_utility_ret_obj(const GDExtensionPtrUtilityFunction func, void *in GodotObject *ret = nullptr; std::array<GDExtensionConstTypePtr, sizeof...(Args)> mb_args = { { (GDExtensionConstTypePtr)args... } }; func(&ret, mb_args.data(), mb_args.size()); - return (Object *)internal::gde_interface->object_get_instance_binding(ret, internal::token, &Object::___binding_callbacks); + return (Object *)internal::gdextension_interface_object_get_instance_binding(ret, internal::token, &Object::___binding_callbacks); } template <class... Args> diff --git a/include/godot_cpp/core/memory.hpp b/include/godot_cpp/core/memory.hpp index 55cdb8b..dd4a155 100644 --- a/include/godot_cpp/core/memory.hpp +++ b/include/godot_cpp/core/memory.hpp @@ -107,7 +107,7 @@ void memdelete(T *p_class, typename std::enable_if<!std::is_base_of_v<godot::Wra template <class T, std::enable_if_t<std::is_base_of_v<godot::Wrapped, T>, bool> = true> void memdelete(T *p_class) { - godot::internal::gde_interface->object_destroy(p_class->_owner); + godot::internal::gdextension_interface_object_destroy(p_class->_owner); } template <class T, class A> diff --git a/include/godot_cpp/core/method_ptrcall.hpp b/include/godot_cpp/core/method_ptrcall.hpp index 6a5227a..1c99fd9 100644 --- a/include/godot_cpp/core/method_ptrcall.hpp +++ b/include/godot_cpp/core/method_ptrcall.hpp @@ -168,7 +168,7 @@ MAKE_PTRARG_BY_REFERENCE(Variant); template <class T> struct PtrToArg<T *> { _FORCE_INLINE_ static T *convert(const void *p_ptr) { - return reinterpret_cast<T *>(godot::internal::gde_interface->object_get_instance_binding( + return reinterpret_cast<T *>(godot::internal::gdextension_interface_object_get_instance_binding( reinterpret_cast<GDExtensionObjectPtr>(const_cast<void *>(p_ptr)), godot::internal::token, &T::___binding_callbacks)); } @@ -181,7 +181,7 @@ struct PtrToArg<T *> { template <class T> struct PtrToArg<const T *> { _FORCE_INLINE_ static const T *convert(const void *p_ptr) { - return reinterpret_cast<const T *>(godot::internal::gde_interface->object_get_instance_binding( + return reinterpret_cast<const T *>(godot::internal::gdextension_interface_object_get_instance_binding( reinterpret_cast<GDExtensionObjectPtr>(const_cast<void *>(p_ptr)), godot::internal::token, &T::___binding_callbacks)); } diff --git a/include/godot_cpp/core/object.hpp b/include/godot_cpp/core/object.hpp index f5c790a..54ca4be 100644 --- a/include/godot_cpp/core/object.hpp +++ b/include/godot_cpp/core/object.hpp @@ -124,11 +124,11 @@ public: class ObjectDB { public: static Object *get_instance(uint64_t p_object_id) { - GDExtensionObjectPtr obj = internal::gde_interface->object_get_instance_from_id(p_object_id); + GDExtensionObjectPtr obj = internal::gdextension_interface_object_get_instance_from_id(p_object_id); if (obj == nullptr) { return nullptr; } - return reinterpret_cast<Object *>(internal::gde_interface->object_get_instance_binding(obj, internal::token, &Object::___binding_callbacks)); + return reinterpret_cast<Object *>(internal::gdextension_interface_object_get_instance_binding(obj, internal::token, &Object::___binding_callbacks)); } }; @@ -138,11 +138,11 @@ T *Object::cast_to(Object *p_object) { return nullptr; } StringName class_name = T::get_class_static(); - GDExtensionObjectPtr casted = internal::gde_interface->object_cast_to(p_object->_owner, internal::gde_interface->classdb_get_class_tag(class_name._native_ptr())); + GDExtensionObjectPtr casted = internal::gdextension_interface_object_cast_to(p_object->_owner, internal::gdextension_interface_classdb_get_class_tag(class_name._native_ptr())); if (casted == nullptr) { return nullptr; } - return reinterpret_cast<T *>(internal::gde_interface->object_get_instance_binding(casted, internal::token, &T::___binding_callbacks)); + return reinterpret_cast<T *>(internal::gdextension_interface_object_get_instance_binding(casted, internal::token, &T::___binding_callbacks)); } template <class T> @@ -151,11 +151,11 @@ const T *Object::cast_to(const Object *p_object) { return nullptr; } StringName class_name = T::get_class_static(); - GDExtensionObjectPtr casted = internal::gde_interface->object_cast_to(p_object->_owner, internal::gde_interface->classdb_get_class_tag(class_name._native_ptr())); + GDExtensionObjectPtr casted = internal::gdextension_interface_object_cast_to(p_object->_owner, internal::gdextension_interface_classdb_get_class_tag(class_name._native_ptr())); if (casted == nullptr) { return nullptr; } - return reinterpret_cast<const T *>(internal::gde_interface->object_get_instance_binding(casted, internal::token, &T::___binding_callbacks)); + return reinterpret_cast<const T *>(internal::gdextension_interface_object_get_instance_binding(casted, internal::token, &T::___binding_callbacks)); } } // namespace godot diff --git a/include/godot_cpp/godot.hpp b/include/godot_cpp/godot.hpp index 35ed9f7..20e9400 100644 --- a/include/godot_cpp/godot.hpp +++ b/include/godot_cpp/godot.hpp @@ -37,10 +37,147 @@ namespace godot { namespace internal { -extern "C" const GDExtensionInterface *gde_interface; +extern "C" GDExtensionInterfaceGetProcAddress gdextension_interface_get_proc_address; extern "C" GDExtensionClassLibraryPtr library; extern "C" void *token; +extern "C" GDExtensionGodotVersion godot_version; + +// All of the GDExtension interface functions. +extern "C" GDExtensionInterfaceGetGodotVersion gdextension_interface_get_godot_version; +extern "C" GDExtensionInterfaceMemAlloc gdextension_interface_mem_alloc; +extern "C" GDExtensionInterfaceMemRealloc gdextension_interface_mem_realloc; +extern "C" GDExtensionInterfaceMemFree gdextension_interface_mem_free; +extern "C" GDExtensionInterfacePrintError gdextension_interface_print_error; +extern "C" GDExtensionInterfacePrintErrorWithMessage gdextension_interface_print_error_with_message; +extern "C" GDExtensionInterfacePrintWarning gdextension_interface_print_warning; +extern "C" GDExtensionInterfacePrintWarningWithMessage gdextension_interface_print_warning_with_message; +extern "C" GDExtensionInterfacePrintScriptError gdextension_interface_print_script_error; +extern "C" GDExtensionInterfacePrintScriptErrorWithMessage gdextension_interface_print_script_error_with_message; +extern "C" GDExtensionInterfaceGetNativeStructSize gdextension_interface_get_native_struct_size; +extern "C" GDExtensionInterfaceVariantNewCopy gdextension_interface_variant_new_copy; +extern "C" GDExtensionInterfaceVariantNewNil gdextension_interface_variant_new_nil; +extern "C" GDExtensionInterfaceVariantDestroy gdextension_interface_variant_destroy; +extern "C" GDExtensionInterfaceVariantCall gdextension_interface_variant_call; +extern "C" GDExtensionInterfaceVariantCallStatic gdextension_interface_variant_call_static; +extern "C" GDExtensionInterfaceVariantEvaluate gdextension_interface_variant_evaluate; +extern "C" GDExtensionInterfaceVariantSet gdextension_interface_variant_set; +extern "C" GDExtensionInterfaceVariantSetNamed gdextension_interface_variant_set_named; +extern "C" GDExtensionInterfaceVariantSetKeyed gdextension_interface_variant_set_keyed; +extern "C" GDExtensionInterfaceVariantSetIndexed gdextension_interface_variant_set_indexed; +extern "C" GDExtensionInterfaceVariantGet gdextension_interface_variant_get; +extern "C" GDExtensionInterfaceVariantGetNamed gdextension_interface_variant_get_named; +extern "C" GDExtensionInterfaceVariantGetKeyed gdextension_interface_variant_get_keyed; +extern "C" GDExtensionInterfaceVariantGetIndexed gdextension_interface_variant_get_indexed; +extern "C" GDExtensionInterfaceVariantIterInit gdextension_interface_variant_iter_init; +extern "C" GDExtensionInterfaceVariantIterNext gdextension_interface_variant_iter_next; +extern "C" GDExtensionInterfaceVariantIterGet gdextension_interface_variant_iter_get; +extern "C" GDExtensionInterfaceVariantHash gdextension_interface_variant_hash; +extern "C" GDExtensionInterfaceVariantRecursiveHash gdextension_interface_variant_recursive_hash; +extern "C" GDExtensionInterfaceVariantHashCompare gdextension_interface_variant_hash_compare; +extern "C" GDExtensionInterfaceVariantBooleanize gdextension_interface_variant_booleanize; +extern "C" GDExtensionInterfaceVariantDuplicate gdextension_interface_variant_duplicate; +extern "C" GDExtensionInterfaceVariantStringify gdextension_interface_variant_stringify; +extern "C" GDExtensionInterfaceVariantGetType gdextension_interface_variant_get_type; +extern "C" GDExtensionInterfaceVariantHasMethod gdextension_interface_variant_has_method; +extern "C" GDExtensionInterfaceVariantHasMember gdextension_interface_variant_has_member; +extern "C" GDExtensionInterfaceVariantHasKey gdextension_interface_variant_has_key; +extern "C" GDExtensionInterfaceVariantGetTypeName gdextension_interface_variant_get_type_name; +extern "C" GDExtensionInterfaceVariantCanConvert gdextension_interface_variant_can_convert; +extern "C" GDExtensionInterfaceVariantCanConvertStrict gdextension_interface_variant_can_convert_strict; +extern "C" GDExtensionInterfaceGetVariantFromTypeConstructor gdextension_interface_get_variant_from_type_constructor; +extern "C" GDExtensionInterfaceGetVariantToTypeConstructor gdextension_interface_get_variant_to_type_constructor; +extern "C" GDExtensionInterfaceVariantGetPtrOperatorEvaluator gdextension_interface_variant_get_ptr_operator_evaluator; +extern "C" GDExtensionInterfaceVariantGetPtrBuiltinMethod gdextension_interface_variant_get_ptr_builtin_method; +extern "C" GDExtensionInterfaceVariantGetPtrConstructor gdextension_interface_variant_get_ptr_constructor; +extern "C" GDExtensionInterfaceVariantGetPtrDestructor gdextension_interface_variant_get_ptr_destructor; +extern "C" GDExtensionInterfaceVariantConstruct gdextension_interface_variant_construct; +extern "C" GDExtensionInterfaceVariantGetPtrSetter gdextension_interface_variant_get_ptr_setter; +extern "C" GDExtensionInterfaceVariantGetPtrGetter gdextension_interface_variant_get_ptr_getter; +extern "C" GDExtensionInterfaceVariantGetPtrIndexedSetter gdextension_interface_variant_get_ptr_indexed_setter; +extern "C" GDExtensionInterfaceVariantGetPtrIndexedGetter gdextension_interface_variant_get_ptr_indexed_getter; +extern "C" GDExtensionInterfaceVariantGetPtrKeyedSetter gdextension_interface_variant_get_ptr_keyed_setter; +extern "C" GDExtensionInterfaceVariantGetPtrKeyedGetter gdextension_interface_variant_get_ptr_keyed_getter; +extern "C" GDExtensionInterfaceVariantGetPtrKeyedChecker gdextension_interface_variant_get_ptr_keyed_checker; +extern "C" GDExtensionInterfaceVariantGetConstantValue gdextension_interface_variant_get_constant_value; +extern "C" GDExtensionInterfaceVariantGetPtrUtilityFunction gdextension_interface_variant_get_ptr_utility_function; +extern "C" GDExtensionInterfaceStringNewWithLatin1Chars gdextension_interface_string_new_with_latin1_chars; +extern "C" GDExtensionInterfaceStringNewWithUtf8Chars gdextension_interface_string_new_with_utf8_chars; +extern "C" GDExtensionInterfaceStringNewWithUtf16Chars gdextension_interface_string_new_with_utf16_chars; +extern "C" GDExtensionInterfaceStringNewWithUtf32Chars gdextension_interface_string_new_with_utf32_chars; +extern "C" GDExtensionInterfaceStringNewWithWideChars gdextension_interface_string_new_with_wide_chars; +extern "C" GDExtensionInterfaceStringNewWithLatin1CharsAndLen gdextension_interface_string_new_with_latin1_chars_and_len; +extern "C" GDExtensionInterfaceStringNewWithUtf8CharsAndLen gdextension_interface_string_new_with_utf8_chars_and_len; +extern "C" GDExtensionInterfaceStringNewWithUtf16CharsAndLen gdextension_interface_string_new_with_utf16_chars_and_len; +extern "C" GDExtensionInterfaceStringNewWithUtf32CharsAndLen gdextension_interface_string_new_with_utf32_chars_and_len; +extern "C" GDExtensionInterfaceStringNewWithWideCharsAndLen gdextension_interface_string_new_with_wide_chars_and_len; +extern "C" GDExtensionInterfaceStringToLatin1Chars gdextension_interface_string_to_latin1_chars; +extern "C" GDExtensionInterfaceStringToUtf8Chars gdextension_interface_string_to_utf8_chars; +extern "C" GDExtensionInterfaceStringToUtf16Chars gdextension_interface_string_to_utf16_chars; +extern "C" GDExtensionInterfaceStringToUtf32Chars gdextension_interface_string_to_utf32_chars; +extern "C" GDExtensionInterfaceStringToWideChars gdextension_interface_string_to_wide_chars; +extern "C" GDExtensionInterfaceStringOperatorIndex gdextension_interface_string_operator_index; +extern "C" GDExtensionInterfaceStringOperatorIndexConst gdextension_interface_string_operator_index_const; +extern "C" GDExtensionInterfaceStringOperatorPlusEqString gdextension_interface_string_operator_plus_eq_string; +extern "C" GDExtensionInterfaceStringOperatorPlusEqChar gdextension_interface_string_operator_plus_eq_char; +extern "C" GDExtensionInterfaceStringOperatorPlusEqCstr gdextension_interface_string_operator_plus_eq_cstr; +extern "C" GDExtensionInterfaceStringOperatorPlusEqWcstr gdextension_interface_string_operator_plus_eq_wcstr; +extern "C" GDExtensionInterfaceStringOperatorPlusEqC32str gdextension_interface_string_operator_plus_eq_c32str; +extern "C" GDExtensionInterfaceXmlParserOpenBuffer gdextension_interface_xml_parser_open_buffer; +extern "C" GDExtensionInterfaceFileAccessStoreBuffer gdextension_interface_file_access_store_buffer; +extern "C" GDExtensionInterfaceFileAccessGetBuffer gdextension_interface_file_access_get_buffer; +extern "C" GDExtensionInterfaceWorkerThreadPoolAddNativeGroupTask gdextension_interface_worker_thread_pool_add_native_group_task; +extern "C" GDExtensionInterfaceWorkerThreadPoolAddNativeTask gdextension_interface_worker_thread_pool_add_native_task; +extern "C" GDExtensionInterfacePackedByteArrayOperatorIndex gdextension_interface_packed_byte_array_operator_index; +extern "C" GDExtensionInterfacePackedByteArrayOperatorIndexConst gdextension_interface_packed_byte_array_operator_index_const; +extern "C" GDExtensionInterfacePackedColorArrayOperatorIndex gdextension_interface_packed_color_array_operator_index; +extern "C" GDExtensionInterfacePackedColorArrayOperatorIndexConst gdextension_interface_packed_color_array_operator_index_const; +extern "C" GDExtensionInterfacePackedFloat32ArrayOperatorIndex gdextension_interface_packed_float32_array_operator_index; +extern "C" GDExtensionInterfacePackedFloat32ArrayOperatorIndexConst gdextension_interface_packed_float32_array_operator_index_const; +extern "C" GDExtensionInterfacePackedFloat64ArrayOperatorIndex gdextension_interface_packed_float64_array_operator_index; +extern "C" GDExtensionInterfacePackedFloat64ArrayOperatorIndexConst gdextension_interface_packed_float64_array_operator_index_const; +extern "C" GDExtensionInterfacePackedInt32ArrayOperatorIndex gdextension_interface_packed_int32_array_operator_index; +extern "C" GDExtensionInterfacePackedInt32ArrayOperatorIndexConst gdextension_interface_packed_int32_array_operator_index_const; +extern "C" GDExtensionInterfacePackedInt64ArrayOperatorIndex gdextension_interface_packed_int64_array_operator_index; +extern "C" GDExtensionInterfacePackedInt64ArrayOperatorIndexConst gdextension_interface_packed_int64_array_operator_index_const; +extern "C" GDExtensionInterfacePackedStringArrayOperatorIndex gdextension_interface_packed_string_array_operator_index; +extern "C" GDExtensionInterfacePackedStringArrayOperatorIndexConst gdextension_interface_packed_string_array_operator_index_const; +extern "C" GDExtensionInterfacePackedVector2ArrayOperatorIndex gdextension_interface_packed_vector2_array_operator_index; +extern "C" GDExtensionInterfacePackedVector2ArrayOperatorIndexConst gdextension_interface_packed_vector2_array_operator_index_const; +extern "C" GDExtensionInterfacePackedVector3ArrayOperatorIndex gdextension_interface_packed_vector3_array_operator_index; +extern "C" GDExtensionInterfacePackedVector3ArrayOperatorIndexConst gdextension_interface_packed_vector3_array_operator_index_const; +extern "C" GDExtensionInterfaceArrayOperatorIndex gdextension_interface_array_operator_index; +extern "C" GDExtensionInterfaceArrayOperatorIndexConst gdextension_interface_array_operator_index_const; +extern "C" GDExtensionInterfaceArrayRef gdextension_interface_array_ref; +extern "C" GDExtensionInterfaceArraySetTyped gdextension_interface_array_set_typed; +extern "C" GDExtensionInterfaceDictionaryOperatorIndex gdextension_interface_dictionary_operator_index; +extern "C" GDExtensionInterfaceDictionaryOperatorIndexConst gdextension_interface_dictionary_operator_index_const; +extern "C" GDExtensionInterfaceObjectMethodBindCall gdextension_interface_object_method_bind_call; +extern "C" GDExtensionInterfaceObjectMethodBindPtrcall gdextension_interface_object_method_bind_ptrcall; +extern "C" GDExtensionInterfaceObjectDestroy gdextension_interface_object_destroy; +extern "C" GDExtensionInterfaceGlobalGetSingleton gdextension_interface_global_get_singleton; +extern "C" GDExtensionInterfaceObjectGetInstanceBinding gdextension_interface_object_get_instance_binding; +extern "C" GDExtensionInterfaceObjectSetInstanceBinding gdextension_interface_object_set_instance_binding; +extern "C" GDExtensionInterfaceObjectSetInstance gdextension_interface_object_set_instance; +extern "C" GDExtensionInterfaceObjectCastTo gdextension_interface_object_cast_to; +extern "C" GDExtensionInterfaceObjectGetInstanceFromId gdextension_interface_object_get_instance_from_id; +extern "C" GDExtensionInterfaceObjectGetInstanceId gdextension_interface_object_get_instance_id; +extern "C" GDExtensionInterfaceRefGetObject gdextension_interface_ref_get_object; +extern "C" GDExtensionInterfaceRefSetObject gdextension_interface_ref_set_object; +extern "C" GDExtensionInterfaceScriptInstanceCreate gdextension_interface_script_instance_create; +extern "C" GDExtensionInterfaceClassdbConstructObject gdextension_interface_classdb_construct_object; +extern "C" GDExtensionInterfaceClassdbGetMethodBind gdextension_interface_classdb_get_method_bind; +extern "C" GDExtensionInterfaceClassdbGetClassTag gdextension_interface_classdb_get_class_tag; +extern "C" GDExtensionInterfaceClassdbRegisterExtensionClass gdextension_interface_classdb_register_extension_class; +extern "C" GDExtensionInterfaceClassdbRegisterExtensionClassMethod gdextension_interface_classdb_register_extension_class_method; +extern "C" GDExtensionInterfaceClassdbRegisterExtensionClassIntegerConstant gdextension_interface_classdb_register_extension_class_integer_constant; +extern "C" GDExtensionInterfaceClassdbRegisterExtensionClassProperty gdextension_interface_classdb_register_extension_class_property; +extern "C" GDExtensionInterfaceClassdbRegisterExtensionClassPropertyGroup gdextension_interface_classdb_register_extension_class_property_group; +extern "C" GDExtensionInterfaceClassdbRegisterExtensionClassPropertySubgroup gdextension_interface_classdb_register_extension_class_property_subgroup; +extern "C" GDExtensionInterfaceClassdbRegisterExtensionClassSignal gdextension_interface_classdb_register_extension_class_signal; +extern "C" GDExtensionInterfaceClassdbUnregisterExtensionClass gdextension_interface_classdb_unregister_extension_class; +extern "C" GDExtensionInterfaceGetLibraryPath gdextension_interface_get_library_path; + } // namespace internal enum ModuleInitializationLevel { @@ -57,22 +194,19 @@ public: static Callback init_callback; static Callback terminate_callback; static GDExtensionInitializationLevel minimum_initialization_level; - static GDExtensionBool init(const GDExtensionInterface *p_interface, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization); + static GDExtensionBool init(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization); public: static void initialize_level(void *userdata, GDExtensionInitializationLevel p_level); static void deinitialize_level(void *userdata, GDExtensionInitializationLevel p_level); class InitObject { - const GDExtensionInterface *gde_interface; + GDExtensionInterfaceGetProcAddress get_proc_address; GDExtensionClassLibraryPtr library; GDExtensionInitialization *initialization; public: - InitObject(const GDExtensionInterface *p_interface, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) : - gde_interface(p_interface), - library(p_library), - initialization(r_initialization) {} + InitObject(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization); void register_initializer(Callback p_init) const; void register_terminator(Callback p_init) const; |
