@@ -202,21 +202,21 @@ typedef uint64_t (*GDNativeExtensionClassGetRID)(GDExtensionClassInstancePtr p_i
202202
203203typedef struct {
204204 GDNativeVariantType type ;
205- const char * name ;
206- const char * class_name ;
205+ GDNativeStringNamePtr name ;
206+ GDNativeStringNamePtr class_name ;
207207 uint32_t hint ; // Bitfield of `PropertyHint` (defined in `extension_api.json`)
208- const char * hint_string ;
208+ GDNativeStringPtr hint_string ;
209209 uint32_t usage ; // Bitfield of `PropertyUsageFlags` (defined in `extension_api.json`)
210210} GDNativePropertyInfo ;
211211
212212typedef struct {
213- const char * name ;
213+ GDNativeStringNamePtr name ;
214214 GDNativePropertyInfo return_value ;
215215 uint32_t flags ; // Bitfield of `GDNativeExtensionClassMethodFlags`
216216 int32_t id ;
217- GDNativePropertyInfo * arguments ;
217+ GDNativePropertyInfo * arguments ; // array of `argument_count` size
218218 uint32_t argument_count ;
219- GDNativeVariantPtr default_arguments ;
219+ GDNativeVariantPtr * default_arguments ; // array of `default_argument_count` size
220220 uint32_t default_argument_count ;
221221} GDNativeMethodInfo ;
222222
@@ -231,7 +231,7 @@ typedef void (*GDNativeExtensionClassUnreference)(GDExtensionClassInstancePtr p_
231231typedef void (* GDNativeExtensionClassCallVirtual )(GDExtensionClassInstancePtr p_instance , const GDNativeTypePtr * p_args , GDNativeTypePtr r_ret );
232232typedef GDNativeObjectPtr (* GDNativeExtensionClassCreateInstance )(void * p_userdata );
233233typedef void (* GDNativeExtensionClassFreeInstance )(void * p_userdata , GDExtensionClassInstancePtr p_instance );
234- typedef GDNativeExtensionClassCallVirtual (* GDNativeExtensionClassGetVirtual )(void * p_userdata , const char * p_name );
234+ typedef GDNativeExtensionClassCallVirtual (* GDNativeExtensionClassGetVirtual )(void * p_userdata , const GDNativeStringNamePtr p_name );
235235
236236typedef struct {
237237 GDNativeBool is_virtual ;
@@ -284,24 +284,21 @@ typedef enum {
284284typedef void (* GDNativeExtensionClassMethodCall )(void * method_userdata , GDExtensionClassInstancePtr p_instance , const GDNativeVariantPtr * p_args , const GDNativeInt p_argument_count , GDNativeVariantPtr r_return , GDNativeCallError * r_error );
285285typedef void (* GDNativeExtensionClassMethodPtrCall )(void * method_userdata , GDExtensionClassInstancePtr p_instance , const GDNativeTypePtr * p_args , GDNativeTypePtr r_ret );
286286
287- /* passing -1 as argument in the following functions refers to the return type */
288- typedef GDNativeVariantType (* GDNativeExtensionClassMethodGetArgumentType )(void * p_method_userdata , int32_t p_argument );
289- typedef void (* GDNativeExtensionClassMethodGetArgumentInfo )(void * p_method_userdata , int32_t p_argument , GDNativePropertyInfo * r_info );
290- typedef GDNativeExtensionClassMethodArgumentMetadata (* GDNativeExtensionClassMethodGetArgumentMetadata )(void * p_method_userdata , int32_t p_argument );
291-
292287typedef struct {
293- const char * name ;
288+ GDNativeStringNamePtr name ;
294289 void * method_userdata ;
295290 GDNativeExtensionClassMethodCall call_func ;
296291 GDNativeExtensionClassMethodPtrCall ptrcall_func ;
297292 uint32_t method_flags ; // Bitfield of `GDNativeExtensionClassMethodFlags`
298293 uint32_t argument_count ;
299294 GDNativeBool has_return_value ;
300- GDNativeExtensionClassMethodGetArgumentType get_argument_type_func ;
301- GDNativeExtensionClassMethodGetArgumentInfo get_argument_info_func ; /* name and hint information for the argument can be omitted in release builds. Class name should always be present if it applies. */
302- GDNativeExtensionClassMethodGetArgumentMetadata get_argument_metadata_func ;
295+ GDNativePropertyInfo * return_value_info ; // Ignored if `has_return_value` is false
296+ GDNativeExtensionClassMethodArgumentMetadata * return_value_metadata ; // Ignored if `has_return_value` is false
297+ /* name and hint information for the argument can be omitted in release builds. Class name should always be present if it applies. */
298+ GDNativePropertyInfo * aguments_info ; // array of `argument_count` size
299+ GDNativeExtensionClassMethodArgumentMetadata * aguments_metadata ; // array of `argument_count` size
303300 uint32_t default_argument_count ;
304- GDNativeVariantPtr * default_arguments ;
301+ GDNativeVariantPtr * default_arguments ; // array of `default_argument_count` size
305302} GDNativeExtensionClassMethodInfo ;
306303
307304/* SCRIPT INSTANCE EXTENSION */
@@ -546,14 +543,14 @@ typedef struct {
546543
547544 /* CLASSDB EXTENSION */
548545
549- void (* classdb_register_extension_class )(const GDNativeExtensionClassLibraryPtr p_library , const char * p_class_name , const char * p_parent_class_name , const GDNativeExtensionClassCreationInfo * p_extension_funcs );
550- void (* classdb_register_extension_class_method )(const GDNativeExtensionClassLibraryPtr p_library , const char * p_class_name , const GDNativeExtensionClassMethodInfo * p_method_info );
551- void (* classdb_register_extension_class_integer_constant )(const GDNativeExtensionClassLibraryPtr p_library , const char * p_class_name , const char * p_enum_name , const char * p_constant_name , GDNativeInt p_constant_value , GDNativeBool p_is_bitfield );
552- void (* classdb_register_extension_class_property )(const GDNativeExtensionClassLibraryPtr p_library , const char * p_class_name , const GDNativePropertyInfo * p_info , const char * p_setter , const char * p_getter );
553- void (* classdb_register_extension_class_property_group )(const GDNativeExtensionClassLibraryPtr p_library , const char * p_class_name , const char * p_group_name , const char * p_prefix );
554- void (* classdb_register_extension_class_property_subgroup )(const GDNativeExtensionClassLibraryPtr p_library , const char * p_class_name , const char * p_subgroup_name , const char * p_prefix );
555- void (* classdb_register_extension_class_signal )(const GDNativeExtensionClassLibraryPtr p_library , const char * p_class_name , const char * p_signal_name , const GDNativePropertyInfo * p_argument_info , GDNativeInt p_argument_count );
556- void (* classdb_unregister_extension_class )(const GDNativeExtensionClassLibraryPtr p_library , const char * p_class_name ); /* Unregistering a parent class before a class that inherits it will result in failure. Inheritors must be unregistered first. */
546+ void (* classdb_register_extension_class )(const GDNativeExtensionClassLibraryPtr p_library , const GDNativeStringNamePtr p_class_name , const GDNativeStringNamePtr p_parent_class_name , const GDNativeExtensionClassCreationInfo * p_extension_funcs );
547+ void (* classdb_register_extension_class_method )(const GDNativeExtensionClassLibraryPtr p_library , const GDNativeStringNamePtr p_class_name , const GDNativeExtensionClassMethodInfo * p_method_info );
548+ void (* classdb_register_extension_class_integer_constant )(const GDNativeExtensionClassLibraryPtr p_library , const GDNativeStringNamePtr p_class_name , const GDNativeStringNamePtr p_enum_name , const GDNativeStringNamePtr p_constant_name , GDNativeInt p_constant_value , GDNativeBool p_is_bitfield );
549+ void (* classdb_register_extension_class_property )(const GDNativeExtensionClassLibraryPtr p_library , const GDNativeStringNamePtr p_class_name , const GDNativePropertyInfo * p_info , const GDNativeStringNamePtr p_setter , const GDNativeStringNamePtr p_getter );
550+ void (* classdb_register_extension_class_property_group )(const GDNativeExtensionClassLibraryPtr p_library , const GDNativeStringNamePtr p_class_name , const GDNativeStringNamePtr p_group_name , const GDNativeStringNamePtr p_prefix );
551+ void (* classdb_register_extension_class_property_subgroup )(const GDNativeExtensionClassLibraryPtr p_library , const GDNativeStringNamePtr p_class_name , const GDNativeStringNamePtr p_subgroup_name , const GDNativeStringNamePtr p_prefix );
552+ void (* classdb_register_extension_class_signal )(const GDNativeExtensionClassLibraryPtr p_library , const GDNativeStringNamePtr p_class_name , const GDNativeStringNamePtr p_signal_name , const GDNativePropertyInfo * p_argument_info , GDNativeInt p_argument_count );
553+ void (* classdb_unregister_extension_class )(const GDNativeExtensionClassLibraryPtr p_library , const GDNativeStringNamePtr p_class_name ); /* Unregistering a parent class before a class that inherits it will result in failure. Inheritors must be unregistered first. */
557554
558555 void (* get_library_path )(const GDNativeExtensionClassLibraryPtr p_library , GDNativeStringPtr r_path );
559556
0 commit comments