|
@@ -382,7 +382,7 @@ public:
|
|
|
|
|
|
#ifndef DISABLE_DEPRECATED
|
|
#ifndef DISABLE_DEPRECATED
|
|
void GDExtension::_register_extension_class(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo *p_extension_funcs) {
|
|
void GDExtension::_register_extension_class(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo *p_extension_funcs) {
|
|
- const GDExtensionClassCreationInfo3 class_info3 = {
|
|
|
|
|
|
+ const GDExtensionClassCreationInfo4 class_info4 = {
|
|
p_extension_funcs->is_virtual, // GDExtensionBool is_virtual;
|
|
p_extension_funcs->is_virtual, // GDExtensionBool is_virtual;
|
|
p_extension_funcs->is_abstract, // GDExtensionBool is_abstract;
|
|
p_extension_funcs->is_abstract, // GDExtensionBool is_abstract;
|
|
true, // GDExtensionBool is_exposed;
|
|
true, // GDExtensionBool is_exposed;
|
|
@@ -398,7 +398,7 @@ void GDExtension::_register_extension_class(GDExtensionClassLibraryPtr p_library
|
|
p_extension_funcs->to_string_func, // GDExtensionClassToString to_string_func;
|
|
p_extension_funcs->to_string_func, // GDExtensionClassToString to_string_func;
|
|
p_extension_funcs->reference_func, // GDExtensionClassReference reference_func;
|
|
p_extension_funcs->reference_func, // GDExtensionClassReference reference_func;
|
|
p_extension_funcs->unreference_func, // GDExtensionClassUnreference unreference_func;
|
|
p_extension_funcs->unreference_func, // GDExtensionClassUnreference unreference_func;
|
|
- p_extension_funcs->create_instance_func, // GDExtensionClassCreateInstance create_instance_func; /* this one is mandatory */
|
|
|
|
|
|
+ nullptr, // GDExtensionClassCreateInstance2 create_instance_func; /* this one is mandatory */
|
|
p_extension_funcs->free_instance_func, // GDExtensionClassFreeInstance free_instance_func; /* this one is mandatory */
|
|
p_extension_funcs->free_instance_func, // GDExtensionClassFreeInstance free_instance_func; /* this one is mandatory */
|
|
nullptr, // GDExtensionClassRecreateInstance recreate_instance_func;
|
|
nullptr, // GDExtensionClassRecreateInstance recreate_instance_func;
|
|
p_extension_funcs->get_virtual_func, // GDExtensionClassGetVirtual get_virtual_func;
|
|
p_extension_funcs->get_virtual_func, // GDExtensionClassGetVirtual get_virtual_func;
|
|
@@ -411,12 +411,13 @@ void GDExtension::_register_extension_class(GDExtensionClassLibraryPtr p_library
|
|
const ClassCreationDeprecatedInfo legacy = {
|
|
const ClassCreationDeprecatedInfo legacy = {
|
|
p_extension_funcs->notification_func, // GDExtensionClassNotification notification_func;
|
|
p_extension_funcs->notification_func, // GDExtensionClassNotification notification_func;
|
|
p_extension_funcs->free_property_list_func, // GDExtensionClassFreePropertyList free_property_list_func;
|
|
p_extension_funcs->free_property_list_func, // GDExtensionClassFreePropertyList free_property_list_func;
|
|
|
|
+ p_extension_funcs->create_instance_func, // GDExtensionClassCreateInstance create_instance_func;
|
|
};
|
|
};
|
|
- _register_extension_class_internal(p_library, p_class_name, p_parent_class_name, &class_info3, &legacy);
|
|
|
|
|
|
+ _register_extension_class_internal(p_library, p_class_name, p_parent_class_name, &class_info4, &legacy);
|
|
}
|
|
}
|
|
|
|
|
|
void GDExtension::_register_extension_class2(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo2 *p_extension_funcs) {
|
|
void GDExtension::_register_extension_class2(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo2 *p_extension_funcs) {
|
|
- const GDExtensionClassCreationInfo3 class_info3 = {
|
|
|
|
|
|
+ const GDExtensionClassCreationInfo4 class_info4 = {
|
|
p_extension_funcs->is_virtual, // GDExtensionBool is_virtual;
|
|
p_extension_funcs->is_virtual, // GDExtensionBool is_virtual;
|
|
p_extension_funcs->is_abstract, // GDExtensionBool is_abstract;
|
|
p_extension_funcs->is_abstract, // GDExtensionBool is_abstract;
|
|
p_extension_funcs->is_exposed, // GDExtensionBool is_exposed;
|
|
p_extension_funcs->is_exposed, // GDExtensionBool is_exposed;
|
|
@@ -432,7 +433,7 @@ void GDExtension::_register_extension_class2(GDExtensionClassLibraryPtr p_librar
|
|
p_extension_funcs->to_string_func, // GDExtensionClassToString to_string_func;
|
|
p_extension_funcs->to_string_func, // GDExtensionClassToString to_string_func;
|
|
p_extension_funcs->reference_func, // GDExtensionClassReference reference_func;
|
|
p_extension_funcs->reference_func, // GDExtensionClassReference reference_func;
|
|
p_extension_funcs->unreference_func, // GDExtensionClassUnreference unreference_func;
|
|
p_extension_funcs->unreference_func, // GDExtensionClassUnreference unreference_func;
|
|
- p_extension_funcs->create_instance_func, // GDExtensionClassCreateInstance create_instance_func; /* this one is mandatory */
|
|
|
|
|
|
+ nullptr, // GDExtensionClassCreateInstance2 create_instance_func; /* this one is mandatory */
|
|
p_extension_funcs->free_instance_func, // GDExtensionClassFreeInstance free_instance_func; /* this one is mandatory */
|
|
p_extension_funcs->free_instance_func, // GDExtensionClassFreeInstance free_instance_func; /* this one is mandatory */
|
|
p_extension_funcs->recreate_instance_func, // GDExtensionClassRecreateInstance recreate_instance_func;
|
|
p_extension_funcs->recreate_instance_func, // GDExtensionClassRecreateInstance recreate_instance_func;
|
|
p_extension_funcs->get_virtual_func, // GDExtensionClassGetVirtual get_virtual_func;
|
|
p_extension_funcs->get_virtual_func, // GDExtensionClassGetVirtual get_virtual_func;
|
|
@@ -445,16 +446,53 @@ void GDExtension::_register_extension_class2(GDExtensionClassLibraryPtr p_librar
|
|
const ClassCreationDeprecatedInfo legacy = {
|
|
const ClassCreationDeprecatedInfo legacy = {
|
|
nullptr, // GDExtensionClassNotification notification_func;
|
|
nullptr, // GDExtensionClassNotification notification_func;
|
|
p_extension_funcs->free_property_list_func, // GDExtensionClassFreePropertyList free_property_list_func;
|
|
p_extension_funcs->free_property_list_func, // GDExtensionClassFreePropertyList free_property_list_func;
|
|
|
|
+ p_extension_funcs->create_instance_func, // GDExtensionClassCreateInstance create_instance_func;
|
|
};
|
|
};
|
|
- _register_extension_class_internal(p_library, p_class_name, p_parent_class_name, &class_info3, &legacy);
|
|
|
|
|
|
+ _register_extension_class_internal(p_library, p_class_name, p_parent_class_name, &class_info4, &legacy);
|
|
}
|
|
}
|
|
-#endif // DISABLE_DEPRECATED
|
|
|
|
|
|
|
|
void GDExtension::_register_extension_class3(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo3 *p_extension_funcs) {
|
|
void GDExtension::_register_extension_class3(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo3 *p_extension_funcs) {
|
|
|
|
+ const GDExtensionClassCreationInfo4 class_info4 = {
|
|
|
|
+ p_extension_funcs->is_virtual, // GDExtensionBool is_virtual;
|
|
|
|
+ p_extension_funcs->is_abstract, // GDExtensionBool is_abstract;
|
|
|
|
+ p_extension_funcs->is_exposed, // GDExtensionBool is_exposed;
|
|
|
|
+ p_extension_funcs->is_runtime, // GDExtensionBool is_runtime;
|
|
|
|
+ p_extension_funcs->set_func, // GDExtensionClassSet set_func;
|
|
|
|
+ p_extension_funcs->get_func, // GDExtensionClassGet get_func;
|
|
|
|
+ p_extension_funcs->get_property_list_func, // GDExtensionClassGetPropertyList get_property_list_func;
|
|
|
|
+ p_extension_funcs->free_property_list_func, // GDExtensionClassFreePropertyList free_property_list_func;
|
|
|
|
+ p_extension_funcs->property_can_revert_func, // GDExtensionClassPropertyCanRevert property_can_revert_func;
|
|
|
|
+ p_extension_funcs->property_get_revert_func, // GDExtensionClassPropertyGetRevert property_get_revert_func;
|
|
|
|
+ p_extension_funcs->validate_property_func, // GDExtensionClassValidateProperty validate_property_func;
|
|
|
|
+ p_extension_funcs->notification_func, // GDExtensionClassNotification2 notification_func;
|
|
|
|
+ p_extension_funcs->to_string_func, // GDExtensionClassToString to_string_func;
|
|
|
|
+ p_extension_funcs->reference_func, // GDExtensionClassReference reference_func;
|
|
|
|
+ p_extension_funcs->unreference_func, // GDExtensionClassUnreference unreference_func;
|
|
|
|
+ nullptr, // GDExtensionClassCreateInstance2 create_instance_func; /* this one is mandatory */
|
|
|
|
+ p_extension_funcs->free_instance_func, // GDExtensionClassFreeInstance free_instance_func; /* this one is mandatory */
|
|
|
|
+ p_extension_funcs->recreate_instance_func, // GDExtensionClassRecreateInstance recreate_instance_func;
|
|
|
|
+ p_extension_funcs->get_virtual_func, // GDExtensionClassGetVirtual get_virtual_func;
|
|
|
|
+ p_extension_funcs->get_virtual_call_data_func, // GDExtensionClassGetVirtualCallData get_virtual_call_data_func;
|
|
|
|
+ p_extension_funcs->call_virtual_with_data_func, // GDExtensionClassCallVirtualWithData call_virtual_func;
|
|
|
|
+ p_extension_funcs->get_rid_func, // GDExtensionClassGetRID get_rid;
|
|
|
|
+ p_extension_funcs->class_userdata, // void *class_userdata;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const ClassCreationDeprecatedInfo legacy = {
|
|
|
|
+ nullptr, // GDExtensionClassNotification notification_func;
|
|
|
|
+ nullptr, // GDExtensionClassFreePropertyList free_property_list_func;
|
|
|
|
+ p_extension_funcs->create_instance_func, // GDExtensionClassCreateInstance2 create_instance_func;
|
|
|
|
+ };
|
|
|
|
+ _register_extension_class_internal(p_library, p_class_name, p_parent_class_name, &class_info4, &legacy);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#endif // DISABLE_DEPRECATED
|
|
|
|
+
|
|
|
|
+void GDExtension::_register_extension_class4(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo4 *p_extension_funcs) {
|
|
_register_extension_class_internal(p_library, p_class_name, p_parent_class_name, p_extension_funcs);
|
|
_register_extension_class_internal(p_library, p_class_name, p_parent_class_name, p_extension_funcs);
|
|
}
|
|
}
|
|
|
|
|
|
-void GDExtension::_register_extension_class_internal(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo3 *p_extension_funcs, const ClassCreationDeprecatedInfo *p_deprecated_funcs) {
|
|
|
|
|
|
+void GDExtension::_register_extension_class_internal(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo4 *p_extension_funcs, const ClassCreationDeprecatedInfo *p_deprecated_funcs) {
|
|
GDExtension *self = reinterpret_cast<GDExtension *>(p_library);
|
|
GDExtension *self = reinterpret_cast<GDExtension *>(p_library);
|
|
|
|
|
|
StringName class_name = *reinterpret_cast<const StringName *>(p_class_name);
|
|
StringName class_name = *reinterpret_cast<const StringName *>(p_class_name);
|
|
@@ -530,6 +568,7 @@ void GDExtension::_register_extension_class_internal(GDExtensionClassLibraryPtr
|
|
if (p_deprecated_funcs) {
|
|
if (p_deprecated_funcs) {
|
|
extension->gdextension.notification = p_deprecated_funcs->notification_func;
|
|
extension->gdextension.notification = p_deprecated_funcs->notification_func;
|
|
extension->gdextension.free_property_list = p_deprecated_funcs->free_property_list_func;
|
|
extension->gdextension.free_property_list = p_deprecated_funcs->free_property_list_func;
|
|
|
|
+ extension->gdextension.create_instance = p_deprecated_funcs->create_instance_func;
|
|
}
|
|
}
|
|
#endif // DISABLE_DEPRECATED
|
|
#endif // DISABLE_DEPRECATED
|
|
extension->gdextension.notification2 = p_extension_funcs->notification_func;
|
|
extension->gdextension.notification2 = p_extension_funcs->notification_func;
|
|
@@ -537,7 +576,7 @@ void GDExtension::_register_extension_class_internal(GDExtensionClassLibraryPtr
|
|
extension->gdextension.reference = p_extension_funcs->reference_func;
|
|
extension->gdextension.reference = p_extension_funcs->reference_func;
|
|
extension->gdextension.unreference = p_extension_funcs->unreference_func;
|
|
extension->gdextension.unreference = p_extension_funcs->unreference_func;
|
|
extension->gdextension.class_userdata = p_extension_funcs->class_userdata;
|
|
extension->gdextension.class_userdata = p_extension_funcs->class_userdata;
|
|
- extension->gdextension.create_instance = p_extension_funcs->create_instance_func;
|
|
|
|
|
|
+ extension->gdextension.create_instance2 = p_extension_funcs->create_instance_func;
|
|
extension->gdextension.free_instance = p_extension_funcs->free_instance_func;
|
|
extension->gdextension.free_instance = p_extension_funcs->free_instance_func;
|
|
extension->gdextension.recreate_instance = p_extension_funcs->recreate_instance_func;
|
|
extension->gdextension.recreate_instance = p_extension_funcs->recreate_instance_func;
|
|
extension->gdextension.get_virtual = p_extension_funcs->get_virtual_func;
|
|
extension->gdextension.get_virtual = p_extension_funcs->get_virtual_func;
|
|
@@ -888,8 +927,9 @@ void GDExtension::initialize_gdextensions() {
|
|
#ifndef DISABLE_DEPRECATED
|
|
#ifndef DISABLE_DEPRECATED
|
|
register_interface_function("classdb_register_extension_class", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class);
|
|
register_interface_function("classdb_register_extension_class", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class);
|
|
register_interface_function("classdb_register_extension_class2", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class2);
|
|
register_interface_function("classdb_register_extension_class2", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class2);
|
|
-#endif // DISABLE_DEPRECATED
|
|
|
|
register_interface_function("classdb_register_extension_class3", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class3);
|
|
register_interface_function("classdb_register_extension_class3", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class3);
|
|
|
|
+#endif // DISABLE_DEPRECATED
|
|
|
|
+ register_interface_function("classdb_register_extension_class4", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class4);
|
|
register_interface_function("classdb_register_extension_class_method", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class_method);
|
|
register_interface_function("classdb_register_extension_class_method", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class_method);
|
|
register_interface_function("classdb_register_extension_class_virtual_method", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class_virtual_method);
|
|
register_interface_function("classdb_register_extension_class_virtual_method", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class_virtual_method);
|
|
register_interface_function("classdb_register_extension_class_integer_constant", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class_integer_constant);
|
|
register_interface_function("classdb_register_extension_class_integer_constant", (GDExtensionInterfaceFunctionPtr)&GDExtension::_register_extension_class_integer_constant);
|