mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-30 21:21:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			2340 lines
		
	
	
	
		
			91 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			2340 lines
		
	
	
	
		
			91 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /**************************************************************************/
 | |
| /*  gdextension_interface.h                                               */
 | |
| /**************************************************************************/
 | |
| /*                         This file is part of:                          */
 | |
| /*                             GODOT ENGINE                               */
 | |
| /*                        https://godotengine.org                         */
 | |
| /**************************************************************************/
 | |
| /* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
 | |
| /* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.                  */
 | |
| /*                                                                        */
 | |
| /* Permission is hereby granted, free of charge, to any person obtaining  */
 | |
| /* a copy of this software and associated documentation files (the        */
 | |
| /* "Software"), to deal in the Software without restriction, including    */
 | |
| /* without limitation the rights to use, copy, modify, merge, publish,    */
 | |
| /* distribute, sublicense, and/or sell copies of the Software, and to     */
 | |
| /* permit persons to whom the Software is furnished to do so, subject to  */
 | |
| /* the following conditions:                                              */
 | |
| /*                                                                        */
 | |
| /* The above copyright notice and this permission notice shall be         */
 | |
| /* included in all copies or substantial portions of the Software.        */
 | |
| /*                                                                        */
 | |
| /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,        */
 | |
| /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF     */
 | |
| /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
 | |
| /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY   */
 | |
| /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,   */
 | |
| /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE      */
 | |
| /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                 */
 | |
| /**************************************************************************/
 | |
| 
 | |
| #ifndef GDEXTENSION_INTERFACE_H
 | |
| #define GDEXTENSION_INTERFACE_H
 | |
| 
 | |
| /* This is a C class header, you can copy it and use it directly in your own binders.
 | |
|  * Together with the JSON file, you should be able to generate any binder.
 | |
|  */
 | |
| 
 | |
| #include <stddef.h>
 | |
| #include <stdint.h>
 | |
| 
 | |
| #ifndef __cplusplus
 | |
| typedef uint32_t char32_t;
 | |
| typedef uint16_t char16_t;
 | |
| #endif
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /* VARIANT TYPES */
 | |
| 
 | |
| typedef enum {
 | |
| 	GDEXTENSION_VARIANT_TYPE_NIL,
 | |
| 
 | |
| 	/*  atomic types */
 | |
| 	GDEXTENSION_VARIANT_TYPE_BOOL,
 | |
| 	GDEXTENSION_VARIANT_TYPE_INT,
 | |
| 	GDEXTENSION_VARIANT_TYPE_FLOAT,
 | |
| 	GDEXTENSION_VARIANT_TYPE_STRING,
 | |
| 
 | |
| 	/* math types */
 | |
| 	GDEXTENSION_VARIANT_TYPE_VECTOR2,
 | |
| 	GDEXTENSION_VARIANT_TYPE_VECTOR2I,
 | |
| 	GDEXTENSION_VARIANT_TYPE_RECT2,
 | |
| 	GDEXTENSION_VARIANT_TYPE_RECT2I,
 | |
| 	GDEXTENSION_VARIANT_TYPE_VECTOR3,
 | |
| 	GDEXTENSION_VARIANT_TYPE_VECTOR3I,
 | |
| 	GDEXTENSION_VARIANT_TYPE_TRANSFORM2D,
 | |
| 	GDEXTENSION_VARIANT_TYPE_VECTOR4,
 | |
| 	GDEXTENSION_VARIANT_TYPE_VECTOR4I,
 | |
| 	GDEXTENSION_VARIANT_TYPE_PLANE,
 | |
| 	GDEXTENSION_VARIANT_TYPE_QUATERNION,
 | |
| 	GDEXTENSION_VARIANT_TYPE_AABB,
 | |
| 	GDEXTENSION_VARIANT_TYPE_BASIS,
 | |
| 	GDEXTENSION_VARIANT_TYPE_TRANSFORM3D,
 | |
| 	GDEXTENSION_VARIANT_TYPE_PROJECTION,
 | |
| 
 | |
| 	/* misc types */
 | |
| 	GDEXTENSION_VARIANT_TYPE_COLOR,
 | |
| 	GDEXTENSION_VARIANT_TYPE_STRING_NAME,
 | |
| 	GDEXTENSION_VARIANT_TYPE_NODE_PATH,
 | |
| 	GDEXTENSION_VARIANT_TYPE_RID,
 | |
| 	GDEXTENSION_VARIANT_TYPE_OBJECT,
 | |
| 	GDEXTENSION_VARIANT_TYPE_CALLABLE,
 | |
| 	GDEXTENSION_VARIANT_TYPE_SIGNAL,
 | |
| 	GDEXTENSION_VARIANT_TYPE_DICTIONARY,
 | |
| 	GDEXTENSION_VARIANT_TYPE_ARRAY,
 | |
| 
 | |
| 	/* typed arrays */
 | |
| 	GDEXTENSION_VARIANT_TYPE_PACKED_BYTE_ARRAY,
 | |
| 	GDEXTENSION_VARIANT_TYPE_PACKED_INT32_ARRAY,
 | |
| 	GDEXTENSION_VARIANT_TYPE_PACKED_INT64_ARRAY,
 | |
| 	GDEXTENSION_VARIANT_TYPE_PACKED_FLOAT32_ARRAY,
 | |
| 	GDEXTENSION_VARIANT_TYPE_PACKED_FLOAT64_ARRAY,
 | |
| 	GDEXTENSION_VARIANT_TYPE_PACKED_STRING_ARRAY,
 | |
| 	GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR2_ARRAY,
 | |
| 	GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR3_ARRAY,
 | |
| 	GDEXTENSION_VARIANT_TYPE_PACKED_COLOR_ARRAY,
 | |
| 
 | |
| 	GDEXTENSION_VARIANT_TYPE_VARIANT_MAX
 | |
| } GDExtensionVariantType;
 | |
| 
 | |
| typedef enum {
 | |
| 	/* comparison */
 | |
| 	GDEXTENSION_VARIANT_OP_EQUAL,
 | |
| 	GDEXTENSION_VARIANT_OP_NOT_EQUAL,
 | |
| 	GDEXTENSION_VARIANT_OP_LESS,
 | |
| 	GDEXTENSION_VARIANT_OP_LESS_EQUAL,
 | |
| 	GDEXTENSION_VARIANT_OP_GREATER,
 | |
| 	GDEXTENSION_VARIANT_OP_GREATER_EQUAL,
 | |
| 
 | |
| 	/* mathematic */
 | |
| 	GDEXTENSION_VARIANT_OP_ADD,
 | |
| 	GDEXTENSION_VARIANT_OP_SUBTRACT,
 | |
| 	GDEXTENSION_VARIANT_OP_MULTIPLY,
 | |
| 	GDEXTENSION_VARIANT_OP_DIVIDE,
 | |
| 	GDEXTENSION_VARIANT_OP_NEGATE,
 | |
| 	GDEXTENSION_VARIANT_OP_POSITIVE,
 | |
| 	GDEXTENSION_VARIANT_OP_MODULE,
 | |
| 	GDEXTENSION_VARIANT_OP_POWER,
 | |
| 
 | |
| 	/* bitwise */
 | |
| 	GDEXTENSION_VARIANT_OP_SHIFT_LEFT,
 | |
| 	GDEXTENSION_VARIANT_OP_SHIFT_RIGHT,
 | |
| 	GDEXTENSION_VARIANT_OP_BIT_AND,
 | |
| 	GDEXTENSION_VARIANT_OP_BIT_OR,
 | |
| 	GDEXTENSION_VARIANT_OP_BIT_XOR,
 | |
| 	GDEXTENSION_VARIANT_OP_BIT_NEGATE,
 | |
| 
 | |
| 	/* logic */
 | |
| 	GDEXTENSION_VARIANT_OP_AND,
 | |
| 	GDEXTENSION_VARIANT_OP_OR,
 | |
| 	GDEXTENSION_VARIANT_OP_XOR,
 | |
| 	GDEXTENSION_VARIANT_OP_NOT,
 | |
| 
 | |
| 	/* containment */
 | |
| 	GDEXTENSION_VARIANT_OP_IN,
 | |
| 	GDEXTENSION_VARIANT_OP_MAX
 | |
| 
 | |
| } GDExtensionVariantOperator;
 | |
| 
 | |
| // In this API there are multiple functions which expect the caller to pass a pointer
 | |
| // on return value as parameter.
 | |
| // In order to make it clear if the caller should initialize the return value or not
 | |
| // we have two flavor of types:
 | |
| // - `GDExtensionXXXPtr` for pointer on an initialized value
 | |
| // - `GDExtensionUninitializedXXXPtr` for pointer on uninitialized value
 | |
| //
 | |
| // Notes:
 | |
| // - Not respecting those requirements can seems harmless, but will lead to unexpected
 | |
| //   segfault or memory leak (for instance with a specific compiler/OS, or when two
 | |
| //   native extensions start doing ptrcall on each other).
 | |
| // - Initialization must be done with the function pointer returned by `variant_get_ptr_constructor`,
 | |
| //   zero-initializing the variable should not be considered a valid initialization method here !
 | |
| // - Some types have no destructor (see `extension_api.json`'s `has_destructor` field), for
 | |
| //   them it is always safe to skip the constructor for the return value if you are in a hurry ;-)
 | |
| 
 | |
| typedef void *GDExtensionVariantPtr;
 | |
| typedef const void *GDExtensionConstVariantPtr;
 | |
| typedef void *GDExtensionUninitializedVariantPtr;
 | |
| typedef void *GDExtensionStringNamePtr;
 | |
| typedef const void *GDExtensionConstStringNamePtr;
 | |
| typedef void *GDExtensionUninitializedStringNamePtr;
 | |
| typedef void *GDExtensionStringPtr;
 | |
| typedef const void *GDExtensionConstStringPtr;
 | |
| typedef void *GDExtensionUninitializedStringPtr;
 | |
| typedef void *GDExtensionObjectPtr;
 | |
| typedef const void *GDExtensionConstObjectPtr;
 | |
| typedef void *GDExtensionUninitializedObjectPtr;
 | |
| typedef void *GDExtensionTypePtr;
 | |
| typedef const void *GDExtensionConstTypePtr;
 | |
| typedef void *GDExtensionUninitializedTypePtr;
 | |
| typedef const void *GDExtensionMethodBindPtr;
 | |
| typedef int64_t GDExtensionInt;
 | |
| typedef uint8_t GDExtensionBool;
 | |
| typedef uint64_t GDObjectInstanceID;
 | |
| typedef void *GDExtensionRefPtr;
 | |
| typedef const void *GDExtensionConstRefPtr;
 | |
| 
 | |
| /* VARIANT DATA I/O */
 | |
| 
 | |
| typedef enum {
 | |
| 	GDEXTENSION_CALL_OK,
 | |
| 	GDEXTENSION_CALL_ERROR_INVALID_METHOD,
 | |
| 	GDEXTENSION_CALL_ERROR_INVALID_ARGUMENT, // Expected a different variant type.
 | |
| 	GDEXTENSION_CALL_ERROR_TOO_MANY_ARGUMENTS, // Expected lower number of arguments.
 | |
| 	GDEXTENSION_CALL_ERROR_TOO_FEW_ARGUMENTS, // Expected higher number of arguments.
 | |
| 	GDEXTENSION_CALL_ERROR_INSTANCE_IS_NULL,
 | |
| 	GDEXTENSION_CALL_ERROR_METHOD_NOT_CONST, // Used for const call.
 | |
| } GDExtensionCallErrorType;
 | |
| 
 | |
| typedef struct {
 | |
| 	GDExtensionCallErrorType error;
 | |
| 	int32_t argument;
 | |
| 	int32_t expected;
 | |
| } GDExtensionCallError;
 | |
| 
 | |
| typedef void (*GDExtensionVariantFromTypeConstructorFunc)(GDExtensionUninitializedVariantPtr, GDExtensionTypePtr);
 | |
| typedef void (*GDExtensionTypeFromVariantConstructorFunc)(GDExtensionUninitializedTypePtr, GDExtensionVariantPtr);
 | |
| typedef void (*GDExtensionPtrOperatorEvaluator)(GDExtensionConstTypePtr p_left, GDExtensionConstTypePtr p_right, GDExtensionTypePtr r_result);
 | |
| typedef void (*GDExtensionPtrBuiltInMethod)(GDExtensionTypePtr p_base, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_return, int p_argument_count);
 | |
| typedef void (*GDExtensionPtrConstructor)(GDExtensionUninitializedTypePtr p_base, const GDExtensionConstTypePtr *p_args);
 | |
| typedef void (*GDExtensionPtrDestructor)(GDExtensionTypePtr p_base);
 | |
| typedef void (*GDExtensionPtrSetter)(GDExtensionTypePtr p_base, GDExtensionConstTypePtr p_value);
 | |
| typedef void (*GDExtensionPtrGetter)(GDExtensionConstTypePtr p_base, GDExtensionTypePtr r_value);
 | |
| typedef void (*GDExtensionPtrIndexedSetter)(GDExtensionTypePtr p_base, GDExtensionInt p_index, GDExtensionConstTypePtr p_value);
 | |
| typedef void (*GDExtensionPtrIndexedGetter)(GDExtensionConstTypePtr p_base, GDExtensionInt p_index, GDExtensionTypePtr r_value);
 | |
| typedef void (*GDExtensionPtrKeyedSetter)(GDExtensionTypePtr p_base, GDExtensionConstTypePtr p_key, GDExtensionConstTypePtr p_value);
 | |
| typedef void (*GDExtensionPtrKeyedGetter)(GDExtensionConstTypePtr p_base, GDExtensionConstTypePtr p_key, GDExtensionTypePtr r_value);
 | |
| typedef uint32_t (*GDExtensionPtrKeyedChecker)(GDExtensionConstVariantPtr p_base, GDExtensionConstVariantPtr p_key);
 | |
| typedef void (*GDExtensionPtrUtilityFunction)(GDExtensionTypePtr r_return, const GDExtensionConstTypePtr *p_args, int p_argument_count);
 | |
| 
 | |
| typedef GDExtensionObjectPtr (*GDExtensionClassConstructor)();
 | |
| 
 | |
| typedef void *(*GDExtensionInstanceBindingCreateCallback)(void *p_token, void *p_instance);
 | |
| typedef void (*GDExtensionInstanceBindingFreeCallback)(void *p_token, void *p_instance, void *p_binding);
 | |
| typedef GDExtensionBool (*GDExtensionInstanceBindingReferenceCallback)(void *p_token, void *p_binding, GDExtensionBool p_reference);
 | |
| 
 | |
| typedef struct {
 | |
| 	GDExtensionInstanceBindingCreateCallback create_callback;
 | |
| 	GDExtensionInstanceBindingFreeCallback free_callback;
 | |
| 	GDExtensionInstanceBindingReferenceCallback reference_callback;
 | |
| } GDExtensionInstanceBindingCallbacks;
 | |
| 
 | |
| /* EXTENSION CLASSES */
 | |
| 
 | |
| typedef void *GDExtensionClassInstancePtr;
 | |
| 
 | |
| typedef GDExtensionBool (*GDExtensionClassSet)(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionConstVariantPtr p_value);
 | |
| typedef GDExtensionBool (*GDExtensionClassGet)(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret);
 | |
| typedef uint64_t (*GDExtensionClassGetRID)(GDExtensionClassInstancePtr p_instance);
 | |
| 
 | |
| typedef struct {
 | |
| 	GDExtensionVariantType type;
 | |
| 	GDExtensionStringNamePtr name;
 | |
| 	GDExtensionStringNamePtr class_name;
 | |
| 	uint32_t hint; // Bitfield of `PropertyHint` (defined in `extension_api.json`).
 | |
| 	GDExtensionStringPtr hint_string;
 | |
| 	uint32_t usage; // Bitfield of `PropertyUsageFlags` (defined in `extension_api.json`).
 | |
| } GDExtensionPropertyInfo;
 | |
| 
 | |
| typedef struct {
 | |
| 	GDExtensionStringNamePtr name;
 | |
| 	GDExtensionPropertyInfo return_value;
 | |
| 	uint32_t flags; // Bitfield of `GDExtensionClassMethodFlags`.
 | |
| 	int32_t id;
 | |
| 
 | |
| 	/* Arguments: `default_arguments` is an array of size `argument_count`. */
 | |
| 	uint32_t argument_count;
 | |
| 	GDExtensionPropertyInfo *arguments;
 | |
| 
 | |
| 	/* Default arguments: `default_arguments` is an array of size `default_argument_count`. */
 | |
| 	uint32_t default_argument_count;
 | |
| 	GDExtensionVariantPtr *default_arguments;
 | |
| } GDExtensionMethodInfo;
 | |
| 
 | |
| typedef const GDExtensionPropertyInfo *(*GDExtensionClassGetPropertyList)(GDExtensionClassInstancePtr p_instance, uint32_t *r_count);
 | |
| typedef void (*GDExtensionClassFreePropertyList)(GDExtensionClassInstancePtr p_instance, const GDExtensionPropertyInfo *p_list);
 | |
| typedef GDExtensionBool (*GDExtensionClassPropertyCanRevert)(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name);
 | |
| typedef GDExtensionBool (*GDExtensionClassPropertyGetRevert)(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret);
 | |
| typedef void (*GDExtensionClassNotification)(GDExtensionClassInstancePtr p_instance, int32_t p_what);
 | |
| typedef void (*GDExtensionClassToString)(GDExtensionClassInstancePtr p_instance, GDExtensionBool *r_is_valid, GDExtensionStringPtr p_out);
 | |
| typedef void (*GDExtensionClassReference)(GDExtensionClassInstancePtr p_instance);
 | |
| typedef void (*GDExtensionClassUnreference)(GDExtensionClassInstancePtr p_instance);
 | |
| typedef void (*GDExtensionClassCallVirtual)(GDExtensionClassInstancePtr p_instance, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_ret);
 | |
| typedef GDExtensionObjectPtr (*GDExtensionClassCreateInstance)(void *p_userdata);
 | |
| typedef void (*GDExtensionClassFreeInstance)(void *p_userdata, GDExtensionClassInstancePtr p_instance);
 | |
| typedef GDExtensionClassCallVirtual (*GDExtensionClassGetVirtual)(void *p_userdata, GDExtensionConstStringNamePtr p_name);
 | |
| 
 | |
| typedef struct {
 | |
| 	GDExtensionBool is_virtual;
 | |
| 	GDExtensionBool is_abstract;
 | |
| 	GDExtensionClassSet set_func;
 | |
| 	GDExtensionClassGet get_func;
 | |
| 	GDExtensionClassGetPropertyList get_property_list_func;
 | |
| 	GDExtensionClassFreePropertyList free_property_list_func;
 | |
| 	GDExtensionClassPropertyCanRevert property_can_revert_func;
 | |
| 	GDExtensionClassPropertyGetRevert property_get_revert_func;
 | |
| 	GDExtensionClassNotification notification_func;
 | |
| 	GDExtensionClassToString to_string_func;
 | |
| 	GDExtensionClassReference reference_func;
 | |
| 	GDExtensionClassUnreference unreference_func;
 | |
| 	GDExtensionClassCreateInstance create_instance_func; // (Default) constructor; mandatory. If the class is not instantiable, consider making it virtual or abstract.
 | |
| 	GDExtensionClassFreeInstance free_instance_func; // Destructor; mandatory.
 | |
| 	GDExtensionClassGetVirtual get_virtual_func; // Queries a virtual function by name and returns a callback to invoke the requested virtual function.
 | |
| 	GDExtensionClassGetRID get_rid_func;
 | |
| 	void *class_userdata; // Per-class user data, later accessible in instance bindings.
 | |
| } GDExtensionClassCreationInfo;
 | |
| 
 | |
| typedef void *GDExtensionClassLibraryPtr;
 | |
| 
 | |
| /* Method */
 | |
| 
 | |
| typedef enum {
 | |
| 	GDEXTENSION_METHOD_FLAG_NORMAL = 1,
 | |
| 	GDEXTENSION_METHOD_FLAG_EDITOR = 2,
 | |
| 	GDEXTENSION_METHOD_FLAG_CONST = 4,
 | |
| 	GDEXTENSION_METHOD_FLAG_VIRTUAL = 8,
 | |
| 	GDEXTENSION_METHOD_FLAG_VARARG = 16,
 | |
| 	GDEXTENSION_METHOD_FLAG_STATIC = 32,
 | |
| 	GDEXTENSION_METHOD_FLAGS_DEFAULT = GDEXTENSION_METHOD_FLAG_NORMAL,
 | |
| } GDExtensionClassMethodFlags;
 | |
| 
 | |
| typedef enum {
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE,
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT8,
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT16,
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT32,
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT64,
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT8,
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT16,
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT32,
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT64,
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_FLOAT,
 | |
| 	GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_DOUBLE
 | |
| } GDExtensionClassMethodArgumentMetadata;
 | |
| 
 | |
| typedef void (*GDExtensionClassMethodCall)(void *method_userdata, GDExtensionClassInstancePtr p_instance, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionVariantPtr r_return, GDExtensionCallError *r_error);
 | |
| typedef void (*GDExtensionClassMethodValidatedCall)(void *method_userdata, GDExtensionClassInstancePtr p_instance, const GDExtensionConstVariantPtr *p_args, GDExtensionVariantPtr r_return);
 | |
| typedef void (*GDExtensionClassMethodPtrCall)(void *method_userdata, GDExtensionClassInstancePtr p_instance, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_ret);
 | |
| 
 | |
| typedef struct {
 | |
| 	GDExtensionStringNamePtr name;
 | |
| 	void *method_userdata;
 | |
| 	GDExtensionClassMethodCall call_func;
 | |
| 	GDExtensionClassMethodPtrCall ptrcall_func;
 | |
| 	uint32_t method_flags; // Bitfield of `GDExtensionClassMethodFlags`.
 | |
| 
 | |
| 	/* If `has_return_value` is false, `return_value_info` and `return_value_metadata` are ignored. */
 | |
| 	GDExtensionBool has_return_value;
 | |
| 	GDExtensionPropertyInfo *return_value_info;
 | |
| 	GDExtensionClassMethodArgumentMetadata return_value_metadata;
 | |
| 
 | |
| 	/* Arguments: `arguments_info` and `arguments_metadata` are array of size `argument_count`.
 | |
| 	 * Name and hint information for the argument can be omitted in release builds. Class name should always be present if it applies.
 | |
| 	 */
 | |
| 	uint32_t argument_count;
 | |
| 	GDExtensionPropertyInfo *arguments_info;
 | |
| 	GDExtensionClassMethodArgumentMetadata *arguments_metadata;
 | |
| 
 | |
| 	/* Default arguments: `default_arguments` is an array of size `default_argument_count`. */
 | |
| 	uint32_t default_argument_count;
 | |
| 	GDExtensionVariantPtr *default_arguments;
 | |
| } GDExtensionClassMethodInfo;
 | |
| 
 | |
| /* SCRIPT INSTANCE EXTENSION */
 | |
| 
 | |
| typedef void *GDExtensionScriptInstanceDataPtr; // Pointer to custom ScriptInstance native implementation.
 | |
| 
 | |
| typedef GDExtensionBool (*GDExtensionScriptInstanceSet)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionConstVariantPtr p_value);
 | |
| typedef GDExtensionBool (*GDExtensionScriptInstanceGet)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret);
 | |
| typedef const GDExtensionPropertyInfo *(*GDExtensionScriptInstanceGetPropertyList)(GDExtensionScriptInstanceDataPtr p_instance, uint32_t *r_count);
 | |
| typedef void (*GDExtensionScriptInstanceFreePropertyList)(GDExtensionScriptInstanceDataPtr p_instance, const GDExtensionPropertyInfo *p_list);
 | |
| typedef GDExtensionVariantType (*GDExtensionScriptInstanceGetPropertyType)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionBool *r_is_valid);
 | |
| 
 | |
| typedef GDExtensionBool (*GDExtensionScriptInstancePropertyCanRevert)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name);
 | |
| typedef GDExtensionBool (*GDExtensionScriptInstancePropertyGetRevert)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret);
 | |
| 
 | |
| typedef GDExtensionObjectPtr (*GDExtensionScriptInstanceGetOwner)(GDExtensionScriptInstanceDataPtr p_instance);
 | |
| typedef void (*GDExtensionScriptInstancePropertyStateAdd)(GDExtensionConstStringNamePtr p_name, GDExtensionConstVariantPtr p_value, void *p_userdata);
 | |
| typedef void (*GDExtensionScriptInstanceGetPropertyState)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionScriptInstancePropertyStateAdd p_add_func, void *p_userdata);
 | |
| 
 | |
| typedef const GDExtensionMethodInfo *(*GDExtensionScriptInstanceGetMethodList)(GDExtensionScriptInstanceDataPtr p_instance, uint32_t *r_count);
 | |
| typedef void (*GDExtensionScriptInstanceFreeMethodList)(GDExtensionScriptInstanceDataPtr p_instance, const GDExtensionMethodInfo *p_list);
 | |
| 
 | |
| typedef GDExtensionBool (*GDExtensionScriptInstanceHasMethod)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name);
 | |
| 
 | |
| typedef void (*GDExtensionScriptInstanceCall)(GDExtensionScriptInstanceDataPtr p_self, GDExtensionConstStringNamePtr p_method, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionVariantPtr r_return, GDExtensionCallError *r_error);
 | |
| typedef void (*GDExtensionScriptInstanceNotification)(GDExtensionScriptInstanceDataPtr p_instance, int32_t p_what);
 | |
| typedef void (*GDExtensionScriptInstanceToString)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionBool *r_is_valid, GDExtensionStringPtr r_out);
 | |
| 
 | |
| typedef void (*GDExtensionScriptInstanceRefCountIncremented)(GDExtensionScriptInstanceDataPtr p_instance);
 | |
| typedef GDExtensionBool (*GDExtensionScriptInstanceRefCountDecremented)(GDExtensionScriptInstanceDataPtr p_instance);
 | |
| 
 | |
| typedef GDExtensionObjectPtr (*GDExtensionScriptInstanceGetScript)(GDExtensionScriptInstanceDataPtr p_instance);
 | |
| typedef GDExtensionBool (*GDExtensionScriptInstanceIsPlaceholder)(GDExtensionScriptInstanceDataPtr p_instance);
 | |
| 
 | |
| typedef void *GDExtensionScriptLanguagePtr;
 | |
| 
 | |
| typedef GDExtensionScriptLanguagePtr (*GDExtensionScriptInstanceGetLanguage)(GDExtensionScriptInstanceDataPtr p_instance);
 | |
| 
 | |
| typedef void (*GDExtensionScriptInstanceFree)(GDExtensionScriptInstanceDataPtr p_instance);
 | |
| 
 | |
| typedef void *GDExtensionScriptInstancePtr; // Pointer to ScriptInstance.
 | |
| 
 | |
| typedef struct {
 | |
| 	GDExtensionScriptInstanceSet set_func;
 | |
| 	GDExtensionScriptInstanceGet get_func;
 | |
| 	GDExtensionScriptInstanceGetPropertyList get_property_list_func;
 | |
| 	GDExtensionScriptInstanceFreePropertyList free_property_list_func;
 | |
| 
 | |
| 	GDExtensionScriptInstancePropertyCanRevert property_can_revert_func;
 | |
| 	GDExtensionScriptInstancePropertyGetRevert property_get_revert_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceGetOwner get_owner_func;
 | |
| 	GDExtensionScriptInstanceGetPropertyState get_property_state_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceGetMethodList get_method_list_func;
 | |
| 	GDExtensionScriptInstanceFreeMethodList free_method_list_func;
 | |
| 	GDExtensionScriptInstanceGetPropertyType get_property_type_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceHasMethod has_method_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceCall call_func;
 | |
| 	GDExtensionScriptInstanceNotification notification_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceToString to_string_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceRefCountIncremented refcount_incremented_func;
 | |
| 	GDExtensionScriptInstanceRefCountDecremented refcount_decremented_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceGetScript get_script_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceIsPlaceholder is_placeholder_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceSet set_fallback_func;
 | |
| 	GDExtensionScriptInstanceGet get_fallback_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceGetLanguage get_language_func;
 | |
| 
 | |
| 	GDExtensionScriptInstanceFree free_func;
 | |
| 
 | |
| } GDExtensionScriptInstanceInfo;
 | |
| 
 | |
| /* INITIALIZATION */
 | |
| 
 | |
| typedef enum {
 | |
| 	GDEXTENSION_INITIALIZATION_CORE,
 | |
| 	GDEXTENSION_INITIALIZATION_SERVERS,
 | |
| 	GDEXTENSION_INITIALIZATION_SCENE,
 | |
| 	GDEXTENSION_INITIALIZATION_EDITOR,
 | |
| 	GDEXTENSION_MAX_INITIALIZATION_LEVEL,
 | |
| } GDExtensionInitializationLevel;
 | |
| 
 | |
| typedef struct {
 | |
| 	/* Minimum initialization level required.
 | |
| 	 * If Core or Servers, the extension needs editor or game restart to take effect */
 | |
| 	GDExtensionInitializationLevel minimum_initialization_level;
 | |
| 	/* Up to the user to supply when initializing */
 | |
| 	void *userdata;
 | |
| 	/* This function will be called multiple times for each initialization level. */
 | |
| 	void (*initialize)(void *userdata, GDExtensionInitializationLevel p_level);
 | |
| 	void (*deinitialize)(void *userdata, GDExtensionInitializationLevel p_level);
 | |
| } GDExtensionInitialization;
 | |
| 
 | |
| typedef void (*GDExtensionInterfaceFunctionPtr)();
 | |
| typedef GDExtensionInterfaceFunctionPtr (*GDExtensionInterfaceGetProcAddress)(const char *p_function_name);
 | |
| 
 | |
| /*
 | |
|  * Each GDExtension should define a C function that matches the signature of GDExtensionInitializationFunction,
 | |
|  * and export it so that it can be loaded via dlopen() or equivalent for the given platform.
 | |
|  *
 | |
|  * For example:
 | |
|  *
 | |
|  *   GDExtensionBool my_extension_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization);
 | |
|  *
 | |
|  * This function's name must be specified as the 'entry_symbol' in the .gdextension file.
 | |
|  *
 | |
|  * This makes it the entry point of the GDExtension and will be called on initialization.
 | |
|  *
 | |
|  * The GDExtension can then modify the r_initialization structure, setting the minimum initialization level,
 | |
|  * and providing pointers to functions that will be called at various stages of initialization/shutdown.
 | |
|  *
 | |
|  * The rest of the GDExtension's interface to Godot consists of function pointers that can be loaded
 | |
|  * by calling p_get_proc_address("...") with the name of the function.
 | |
|  *
 | |
|  * For example:
 | |
|  *
 | |
|  *   GDExtensionInterfaceGetGodotVersion *get_godot_version = (GDExtensionInterfaceGetGodotVersion)p_get_proc_address("get_godot_version");
 | |
|  *
 | |
|  * You can then call it like a normal function:
 | |
|  *
 | |
|  *   GDExtensionGodotVersion godot_version;
 | |
|  *   get_godot_version(&godot_version);
 | |
|  *   printf("Godot v%d.%d.%d\n", godot_version.major, godot_version.minor, godot_version.patch);
 | |
|  *
 | |
|  * All of these interface functions are described below, together with the name that's used to load it,
 | |
|  * and the function pointer typedef that shows its signature.
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInitializationFunction)(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization);
 | |
| 
 | |
| /* INTERFACE */
 | |
| 
 | |
| typedef struct {
 | |
| 	uint32_t major;
 | |
| 	uint32_t minor;
 | |
| 	uint32_t patch;
 | |
| 	const char *string;
 | |
| } GDExtensionGodotVersion;
 | |
| 
 | |
| /**
 | |
|  * @name get_godot_version
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the Godot version that the GDExtension was loaded into.
 | |
|  *
 | |
|  * @param r_godot_version A pointer to the structure to write the version information into.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceGetGodotVersion)(GDExtensionGodotVersion *r_godot_version);
 | |
| 
 | |
| /* INTERFACE: Memory */
 | |
| 
 | |
| /**
 | |
|  * @name mem_alloc
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Allocates memory.
 | |
|  *
 | |
|  * @param p_bytes The amount of memory to allocate in bytes.
 | |
|  *
 | |
|  * @return A pointer to the allocated memory, or NULL if unsuccessful.
 | |
|  */
 | |
| typedef void *(*GDExtensionInterfaceMemAlloc)(size_t p_bytes);
 | |
| 
 | |
| /**
 | |
|  * @name mem_realloc
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Reallocates memory.
 | |
|  *
 | |
|  * @param p_ptr A pointer to the previously allocated memory.
 | |
|  * @param p_bytes The number of bytes to resize the memory block to.
 | |
|  *
 | |
|  * @return A pointer to the allocated memory, or NULL if unsuccessful.
 | |
|  */
 | |
| typedef void *(*GDExtensionInterfaceMemRealloc)(void *p_ptr, size_t p_bytes);
 | |
| 
 | |
| /**
 | |
|  * @name mem_free
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Frees memory.
 | |
|  *
 | |
|  * @param p_ptr A pointer to the previously allocated memory.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceMemFree)(void *p_ptr);
 | |
| 
 | |
| /* INTERFACE: Godot Core */
 | |
| 
 | |
| /**
 | |
|  * @name print_error
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Logs an error to Godot's built-in debugger and to the OS terminal.
 | |
|  *
 | |
|  * @param p_description The code trigging the error.
 | |
|  * @param p_function The function name where the error occurred.
 | |
|  * @param p_file The file where the error occurred.
 | |
|  * @param p_line The line where the error occurred.
 | |
|  * @param p_editor_notify Whether or not to notify the editor.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfacePrintError)(const char *p_description, const char *p_function, const char *p_file, int32_t p_line, GDExtensionBool p_editor_notify);
 | |
| 
 | |
| /**
 | |
|  * @name print_error_with_message
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Logs an error with a message to Godot's built-in debugger and to the OS terminal.
 | |
|  *
 | |
|  * @param p_description The code trigging the error.
 | |
|  * @param p_message The message to show along with the error.
 | |
|  * @param p_function The function name where the error occurred.
 | |
|  * @param p_file The file where the error occurred.
 | |
|  * @param p_line The line where the error occurred.
 | |
|  * @param p_editor_notify Whether or not to notify the editor.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfacePrintErrorWithMessage)(const char *p_description, const char *p_message, const char *p_function, const char *p_file, int32_t p_line, GDExtensionBool p_editor_notify);
 | |
| 
 | |
| /**
 | |
|  * @name print_warning
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Logs a warning to Godot's built-in debugger and to the OS terminal.
 | |
|  *
 | |
|  * @param p_description The code trigging the warning.
 | |
|  * @param p_function The function name where the warning occurred.
 | |
|  * @param p_file The file where the warning occurred.
 | |
|  * @param p_line The line where the warning occurred.
 | |
|  * @param p_editor_notify Whether or not to notify the editor.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfacePrintWarning)(const char *p_description, const char *p_function, const char *p_file, int32_t p_line, GDExtensionBool p_editor_notify);
 | |
| 
 | |
| /**
 | |
|  * @name print_warning_with_message
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Logs a warning with a message to Godot's built-in debugger and to the OS terminal.
 | |
|  *
 | |
|  * @param p_description The code trigging the warning.
 | |
|  * @param p_message The message to show along with the warning.
 | |
|  * @param p_function The function name where the warning occurred.
 | |
|  * @param p_file The file where the warning occurred.
 | |
|  * @param p_line The line where the warning occurred.
 | |
|  * @param p_editor_notify Whether or not to notify the editor.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfacePrintWarningWithMessage)(const char *p_description, const char *p_message, const char *p_function, const char *p_file, int32_t p_line, GDExtensionBool p_editor_notify);
 | |
| 
 | |
| /**
 | |
|  * @name print_script_error
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Logs a script error to Godot's built-in debugger and to the OS terminal.
 | |
|  *
 | |
|  * @param p_description The code trigging the error.
 | |
|  * @param p_function The function name where the error occurred.
 | |
|  * @param p_file The file where the error occurred.
 | |
|  * @param p_line The line where the error occurred.
 | |
|  * @param p_editor_notify Whether or not to notify the editor.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfacePrintScriptError)(const char *p_description, const char *p_function, const char *p_file, int32_t p_line, GDExtensionBool p_editor_notify);
 | |
| 
 | |
| /**
 | |
|  * @name print_script_error_with_message
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Logs a script error with a message to Godot's built-in debugger and to the OS terminal.
 | |
|  *
 | |
|  * @param p_description The code trigging the error.
 | |
|  * @param p_message The message to show along with the error.
 | |
|  * @param p_function The function name where the error occurred.
 | |
|  * @param p_file The file where the error occurred.
 | |
|  * @param p_line The line where the error occurred.
 | |
|  * @param p_editor_notify Whether or not to notify the editor.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfacePrintScriptErrorWithMessage)(const char *p_description, const char *p_message, const char *p_function, const char *p_file, int32_t p_line, GDExtensionBool p_editor_notify);
 | |
| 
 | |
| /**
 | |
|  * @name get_native_struct_size
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the size of a native struct (ex. ObjectID) in bytes.
 | |
|  *
 | |
|  * @param p_name A pointer to a StringName identifying the struct name.
 | |
|  *
 | |
|  * @return The size in bytes.
 | |
|  */
 | |
| typedef uint64_t (*GDExtensionInterfaceGetNativeStructSize)(GDExtensionConstStringNamePtr p_name);
 | |
| 
 | |
| /* INTERFACE: Variant */
 | |
| 
 | |
| /**
 | |
|  * @name variant_new_copy
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Copies one Variant into a another.
 | |
|  *
 | |
|  * @param r_dest A pointer to the destination Variant.
 | |
|  * @param p_src A pointer to the source Variant.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantNewCopy)(GDExtensionUninitializedVariantPtr r_dest, GDExtensionConstVariantPtr p_src);
 | |
| 
 | |
| /**
 | |
|  * @name variant_new_nil
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a new Variant containing nil.
 | |
|  *
 | |
|  * @param r_dest A pointer to the destination Variant.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantNewNil)(GDExtensionUninitializedVariantPtr r_dest);
 | |
| 
 | |
| /**
 | |
|  * @name variant_destroy
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Destroys a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant to destroy.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantDestroy)(GDExtensionVariantPtr p_self);
 | |
| 
 | |
| /**
 | |
|  * @name variant_call
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Calls a method on a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_method A pointer to a StringName identifying the method.
 | |
|  * @param p_args A pointer to a C array of Variant.
 | |
|  * @param p_argument_count The number of arguments.
 | |
|  * @param r_return A pointer a Variant which will be assigned the return value.
 | |
|  * @param r_error A pointer the structure which will hold error information.
 | |
|  *
 | |
|  * @see Variant::callp()
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantCall)(GDExtensionVariantPtr p_self, GDExtensionConstStringNamePtr p_method, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionUninitializedVariantPtr r_return, GDExtensionCallError *r_error);
 | |
| 
 | |
| /**
 | |
|  * @name variant_call_static
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Calls a static method on a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_method A pointer to a StringName identifying the method.
 | |
|  * @param p_args A pointer to a C array of Variant.
 | |
|  * @param p_argument_count The number of arguments.
 | |
|  * @param r_return A pointer a Variant which will be assigned the return value.
 | |
|  * @param r_error A pointer the structure which will be updated with error information.
 | |
|  *
 | |
|  * @see Variant::call_static()
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantCallStatic)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_method, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionUninitializedVariantPtr r_return, GDExtensionCallError *r_error);
 | |
| 
 | |
| /**
 | |
|  * @name variant_evaluate
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Evaluate an operator on two Variants.
 | |
|  *
 | |
|  * @param p_op The operator to evaluate.
 | |
|  * @param p_a The first Variant.
 | |
|  * @param p_b The second Variant.
 | |
|  * @param r_return A pointer a Variant which will be assigned the return value.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  *
 | |
|  * @see Variant::evaluate()
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantEvaluate)(GDExtensionVariantOperator p_op, GDExtensionConstVariantPtr p_a, GDExtensionConstVariantPtr p_b, GDExtensionUninitializedVariantPtr r_return, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_set
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Sets a key on a Variant to a value.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_key A pointer to a Variant representing the key.
 | |
|  * @param p_value A pointer to a Variant representing the value.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  *
 | |
|  * @see Variant::set()
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantSet)(GDExtensionVariantPtr p_self, GDExtensionConstVariantPtr p_key, GDExtensionConstVariantPtr p_value, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_set_named
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Sets a named key on a Variant to a value.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_key A pointer to a StringName representing the key.
 | |
|  * @param p_value A pointer to a Variant representing the value.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  *
 | |
|  * @see Variant::set_named()
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantSetNamed)(GDExtensionVariantPtr p_self, GDExtensionConstStringNamePtr p_key, GDExtensionConstVariantPtr p_value, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_set_keyed
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Sets a keyed property on a Variant to a value.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_key A pointer to a Variant representing the key.
 | |
|  * @param p_value A pointer to a Variant representing the value.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  *
 | |
|  * @see Variant::set_keyed()
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantSetKeyed)(GDExtensionVariantPtr p_self, GDExtensionConstVariantPtr p_key, GDExtensionConstVariantPtr p_value, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_set_indexed
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Sets an index on a Variant to a value.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_index The index.
 | |
|  * @param p_value A pointer to a Variant representing the value.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  * @param r_oob A pointer to a boolean which will be set to true if the index is out of bounds.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantSetIndexed)(GDExtensionVariantPtr p_self, GDExtensionInt p_index, GDExtensionConstVariantPtr p_value, GDExtensionBool *r_valid, GDExtensionBool *r_oob);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the value of a key from a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_key A pointer to a Variant representing the key.
 | |
|  * @param r_ret A pointer to a Variant which will be assigned the value.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantGet)(GDExtensionConstVariantPtr p_self, GDExtensionConstVariantPtr p_key, GDExtensionUninitializedVariantPtr r_ret, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_named
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the value of a named key from a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_key A pointer to a StringName representing the key.
 | |
|  * @param r_ret A pointer to a Variant which will be assigned the value.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantGetNamed)(GDExtensionConstVariantPtr p_self, GDExtensionConstStringNamePtr p_key, GDExtensionUninitializedVariantPtr r_ret, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_keyed
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the value of a keyed property from a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_key A pointer to a Variant representing the key.
 | |
|  * @param r_ret A pointer to a Variant which will be assigned the value.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantGetKeyed)(GDExtensionConstVariantPtr p_self, GDExtensionConstVariantPtr p_key, GDExtensionUninitializedVariantPtr r_ret, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_indexed
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the value of an index from a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_index The index.
 | |
|  * @param r_ret A pointer to a Variant which will be assigned the value.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  * @param r_oob A pointer to a boolean which will be set to true if the index is out of bounds.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantGetIndexed)(GDExtensionConstVariantPtr p_self, GDExtensionInt p_index, GDExtensionUninitializedVariantPtr r_ret, GDExtensionBool *r_valid, GDExtensionBool *r_oob);
 | |
| 
 | |
| /**
 | |
|  * @name variant_iter_init
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Initializes an iterator over a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param r_iter A pointer to a Variant which will be assigned the iterator.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  *
 | |
|  * @return true if the operation is valid; otherwise false.
 | |
|  *
 | |
|  * @see Variant::iter_init()
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInterfaceVariantIterInit)(GDExtensionConstVariantPtr p_self, GDExtensionUninitializedVariantPtr r_iter, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_iter_next
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the next value for an iterator over a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param r_iter A pointer to a Variant which will be assigned the iterator.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  *
 | |
|  * @return true if the operation is valid; otherwise false.
 | |
|  *
 | |
|  * @see Variant::iter_next()
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInterfaceVariantIterNext)(GDExtensionConstVariantPtr p_self, GDExtensionVariantPtr r_iter, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_iter_get
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the next value for an iterator over a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param r_iter A pointer to a Variant which will be assigned the iterator.
 | |
|  * @param r_ret A pointer to a Variant which will be assigned false if the operation is invalid.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.
 | |
|  *
 | |
|  * @see Variant::iter_get()
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantIterGet)(GDExtensionConstVariantPtr p_self, GDExtensionVariantPtr r_iter, GDExtensionUninitializedVariantPtr r_ret, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_hash
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the hash of a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  *
 | |
|  * @return The hash value.
 | |
|  *
 | |
|  * @see Variant::hash()
 | |
|  */
 | |
| typedef GDExtensionInt (*GDExtensionInterfaceVariantHash)(GDExtensionConstVariantPtr p_self);
 | |
| 
 | |
| /**
 | |
|  * @name variant_recursive_hash
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the recursive hash of a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_recursion_count The number of recursive loops so far.
 | |
|  *
 | |
|  * @return The hash value.
 | |
|  *
 | |
|  * @see Variant::recursive_hash()
 | |
|  */
 | |
| typedef GDExtensionInt (*GDExtensionInterfaceVariantRecursiveHash)(GDExtensionConstVariantPtr p_self, GDExtensionInt p_recursion_count);
 | |
| 
 | |
| /**
 | |
|  * @name variant_hash_compare
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Compares two Variants by their hash.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_other A pointer to the other Variant to compare it to.
 | |
|  *
 | |
|  * @return The hash value.
 | |
|  *
 | |
|  * @see Variant::hash_compare()
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInterfaceVariantHashCompare)(GDExtensionConstVariantPtr p_self, GDExtensionConstVariantPtr p_other);
 | |
| 
 | |
| /**
 | |
|  * @name variant_booleanize
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Converts a Variant to a boolean.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  *
 | |
|  * @return The boolean value of the Variant.
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInterfaceVariantBooleanize)(GDExtensionConstVariantPtr p_self);
 | |
| 
 | |
| /**
 | |
|  * @name variant_duplicate
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Duplicates a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param r_ret A pointer to a Variant to store the duplicated value.
 | |
|  * @param p_deep Whether or not to duplicate deeply (when supported by the Variant type).
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantDuplicate)(GDExtensionConstVariantPtr p_self, GDExtensionVariantPtr r_ret, GDExtensionBool p_deep);
 | |
| 
 | |
| /**
 | |
|  * @name variant_stringify
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Converts a Variant to a string.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param r_ret A pointer to a String to store the resulting value.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantStringify)(GDExtensionConstVariantPtr p_self, GDExtensionStringPtr r_ret);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_type
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the type of a Variant.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  *
 | |
|  * @return The variant type.
 | |
|  */
 | |
| typedef GDExtensionVariantType (*GDExtensionInterfaceVariantGetType)(GDExtensionConstVariantPtr p_self);
 | |
| 
 | |
| /**
 | |
|  * @name variant_has_method
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Checks if a Variant has the given method.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_method A pointer to a StringName with the method name.
 | |
|  *
 | |
|  * @return
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInterfaceVariantHasMethod)(GDExtensionConstVariantPtr p_self, GDExtensionConstStringNamePtr p_method);
 | |
| 
 | |
| /**
 | |
|  * @name variant_has_member
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Checks if a type of Variant has the given member.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  * @param p_member A pointer to a StringName with the member name.
 | |
|  *
 | |
|  * @return
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInterfaceVariantHasMember)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_member);
 | |
| 
 | |
| /**
 | |
|  * @name variant_has_key
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Checks if a Variant has a key.
 | |
|  *
 | |
|  * @param p_self A pointer to the Variant.
 | |
|  * @param p_key A pointer to a Variant representing the key.
 | |
|  * @param r_valid A pointer to a boolean which will be set to false if the key doesn't exist.
 | |
|  *
 | |
|  * @return true if the key exists; otherwise false.
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInterfaceVariantHasKey)(GDExtensionConstVariantPtr p_self, GDExtensionConstVariantPtr p_key, GDExtensionBool *r_valid);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_type_name
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the name of a Variant type.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  * @param r_name A pointer to a String to store the Variant type name.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantGetTypeName)(GDExtensionVariantType p_type, GDExtensionUninitializedStringPtr r_name);
 | |
| 
 | |
| /**
 | |
|  * @name variant_can_convert
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Checks if Variants can be converted from one type to another.
 | |
|  *
 | |
|  * @param p_from The Variant type to convert from.
 | |
|  * @param p_to The Variant type to convert to.
 | |
|  *
 | |
|  * @return true if the conversion is possible; otherwise false.
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInterfaceVariantCanConvert)(GDExtensionVariantType p_from, GDExtensionVariantType p_to);
 | |
| 
 | |
| /**
 | |
|  * @name variant_can_convert_strict
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Checks if Variant can be converted from one type to another using stricter rules.
 | |
|  *
 | |
|  * @param p_from The Variant type to convert from.
 | |
|  * @param p_to The Variant type to convert to.
 | |
|  *
 | |
|  * @return true if the conversion is possible; otherwise false.
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInterfaceVariantCanConvertStrict)(GDExtensionVariantType p_from, GDExtensionVariantType p_to);
 | |
| 
 | |
| /**
 | |
|  * @name get_variant_from_type_constructor
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can create a Variant of the given type from a raw value.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  *
 | |
|  * @return A pointer to a function that can create a Variant of the given type from a raw value.
 | |
|  */
 | |
| typedef GDExtensionVariantFromTypeConstructorFunc (*GDExtensionInterfaceGetVariantFromTypeConstructor)(GDExtensionVariantType p_type);
 | |
| 
 | |
| /**
 | |
|  * @name get_variant_to_type_constructor
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can get the raw value from a Variant of the given type.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  *
 | |
|  * @return A pointer to a function that can get the raw value from a Variant of the given type.
 | |
|  */
 | |
| typedef GDExtensionTypeFromVariantConstructorFunc (*GDExtensionInterfaceGetVariantToTypeConstructor)(GDExtensionVariantType p_type);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_operator_evaluator
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can evaluate the given Variant operator on the given Variant types.
 | |
|  *
 | |
|  * @param p_operator The variant operator.
 | |
|  * @param p_type_a The type of the first Variant.
 | |
|  * @param p_type_b The type of the second Variant.
 | |
|  *
 | |
|  * @return A pointer to a function that can evaluate the given Variant operator on the given Variant types.
 | |
|  */
 | |
| typedef GDExtensionPtrOperatorEvaluator (*GDExtensionInterfaceVariantGetPtrOperatorEvaluator)(GDExtensionVariantOperator p_operator, GDExtensionVariantType p_type_a, GDExtensionVariantType p_type_b);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_builtin_method
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can call a builtin method on a type of Variant.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  * @param p_method A pointer to a StringName with the method name.
 | |
|  * @param p_hash A hash representing the method signature.
 | |
|  *
 | |
|  * @return A pointer to a function that can call a builtin method on a type of Variant.
 | |
|  */
 | |
| typedef GDExtensionPtrBuiltInMethod (*GDExtensionInterfaceVariantGetPtrBuiltinMethod)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_method, GDExtensionInt p_hash);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_constructor
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can call one of the constructors for a type of Variant.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  * @param p_constructor The index of the constructor.
 | |
|  *
 | |
|  * @return A pointer to a function that can call one of the constructors for a type of Variant.
 | |
|  */
 | |
| typedef GDExtensionPtrConstructor (*GDExtensionInterfaceVariantGetPtrConstructor)(GDExtensionVariantType p_type, int32_t p_constructor);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_destructor
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function than can call the destructor for a type of Variant.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  *
 | |
|  * @return A pointer to a function than can call the destructor for a type of Variant.
 | |
|  */
 | |
| typedef GDExtensionPtrDestructor (*GDExtensionInterfaceVariantGetPtrDestructor)(GDExtensionVariantType p_type);
 | |
| 
 | |
| /**
 | |
|  * @name variant_construct
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Constructs a Variant of the given type, using the first constructor that matches the given arguments.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  * @param p_base A pointer to a Variant to store the constructed value.
 | |
|  * @param p_args A pointer to a C array of Variant pointers representing the arguments for the constructor.
 | |
|  * @param p_argument_count The number of arguments to pass to the constructor.
 | |
|  * @param r_error A pointer the structure which will be updated with error information.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantConstruct)(GDExtensionVariantType p_type, GDExtensionUninitializedVariantPtr r_base, const GDExtensionConstVariantPtr *p_args, int32_t p_argument_count, GDExtensionCallError *r_error);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_setter
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can call a member's setter on the given Variant type.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  * @param p_member A pointer to a StringName with the member name.
 | |
|  *
 | |
|  * @return A pointer to a function that can call a member's setter on the given Variant type.
 | |
|  */
 | |
| typedef GDExtensionPtrSetter (*GDExtensionInterfaceVariantGetPtrSetter)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_member);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_getter
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can call a member's getter on the given Variant type.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  * @param p_member A pointer to a StringName with the member name.
 | |
|  *
 | |
|  * @return A pointer to a function that can call a member's getter on the given Variant type.
 | |
|  */
 | |
| typedef GDExtensionPtrGetter (*GDExtensionInterfaceVariantGetPtrGetter)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_member);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_indexed_setter
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can set an index on the given Variant type.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  *
 | |
|  * @return A pointer to a function that can set an index on the given Variant type.
 | |
|  */
 | |
| typedef GDExtensionPtrIndexedSetter (*GDExtensionInterfaceVariantGetPtrIndexedSetter)(GDExtensionVariantType p_type);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_indexed_getter
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can get an index on the given Variant type.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  *
 | |
|  * @return A pointer to a function that can get an index on the given Variant type.
 | |
|  */
 | |
| typedef GDExtensionPtrIndexedGetter (*GDExtensionInterfaceVariantGetPtrIndexedGetter)(GDExtensionVariantType p_type);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_keyed_setter
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can set a key on the given Variant type.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  *
 | |
|  * @return A pointer to a function that can set a key on the given Variant type.
 | |
|  */
 | |
| typedef GDExtensionPtrKeyedSetter (*GDExtensionInterfaceVariantGetPtrKeyedSetter)(GDExtensionVariantType p_type);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_keyed_getter
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can get a key on the given Variant type.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  *
 | |
|  * @return A pointer to a function that can get a key on the given Variant type.
 | |
|  */
 | |
| typedef GDExtensionPtrKeyedGetter (*GDExtensionInterfaceVariantGetPtrKeyedGetter)(GDExtensionVariantType p_type);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_keyed_checker
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can check a key on the given Variant type.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  *
 | |
|  * @return A pointer to a function that can check a key on the given Variant type.
 | |
|  */
 | |
| typedef GDExtensionPtrKeyedChecker (*GDExtensionInterfaceVariantGetPtrKeyedChecker)(GDExtensionVariantType p_type);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_constant_value
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the value of a constant from the given Variant type.
 | |
|  *
 | |
|  * @param p_type The Variant type.
 | |
|  * @param p_constant A pointer to a StringName with the constant name.
 | |
|  * @param r_ret A pointer to a Variant to store the value.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceVariantGetConstantValue)(GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_constant, GDExtensionUninitializedVariantPtr r_ret);
 | |
| 
 | |
| /**
 | |
|  * @name variant_get_ptr_utility_function
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a function that can call a Variant utility function.
 | |
|  *
 | |
|  * @param p_function A pointer to a StringName with the function name.
 | |
|  * @param p_hash A hash representing the function signature.
 | |
|  *
 | |
|  * @return A pointer to a function that can call a Variant utility function.
 | |
|  */
 | |
| typedef GDExtensionPtrUtilityFunction (*GDExtensionInterfaceVariantGetPtrUtilityFunction)(GDExtensionConstStringNamePtr p_function, GDExtensionInt p_hash);
 | |
| 
 | |
| /* INTERFACE: String Utilities */
 | |
| 
 | |
| /**
 | |
|  * @name string_new_with_latin1_chars
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a String from a Latin-1 encoded C string.
 | |
|  *
 | |
|  * @param r_dest A pointer to a Variant to hold the newly created String.
 | |
|  * @param p_contents A pointer to a Latin-1 encoded C string (null terminated).
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringNewWithLatin1Chars)(GDExtensionUninitializedStringPtr r_dest, const char *p_contents);
 | |
| 
 | |
| /**
 | |
|  * @name string_new_with_utf8_chars
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a String from a UTF-8 encoded C string.
 | |
|  *
 | |
|  * @param r_dest A pointer to a Variant to hold the newly created String.
 | |
|  * @param p_contents A pointer to a UTF-8 encoded C string (null terminated).
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringNewWithUtf8Chars)(GDExtensionUninitializedStringPtr r_dest, const char *p_contents);
 | |
| 
 | |
| /**
 | |
|  * @name string_new_with_utf16_chars
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a String from a UTF-16 encoded C string.
 | |
|  *
 | |
|  * @param r_dest A pointer to a Variant to hold the newly created String.
 | |
|  * @param p_contents A pointer to a UTF-16 encoded C string (null terminated).
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringNewWithUtf16Chars)(GDExtensionUninitializedStringPtr r_dest, const char16_t *p_contents);
 | |
| 
 | |
| /**
 | |
|  * @name string_new_with_utf32_chars
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a String from a UTF-32 encoded C string.
 | |
|  *
 | |
|  * @param r_dest A pointer to a Variant to hold the newly created String.
 | |
|  * @param p_contents A pointer to a UTF-32 encoded C string (null terminated).
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringNewWithUtf32Chars)(GDExtensionUninitializedStringPtr r_dest, const char32_t *p_contents);
 | |
| 
 | |
| /**
 | |
|  * @name string_new_with_wide_chars
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a String from a wide C string.
 | |
|  *
 | |
|  * @param r_dest A pointer to a Variant to hold the newly created String.
 | |
|  * @param p_contents A pointer to a wide C string (null terminated).
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringNewWithWideChars)(GDExtensionUninitializedStringPtr r_dest, const wchar_t *p_contents);
 | |
| 
 | |
| /**
 | |
|  * @name string_new_with_latin1_chars_and_len
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a String from a Latin-1 encoded C string with the given length.
 | |
|  *
 | |
|  * @param r_dest A pointer to a Variant to hold the newly created String.
 | |
|  * @param p_contents A pointer to a Latin-1 encoded C string.
 | |
|  * @param p_size The number of characters.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringNewWithLatin1CharsAndLen)(GDExtensionUninitializedStringPtr r_dest, const char *p_contents, GDExtensionInt p_size);
 | |
| 
 | |
| /**
 | |
|  * @name string_new_with_utf8_chars_and_len
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a String from a UTF-8 encoded C string with the given length.
 | |
|  *
 | |
|  * @param r_dest A pointer to a Variant to hold the newly created String.
 | |
|  * @param p_contents A pointer to a UTF-8 encoded C string.
 | |
|  * @param p_size The number of characters.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringNewWithUtf8CharsAndLen)(GDExtensionUninitializedStringPtr r_dest, const char *p_contents, GDExtensionInt p_size);
 | |
| 
 | |
| /**
 | |
|  * @name string_new_with_utf16_chars_and_len
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a String from a UTF-16 encoded C string with the given length.
 | |
|  *
 | |
|  * @param r_dest A pointer to a Variant to hold the newly created String.
 | |
|  * @param p_contents A pointer to a UTF-16 encoded C string.
 | |
|  * @param p_size The number of characters.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringNewWithUtf16CharsAndLen)(GDExtensionUninitializedStringPtr r_dest, const char16_t *p_contents, GDExtensionInt p_size);
 | |
| 
 | |
| /**
 | |
|  * @name string_new_with_utf32_chars_and_len
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a String from a UTF-32 encoded C string with the given length.
 | |
|  *
 | |
|  * @param r_dest A pointer to a Variant to hold the newly created String.
 | |
|  * @param p_contents A pointer to a UTF-32 encoded C string.
 | |
|  * @param p_size The number of characters.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringNewWithUtf32CharsAndLen)(GDExtensionUninitializedStringPtr r_dest, const char32_t *p_contents, GDExtensionInt p_size);
 | |
| 
 | |
| /**
 | |
|  * @name string_new_with_wide_chars_and_len
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a String from a wide C string with the given length.
 | |
|  *
 | |
|  * @param r_dest A pointer to a Variant to hold the newly created String.
 | |
|  * @param p_contents A pointer to a wide C string.
 | |
|  * @param p_size The number of characters.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringNewWithWideCharsAndLen)(GDExtensionUninitializedStringPtr r_dest, const wchar_t *p_contents, GDExtensionInt p_size);
 | |
| 
 | |
| /**
 | |
|  * @name string_to_latin1_chars
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Converts a String to a Latin-1 encoded C string.
 | |
|  *
 | |
|  * It doesn't write a null terminator.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param r_text A pointer to the buffer to hold the resulting data. If NULL is passed in, only the length will be computed.
 | |
|  * @param p_max_write_length The maximum number of characters that can be written to r_text. It has no affect on the return value.
 | |
|  *
 | |
|  * @return The resulting encoded string length in characters (not bytes), not including a null terminator.
 | |
|  */
 | |
| typedef GDExtensionInt (*GDExtensionInterfaceStringToLatin1Chars)(GDExtensionConstStringPtr p_self, char *r_text, GDExtensionInt p_max_write_length);
 | |
| 
 | |
| /**
 | |
|  * @name string_to_utf8_chars
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Converts a String to a UTF-8 encoded C string.
 | |
|  *
 | |
|  * It doesn't write a null terminator.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param r_text A pointer to the buffer to hold the resulting data. If NULL is passed in, only the length will be computed.
 | |
|  * @param p_max_write_length The maximum number of characters that can be written to r_text. It has no affect on the return value.
 | |
|  *
 | |
|  * @return The resulting encoded string length in characters (not bytes), not including a null terminator.
 | |
|  */
 | |
| typedef GDExtensionInt (*GDExtensionInterfaceStringToUtf8Chars)(GDExtensionConstStringPtr p_self, char *r_text, GDExtensionInt p_max_write_length);
 | |
| 
 | |
| /**
 | |
|  * @name string_to_utf16_chars
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Converts a String to a UTF-16 encoded C string.
 | |
|  *
 | |
|  * It doesn't write a null terminator.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param r_text A pointer to the buffer to hold the resulting data. If NULL is passed in, only the length will be computed.
 | |
|  * @param p_max_write_length The maximum number of characters that can be written to r_text. It has no affect on the return value.
 | |
|  *
 | |
|  * @return The resulting encoded string length in characters (not bytes), not including a null terminator.
 | |
|  */
 | |
| typedef GDExtensionInt (*GDExtensionInterfaceStringToUtf16Chars)(GDExtensionConstStringPtr p_self, char16_t *r_text, GDExtensionInt p_max_write_length);
 | |
| 
 | |
| /**
 | |
|  * @name string_to_utf32_chars
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Converts a String to a UTF-32 encoded C string.
 | |
|  *
 | |
|  * It doesn't write a null terminator.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param r_text A pointer to the buffer to hold the resulting data. If NULL is passed in, only the length will be computed.
 | |
|  * @param p_max_write_length The maximum number of characters that can be written to r_text. It has no affect on the return value.
 | |
|  *
 | |
|  * @return The resulting encoded string length in characters (not bytes), not including a null terminator.
 | |
|  */
 | |
| typedef GDExtensionInt (*GDExtensionInterfaceStringToUtf32Chars)(GDExtensionConstStringPtr p_self, char32_t *r_text, GDExtensionInt p_max_write_length);
 | |
| 
 | |
| /**
 | |
|  * @name string_to_wide_chars
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Converts a String to a wide C string.
 | |
|  *
 | |
|  * It doesn't write a null terminator.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param r_text A pointer to the buffer to hold the resulting data. If NULL is passed in, only the length will be computed.
 | |
|  * @param p_max_write_length The maximum number of characters that can be written to r_text. It has no affect on the return value.
 | |
|  *
 | |
|  * @return The resulting encoded string length in characters (not bytes), not including a null terminator.
 | |
|  */
 | |
| typedef GDExtensionInt (*GDExtensionInterfaceStringToWideChars)(GDExtensionConstStringPtr p_self, wchar_t *r_text, GDExtensionInt p_max_write_length);
 | |
| 
 | |
| /**
 | |
|  * @name string_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to the character at the given index from a String.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param p_index The index.
 | |
|  *
 | |
|  * @return A pointer to the requested character.
 | |
|  */
 | |
| typedef char32_t *(*GDExtensionInterfaceStringOperatorIndex)(GDExtensionStringPtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name string_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to the character at the given index from a String.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param p_index The index.
 | |
|  *
 | |
|  * @return A const pointer to the requested character.
 | |
|  */
 | |
| typedef const char32_t *(*GDExtensionInterfaceStringOperatorIndexConst)(GDExtensionConstStringPtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name string_operator_plus_eq_string
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Appends another String to a String.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param p_b A pointer to the other String to append.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringOperatorPlusEqString)(GDExtensionStringPtr p_self, GDExtensionConstStringPtr p_b);
 | |
| 
 | |
| /**
 | |
|  * @name string_operator_plus_eq_char
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Appends a character to a String.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param p_b A pointer to the character to append.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringOperatorPlusEqChar)(GDExtensionStringPtr p_self, char32_t p_b);
 | |
| 
 | |
| /**
 | |
|  * @name string_operator_plus_eq_cstr
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Appends a Latin-1 encoded C string to a String.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param p_b A pointer to a Latin-1 encoded C string (null terminated).
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringOperatorPlusEqCstr)(GDExtensionStringPtr p_self, const char *p_b);
 | |
| 
 | |
| /**
 | |
|  * @name string_operator_plus_eq_wcstr
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Appends a wide C string to a String.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param p_b A pointer to a wide C string (null terminated).
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringOperatorPlusEqWcstr)(GDExtensionStringPtr p_self, const wchar_t *p_b);
 | |
| 
 | |
| /**
 | |
|  * @name string_operator_plus_eq_c32str
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Appends a UTF-32 encoded C string to a String.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param p_b A pointer to a UTF-32 encoded C string (null terminated).
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceStringOperatorPlusEqC32str)(GDExtensionStringPtr p_self, const char32_t *p_b);
 | |
| 
 | |
| /**
 | |
|  * @name string_resize
 | |
|  * @since 4.2
 | |
|  *
 | |
|  * Resizes the underlying string data to the given number of characters.
 | |
|  *
 | |
|  * Space needs to be allocated for the null terminating character ('\0') which
 | |
|  * also must be added manually, in order for all string functions to work correctly.
 | |
|  *
 | |
|  * Warning: This is an error-prone operation - only use it if there's no other
 | |
|  * efficient way to accomplish your goal.
 | |
|  *
 | |
|  * @param p_self A pointer to the String.
 | |
|  * @param p_resize The new length for the String.
 | |
|  *
 | |
|  * @return Error code signifying if the operation successful.
 | |
|  */
 | |
| typedef GDExtensionInt (*GDExtensionInterfaceStringResize)(GDExtensionStringPtr p_self, GDExtensionInt p_resize);
 | |
| 
 | |
| /* INTERFACE: XMLParser Utilities */
 | |
| 
 | |
| /**
 | |
|  * @name xml_parser_open_buffer
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Opens a raw XML buffer on an XMLParser instance.
 | |
|  *
 | |
|  * @param p_instance A pointer to an XMLParser object.
 | |
|  * @param p_buffer A pointer to the buffer.
 | |
|  * @param p_size The size of the buffer.
 | |
|  *
 | |
|  * @return A Godot error code (ex. OK, ERR_INVALID_DATA, etc).
 | |
|  *
 | |
|  * @see XMLParser::open_buffer()
 | |
|  */
 | |
| typedef GDExtensionInt (*GDExtensionInterfaceXmlParserOpenBuffer)(GDExtensionObjectPtr p_instance, const uint8_t *p_buffer, size_t p_size);
 | |
| 
 | |
| /* INTERFACE: FileAccess Utilities */
 | |
| 
 | |
| /**
 | |
|  * @name file_access_store_buffer
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Stores the given buffer using an instance of FileAccess.
 | |
|  *
 | |
|  * @param p_instance A pointer to a FileAccess object.
 | |
|  * @param p_src A pointer to the buffer.
 | |
|  * @param p_length The size of the buffer.
 | |
|  *
 | |
|  * @see FileAccess::store_buffer()
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceFileAccessStoreBuffer)(GDExtensionObjectPtr p_instance, const uint8_t *p_src, uint64_t p_length);
 | |
| 
 | |
| /**
 | |
|  * @name file_access_get_buffer
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Reads the next p_length bytes into the given buffer using an instance of FileAccess.
 | |
|  *
 | |
|  * @param p_instance A pointer to a FileAccess object.
 | |
|  * @param p_dst A pointer to the buffer to store the data.
 | |
|  * @param p_length The requested number of bytes to read.
 | |
|  *
 | |
|  * @return The actual number of bytes read (may be less than requested).
 | |
|  */
 | |
| typedef uint64_t (*GDExtensionInterfaceFileAccessGetBuffer)(GDExtensionConstObjectPtr p_instance, uint8_t *p_dst, uint64_t p_length);
 | |
| 
 | |
| /* INTERFACE: WorkerThreadPool Utilities */
 | |
| 
 | |
| /**
 | |
|  * @name worker_thread_pool_add_native_group_task
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Adds a group task to an instance of WorkerThreadPool.
 | |
|  *
 | |
|  * @param p_instance A pointer to a WorkerThreadPool object.
 | |
|  * @param p_func A pointer to a function to run in the thread pool.
 | |
|  * @param p_userdata A pointer to arbitrary data which will be passed to p_func.
 | |
|  * @param p_tasks The number of tasks needed in the group.
 | |
|  * @param p_high_priority Whether or not this is a high priority task.
 | |
|  * @param p_description A pointer to a String with the task description.
 | |
|  *
 | |
|  * @return The task group ID.
 | |
|  *
 | |
|  * @see WorkerThreadPool::add_group_task()
 | |
|  */
 | |
| typedef int64_t (*GDExtensionInterfaceWorkerThreadPoolAddNativeGroupTask)(GDExtensionObjectPtr p_instance, void (*p_func)(void *, uint32_t), void *p_userdata, int p_elements, int p_tasks, GDExtensionBool p_high_priority, GDExtensionConstStringPtr p_description);
 | |
| 
 | |
| /**
 | |
|  * @name worker_thread_pool_add_native_task
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Adds a task to an instance of WorkerThreadPool.
 | |
|  *
 | |
|  * @param p_instance A pointer to a WorkerThreadPool object.
 | |
|  * @param p_func A pointer to a function to run in the thread pool.
 | |
|  * @param p_userdata A pointer to arbitrary data which will be passed to p_func.
 | |
|  * @param p_high_priority Whether or not this is a high priority task.
 | |
|  * @param p_description A pointer to a String with the task description.
 | |
|  *
 | |
|  * @return The task ID.
 | |
|  */
 | |
| typedef int64_t (*GDExtensionInterfaceWorkerThreadPoolAddNativeTask)(GDExtensionObjectPtr p_instance, void (*p_func)(void *), void *p_userdata, GDExtensionBool p_high_priority, GDExtensionConstStringPtr p_description);
 | |
| 
 | |
| /* INTERFACE: Packed Array */
 | |
| 
 | |
| /**
 | |
|  * @name packed_byte_array_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a byte in a PackedByteArray.
 | |
|  *
 | |
|  * @param p_self A pointer to a PackedByteArray object.
 | |
|  * @param p_index The index of the byte to get.
 | |
|  *
 | |
|  * @return A pointer to the requested byte.
 | |
|  */
 | |
| typedef uint8_t *(*GDExtensionInterfacePackedByteArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_byte_array_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a byte in a PackedByteArray.
 | |
|  *
 | |
|  * @param p_self A const pointer to a PackedByteArray object.
 | |
|  * @param p_index The index of the byte to get.
 | |
|  *
 | |
|  * @return A const pointer to the requested byte.
 | |
|  */
 | |
| typedef const uint8_t *(*GDExtensionInterfacePackedByteArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_color_array_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a color in a PackedColorArray.
 | |
|  *
 | |
|  * @param p_self A pointer to a PackedColorArray object.
 | |
|  * @param p_index The index of the Color to get.
 | |
|  *
 | |
|  * @return A pointer to the requested Color.
 | |
|  */
 | |
| typedef GDExtensionTypePtr (*GDExtensionInterfacePackedColorArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_color_array_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a color in a PackedColorArray.
 | |
|  *
 | |
|  * @param p_self A const pointer to a const PackedColorArray object.
 | |
|  * @param p_index The index of the Color to get.
 | |
|  *
 | |
|  * @return A const pointer to the requested Color.
 | |
|  */
 | |
| typedef GDExtensionTypePtr (*GDExtensionInterfacePackedColorArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_float32_array_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a 32-bit float in a PackedFloat32Array.
 | |
|  *
 | |
|  * @param p_self A pointer to a PackedFloat32Array object.
 | |
|  * @param p_index The index of the float to get.
 | |
|  *
 | |
|  * @return A pointer to the requested 32-bit float.
 | |
|  */
 | |
| typedef float *(*GDExtensionInterfacePackedFloat32ArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_float32_array_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a 32-bit float in a PackedFloat32Array.
 | |
|  *
 | |
|  * @param p_self A const pointer to a PackedFloat32Array object.
 | |
|  * @param p_index The index of the float to get.
 | |
|  *
 | |
|  * @return A const pointer to the requested 32-bit float.
 | |
|  */
 | |
| typedef const float *(*GDExtensionInterfacePackedFloat32ArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_float64_array_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a 64-bit float in a PackedFloat64Array.
 | |
|  *
 | |
|  * @param p_self A pointer to a PackedFloat64Array object.
 | |
|  * @param p_index The index of the float to get.
 | |
|  *
 | |
|  * @return A pointer to the requested 64-bit float.
 | |
|  */
 | |
| typedef double *(*GDExtensionInterfacePackedFloat64ArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_float64_array_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a 64-bit float in a PackedFloat64Array.
 | |
|  *
 | |
|  * @param p_self A const pointer to a PackedFloat64Array object.
 | |
|  * @param p_index The index of the float to get.
 | |
|  *
 | |
|  * @return A const pointer to the requested 64-bit float.
 | |
|  */
 | |
| typedef const double *(*GDExtensionInterfacePackedFloat64ArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_int32_array_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a 32-bit integer in a PackedInt32Array.
 | |
|  *
 | |
|  * @param p_self A pointer to a PackedInt32Array object.
 | |
|  * @param p_index The index of the integer to get.
 | |
|  *
 | |
|  * @return A pointer to the requested 32-bit integer.
 | |
|  */
 | |
| typedef int32_t *(*GDExtensionInterfacePackedInt32ArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_int32_array_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a 32-bit integer in a PackedInt32Array.
 | |
|  *
 | |
|  * @param p_self A const pointer to a PackedInt32Array object.
 | |
|  * @param p_index The index of the integer to get.
 | |
|  *
 | |
|  * @return A const pointer to the requested 32-bit integer.
 | |
|  */
 | |
| typedef const int32_t *(*GDExtensionInterfacePackedInt32ArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_int64_array_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a 64-bit integer in a PackedInt64Array.
 | |
|  *
 | |
|  * @param p_self A pointer to a PackedInt64Array object.
 | |
|  * @param p_index The index of the integer to get.
 | |
|  *
 | |
|  * @return A pointer to the requested 64-bit integer.
 | |
|  */
 | |
| typedef int64_t *(*GDExtensionInterfacePackedInt64ArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_int64_array_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a 64-bit integer in a PackedInt64Array.
 | |
|  *
 | |
|  * @param p_self A const pointer to a PackedInt64Array object.
 | |
|  * @param p_index The index of the integer to get.
 | |
|  *
 | |
|  * @return A const pointer to the requested 64-bit integer.
 | |
|  */
 | |
| typedef const int64_t *(*GDExtensionInterfacePackedInt64ArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_string_array_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a string in a PackedStringArray.
 | |
|  *
 | |
|  * @param p_self A pointer to a PackedStringArray object.
 | |
|  * @param p_index The index of the String to get.
 | |
|  *
 | |
|  * @return A pointer to the requested String.
 | |
|  */
 | |
| typedef GDExtensionStringPtr (*GDExtensionInterfacePackedStringArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_string_array_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a string in a PackedStringArray.
 | |
|  *
 | |
|  * @param p_self A const pointer to a PackedStringArray object.
 | |
|  * @param p_index The index of the String to get.
 | |
|  *
 | |
|  * @return A const pointer to the requested String.
 | |
|  */
 | |
| typedef GDExtensionStringPtr (*GDExtensionInterfacePackedStringArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_vector2_array_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a Vector2 in a PackedVector2Array.
 | |
|  *
 | |
|  * @param p_self A pointer to a PackedVector2Array object.
 | |
|  * @param p_index The index of the Vector2 to get.
 | |
|  *
 | |
|  * @return A pointer to the requested Vector2.
 | |
|  */
 | |
| typedef GDExtensionTypePtr (*GDExtensionInterfacePackedVector2ArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_vector2_array_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a Vector2 in a PackedVector2Array.
 | |
|  *
 | |
|  * @param p_self A const pointer to a PackedVector2Array object.
 | |
|  * @param p_index The index of the Vector2 to get.
 | |
|  *
 | |
|  * @return A const pointer to the requested Vector2.
 | |
|  */
 | |
| typedef GDExtensionTypePtr (*GDExtensionInterfacePackedVector2ArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_vector3_array_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a Vector3 in a PackedVector3Array.
 | |
|  *
 | |
|  * @param p_self A pointer to a PackedVector3Array object.
 | |
|  * @param p_index The index of the Vector3 to get.
 | |
|  *
 | |
|  * @return A pointer to the requested Vector3.
 | |
|  */
 | |
| typedef GDExtensionTypePtr (*GDExtensionInterfacePackedVector3ArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name packed_vector3_array_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a Vector3 in a PackedVector3Array.
 | |
|  *
 | |
|  * @param p_self A const pointer to a PackedVector3Array object.
 | |
|  * @param p_index The index of the Vector3 to get.
 | |
|  *
 | |
|  * @return A const pointer to the requested Vector3.
 | |
|  */
 | |
| typedef GDExtensionTypePtr (*GDExtensionInterfacePackedVector3ArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name array_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a Variant in an Array.
 | |
|  *
 | |
|  * @param p_self A pointer to an Array object.
 | |
|  * @param p_index The index of the Variant to get.
 | |
|  *
 | |
|  * @return A pointer to the requested Variant.
 | |
|  */
 | |
| typedef GDExtensionVariantPtr (*GDExtensionInterfaceArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name array_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a Variant in an Array.
 | |
|  *
 | |
|  * @param p_self A const pointer to an Array object.
 | |
|  * @param p_index The index of the Variant to get.
 | |
|  *
 | |
|  * @return A const pointer to the requested Variant.
 | |
|  */
 | |
| typedef GDExtensionVariantPtr (*GDExtensionInterfaceArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name array_ref
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Sets an Array to be a reference to another Array object.
 | |
|  *
 | |
|  * @param p_self A pointer to the Array object to update.
 | |
|  * @param p_from A pointer to the Array object to reference.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceArrayRef)(GDExtensionTypePtr p_self, GDExtensionConstTypePtr p_from);
 | |
| 
 | |
| /**
 | |
|  * @name array_set_typed
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Makes an Array into a typed Array.
 | |
|  *
 | |
|  * @param p_self A pointer to the Array.
 | |
|  * @param p_type The type of Variant the Array will store.
 | |
|  * @param p_class_name A pointer to a StringName with the name of the object (if p_type is GDEXTENSION_VARIANT_TYPE_OBJECT).
 | |
|  * @param p_script A pointer to a Script object (if p_type is GDEXTENSION_VARIANT_TYPE_OBJECT and the base class is extended by a script).
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceArraySetTyped)(GDExtensionTypePtr p_self, GDExtensionVariantType p_type, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstVariantPtr p_script);
 | |
| 
 | |
| /* INTERFACE: Dictionary */
 | |
| 
 | |
| /**
 | |
|  * @name dictionary_operator_index
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to a Variant in a Dictionary with the given key.
 | |
|  *
 | |
|  * @param p_self A pointer to a Dictionary object.
 | |
|  * @param p_key A pointer to a Variant representing the key.
 | |
|  *
 | |
|  * @return A pointer to a Variant representing the value at the given key.
 | |
|  */
 | |
| typedef GDExtensionVariantPtr (*GDExtensionInterfaceDictionaryOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionConstVariantPtr p_key);
 | |
| 
 | |
| /**
 | |
|  * @name dictionary_operator_index_const
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a const pointer to a Variant in a Dictionary with the given key.
 | |
|  *
 | |
|  * @param p_self A const pointer to a Dictionary object.
 | |
|  * @param p_key A pointer to a Variant representing the key.
 | |
|  *
 | |
|  * @return A const pointer to a Variant representing the value at the given key.
 | |
|  */
 | |
| typedef GDExtensionVariantPtr (*GDExtensionInterfaceDictionaryOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionConstVariantPtr p_key);
 | |
| 
 | |
| /* INTERFACE: Object */
 | |
| 
 | |
| /**
 | |
|  * @name object_method_bind_call
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Calls a method on an Object.
 | |
|  *
 | |
|  * @param p_method_bind A pointer to the MethodBind representing the method on the Object's class.
 | |
|  * @param p_instance A pointer to the Object.
 | |
|  * @param p_args A pointer to a C array of Variants representing the arguments.
 | |
|  * @param p_arg_count The number of arguments.
 | |
|  * @param r_ret A pointer to Variant which will receive the return value.
 | |
|  * @param r_error A pointer to a GDExtensionCallError struct that will receive error information.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceObjectMethodBindCall)(GDExtensionMethodBindPtr p_method_bind, GDExtensionObjectPtr p_instance, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_arg_count, GDExtensionUninitializedVariantPtr r_ret, GDExtensionCallError *r_error);
 | |
| 
 | |
| /**
 | |
|  * @name object_method_bind_ptrcall
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Calls a method on an Object (using a "ptrcall").
 | |
|  *
 | |
|  * @param p_method_bind A pointer to the MethodBind representing the method on the Object's class.
 | |
|  * @param p_instance A pointer to the Object.
 | |
|  * @param p_args A pointer to a C array representing the arguments.
 | |
|  * @param r_ret A pointer to the Object that will receive the return value.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceObjectMethodBindPtrcall)(GDExtensionMethodBindPtr p_method_bind, GDExtensionObjectPtr p_instance, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_ret);
 | |
| 
 | |
| /**
 | |
|  * @name object_destroy
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Destroys an Object.
 | |
|  *
 | |
|  * @param p_o A pointer to the Object.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceObjectDestroy)(GDExtensionObjectPtr p_o);
 | |
| 
 | |
| /**
 | |
|  * @name global_get_singleton
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a global singleton by name.
 | |
|  *
 | |
|  * @param p_name A pointer to a StringName with the singleton name.
 | |
|  *
 | |
|  * @return A pointer to the singleton Object.
 | |
|  */
 | |
| typedef GDExtensionObjectPtr (*GDExtensionInterfaceGlobalGetSingleton)(GDExtensionConstStringNamePtr p_name);
 | |
| 
 | |
| /**
 | |
|  * @name object_get_instance_binding
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer representing an Object's instance binding.
 | |
|  *
 | |
|  * @param p_o A pointer to the Object.
 | |
|  * @param p_library A token the library received by the GDExtension's entry point function.
 | |
|  * @param p_callbacks A pointer to a GDExtensionInstanceBindingCallbacks struct.
 | |
|  *
 | |
|  * @return
 | |
|  */
 | |
| typedef void *(*GDExtensionInterfaceObjectGetInstanceBinding)(GDExtensionObjectPtr p_o, void *p_token, const GDExtensionInstanceBindingCallbacks *p_callbacks);
 | |
| 
 | |
| /**
 | |
|  * @name object_set_instance_binding
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Sets an Object's instance binding.
 | |
|  *
 | |
|  * @param p_o A pointer to the Object.
 | |
|  * @param p_library A token the library received by the GDExtension's entry point function.
 | |
|  * @param p_binding A pointer to the instance binding.
 | |
|  * @param p_callbacks A pointer to a GDExtensionInstanceBindingCallbacks struct.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceObjectSetInstanceBinding)(GDExtensionObjectPtr p_o, void *p_token, void *p_binding, const GDExtensionInstanceBindingCallbacks *p_callbacks);
 | |
| 
 | |
| /**
 | |
|  * @name object_set_instance
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Sets an extension class instance on a Object.
 | |
|  *
 | |
|  * @param p_o A pointer to the Object.
 | |
|  * @param p_classname A pointer to a StringName with the registered extension class's name.
 | |
|  * @param p_instance A pointer to the extension class instance.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceObjectSetInstance)(GDExtensionObjectPtr p_o, GDExtensionConstStringNamePtr p_classname, GDExtensionClassInstancePtr p_instance); /* p_classname should be a registered extension class and should extend the p_o object's class. */
 | |
| 
 | |
| /**
 | |
|  * @name object_get_class_name
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the class name of an Object.
 | |
|  *
 | |
|  * @param p_object A pointer to the Object.
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param r_class_name A pointer to a String to receive the class name.
 | |
|  *
 | |
|  * @return true if successful in getting the class name; otherwise false.
 | |
|  */
 | |
| typedef GDExtensionBool (*GDExtensionInterfaceObjectGetClassName)(GDExtensionConstObjectPtr p_object, GDExtensionClassLibraryPtr p_library, GDExtensionUninitializedStringNamePtr r_class_name);
 | |
| 
 | |
| /**
 | |
|  * @name object_cast_to
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Casts an Object to a different type.
 | |
|  *
 | |
|  * @param p_object A pointer to the Object.
 | |
|  * @param p_class_tag A pointer uniquely identifying a built-in class in the ClassDB.
 | |
|  *
 | |
|  * @return Returns a pointer to the Object, or NULL if it can't be cast to the requested type.
 | |
|  */
 | |
| typedef GDExtensionObjectPtr (*GDExtensionInterfaceObjectCastTo)(GDExtensionConstObjectPtr p_object, void *p_class_tag);
 | |
| 
 | |
| /**
 | |
|  * @name object_get_instance_from_id
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets an Object by its instance ID.
 | |
|  *
 | |
|  * @param p_instance_id The instance ID.
 | |
|  *
 | |
|  * @return A pointer to the Object.
 | |
|  */
 | |
| typedef GDExtensionObjectPtr (*GDExtensionInterfaceObjectGetInstanceFromId)(GDObjectInstanceID p_instance_id);
 | |
| 
 | |
| /**
 | |
|  * @name object_get_instance_id
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the instance ID from an Object.
 | |
|  *
 | |
|  * @param p_object A pointer to the Object.
 | |
|  *
 | |
|  * @return The instance ID.
 | |
|  */
 | |
| typedef GDObjectInstanceID (*GDExtensionInterfaceObjectGetInstanceId)(GDExtensionConstObjectPtr p_object);
 | |
| 
 | |
| /* INTERFACE: Reference */
 | |
| 
 | |
| /**
 | |
|  * @name ref_get_object
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the Object from a reference.
 | |
|  *
 | |
|  * @param p_ref A pointer to the reference.
 | |
|  *
 | |
|  * @return A pointer to the Object from the reference or NULL.
 | |
|  */
 | |
| typedef GDExtensionObjectPtr (*GDExtensionInterfaceRefGetObject)(GDExtensionConstRefPtr p_ref);
 | |
| 
 | |
| /**
 | |
|  * @name ref_set_object
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Sets the Object referred to by a reference.
 | |
|  *
 | |
|  * @param p_ref A pointer to the reference.
 | |
|  * @param p_object A pointer to the Object to refer to.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceRefSetObject)(GDExtensionRefPtr p_ref, GDExtensionObjectPtr p_object);
 | |
| 
 | |
| /* INTERFACE: Script Instance */
 | |
| 
 | |
| /**
 | |
|  * @name script_instance_create
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Creates a script instance that contains the given info and instance data.
 | |
|  *
 | |
|  * @param p_info A pointer to a GDExtensionScriptInstanceInfo struct.
 | |
|  * @param p_instance_data A pointer to a data representing the script instance in the GDExtension. This will be passed to all the function pointers on p_info.
 | |
|  *
 | |
|  * @return A pointer to a ScriptInstanceExtension object.
 | |
|  */
 | |
| typedef GDExtensionScriptInstancePtr (*GDExtensionInterfaceScriptInstanceCreate)(const GDExtensionScriptInstanceInfo *p_info, GDExtensionScriptInstanceDataPtr p_instance_data);
 | |
| 
 | |
| /* INTERFACE: ClassDB */
 | |
| 
 | |
| /**
 | |
|  * @name classdb_construct_object
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Constructs an Object of the requested class.
 | |
|  *
 | |
|  * The passed class must be a built-in godot class, or an already-registered extension class. In both cases, object_set_instance() should be called to fully initialize the object.
 | |
|  *
 | |
|  * @param p_classname A pointer to a StringName with the class name.
 | |
|  *
 | |
|  * @return A pointer to the newly created Object.
 | |
|  */
 | |
| typedef GDExtensionObjectPtr (*GDExtensionInterfaceClassdbConstructObject)(GDExtensionConstStringNamePtr p_classname);
 | |
| 
 | |
| /**
 | |
|  * @name classdb_get_method_bind
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer to the MethodBind in ClassDB for the given class, method and hash.
 | |
|  *
 | |
|  * @param p_classname A pointer to a StringName with the class name.
 | |
|  * @param p_methodname A pointer to a StringName with the method name.
 | |
|  * @param p_hash A hash representing the function signature.
 | |
|  *
 | |
|  * @return A pointer to the MethodBind from ClassDB.
 | |
|  */
 | |
| typedef GDExtensionMethodBindPtr (*GDExtensionInterfaceClassdbGetMethodBind)(GDExtensionConstStringNamePtr p_classname, GDExtensionConstStringNamePtr p_methodname, GDExtensionInt p_hash);
 | |
| 
 | |
| /**
 | |
|  * @name classdb_get_class_tag
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets a pointer uniquely identifying the given built-in class in the ClassDB.
 | |
|  *
 | |
|  * @param p_classname A pointer to a StringName with the class name.
 | |
|  *
 | |
|  * @return A pointer uniquely identifying the built-in class in the ClassDB.
 | |
|  */
 | |
| typedef void *(*GDExtensionInterfaceClassdbGetClassTag)(GDExtensionConstStringNamePtr p_classname);
 | |
| 
 | |
| /* INTERFACE: ClassDB Extension */
 | |
| 
 | |
| /**
 | |
|  * @name classdb_register_extension_class
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Registers an extension class in the ClassDB.
 | |
|  *
 | |
|  * Provided struct can be safely freed once the function returns.
 | |
|  *
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param p_class_name A pointer to a StringName with the class name.
 | |
|  * @param p_parent_class_name A pointer to a StringName with the parent class name.
 | |
|  * @param p_extension_funcs A pointer to a GDExtensionClassCreationInfo struct.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClass)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo *p_extension_funcs);
 | |
| 
 | |
| /**
 | |
|  * @name classdb_register_extension_class_method
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Registers a method on an extension class in the ClassDB.
 | |
|  *
 | |
|  * Provided struct can be safely freed once the function returns.
 | |
|  *
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param p_class_name A pointer to a StringName with the class name.
 | |
|  * @param p_method_info A pointer to a GDExtensionClassMethodInfo struct.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClassMethod)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, const GDExtensionClassMethodInfo *p_method_info);
 | |
| 
 | |
| /**
 | |
|  * @name classdb_register_extension_class_integer_constant
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Registers an integer constant on an extension class in the ClassDB.
 | |
|  *
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param p_class_name A pointer to a StringName with the class name.
 | |
|  * @param p_enum_name A pointer to a StringName with the enum name.
 | |
|  * @param p_constant_name A pointer to a StringName with the constant name.
 | |
|  * @param p_constant_value The constant value.
 | |
|  * @param p_is_bitfield Whether or not this is a bit field.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClassIntegerConstant)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_enum_name, GDExtensionConstStringNamePtr p_constant_name, GDExtensionInt p_constant_value, GDExtensionBool p_is_bitfield);
 | |
| 
 | |
| /**
 | |
|  * @name classdb_register_extension_class_property
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Registers a property on an extension class in the ClassDB.
 | |
|  *
 | |
|  * Provided struct can be safely freed once the function returns.
 | |
|  *
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param p_class_name A pointer to a StringName with the class name.
 | |
|  * @param p_info A pointer to a GDExtensionPropertyInfo struct.
 | |
|  * @param p_setter A pointer to a StringName with the name of the setter method.
 | |
|  * @param p_getter A pointer to a StringName with the name of the getter method.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClassProperty)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, const GDExtensionPropertyInfo *p_info, GDExtensionConstStringNamePtr p_setter, GDExtensionConstStringNamePtr p_getter);
 | |
| 
 | |
| /**
 | |
|  * @name classdb_register_extension_class_property_indexed
 | |
|  * @since 4.2
 | |
|  *
 | |
|  * Registers an indexed property on an extension class in the ClassDB.
 | |
|  *
 | |
|  * Provided struct can be safely freed once the function returns.
 | |
|  *
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param p_class_name A pointer to a StringName with the class name.
 | |
|  * @param p_info A pointer to a GDExtensionPropertyInfo struct.
 | |
|  * @param p_setter A pointer to a StringName with the name of the setter method.
 | |
|  * @param p_getter A pointer to a StringName with the name of the getter method.
 | |
|  * @param p_index The index to pass as the first argument to the getter and setter methods.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClassPropertyIndexed)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, const GDExtensionPropertyInfo *p_info, GDExtensionConstStringNamePtr p_setter, GDExtensionConstStringNamePtr p_getter, GDExtensionInt p_index);
 | |
| 
 | |
| /**
 | |
|  * @name classdb_register_extension_class_property_group
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Registers a property group on an extension class in the ClassDB.
 | |
|  *
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param p_class_name A pointer to a StringName with the class name.
 | |
|  * @param p_group_name A pointer to a String with the group name.
 | |
|  * @param p_prefix A pointer to a String with the prefix used by properties in this group.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClassPropertyGroup)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringPtr p_group_name, GDExtensionConstStringPtr p_prefix);
 | |
| 
 | |
| /**
 | |
|  * @name classdb_register_extension_class_property_subgroup
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Registers a property subgroup on an extension class in the ClassDB.
 | |
|  *
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param p_class_name A pointer to a StringName with the class name.
 | |
|  * @param p_subgroup_name A pointer to a String with the subgroup name.
 | |
|  * @param p_prefix A pointer to a String with the prefix used by properties in this subgroup.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClassPropertySubgroup)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringPtr p_subgroup_name, GDExtensionConstStringPtr p_prefix);
 | |
| 
 | |
| /**
 | |
|  * @name classdb_register_extension_class_signal
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Registers a signal on an extension class in the ClassDB.
 | |
|  *
 | |
|  * Provided structs can be safely freed once the function returns.
 | |
|  *
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param p_class_name A pointer to a StringName with the class name.
 | |
|  * @param p_signal_name A pointer to a StringName with the signal name.
 | |
|  * @param p_argument_info A pointer to a GDExtensionPropertyInfo struct.
 | |
|  * @param p_argument_count The number of arguments the signal receives.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClassSignal)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_signal_name, const GDExtensionPropertyInfo *p_argument_info, GDExtensionInt p_argument_count);
 | |
| 
 | |
| /**
 | |
|  * @name classdb_unregister_extension_class
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Unregisters an extension class in the ClassDB.
 | |
|  *
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param p_class_name A pointer to a StringName with the class name.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceClassdbUnregisterExtensionClass)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name); /* Unregistering a parent class before a class that inherits it will result in failure. Inheritors must be unregistered first. */
 | |
| 
 | |
| /**
 | |
|  * @name get_library_path
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Gets the path to the current GDExtension library.
 | |
|  *
 | |
|  * @param p_library A pointer the library received by the GDExtension's entry point function.
 | |
|  * @param r_path A pointer to a String which will receive the path.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceGetLibraryPath)(GDExtensionClassLibraryPtr p_library, GDExtensionUninitializedStringPtr r_path);
 | |
| 
 | |
| /**
 | |
|  * @name editor_add_plugin
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Adds an editor plugin.
 | |
|  *
 | |
|  * It's safe to call during initialization.
 | |
|  *
 | |
|  * @param p_class_name A pointer to a StringName with the name of a class (descending from EditorPlugin) which is already registered with ClassDB.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceEditorAddPlugin)(GDExtensionConstStringNamePtr p_class_name);
 | |
| 
 | |
| /**
 | |
|  * @name editor_remove_plugin
 | |
|  * @since 4.1
 | |
|  *
 | |
|  * Removes an editor plugin.
 | |
|  *
 | |
|  * @param p_class_name A pointer to a StringName with the name of a class that was previously added as an editor plugin.
 | |
|  */
 | |
| typedef void (*GDExtensionInterfaceEditorRemovePlugin)(GDExtensionConstStringNamePtr p_class_name);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif // GDEXTENSION_INTERFACE_H
 | 
