/* automatically generated by rust-bindgen 0.72.1 */

pub const _VCRT_COMPILER_PREPROCESSOR: u32 = 1;
pub const _SAL_VERSION: u32 = 20;
pub const __SAL_H_VERSION: u32 = 180000000;
pub const _USE_DECLSPECS_FOR_SAL: u32 = 0;
pub const _USE_ATTRIBUTES_FOR_SAL: u32 = 0;
pub const _CRT_PACKING: u32 = 8;
pub const _HAS_EXCEPTIONS: u32 = 1;
pub const _STL_LANG: u32 = 0;
pub const _HAS_CXX17: u32 = 0;
pub const _HAS_CXX20: u32 = 0;
pub const _HAS_CXX23: u32 = 0;
pub const _HAS_CXX26: u32 = 0;
pub const _HAS_NODISCARD: u32 = 0;
pub const WCHAR_MIN: u32 = 0;
pub const WCHAR_MAX: u32 = 65535;
pub const WINT_MIN: u32 = 0;
pub const WINT_MAX: u32 = 65535;
pub type wchar_t = ::std::os::raw::c_ushort;
pub type va_list = *mut ::std::os::raw::c_char;
unsafe extern "C" {
    pub fn __va_start(arg1: *mut *mut ::std::os::raw::c_char, ...);
}
pub type __vcrt_bool = bool;
unsafe extern "C" {
    pub fn __security_init_cookie();
}
unsafe extern "C" {
    pub fn __security_check_cookie(_StackCookie: usize);
}
unsafe extern "C" {
    pub fn __report_gsfailure(_StackCookie: usize) -> !;
}
unsafe extern "C" {
    pub static mut __security_cookie: usize;
}
pub type int_least8_t = ::std::os::raw::c_schar;
pub type int_least16_t = ::std::os::raw::c_short;
pub type int_least32_t = ::std::os::raw::c_int;
pub type int_least64_t = ::std::os::raw::c_longlong;
pub type uint_least8_t = ::std::os::raw::c_uchar;
pub type uint_least16_t = ::std::os::raw::c_ushort;
pub type uint_least32_t = ::std::os::raw::c_uint;
pub type uint_least64_t = ::std::os::raw::c_ulonglong;
pub type int_fast8_t = ::std::os::raw::c_schar;
pub type int_fast16_t = ::std::os::raw::c_int;
pub type int_fast32_t = ::std::os::raw::c_int;
pub type int_fast64_t = ::std::os::raw::c_longlong;
pub type uint_fast8_t = ::std::os::raw::c_uchar;
pub type uint_fast16_t = ::std::os::raw::c_uint;
pub type uint_fast32_t = ::std::os::raw::c_uint;
pub type uint_fast64_t = ::std::os::raw::c_ulonglong;
pub type intmax_t = ::std::os::raw::c_longlong;
pub type uintmax_t = ::std::os::raw::c_ulonglong;
pub type char32_t = u32;
pub type char16_t = u16;
pub const GDEXTENSION_VARIANT_TYPE_NIL: GDExtensionVariantType = 0;
pub const GDEXTENSION_VARIANT_TYPE_BOOL: GDExtensionVariantType = 1;
pub const GDEXTENSION_VARIANT_TYPE_INT: GDExtensionVariantType = 2;
pub const GDEXTENSION_VARIANT_TYPE_FLOAT: GDExtensionVariantType = 3;
pub const GDEXTENSION_VARIANT_TYPE_STRING: GDExtensionVariantType = 4;
pub const GDEXTENSION_VARIANT_TYPE_VECTOR2: GDExtensionVariantType = 5;
pub const GDEXTENSION_VARIANT_TYPE_VECTOR2I: GDExtensionVariantType = 6;
pub const GDEXTENSION_VARIANT_TYPE_RECT2: GDExtensionVariantType = 7;
pub const GDEXTENSION_VARIANT_TYPE_RECT2I: GDExtensionVariantType = 8;
pub const GDEXTENSION_VARIANT_TYPE_VECTOR3: GDExtensionVariantType = 9;
pub const GDEXTENSION_VARIANT_TYPE_VECTOR3I: GDExtensionVariantType = 10;
pub const GDEXTENSION_VARIANT_TYPE_TRANSFORM2D: GDExtensionVariantType = 11;
pub const GDEXTENSION_VARIANT_TYPE_VECTOR4: GDExtensionVariantType = 12;
pub const GDEXTENSION_VARIANT_TYPE_VECTOR4I: GDExtensionVariantType = 13;
pub const GDEXTENSION_VARIANT_TYPE_PLANE: GDExtensionVariantType = 14;
pub const GDEXTENSION_VARIANT_TYPE_QUATERNION: GDExtensionVariantType = 15;
pub const GDEXTENSION_VARIANT_TYPE_AABB: GDExtensionVariantType = 16;
pub const GDEXTENSION_VARIANT_TYPE_BASIS: GDExtensionVariantType = 17;
pub const GDEXTENSION_VARIANT_TYPE_TRANSFORM3D: GDExtensionVariantType = 18;
pub const GDEXTENSION_VARIANT_TYPE_PROJECTION: GDExtensionVariantType = 19;
pub const GDEXTENSION_VARIANT_TYPE_COLOR: GDExtensionVariantType = 20;
pub const GDEXTENSION_VARIANT_TYPE_STRING_NAME: GDExtensionVariantType = 21;
pub const GDEXTENSION_VARIANT_TYPE_NODE_PATH: GDExtensionVariantType = 22;
pub const GDEXTENSION_VARIANT_TYPE_RID: GDExtensionVariantType = 23;
pub const GDEXTENSION_VARIANT_TYPE_OBJECT: GDExtensionVariantType = 24;
pub const GDEXTENSION_VARIANT_TYPE_CALLABLE: GDExtensionVariantType = 25;
pub const GDEXTENSION_VARIANT_TYPE_SIGNAL: GDExtensionVariantType = 26;
pub const GDEXTENSION_VARIANT_TYPE_DICTIONARY: GDExtensionVariantType = 27;
pub const GDEXTENSION_VARIANT_TYPE_ARRAY: GDExtensionVariantType = 28;
pub const GDEXTENSION_VARIANT_TYPE_PACKED_BYTE_ARRAY: GDExtensionVariantType = 29;
pub const GDEXTENSION_VARIANT_TYPE_PACKED_INT32_ARRAY: GDExtensionVariantType = 30;
pub const GDEXTENSION_VARIANT_TYPE_PACKED_INT64_ARRAY: GDExtensionVariantType = 31;
pub const GDEXTENSION_VARIANT_TYPE_PACKED_FLOAT32_ARRAY: GDExtensionVariantType = 32;
pub const GDEXTENSION_VARIANT_TYPE_PACKED_FLOAT64_ARRAY: GDExtensionVariantType = 33;
pub const GDEXTENSION_VARIANT_TYPE_PACKED_STRING_ARRAY: GDExtensionVariantType = 34;
pub const GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR2_ARRAY: GDExtensionVariantType = 35;
pub const GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR3_ARRAY: GDExtensionVariantType = 36;
pub const GDEXTENSION_VARIANT_TYPE_PACKED_COLOR_ARRAY: GDExtensionVariantType = 37;
pub const GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR4_ARRAY: GDExtensionVariantType = 38;
pub const GDEXTENSION_VARIANT_TYPE_VARIANT_MAX: GDExtensionVariantType = 39;
pub type GDExtensionVariantType = ::std::os::raw::c_int;
pub const GDEXTENSION_VARIANT_OP_EQUAL: GDExtensionVariantOperator = 0;
pub const GDEXTENSION_VARIANT_OP_NOT_EQUAL: GDExtensionVariantOperator = 1;
pub const GDEXTENSION_VARIANT_OP_LESS: GDExtensionVariantOperator = 2;
pub const GDEXTENSION_VARIANT_OP_LESS_EQUAL: GDExtensionVariantOperator = 3;
pub const GDEXTENSION_VARIANT_OP_GREATER: GDExtensionVariantOperator = 4;
pub const GDEXTENSION_VARIANT_OP_GREATER_EQUAL: GDExtensionVariantOperator = 5;
pub const GDEXTENSION_VARIANT_OP_ADD: GDExtensionVariantOperator = 6;
pub const GDEXTENSION_VARIANT_OP_SUBTRACT: GDExtensionVariantOperator = 7;
pub const GDEXTENSION_VARIANT_OP_MULTIPLY: GDExtensionVariantOperator = 8;
pub const GDEXTENSION_VARIANT_OP_DIVIDE: GDExtensionVariantOperator = 9;
pub const GDEXTENSION_VARIANT_OP_NEGATE: GDExtensionVariantOperator = 10;
pub const GDEXTENSION_VARIANT_OP_POSITIVE: GDExtensionVariantOperator = 11;
pub const GDEXTENSION_VARIANT_OP_MODULE: GDExtensionVariantOperator = 12;
pub const GDEXTENSION_VARIANT_OP_POWER: GDExtensionVariantOperator = 13;
pub const GDEXTENSION_VARIANT_OP_SHIFT_LEFT: GDExtensionVariantOperator = 14;
pub const GDEXTENSION_VARIANT_OP_SHIFT_RIGHT: GDExtensionVariantOperator = 15;
pub const GDEXTENSION_VARIANT_OP_BIT_AND: GDExtensionVariantOperator = 16;
pub const GDEXTENSION_VARIANT_OP_BIT_OR: GDExtensionVariantOperator = 17;
pub const GDEXTENSION_VARIANT_OP_BIT_XOR: GDExtensionVariantOperator = 18;
pub const GDEXTENSION_VARIANT_OP_BIT_NEGATE: GDExtensionVariantOperator = 19;
pub const GDEXTENSION_VARIANT_OP_AND: GDExtensionVariantOperator = 20;
pub const GDEXTENSION_VARIANT_OP_OR: GDExtensionVariantOperator = 21;
pub const GDEXTENSION_VARIANT_OP_XOR: GDExtensionVariantOperator = 22;
pub const GDEXTENSION_VARIANT_OP_NOT: GDExtensionVariantOperator = 23;
pub const GDEXTENSION_VARIANT_OP_IN: GDExtensionVariantOperator = 24;
pub const GDEXTENSION_VARIANT_OP_MAX: GDExtensionVariantOperator = 25;
pub type GDExtensionVariantOperator = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextVariant {
    _unused: [u8; 0],
}
pub type GDExtensionVariantPtr = *mut __GdextVariant;
pub type GDExtensionConstVariantPtr = *const __GdextVariant;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextUninitializedVariant {
    _unused: [u8; 0],
}
pub type GDExtensionUninitializedVariantPtr = *mut __GdextUninitializedVariant;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextStringName {
    _unused: [u8; 0],
}
pub type GDExtensionStringNamePtr = *mut __GdextStringName;
pub type GDExtensionConstStringNamePtr = *const __GdextStringName;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextUninitializedStringName {
    _unused: [u8; 0],
}
pub type GDExtensionUninitializedStringNamePtr = *mut __GdextUninitializedStringName;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextString {
    _unused: [u8; 0],
}
pub type GDExtensionStringPtr = *mut __GdextString;
pub type GDExtensionConstStringPtr = *const __GdextString;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextUninitializedString {
    _unused: [u8; 0],
}
pub type GDExtensionUninitializedStringPtr = *mut __GdextUninitializedString;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextObject {
    _unused: [u8; 0],
}
pub type GDExtensionObjectPtr = *mut __GdextObject;
pub type GDExtensionConstObjectPtr = *const __GdextObject;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextUninitializedObject {
    _unused: [u8; 0],
}
pub type GDExtensionUninitializedObjectPtr = *mut __GdextUninitializedObject;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextType {
    _unused: [u8; 0],
}
pub type GDExtensionTypePtr = *mut __GdextType;
pub type GDExtensionConstTypePtr = *const __GdextType;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextUninitializedType {
    _unused: [u8; 0],
}
pub type GDExtensionUninitializedTypePtr = *mut __GdextUninitializedType;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextMethodBind {
    _unused: [u8; 0],
}
pub type GDExtensionMethodBindPtr = *const __GdextMethodBind;
pub type GDExtensionInt = i64;
pub type GDExtensionBool = u8;
pub type GDObjectInstanceID = u64;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextRef {
    _unused: [u8; 0],
}
pub type GDExtensionRefPtr = *mut __GdextRef;
pub type GDExtensionConstRefPtr = *const __GdextRef;
pub const GDEXTENSION_CALL_OK: GDExtensionCallErrorType = 0;
pub const GDEXTENSION_CALL_ERROR_INVALID_METHOD: GDExtensionCallErrorType = 1;
pub const GDEXTENSION_CALL_ERROR_INVALID_ARGUMENT: GDExtensionCallErrorType = 2;
pub const GDEXTENSION_CALL_ERROR_TOO_MANY_ARGUMENTS: GDExtensionCallErrorType = 3;
pub const GDEXTENSION_CALL_ERROR_TOO_FEW_ARGUMENTS: GDExtensionCallErrorType = 4;
pub const GDEXTENSION_CALL_ERROR_INSTANCE_IS_NULL: GDExtensionCallErrorType = 5;
pub const GDEXTENSION_CALL_ERROR_METHOD_NOT_CONST: GDExtensionCallErrorType = 6;
pub type GDExtensionCallErrorType = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionCallError {
    pub error: GDExtensionCallErrorType,
    pub argument: i32,
    pub expected: i32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionCallError"][::std::mem::size_of::<GDExtensionCallError>() - 12usize];
    ["Alignment of GDExtensionCallError"][::std::mem::align_of::<GDExtensionCallError>() - 4usize];
    ["Offset of field: GDExtensionCallError::error"]
        [::std::mem::offset_of!(GDExtensionCallError, error) - 0usize];
    ["Offset of field: GDExtensionCallError::argument"]
        [::std::mem::offset_of!(GDExtensionCallError, argument) - 4usize];
    ["Offset of field: GDExtensionCallError::expected"]
        [::std::mem::offset_of!(GDExtensionCallError, expected) - 8usize];
};
pub type GDExtensionVariantFromTypeConstructorFunc = ::std::option::Option<
    unsafe extern "C" fn(arg1: GDExtensionUninitializedVariantPtr, arg2: GDExtensionTypePtr),
>;
pub type GDExtensionTypeFromVariantConstructorFunc = ::std::option::Option<
    unsafe extern "C" fn(arg1: GDExtensionUninitializedTypePtr, arg2: GDExtensionVariantPtr),
>;
pub type GDExtensionPtrOperatorEvaluator = ::std::option::Option<
    unsafe extern "C" fn(
        p_left: GDExtensionConstTypePtr,
        p_right: GDExtensionConstTypePtr,
        r_result: GDExtensionTypePtr,
    ),
>;
pub type GDExtensionPtrBuiltInMethod = ::std::option::Option<
    unsafe extern "C" fn(
        p_base: GDExtensionTypePtr,
        p_args: *const GDExtensionConstTypePtr,
        r_return: GDExtensionTypePtr,
        p_argument_count: ::std::os::raw::c_int,
    ),
>;
pub type GDExtensionPtrConstructor = ::std::option::Option<
    unsafe extern "C" fn(
        p_base: GDExtensionUninitializedTypePtr,
        p_args: *const GDExtensionConstTypePtr,
    ),
>;
pub type GDExtensionPtrDestructor =
    ::std::option::Option<unsafe extern "C" fn(p_base: GDExtensionTypePtr)>;
pub type GDExtensionPtrSetter = ::std::option::Option<
    unsafe extern "C" fn(p_base: GDExtensionTypePtr, p_value: GDExtensionConstTypePtr),
>;
pub type GDExtensionPtrGetter = ::std::option::Option<
    unsafe extern "C" fn(p_base: GDExtensionConstTypePtr, r_value: GDExtensionTypePtr),
>;
pub type GDExtensionPtrIndexedSetter = ::std::option::Option<
    unsafe extern "C" fn(
        p_base: GDExtensionTypePtr,
        p_index: GDExtensionInt,
        p_value: GDExtensionConstTypePtr,
    ),
>;
pub type GDExtensionPtrIndexedGetter = ::std::option::Option<
    unsafe extern "C" fn(
        p_base: GDExtensionConstTypePtr,
        p_index: GDExtensionInt,
        r_value: GDExtensionTypePtr,
    ),
>;
pub type GDExtensionPtrKeyedSetter = ::std::option::Option<
    unsafe extern "C" fn(
        p_base: GDExtensionTypePtr,
        p_key: GDExtensionConstTypePtr,
        p_value: GDExtensionConstTypePtr,
    ),
>;
pub type GDExtensionPtrKeyedGetter = ::std::option::Option<
    unsafe extern "C" fn(
        p_base: GDExtensionConstTypePtr,
        p_key: GDExtensionConstTypePtr,
        r_value: GDExtensionTypePtr,
    ),
>;
pub type GDExtensionPtrKeyedChecker = ::std::option::Option<
    unsafe extern "C" fn(
        p_base: GDExtensionConstVariantPtr,
        p_key: GDExtensionConstVariantPtr,
    ) -> u32,
>;
pub type GDExtensionPtrUtilityFunction = ::std::option::Option<
    unsafe extern "C" fn(
        r_return: GDExtensionTypePtr,
        p_args: *const GDExtensionConstTypePtr,
        p_argument_count: ::std::os::raw::c_int,
    ),
>;
pub type GDExtensionClassConstructor =
    ::std::option::Option<unsafe extern "C" fn() -> GDExtensionObjectPtr>;
pub type GDExtensionInstanceBindingCreateCallback = ::std::option::Option<
    unsafe extern "C" fn(
        p_token: *mut ::std::os::raw::c_void,
        p_instance: *mut ::std::os::raw::c_void,
    ) -> *mut ::std::os::raw::c_void,
>;
pub type GDExtensionInstanceBindingFreeCallback = ::std::option::Option<
    unsafe extern "C" fn(
        p_token: *mut ::std::os::raw::c_void,
        p_instance: *mut ::std::os::raw::c_void,
        p_binding: *mut ::std::os::raw::c_void,
    ),
>;
pub type GDExtensionInstanceBindingReferenceCallback = ::std::option::Option<
    unsafe extern "C" fn(
        p_token: *mut ::std::os::raw::c_void,
        p_binding: *mut ::std::os::raw::c_void,
        p_reference: GDExtensionBool,
    ) -> GDExtensionBool,
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionInstanceBindingCallbacks {
    pub create_callback: GDExtensionInstanceBindingCreateCallback,
    pub free_callback: GDExtensionInstanceBindingFreeCallback,
    pub reference_callback: GDExtensionInstanceBindingReferenceCallback,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionInstanceBindingCallbacks"]
        [::std::mem::size_of::<GDExtensionInstanceBindingCallbacks>() - 24usize];
    ["Alignment of GDExtensionInstanceBindingCallbacks"]
        [::std::mem::align_of::<GDExtensionInstanceBindingCallbacks>() - 8usize];
    ["Offset of field: GDExtensionInstanceBindingCallbacks::create_callback"]
        [::std::mem::offset_of!(GDExtensionInstanceBindingCallbacks, create_callback) - 0usize];
    ["Offset of field: GDExtensionInstanceBindingCallbacks::free_callback"]
        [::std::mem::offset_of!(GDExtensionInstanceBindingCallbacks, free_callback) - 8usize];
    ["Offset of field: GDExtensionInstanceBindingCallbacks::reference_callback"]
        [::std::mem::offset_of!(GDExtensionInstanceBindingCallbacks, reference_callback) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextClassInstance {
    _unused: [u8; 0],
}
pub type GDExtensionClassInstancePtr = *mut __GdextClassInstance;
pub type GDExtensionClassSet = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        p_name: GDExtensionConstStringNamePtr,
        p_value: GDExtensionConstVariantPtr,
    ) -> GDExtensionBool,
>;
pub type GDExtensionClassGet = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        p_name: GDExtensionConstStringNamePtr,
        r_ret: GDExtensionVariantPtr,
    ) -> GDExtensionBool,
>;
pub type GDExtensionClassGetRID =
    ::std::option::Option<unsafe extern "C" fn(p_instance: GDExtensionClassInstancePtr) -> u64>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionPropertyInfo {
    pub type_: GDExtensionVariantType,
    pub name: GDExtensionStringNamePtr,
    pub class_name: GDExtensionStringNamePtr,
    pub hint: u32,
    pub hint_string: GDExtensionStringPtr,
    pub usage: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionPropertyInfo"][::std::mem::size_of::<GDExtensionPropertyInfo>() - 48usize];
    ["Alignment of GDExtensionPropertyInfo"]
        [::std::mem::align_of::<GDExtensionPropertyInfo>() - 8usize];
    ["Offset of field: GDExtensionPropertyInfo::type_"]
        [::std::mem::offset_of!(GDExtensionPropertyInfo, type_) - 0usize];
    ["Offset of field: GDExtensionPropertyInfo::name"]
        [::std::mem::offset_of!(GDExtensionPropertyInfo, name) - 8usize];
    ["Offset of field: GDExtensionPropertyInfo::class_name"]
        [::std::mem::offset_of!(GDExtensionPropertyInfo, class_name) - 16usize];
    ["Offset of field: GDExtensionPropertyInfo::hint"]
        [::std::mem::offset_of!(GDExtensionPropertyInfo, hint) - 24usize];
    ["Offset of field: GDExtensionPropertyInfo::hint_string"]
        [::std::mem::offset_of!(GDExtensionPropertyInfo, hint_string) - 32usize];
    ["Offset of field: GDExtensionPropertyInfo::usage"]
        [::std::mem::offset_of!(GDExtensionPropertyInfo, usage) - 40usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionMethodInfo {
    pub name: GDExtensionStringNamePtr,
    pub return_value: GDExtensionPropertyInfo,
    pub flags: u32,
    pub id: i32,
    pub argument_count: u32,
    pub arguments: *mut GDExtensionPropertyInfo,
    pub default_argument_count: u32,
    pub default_arguments: *mut GDExtensionVariantPtr,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionMethodInfo"][::std::mem::size_of::<GDExtensionMethodInfo>() - 96usize];
    ["Alignment of GDExtensionMethodInfo"]
        [::std::mem::align_of::<GDExtensionMethodInfo>() - 8usize];
    ["Offset of field: GDExtensionMethodInfo::name"]
        [::std::mem::offset_of!(GDExtensionMethodInfo, name) - 0usize];
    ["Offset of field: GDExtensionMethodInfo::return_value"]
        [::std::mem::offset_of!(GDExtensionMethodInfo, return_value) - 8usize];
    ["Offset of field: GDExtensionMethodInfo::flags"]
        [::std::mem::offset_of!(GDExtensionMethodInfo, flags) - 56usize];
    ["Offset of field: GDExtensionMethodInfo::id"]
        [::std::mem::offset_of!(GDExtensionMethodInfo, id) - 60usize];
    ["Offset of field: GDExtensionMethodInfo::argument_count"]
        [::std::mem::offset_of!(GDExtensionMethodInfo, argument_count) - 64usize];
    ["Offset of field: GDExtensionMethodInfo::arguments"]
        [::std::mem::offset_of!(GDExtensionMethodInfo, arguments) - 72usize];
    ["Offset of field: GDExtensionMethodInfo::default_argument_count"]
        [::std::mem::offset_of!(GDExtensionMethodInfo, default_argument_count) - 80usize];
    ["Offset of field: GDExtensionMethodInfo::default_arguments"]
        [::std::mem::offset_of!(GDExtensionMethodInfo, default_arguments) - 88usize];
};
pub type GDExtensionClassGetPropertyList = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        r_count: *mut u32,
    ) -> *const GDExtensionPropertyInfo,
>;
pub type GDExtensionClassFreePropertyList = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        p_list: *const GDExtensionPropertyInfo,
    ),
>;
pub type GDExtensionClassFreePropertyList2 = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        p_list: *const GDExtensionPropertyInfo,
        p_count: u32,
    ),
>;
pub type GDExtensionClassPropertyCanRevert = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        p_name: GDExtensionConstStringNamePtr,
    ) -> GDExtensionBool,
>;
pub type GDExtensionClassPropertyGetRevert = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        p_name: GDExtensionConstStringNamePtr,
        r_ret: GDExtensionVariantPtr,
    ) -> GDExtensionBool,
>;
pub type GDExtensionClassValidateProperty = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        p_property: *mut GDExtensionPropertyInfo,
    ) -> GDExtensionBool,
>;
pub type GDExtensionClassNotification = ::std::option::Option<
    unsafe extern "C" fn(p_instance: GDExtensionClassInstancePtr, p_what: i32),
>;
pub type GDExtensionClassNotification2 = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        p_what: i32,
        p_reversed: GDExtensionBool,
    ),
>;
pub type GDExtensionClassToString = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        r_is_valid: *mut GDExtensionBool,
        p_out: GDExtensionStringPtr,
    ),
>;
pub type GDExtensionClassReference =
    ::std::option::Option<unsafe extern "C" fn(p_instance: GDExtensionClassInstancePtr)>;
pub type GDExtensionClassUnreference =
    ::std::option::Option<unsafe extern "C" fn(p_instance: GDExtensionClassInstancePtr)>;
pub type GDExtensionClassCallVirtual = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        p_args: *const GDExtensionConstTypePtr,
        r_ret: GDExtensionTypePtr,
    ),
>;
pub type GDExtensionClassCreateInstance = ::std::option::Option<
    unsafe extern "C" fn(p_class_userdata: *mut ::std::os::raw::c_void) -> GDExtensionObjectPtr,
>;
pub type GDExtensionClassFreeInstance = ::std::option::Option<
    unsafe extern "C" fn(
        p_class_userdata: *mut ::std::os::raw::c_void,
        p_instance: GDExtensionClassInstancePtr,
    ),
>;
pub type GDExtensionClassRecreateInstance = ::std::option::Option<
    unsafe extern "C" fn(
        p_class_userdata: *mut ::std::os::raw::c_void,
        p_object: GDExtensionObjectPtr,
    ) -> GDExtensionClassInstancePtr,
>;
pub type GDExtensionClassGetVirtual = ::std::option::Option<
    unsafe extern "C" fn(
        p_class_userdata: *mut ::std::os::raw::c_void,
        p_name: GDExtensionConstStringNamePtr,
    ) -> GDExtensionClassCallVirtual,
>;
pub type GDExtensionClassGetVirtualCallData = ::std::option::Option<
    unsafe extern "C" fn(
        p_class_userdata: *mut ::std::os::raw::c_void,
        p_name: GDExtensionConstStringNamePtr,
    ) -> *mut ::std::os::raw::c_void,
>;
pub type GDExtensionClassCallVirtualWithData = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionClassInstancePtr,
        p_name: GDExtensionConstStringNamePtr,
        p_virtual_call_userdata: *mut ::std::os::raw::c_void,
        p_args: *const GDExtensionConstTypePtr,
        r_ret: GDExtensionTypePtr,
    ),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionClassCreationInfo {
    pub is_virtual: GDExtensionBool,
    pub is_abstract: GDExtensionBool,
    pub set_func: GDExtensionClassSet,
    pub get_func: GDExtensionClassGet,
    pub get_property_list_func: GDExtensionClassGetPropertyList,
    pub free_property_list_func: GDExtensionClassFreePropertyList,
    pub property_can_revert_func: GDExtensionClassPropertyCanRevert,
    pub property_get_revert_func: GDExtensionClassPropertyGetRevert,
    pub notification_func: GDExtensionClassNotification,
    pub to_string_func: GDExtensionClassToString,
    pub reference_func: GDExtensionClassReference,
    pub unreference_func: GDExtensionClassUnreference,
    pub create_instance_func: GDExtensionClassCreateInstance,
    pub free_instance_func: GDExtensionClassFreeInstance,
    pub get_virtual_func: GDExtensionClassGetVirtual,
    pub get_rid_func: GDExtensionClassGetRID,
    pub class_userdata: *mut ::std::os::raw::c_void,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionClassCreationInfo"]
        [::std::mem::size_of::<GDExtensionClassCreationInfo>() - 128usize];
    ["Alignment of GDExtensionClassCreationInfo"]
        [::std::mem::align_of::<GDExtensionClassCreationInfo>() - 8usize];
    ["Offset of field: GDExtensionClassCreationInfo::is_virtual"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, is_virtual) - 0usize];
    ["Offset of field: GDExtensionClassCreationInfo::is_abstract"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, is_abstract) - 1usize];
    ["Offset of field: GDExtensionClassCreationInfo::set_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, set_func) - 8usize];
    ["Offset of field: GDExtensionClassCreationInfo::get_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, get_func) - 16usize];
    ["Offset of field: GDExtensionClassCreationInfo::get_property_list_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, get_property_list_func) - 24usize];
    ["Offset of field: GDExtensionClassCreationInfo::free_property_list_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, free_property_list_func) - 32usize];
    ["Offset of field: GDExtensionClassCreationInfo::property_can_revert_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, property_can_revert_func) - 40usize];
    ["Offset of field: GDExtensionClassCreationInfo::property_get_revert_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, property_get_revert_func) - 48usize];
    ["Offset of field: GDExtensionClassCreationInfo::notification_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, notification_func) - 56usize];
    ["Offset of field: GDExtensionClassCreationInfo::to_string_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, to_string_func) - 64usize];
    ["Offset of field: GDExtensionClassCreationInfo::reference_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, reference_func) - 72usize];
    ["Offset of field: GDExtensionClassCreationInfo::unreference_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, unreference_func) - 80usize];
    ["Offset of field: GDExtensionClassCreationInfo::create_instance_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, create_instance_func) - 88usize];
    ["Offset of field: GDExtensionClassCreationInfo::free_instance_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, free_instance_func) - 96usize];
    ["Offset of field: GDExtensionClassCreationInfo::get_virtual_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, get_virtual_func) - 104usize];
    ["Offset of field: GDExtensionClassCreationInfo::get_rid_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, get_rid_func) - 112usize];
    ["Offset of field: GDExtensionClassCreationInfo::class_userdata"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo, class_userdata) - 120usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionClassCreationInfo2 {
    pub is_virtual: GDExtensionBool,
    pub is_abstract: GDExtensionBool,
    pub is_exposed: GDExtensionBool,
    pub set_func: GDExtensionClassSet,
    pub get_func: GDExtensionClassGet,
    pub get_property_list_func: GDExtensionClassGetPropertyList,
    pub free_property_list_func: GDExtensionClassFreePropertyList,
    pub property_can_revert_func: GDExtensionClassPropertyCanRevert,
    pub property_get_revert_func: GDExtensionClassPropertyGetRevert,
    pub validate_property_func: GDExtensionClassValidateProperty,
    pub notification_func: GDExtensionClassNotification2,
    pub to_string_func: GDExtensionClassToString,
    pub reference_func: GDExtensionClassReference,
    pub unreference_func: GDExtensionClassUnreference,
    pub create_instance_func: GDExtensionClassCreateInstance,
    pub free_instance_func: GDExtensionClassFreeInstance,
    pub recreate_instance_func: GDExtensionClassRecreateInstance,
    pub get_virtual_func: GDExtensionClassGetVirtual,
    pub get_virtual_call_data_func: GDExtensionClassGetVirtualCallData,
    pub call_virtual_with_data_func: GDExtensionClassCallVirtualWithData,
    pub get_rid_func: GDExtensionClassGetRID,
    pub class_userdata: *mut ::std::os::raw::c_void,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionClassCreationInfo2"]
        [::std::mem::size_of::<GDExtensionClassCreationInfo2>() - 160usize];
    ["Alignment of GDExtensionClassCreationInfo2"]
        [::std::mem::align_of::<GDExtensionClassCreationInfo2>() - 8usize];
    ["Offset of field: GDExtensionClassCreationInfo2::is_virtual"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, is_virtual) - 0usize];
    ["Offset of field: GDExtensionClassCreationInfo2::is_abstract"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, is_abstract) - 1usize];
    ["Offset of field: GDExtensionClassCreationInfo2::is_exposed"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, is_exposed) - 2usize];
    ["Offset of field: GDExtensionClassCreationInfo2::set_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, set_func) - 8usize];
    ["Offset of field: GDExtensionClassCreationInfo2::get_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, get_func) - 16usize];
    ["Offset of field: GDExtensionClassCreationInfo2::get_property_list_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, get_property_list_func) - 24usize];
    ["Offset of field: GDExtensionClassCreationInfo2::free_property_list_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, free_property_list_func) - 32usize];
    ["Offset of field: GDExtensionClassCreationInfo2::property_can_revert_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, property_can_revert_func) - 40usize];
    ["Offset of field: GDExtensionClassCreationInfo2::property_get_revert_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, property_get_revert_func) - 48usize];
    ["Offset of field: GDExtensionClassCreationInfo2::validate_property_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, validate_property_func) - 56usize];
    ["Offset of field: GDExtensionClassCreationInfo2::notification_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, notification_func) - 64usize];
    ["Offset of field: GDExtensionClassCreationInfo2::to_string_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, to_string_func) - 72usize];
    ["Offset of field: GDExtensionClassCreationInfo2::reference_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, reference_func) - 80usize];
    ["Offset of field: GDExtensionClassCreationInfo2::unreference_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, unreference_func) - 88usize];
    ["Offset of field: GDExtensionClassCreationInfo2::create_instance_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, create_instance_func) - 96usize];
    ["Offset of field: GDExtensionClassCreationInfo2::free_instance_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, free_instance_func) - 104usize];
    ["Offset of field: GDExtensionClassCreationInfo2::recreate_instance_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, recreate_instance_func) - 112usize];
    ["Offset of field: GDExtensionClassCreationInfo2::get_virtual_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, get_virtual_func) - 120usize];
    ["Offset of field: GDExtensionClassCreationInfo2::get_virtual_call_data_func"][::std::mem::offset_of!(
        GDExtensionClassCreationInfo2,
        get_virtual_call_data_func
    ) - 128usize];
    ["Offset of field: GDExtensionClassCreationInfo2::call_virtual_with_data_func"][::std::mem::offset_of!(
        GDExtensionClassCreationInfo2,
        call_virtual_with_data_func
    ) - 136usize];
    ["Offset of field: GDExtensionClassCreationInfo2::get_rid_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, get_rid_func) - 144usize];
    ["Offset of field: GDExtensionClassCreationInfo2::class_userdata"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo2, class_userdata) - 152usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionClassCreationInfo3 {
    pub is_virtual: GDExtensionBool,
    pub is_abstract: GDExtensionBool,
    pub is_exposed: GDExtensionBool,
    pub is_runtime: GDExtensionBool,
    pub set_func: GDExtensionClassSet,
    pub get_func: GDExtensionClassGet,
    pub get_property_list_func: GDExtensionClassGetPropertyList,
    pub free_property_list_func: GDExtensionClassFreePropertyList2,
    pub property_can_revert_func: GDExtensionClassPropertyCanRevert,
    pub property_get_revert_func: GDExtensionClassPropertyGetRevert,
    pub validate_property_func: GDExtensionClassValidateProperty,
    pub notification_func: GDExtensionClassNotification2,
    pub to_string_func: GDExtensionClassToString,
    pub reference_func: GDExtensionClassReference,
    pub unreference_func: GDExtensionClassUnreference,
    pub create_instance_func: GDExtensionClassCreateInstance,
    pub free_instance_func: GDExtensionClassFreeInstance,
    pub recreate_instance_func: GDExtensionClassRecreateInstance,
    pub get_virtual_func: GDExtensionClassGetVirtual,
    pub get_virtual_call_data_func: GDExtensionClassGetVirtualCallData,
    pub call_virtual_with_data_func: GDExtensionClassCallVirtualWithData,
    pub get_rid_func: GDExtensionClassGetRID,
    pub class_userdata: *mut ::std::os::raw::c_void,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionClassCreationInfo3"]
        [::std::mem::size_of::<GDExtensionClassCreationInfo3>() - 160usize];
    ["Alignment of GDExtensionClassCreationInfo3"]
        [::std::mem::align_of::<GDExtensionClassCreationInfo3>() - 8usize];
    ["Offset of field: GDExtensionClassCreationInfo3::is_virtual"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, is_virtual) - 0usize];
    ["Offset of field: GDExtensionClassCreationInfo3::is_abstract"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, is_abstract) - 1usize];
    ["Offset of field: GDExtensionClassCreationInfo3::is_exposed"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, is_exposed) - 2usize];
    ["Offset of field: GDExtensionClassCreationInfo3::is_runtime"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, is_runtime) - 3usize];
    ["Offset of field: GDExtensionClassCreationInfo3::set_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, set_func) - 8usize];
    ["Offset of field: GDExtensionClassCreationInfo3::get_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, get_func) - 16usize];
    ["Offset of field: GDExtensionClassCreationInfo3::get_property_list_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, get_property_list_func) - 24usize];
    ["Offset of field: GDExtensionClassCreationInfo3::free_property_list_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, free_property_list_func) - 32usize];
    ["Offset of field: GDExtensionClassCreationInfo3::property_can_revert_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, property_can_revert_func) - 40usize];
    ["Offset of field: GDExtensionClassCreationInfo3::property_get_revert_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, property_get_revert_func) - 48usize];
    ["Offset of field: GDExtensionClassCreationInfo3::validate_property_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, validate_property_func) - 56usize];
    ["Offset of field: GDExtensionClassCreationInfo3::notification_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, notification_func) - 64usize];
    ["Offset of field: GDExtensionClassCreationInfo3::to_string_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, to_string_func) - 72usize];
    ["Offset of field: GDExtensionClassCreationInfo3::reference_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, reference_func) - 80usize];
    ["Offset of field: GDExtensionClassCreationInfo3::unreference_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, unreference_func) - 88usize];
    ["Offset of field: GDExtensionClassCreationInfo3::create_instance_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, create_instance_func) - 96usize];
    ["Offset of field: GDExtensionClassCreationInfo3::free_instance_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, free_instance_func) - 104usize];
    ["Offset of field: GDExtensionClassCreationInfo3::recreate_instance_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, recreate_instance_func) - 112usize];
    ["Offset of field: GDExtensionClassCreationInfo3::get_virtual_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, get_virtual_func) - 120usize];
    ["Offset of field: GDExtensionClassCreationInfo3::get_virtual_call_data_func"][::std::mem::offset_of!(
        GDExtensionClassCreationInfo3,
        get_virtual_call_data_func
    ) - 128usize];
    ["Offset of field: GDExtensionClassCreationInfo3::call_virtual_with_data_func"][::std::mem::offset_of!(
        GDExtensionClassCreationInfo3,
        call_virtual_with_data_func
    ) - 136usize];
    ["Offset of field: GDExtensionClassCreationInfo3::get_rid_func"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, get_rid_func) - 144usize];
    ["Offset of field: GDExtensionClassCreationInfo3::class_userdata"]
        [::std::mem::offset_of!(GDExtensionClassCreationInfo3, class_userdata) - 152usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextClassLibrary {
    _unused: [u8; 0],
}
pub type GDExtensionClassLibraryPtr = *mut __GdextClassLibrary;
pub const GDEXTENSION_METHOD_FLAG_NORMAL: GDExtensionClassMethodFlags = 1;
pub const GDEXTENSION_METHOD_FLAG_EDITOR: GDExtensionClassMethodFlags = 2;
pub const GDEXTENSION_METHOD_FLAG_CONST: GDExtensionClassMethodFlags = 4;
pub const GDEXTENSION_METHOD_FLAG_VIRTUAL: GDExtensionClassMethodFlags = 8;
pub const GDEXTENSION_METHOD_FLAG_VARARG: GDExtensionClassMethodFlags = 16;
pub const GDEXTENSION_METHOD_FLAG_STATIC: GDExtensionClassMethodFlags = 32;
pub const GDEXTENSION_METHOD_FLAGS_DEFAULT: GDExtensionClassMethodFlags = 1;
pub type GDExtensionClassMethodFlags = ::std::os::raw::c_int;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE: GDExtensionClassMethodArgumentMetadata = 0;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT8: GDExtensionClassMethodArgumentMetadata =
    1;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT16:
    GDExtensionClassMethodArgumentMetadata = 2;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT32:
    GDExtensionClassMethodArgumentMetadata = 3;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT64:
    GDExtensionClassMethodArgumentMetadata = 4;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT8:
    GDExtensionClassMethodArgumentMetadata = 5;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT16:
    GDExtensionClassMethodArgumentMetadata = 6;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT32:
    GDExtensionClassMethodArgumentMetadata = 7;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT64:
    GDExtensionClassMethodArgumentMetadata = 8;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_FLOAT:
    GDExtensionClassMethodArgumentMetadata = 9;
pub const GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_DOUBLE:
    GDExtensionClassMethodArgumentMetadata = 10;
pub type GDExtensionClassMethodArgumentMetadata = ::std::os::raw::c_int;
pub type GDExtensionClassMethodCall = ::std::option::Option<
    unsafe extern "C" fn(
        method_userdata: *mut ::std::os::raw::c_void,
        p_instance: GDExtensionClassInstancePtr,
        p_args: *const GDExtensionConstVariantPtr,
        p_argument_count: GDExtensionInt,
        r_return: GDExtensionVariantPtr,
        r_error: *mut GDExtensionCallError,
    ),
>;
pub type GDExtensionClassMethodValidatedCall = ::std::option::Option<
    unsafe extern "C" fn(
        method_userdata: *mut ::std::os::raw::c_void,
        p_instance: GDExtensionClassInstancePtr,
        p_args: *const GDExtensionConstVariantPtr,
        r_return: GDExtensionVariantPtr,
    ),
>;
pub type GDExtensionClassMethodPtrCall = ::std::option::Option<
    unsafe extern "C" fn(
        method_userdata: *mut ::std::os::raw::c_void,
        p_instance: GDExtensionClassInstancePtr,
        p_args: *const GDExtensionConstTypePtr,
        r_ret: GDExtensionTypePtr,
    ),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionClassMethodInfo {
    pub name: GDExtensionStringNamePtr,
    pub method_userdata: *mut ::std::os::raw::c_void,
    pub call_func: GDExtensionClassMethodCall,
    pub ptrcall_func: GDExtensionClassMethodPtrCall,
    pub method_flags: u32,
    pub has_return_value: GDExtensionBool,
    pub return_value_info: *mut GDExtensionPropertyInfo,
    pub return_value_metadata: GDExtensionClassMethodArgumentMetadata,
    pub argument_count: u32,
    pub arguments_info: *mut GDExtensionPropertyInfo,
    pub arguments_metadata: *mut GDExtensionClassMethodArgumentMetadata,
    pub default_argument_count: u32,
    pub default_arguments: *mut GDExtensionVariantPtr,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionClassMethodInfo"]
        [::std::mem::size_of::<GDExtensionClassMethodInfo>() - 88usize];
    ["Alignment of GDExtensionClassMethodInfo"]
        [::std::mem::align_of::<GDExtensionClassMethodInfo>() - 8usize];
    ["Offset of field: GDExtensionClassMethodInfo::name"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, name) - 0usize];
    ["Offset of field: GDExtensionClassMethodInfo::method_userdata"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, method_userdata) - 8usize];
    ["Offset of field: GDExtensionClassMethodInfo::call_func"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, call_func) - 16usize];
    ["Offset of field: GDExtensionClassMethodInfo::ptrcall_func"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, ptrcall_func) - 24usize];
    ["Offset of field: GDExtensionClassMethodInfo::method_flags"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, method_flags) - 32usize];
    ["Offset of field: GDExtensionClassMethodInfo::has_return_value"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, has_return_value) - 36usize];
    ["Offset of field: GDExtensionClassMethodInfo::return_value_info"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, return_value_info) - 40usize];
    ["Offset of field: GDExtensionClassMethodInfo::return_value_metadata"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, return_value_metadata) - 48usize];
    ["Offset of field: GDExtensionClassMethodInfo::argument_count"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, argument_count) - 52usize];
    ["Offset of field: GDExtensionClassMethodInfo::arguments_info"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, arguments_info) - 56usize];
    ["Offset of field: GDExtensionClassMethodInfo::arguments_metadata"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, arguments_metadata) - 64usize];
    ["Offset of field: GDExtensionClassMethodInfo::default_argument_count"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, default_argument_count) - 72usize];
    ["Offset of field: GDExtensionClassMethodInfo::default_arguments"]
        [::std::mem::offset_of!(GDExtensionClassMethodInfo, default_arguments) - 80usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionClassVirtualMethodInfo {
    pub name: GDExtensionStringNamePtr,
    pub method_flags: u32,
    pub return_value: GDExtensionPropertyInfo,
    pub return_value_metadata: GDExtensionClassMethodArgumentMetadata,
    pub argument_count: u32,
    pub arguments: *mut GDExtensionPropertyInfo,
    pub arguments_metadata: *mut GDExtensionClassMethodArgumentMetadata,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionClassVirtualMethodInfo"]
        [::std::mem::size_of::<GDExtensionClassVirtualMethodInfo>() - 88usize];
    ["Alignment of GDExtensionClassVirtualMethodInfo"]
        [::std::mem::align_of::<GDExtensionClassVirtualMethodInfo>() - 8usize];
    ["Offset of field: GDExtensionClassVirtualMethodInfo::name"]
        [::std::mem::offset_of!(GDExtensionClassVirtualMethodInfo, name) - 0usize];
    ["Offset of field: GDExtensionClassVirtualMethodInfo::method_flags"]
        [::std::mem::offset_of!(GDExtensionClassVirtualMethodInfo, method_flags) - 8usize];
    ["Offset of field: GDExtensionClassVirtualMethodInfo::return_value"]
        [::std::mem::offset_of!(GDExtensionClassVirtualMethodInfo, return_value) - 16usize];
    ["Offset of field: GDExtensionClassVirtualMethodInfo::return_value_metadata"][::std::mem::offset_of!(
        GDExtensionClassVirtualMethodInfo,
        return_value_metadata
    ) - 64usize];
    ["Offset of field: GDExtensionClassVirtualMethodInfo::argument_count"]
        [::std::mem::offset_of!(GDExtensionClassVirtualMethodInfo, argument_count) - 68usize];
    ["Offset of field: GDExtensionClassVirtualMethodInfo::arguments"]
        [::std::mem::offset_of!(GDExtensionClassVirtualMethodInfo, arguments) - 72usize];
    ["Offset of field: GDExtensionClassVirtualMethodInfo::arguments_metadata"]
        [::std::mem::offset_of!(GDExtensionClassVirtualMethodInfo, arguments_metadata) - 80usize];
};
pub type GDExtensionCallableCustomCall = ::std::option::Option<
    unsafe extern "C" fn(
        callable_userdata: *mut ::std::os::raw::c_void,
        p_args: *const GDExtensionConstVariantPtr,
        p_argument_count: GDExtensionInt,
        r_return: GDExtensionVariantPtr,
        r_error: *mut GDExtensionCallError,
    ),
>;
pub type GDExtensionCallableCustomIsValid = ::std::option::Option<
    unsafe extern "C" fn(callable_userdata: *mut ::std::os::raw::c_void) -> GDExtensionBool,
>;
pub type GDExtensionCallableCustomFree =
    ::std::option::Option<unsafe extern "C" fn(callable_userdata: *mut ::std::os::raw::c_void)>;
pub type GDExtensionCallableCustomHash = ::std::option::Option<
    unsafe extern "C" fn(callable_userdata: *mut ::std::os::raw::c_void) -> u32,
>;
pub type GDExtensionCallableCustomEqual = ::std::option::Option<
    unsafe extern "C" fn(
        callable_userdata_a: *mut ::std::os::raw::c_void,
        callable_userdata_b: *mut ::std::os::raw::c_void,
    ) -> GDExtensionBool,
>;
pub type GDExtensionCallableCustomLessThan = ::std::option::Option<
    unsafe extern "C" fn(
        callable_userdata_a: *mut ::std::os::raw::c_void,
        callable_userdata_b: *mut ::std::os::raw::c_void,
    ) -> GDExtensionBool,
>;
pub type GDExtensionCallableCustomToString = ::std::option::Option<
    unsafe extern "C" fn(
        callable_userdata: *mut ::std::os::raw::c_void,
        r_is_valid: *mut GDExtensionBool,
        r_out: GDExtensionStringPtr,
    ),
>;
pub type GDExtensionCallableCustomGetArgumentCount = ::std::option::Option<
    unsafe extern "C" fn(
        callable_userdata: *mut ::std::os::raw::c_void,
        r_is_valid: *mut GDExtensionBool,
    ) -> GDExtensionInt,
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionCallableCustomInfo {
    pub callable_userdata: *mut ::std::os::raw::c_void,
    pub token: *mut ::std::os::raw::c_void,
    pub object_id: GDObjectInstanceID,
    pub call_func: GDExtensionCallableCustomCall,
    pub is_valid_func: GDExtensionCallableCustomIsValid,
    pub free_func: GDExtensionCallableCustomFree,
    pub hash_func: GDExtensionCallableCustomHash,
    pub equal_func: GDExtensionCallableCustomEqual,
    pub less_than_func: GDExtensionCallableCustomLessThan,
    pub to_string_func: GDExtensionCallableCustomToString,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionCallableCustomInfo"]
        [::std::mem::size_of::<GDExtensionCallableCustomInfo>() - 80usize];
    ["Alignment of GDExtensionCallableCustomInfo"]
        [::std::mem::align_of::<GDExtensionCallableCustomInfo>() - 8usize];
    ["Offset of field: GDExtensionCallableCustomInfo::callable_userdata"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo, callable_userdata) - 0usize];
    ["Offset of field: GDExtensionCallableCustomInfo::token"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo, token) - 8usize];
    ["Offset of field: GDExtensionCallableCustomInfo::object_id"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo, object_id) - 16usize];
    ["Offset of field: GDExtensionCallableCustomInfo::call_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo, call_func) - 24usize];
    ["Offset of field: GDExtensionCallableCustomInfo::is_valid_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo, is_valid_func) - 32usize];
    ["Offset of field: GDExtensionCallableCustomInfo::free_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo, free_func) - 40usize];
    ["Offset of field: GDExtensionCallableCustomInfo::hash_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo, hash_func) - 48usize];
    ["Offset of field: GDExtensionCallableCustomInfo::equal_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo, equal_func) - 56usize];
    ["Offset of field: GDExtensionCallableCustomInfo::less_than_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo, less_than_func) - 64usize];
    ["Offset of field: GDExtensionCallableCustomInfo::to_string_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo, to_string_func) - 72usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionCallableCustomInfo2 {
    pub callable_userdata: *mut ::std::os::raw::c_void,
    pub token: *mut ::std::os::raw::c_void,
    pub object_id: GDObjectInstanceID,
    pub call_func: GDExtensionCallableCustomCall,
    pub is_valid_func: GDExtensionCallableCustomIsValid,
    pub free_func: GDExtensionCallableCustomFree,
    pub hash_func: GDExtensionCallableCustomHash,
    pub equal_func: GDExtensionCallableCustomEqual,
    pub less_than_func: GDExtensionCallableCustomLessThan,
    pub to_string_func: GDExtensionCallableCustomToString,
    pub get_argument_count_func: GDExtensionCallableCustomGetArgumentCount,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionCallableCustomInfo2"]
        [::std::mem::size_of::<GDExtensionCallableCustomInfo2>() - 88usize];
    ["Alignment of GDExtensionCallableCustomInfo2"]
        [::std::mem::align_of::<GDExtensionCallableCustomInfo2>() - 8usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::callable_userdata"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, callable_userdata) - 0usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::token"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, token) - 8usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::object_id"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, object_id) - 16usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::call_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, call_func) - 24usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::is_valid_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, is_valid_func) - 32usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::free_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, free_func) - 40usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::hash_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, hash_func) - 48usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::equal_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, equal_func) - 56usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::less_than_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, less_than_func) - 64usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::to_string_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, to_string_func) - 72usize];
    ["Offset of field: GDExtensionCallableCustomInfo2::get_argument_count_func"]
        [::std::mem::offset_of!(GDExtensionCallableCustomInfo2, get_argument_count_func) - 80usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextScriptInstanceData {
    _unused: [u8; 0],
}
pub type GDExtensionScriptInstanceDataPtr = *mut __GdextScriptInstanceData;
pub type GDExtensionScriptInstanceSet = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_name: GDExtensionConstStringNamePtr,
        p_value: GDExtensionConstVariantPtr,
    ) -> GDExtensionBool,
>;
pub type GDExtensionScriptInstanceGet = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_name: GDExtensionConstStringNamePtr,
        r_ret: GDExtensionVariantPtr,
    ) -> GDExtensionBool,
>;
pub type GDExtensionScriptInstanceGetPropertyList = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        r_count: *mut u32,
    ) -> *const GDExtensionPropertyInfo,
>;
pub type GDExtensionScriptInstanceFreePropertyList = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_list: *const GDExtensionPropertyInfo,
    ),
>;
pub type GDExtensionScriptInstanceFreePropertyList2 = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_list: *const GDExtensionPropertyInfo,
        p_count: u32,
    ),
>;
pub type GDExtensionScriptInstanceGetClassCategory = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_class_category: *mut GDExtensionPropertyInfo,
    ) -> GDExtensionBool,
>;
pub type GDExtensionScriptInstanceGetPropertyType = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_name: GDExtensionConstStringNamePtr,
        r_is_valid: *mut GDExtensionBool,
    ) -> GDExtensionVariantType,
>;
pub type GDExtensionScriptInstanceValidateProperty = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_property: *mut GDExtensionPropertyInfo,
    ) -> GDExtensionBool,
>;
pub type GDExtensionScriptInstancePropertyCanRevert = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_name: GDExtensionConstStringNamePtr,
    ) -> GDExtensionBool,
>;
pub type GDExtensionScriptInstancePropertyGetRevert = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_name: GDExtensionConstStringNamePtr,
        r_ret: GDExtensionVariantPtr,
    ) -> GDExtensionBool,
>;
pub type GDExtensionScriptInstanceGetOwner = ::std::option::Option<
    unsafe extern "C" fn(p_instance: GDExtensionScriptInstanceDataPtr) -> GDExtensionObjectPtr,
>;
pub type GDExtensionScriptInstancePropertyStateAdd = ::std::option::Option<
    unsafe extern "C" fn(
        p_name: GDExtensionConstStringNamePtr,
        p_value: GDExtensionConstVariantPtr,
        p_userdata: *mut ::std::os::raw::c_void,
    ),
>;
pub type GDExtensionScriptInstanceGetPropertyState = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_add_func: GDExtensionScriptInstancePropertyStateAdd,
        p_userdata: *mut ::std::os::raw::c_void,
    ),
>;
pub type GDExtensionScriptInstanceGetMethodList = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        r_count: *mut u32,
    ) -> *const GDExtensionMethodInfo,
>;
pub type GDExtensionScriptInstanceFreeMethodList = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_list: *const GDExtensionMethodInfo,
    ),
>;
pub type GDExtensionScriptInstanceFreeMethodList2 = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_list: *const GDExtensionMethodInfo,
        p_count: u32,
    ),
>;
pub type GDExtensionScriptInstanceHasMethod = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_name: GDExtensionConstStringNamePtr,
    ) -> GDExtensionBool,
>;
pub type GDExtensionScriptInstanceGetMethodArgumentCount = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_name: GDExtensionConstStringNamePtr,
        r_is_valid: *mut GDExtensionBool,
    ) -> GDExtensionInt,
>;
pub type GDExtensionScriptInstanceCall = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionScriptInstanceDataPtr,
        p_method: GDExtensionConstStringNamePtr,
        p_args: *const GDExtensionConstVariantPtr,
        p_argument_count: GDExtensionInt,
        r_return: GDExtensionVariantPtr,
        r_error: *mut GDExtensionCallError,
    ),
>;
pub type GDExtensionScriptInstanceNotification = ::std::option::Option<
    unsafe extern "C" fn(p_instance: GDExtensionScriptInstanceDataPtr, p_what: i32),
>;
pub type GDExtensionScriptInstanceNotification2 = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        p_what: i32,
        p_reversed: GDExtensionBool,
    ),
>;
pub type GDExtensionScriptInstanceToString = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
        r_is_valid: *mut GDExtensionBool,
        r_out: GDExtensionStringPtr,
    ),
>;
pub type GDExtensionScriptInstanceRefCountIncremented =
    ::std::option::Option<unsafe extern "C" fn(p_instance: GDExtensionScriptInstanceDataPtr)>;
pub type GDExtensionScriptInstanceRefCountDecremented = ::std::option::Option<
    unsafe extern "C" fn(p_instance: GDExtensionScriptInstanceDataPtr) -> GDExtensionBool,
>;
pub type GDExtensionScriptInstanceGetScript = ::std::option::Option<
    unsafe extern "C" fn(p_instance: GDExtensionScriptInstanceDataPtr) -> GDExtensionObjectPtr,
>;
pub type GDExtensionScriptInstanceIsPlaceholder = ::std::option::Option<
    unsafe extern "C" fn(p_instance: GDExtensionScriptInstanceDataPtr) -> GDExtensionBool,
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextScriptLanguage {
    _unused: [u8; 0],
}
pub type GDExtensionScriptLanguagePtr = *mut __GdextScriptLanguage;
pub type GDExtensionScriptInstanceGetLanguage = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionScriptInstanceDataPtr,
    ) -> GDExtensionScriptLanguagePtr,
>;
pub type GDExtensionScriptInstanceFree =
    ::std::option::Option<unsafe extern "C" fn(p_instance: GDExtensionScriptInstanceDataPtr)>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GdextScriptInstance {
    _unused: [u8; 0],
}
pub type GDExtensionScriptInstancePtr = *mut __GdextScriptInstance;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionScriptInstanceInfo {
    pub set_func: GDExtensionScriptInstanceSet,
    pub get_func: GDExtensionScriptInstanceGet,
    pub get_property_list_func: GDExtensionScriptInstanceGetPropertyList,
    pub free_property_list_func: GDExtensionScriptInstanceFreePropertyList,
    pub property_can_revert_func: GDExtensionScriptInstancePropertyCanRevert,
    pub property_get_revert_func: GDExtensionScriptInstancePropertyGetRevert,
    pub get_owner_func: GDExtensionScriptInstanceGetOwner,
    pub get_property_state_func: GDExtensionScriptInstanceGetPropertyState,
    pub get_method_list_func: GDExtensionScriptInstanceGetMethodList,
    pub free_method_list_func: GDExtensionScriptInstanceFreeMethodList,
    pub get_property_type_func: GDExtensionScriptInstanceGetPropertyType,
    pub has_method_func: GDExtensionScriptInstanceHasMethod,
    pub call_func: GDExtensionScriptInstanceCall,
    pub notification_func: GDExtensionScriptInstanceNotification,
    pub to_string_func: GDExtensionScriptInstanceToString,
    pub refcount_incremented_func: GDExtensionScriptInstanceRefCountIncremented,
    pub refcount_decremented_func: GDExtensionScriptInstanceRefCountDecremented,
    pub get_script_func: GDExtensionScriptInstanceGetScript,
    pub is_placeholder_func: GDExtensionScriptInstanceIsPlaceholder,
    pub set_fallback_func: GDExtensionScriptInstanceSet,
    pub get_fallback_func: GDExtensionScriptInstanceGet,
    pub get_language_func: GDExtensionScriptInstanceGetLanguage,
    pub free_func: GDExtensionScriptInstanceFree,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionScriptInstanceInfo"]
        [::std::mem::size_of::<GDExtensionScriptInstanceInfo>() - 184usize];
    ["Alignment of GDExtensionScriptInstanceInfo"]
        [::std::mem::align_of::<GDExtensionScriptInstanceInfo>() - 8usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::set_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, set_func) - 0usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::get_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, get_func) - 8usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::get_property_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, get_property_list_func) - 16usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::free_property_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, free_property_list_func) - 24usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::property_can_revert_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, property_can_revert_func) - 32usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::property_get_revert_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, property_get_revert_func) - 40usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::get_owner_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, get_owner_func) - 48usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::get_property_state_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, get_property_state_func) - 56usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::get_method_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, get_method_list_func) - 64usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::free_method_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, free_method_list_func) - 72usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::get_property_type_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, get_property_type_func) - 80usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::has_method_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, has_method_func) - 88usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::call_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, call_func) - 96usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::notification_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, notification_func) - 104usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::to_string_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, to_string_func) - 112usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::refcount_incremented_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo,
        refcount_incremented_func
    ) - 120usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::refcount_decremented_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo,
        refcount_decremented_func
    ) - 128usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::get_script_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, get_script_func) - 136usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::is_placeholder_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, is_placeholder_func) - 144usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::set_fallback_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, set_fallback_func) - 152usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::get_fallback_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, get_fallback_func) - 160usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::get_language_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, get_language_func) - 168usize];
    ["Offset of field: GDExtensionScriptInstanceInfo::free_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo, free_func) - 176usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionScriptInstanceInfo2 {
    pub set_func: GDExtensionScriptInstanceSet,
    pub get_func: GDExtensionScriptInstanceGet,
    pub get_property_list_func: GDExtensionScriptInstanceGetPropertyList,
    pub free_property_list_func: GDExtensionScriptInstanceFreePropertyList,
    pub get_class_category_func: GDExtensionScriptInstanceGetClassCategory,
    pub property_can_revert_func: GDExtensionScriptInstancePropertyCanRevert,
    pub property_get_revert_func: GDExtensionScriptInstancePropertyGetRevert,
    pub get_owner_func: GDExtensionScriptInstanceGetOwner,
    pub get_property_state_func: GDExtensionScriptInstanceGetPropertyState,
    pub get_method_list_func: GDExtensionScriptInstanceGetMethodList,
    pub free_method_list_func: GDExtensionScriptInstanceFreeMethodList,
    pub get_property_type_func: GDExtensionScriptInstanceGetPropertyType,
    pub validate_property_func: GDExtensionScriptInstanceValidateProperty,
    pub has_method_func: GDExtensionScriptInstanceHasMethod,
    pub call_func: GDExtensionScriptInstanceCall,
    pub notification_func: GDExtensionScriptInstanceNotification2,
    pub to_string_func: GDExtensionScriptInstanceToString,
    pub refcount_incremented_func: GDExtensionScriptInstanceRefCountIncremented,
    pub refcount_decremented_func: GDExtensionScriptInstanceRefCountDecremented,
    pub get_script_func: GDExtensionScriptInstanceGetScript,
    pub is_placeholder_func: GDExtensionScriptInstanceIsPlaceholder,
    pub set_fallback_func: GDExtensionScriptInstanceSet,
    pub get_fallback_func: GDExtensionScriptInstanceGet,
    pub get_language_func: GDExtensionScriptInstanceGetLanguage,
    pub free_func: GDExtensionScriptInstanceFree,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionScriptInstanceInfo2"]
        [::std::mem::size_of::<GDExtensionScriptInstanceInfo2>() - 200usize];
    ["Alignment of GDExtensionScriptInstanceInfo2"]
        [::std::mem::align_of::<GDExtensionScriptInstanceInfo2>() - 8usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::set_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, set_func) - 0usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::get_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, get_func) - 8usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::get_property_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, get_property_list_func) - 16usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::free_property_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, free_property_list_func) - 24usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::get_class_category_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, get_class_category_func) - 32usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::property_can_revert_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo2,
        property_can_revert_func
    ) - 40usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::property_get_revert_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo2,
        property_get_revert_func
    ) - 48usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::get_owner_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, get_owner_func) - 56usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::get_property_state_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, get_property_state_func) - 64usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::get_method_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, get_method_list_func) - 72usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::free_method_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, free_method_list_func) - 80usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::get_property_type_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, get_property_type_func) - 88usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::validate_property_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, validate_property_func) - 96usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::has_method_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, has_method_func) - 104usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::call_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, call_func) - 112usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::notification_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, notification_func) - 120usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::to_string_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, to_string_func) - 128usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::refcount_incremented_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo2,
        refcount_incremented_func
    ) - 136usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::refcount_decremented_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo2,
        refcount_decremented_func
    ) - 144usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::get_script_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, get_script_func) - 152usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::is_placeholder_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, is_placeholder_func) - 160usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::set_fallback_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, set_fallback_func) - 168usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::get_fallback_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, get_fallback_func) - 176usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::get_language_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, get_language_func) - 184usize];
    ["Offset of field: GDExtensionScriptInstanceInfo2::free_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo2, free_func) - 192usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionScriptInstanceInfo3 {
    pub set_func: GDExtensionScriptInstanceSet,
    pub get_func: GDExtensionScriptInstanceGet,
    pub get_property_list_func: GDExtensionScriptInstanceGetPropertyList,
    pub free_property_list_func: GDExtensionScriptInstanceFreePropertyList2,
    pub get_class_category_func: GDExtensionScriptInstanceGetClassCategory,
    pub property_can_revert_func: GDExtensionScriptInstancePropertyCanRevert,
    pub property_get_revert_func: GDExtensionScriptInstancePropertyGetRevert,
    pub get_owner_func: GDExtensionScriptInstanceGetOwner,
    pub get_property_state_func: GDExtensionScriptInstanceGetPropertyState,
    pub get_method_list_func: GDExtensionScriptInstanceGetMethodList,
    pub free_method_list_func: GDExtensionScriptInstanceFreeMethodList2,
    pub get_property_type_func: GDExtensionScriptInstanceGetPropertyType,
    pub validate_property_func: GDExtensionScriptInstanceValidateProperty,
    pub has_method_func: GDExtensionScriptInstanceHasMethod,
    pub get_method_argument_count_func: GDExtensionScriptInstanceGetMethodArgumentCount,
    pub call_func: GDExtensionScriptInstanceCall,
    pub notification_func: GDExtensionScriptInstanceNotification2,
    pub to_string_func: GDExtensionScriptInstanceToString,
    pub refcount_incremented_func: GDExtensionScriptInstanceRefCountIncremented,
    pub refcount_decremented_func: GDExtensionScriptInstanceRefCountDecremented,
    pub get_script_func: GDExtensionScriptInstanceGetScript,
    pub is_placeholder_func: GDExtensionScriptInstanceIsPlaceholder,
    pub set_fallback_func: GDExtensionScriptInstanceSet,
    pub get_fallback_func: GDExtensionScriptInstanceGet,
    pub get_language_func: GDExtensionScriptInstanceGetLanguage,
    pub free_func: GDExtensionScriptInstanceFree,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionScriptInstanceInfo3"]
        [::std::mem::size_of::<GDExtensionScriptInstanceInfo3>() - 208usize];
    ["Alignment of GDExtensionScriptInstanceInfo3"]
        [::std::mem::align_of::<GDExtensionScriptInstanceInfo3>() - 8usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::set_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, set_func) - 0usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, get_func) - 8usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_property_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, get_property_list_func) - 16usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::free_property_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, free_property_list_func) - 24usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_class_category_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, get_class_category_func) - 32usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::property_can_revert_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo3,
        property_can_revert_func
    ) - 40usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::property_get_revert_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo3,
        property_get_revert_func
    ) - 48usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_owner_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, get_owner_func) - 56usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_property_state_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, get_property_state_func) - 64usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_method_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, get_method_list_func) - 72usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::free_method_list_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, free_method_list_func) - 80usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_property_type_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, get_property_type_func) - 88usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::validate_property_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, validate_property_func) - 96usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::has_method_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, has_method_func) - 104usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_method_argument_count_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo3,
        get_method_argument_count_func
    )
        - 112usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::call_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, call_func) - 120usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::notification_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, notification_func) - 128usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::to_string_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, to_string_func) - 136usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::refcount_incremented_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo3,
        refcount_incremented_func
    ) - 144usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::refcount_decremented_func"][::std::mem::offset_of!(
        GDExtensionScriptInstanceInfo3,
        refcount_decremented_func
    ) - 152usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_script_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, get_script_func) - 160usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::is_placeholder_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, is_placeholder_func) - 168usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::set_fallback_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, set_fallback_func) - 176usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_fallback_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, get_fallback_func) - 184usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::get_language_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, get_language_func) - 192usize];
    ["Offset of field: GDExtensionScriptInstanceInfo3::free_func"]
        [::std::mem::offset_of!(GDExtensionScriptInstanceInfo3, free_func) - 200usize];
};
pub const GDEXTENSION_INITIALIZATION_CORE: GDExtensionInitializationLevel = 0;
pub const GDEXTENSION_INITIALIZATION_SERVERS: GDExtensionInitializationLevel = 1;
pub const GDEXTENSION_INITIALIZATION_SCENE: GDExtensionInitializationLevel = 2;
pub const GDEXTENSION_INITIALIZATION_EDITOR: GDExtensionInitializationLevel = 3;
pub const GDEXTENSION_MAX_INITIALIZATION_LEVEL: GDExtensionInitializationLevel = 4;
pub type GDExtensionInitializationLevel = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionInitialization {
    pub minimum_initialization_level: GDExtensionInitializationLevel,
    pub userdata: *mut ::std::os::raw::c_void,
    pub initialize: ::std::option::Option<
        unsafe extern "C" fn(
            userdata: *mut ::std::os::raw::c_void,
            p_level: GDExtensionInitializationLevel,
        ),
    >,
    pub deinitialize: ::std::option::Option<
        unsafe extern "C" fn(
            userdata: *mut ::std::os::raw::c_void,
            p_level: GDExtensionInitializationLevel,
        ),
    >,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionInitialization"]
        [::std::mem::size_of::<GDExtensionInitialization>() - 32usize];
    ["Alignment of GDExtensionInitialization"]
        [::std::mem::align_of::<GDExtensionInitialization>() - 8usize];
    ["Offset of field: GDExtensionInitialization::minimum_initialization_level"]
        [::std::mem::offset_of!(GDExtensionInitialization, minimum_initialization_level) - 0usize];
    ["Offset of field: GDExtensionInitialization::userdata"]
        [::std::mem::offset_of!(GDExtensionInitialization, userdata) - 8usize];
    ["Offset of field: GDExtensionInitialization::initialize"]
        [::std::mem::offset_of!(GDExtensionInitialization, initialize) - 16usize];
    ["Offset of field: GDExtensionInitialization::deinitialize"]
        [::std::mem::offset_of!(GDExtensionInitialization, deinitialize) - 24usize];
};
pub type GDExtensionInterfaceFunctionPtr = ::std::option::Option<unsafe extern "C" fn()>;
pub type GDExtensionInterfaceGetProcAddress = ::std::option::Option<
    unsafe extern "C" fn(
        p_function_name: *const ::std::os::raw::c_char,
    ) -> GDExtensionInterfaceFunctionPtr,
>;
pub type GDExtensionInitializationFunction = ::std::option::Option<
    unsafe extern "C" fn(
        p_get_proc_address: GDExtensionInterfaceGetProcAddress,
        p_library: GDExtensionClassLibraryPtr,
        r_initialization: *mut GDExtensionInitialization,
    ) -> GDExtensionBool,
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct GDExtensionGodotVersion {
    pub major: u32,
    pub minor: u32,
    pub patch: u32,
    pub string: *const ::std::os::raw::c_char,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of GDExtensionGodotVersion"][::std::mem::size_of::<GDExtensionGodotVersion>() - 24usize];
    ["Alignment of GDExtensionGodotVersion"]
        [::std::mem::align_of::<GDExtensionGodotVersion>() - 8usize];
    ["Offset of field: GDExtensionGodotVersion::major"]
        [::std::mem::offset_of!(GDExtensionGodotVersion, major) - 0usize];
    ["Offset of field: GDExtensionGodotVersion::minor"]
        [::std::mem::offset_of!(GDExtensionGodotVersion, minor) - 4usize];
    ["Offset of field: GDExtensionGodotVersion::patch"]
        [::std::mem::offset_of!(GDExtensionGodotVersion, patch) - 8usize];
    ["Offset of field: GDExtensionGodotVersion::string"]
        [::std::mem::offset_of!(GDExtensionGodotVersion, string) - 16usize];
};
#[doc = " @name get_godot_version\n @since 4.1\n\n Gets the Godot version that the GDExtension was loaded into.\n\n @param r_godot_version A pointer to the structure to write the version information into."]
pub type GDExtensionInterfaceGetGodotVersion =
    ::std::option::Option<unsafe extern "C" fn(r_godot_version: *mut GDExtensionGodotVersion)>;
#[doc = " @name mem_alloc\n @since 4.1\n\n Allocates memory.\n\n @param p_bytes The amount of memory to allocate in bytes.\n\n @return A pointer to the allocated memory, or NULL if unsuccessful."]
pub type GDExtensionInterfaceMemAlloc =
    ::std::option::Option<unsafe extern "C" fn(p_bytes: usize) -> *mut ::std::os::raw::c_void>;
#[doc = " @name mem_realloc\n @since 4.1\n\n Reallocates memory.\n\n @param p_ptr A pointer to the previously allocated memory.\n @param p_bytes The number of bytes to resize the memory block to.\n\n @return A pointer to the allocated memory, or NULL if unsuccessful."]
pub type GDExtensionInterfaceMemRealloc = ::std::option::Option<
    unsafe extern "C" fn(
        p_ptr: *mut ::std::os::raw::c_void,
        p_bytes: usize,
    ) -> *mut ::std::os::raw::c_void,
>;
#[doc = " @name mem_free\n @since 4.1\n\n Frees memory.\n\n @param p_ptr A pointer to the previously allocated memory."]
pub type GDExtensionInterfaceMemFree =
    ::std::option::Option<unsafe extern "C" fn(p_ptr: *mut ::std::os::raw::c_void)>;
#[doc = " @name print_error\n @since 4.1\n\n Logs an error to Godot's built-in debugger and to the OS terminal.\n\n @param p_description The code trigging the error.\n @param p_function The function name where the error occurred.\n @param p_file The file where the error occurred.\n @param p_line The line where the error occurred.\n @param p_editor_notify Whether or not to notify the editor."]
pub type GDExtensionInterfacePrintError = ::std::option::Option<
    unsafe extern "C" fn(
        p_description: *const ::std::os::raw::c_char,
        p_function: *const ::std::os::raw::c_char,
        p_file: *const ::std::os::raw::c_char,
        p_line: i32,
        p_editor_notify: GDExtensionBool,
    ),
>;
#[doc = " @name print_error_with_message\n @since 4.1\n\n Logs an error with a message to Godot's built-in debugger and to the OS terminal.\n\n @param p_description The code trigging the error.\n @param p_message The message to show along with the error.\n @param p_function The function name where the error occurred.\n @param p_file The file where the error occurred.\n @param p_line The line where the error occurred.\n @param p_editor_notify Whether or not to notify the editor."]
pub type GDExtensionInterfacePrintErrorWithMessage = ::std::option::Option<
    unsafe extern "C" fn(
        p_description: *const ::std::os::raw::c_char,
        p_message: *const ::std::os::raw::c_char,
        p_function: *const ::std::os::raw::c_char,
        p_file: *const ::std::os::raw::c_char,
        p_line: i32,
        p_editor_notify: GDExtensionBool,
    ),
>;
#[doc = " @name print_warning\n @since 4.1\n\n Logs a warning to Godot's built-in debugger and to the OS terminal.\n\n @param p_description The code trigging the warning.\n @param p_function The function name where the warning occurred.\n @param p_file The file where the warning occurred.\n @param p_line The line where the warning occurred.\n @param p_editor_notify Whether or not to notify the editor."]
pub type GDExtensionInterfacePrintWarning = ::std::option::Option<
    unsafe extern "C" fn(
        p_description: *const ::std::os::raw::c_char,
        p_function: *const ::std::os::raw::c_char,
        p_file: *const ::std::os::raw::c_char,
        p_line: i32,
        p_editor_notify: GDExtensionBool,
    ),
>;
#[doc = " @name print_warning_with_message\n @since 4.1\n\n Logs a warning with a message to Godot's built-in debugger and to the OS terminal.\n\n @param p_description The code trigging the warning.\n @param p_message The message to show along with the warning.\n @param p_function The function name where the warning occurred.\n @param p_file The file where the warning occurred.\n @param p_line The line where the warning occurred.\n @param p_editor_notify Whether or not to notify the editor."]
pub type GDExtensionInterfacePrintWarningWithMessage = ::std::option::Option<
    unsafe extern "C" fn(
        p_description: *const ::std::os::raw::c_char,
        p_message: *const ::std::os::raw::c_char,
        p_function: *const ::std::os::raw::c_char,
        p_file: *const ::std::os::raw::c_char,
        p_line: i32,
        p_editor_notify: GDExtensionBool,
    ),
>;
#[doc = " @name print_script_error\n @since 4.1\n\n Logs a script error to Godot's built-in debugger and to the OS terminal.\n\n @param p_description The code trigging the error.\n @param p_function The function name where the error occurred.\n @param p_file The file where the error occurred.\n @param p_line The line where the error occurred.\n @param p_editor_notify Whether or not to notify the editor."]
pub type GDExtensionInterfacePrintScriptError = ::std::option::Option<
    unsafe extern "C" fn(
        p_description: *const ::std::os::raw::c_char,
        p_function: *const ::std::os::raw::c_char,
        p_file: *const ::std::os::raw::c_char,
        p_line: i32,
        p_editor_notify: GDExtensionBool,
    ),
>;
#[doc = " @name print_script_error_with_message\n @since 4.1\n\n Logs a script error with a message to Godot's built-in debugger and to the OS terminal.\n\n @param p_description The code trigging the error.\n @param p_message The message to show along with the error.\n @param p_function The function name where the error occurred.\n @param p_file The file where the error occurred.\n @param p_line The line where the error occurred.\n @param p_editor_notify Whether or not to notify the editor."]
pub type GDExtensionInterfacePrintScriptErrorWithMessage = ::std::option::Option<
    unsafe extern "C" fn(
        p_description: *const ::std::os::raw::c_char,
        p_message: *const ::std::os::raw::c_char,
        p_function: *const ::std::os::raw::c_char,
        p_file: *const ::std::os::raw::c_char,
        p_line: i32,
        p_editor_notify: GDExtensionBool,
    ),
>;
#[doc = " @name get_native_struct_size\n @since 4.1\n\n Gets the size of a native struct (ex. ObjectID) in bytes.\n\n @param p_name A pointer to a StringName identifying the struct name.\n\n @return The size in bytes."]
pub type GDExtensionInterfaceGetNativeStructSize =
    ::std::option::Option<unsafe extern "C" fn(p_name: GDExtensionConstStringNamePtr) -> u64>;
#[doc = " @name variant_new_copy\n @since 4.1\n\n Copies one Variant into a another.\n\n @param r_dest A pointer to the destination Variant.\n @param p_src A pointer to the source Variant."]
pub type GDExtensionInterfaceVariantNewCopy = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedVariantPtr,
        p_src: GDExtensionConstVariantPtr,
    ),
>;
#[doc = " @name variant_new_nil\n @since 4.1\n\n Creates a new Variant containing nil.\n\n @param r_dest A pointer to the destination Variant."]
pub type GDExtensionInterfaceVariantNewNil =
    ::std::option::Option<unsafe extern "C" fn(r_dest: GDExtensionUninitializedVariantPtr)>;
#[doc = " @name variant_destroy\n @since 4.1\n\n Destroys a Variant.\n\n @param p_self A pointer to the Variant to destroy."]
pub type GDExtensionInterfaceVariantDestroy =
    ::std::option::Option<unsafe extern "C" fn(p_self: GDExtensionVariantPtr)>;
#[doc = " @name variant_call\n @since 4.1\n\n Calls a method on a Variant.\n\n @param p_self A pointer to the Variant.\n @param p_method A pointer to a StringName identifying the method.\n @param p_args A pointer to a C array of Variant.\n @param p_argument_count The number of arguments.\n @param r_return A pointer a Variant which will be assigned the return value.\n @param r_error A pointer the structure which will hold error information.\n\n @see Variant::callp()"]
pub type GDExtensionInterfaceVariantCall = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionVariantPtr,
        p_method: GDExtensionConstStringNamePtr,
        p_args: *const GDExtensionConstVariantPtr,
        p_argument_count: GDExtensionInt,
        r_return: GDExtensionUninitializedVariantPtr,
        r_error: *mut GDExtensionCallError,
    ),
>;
#[doc = " @name variant_call_static\n @since 4.1\n\n Calls a static method on a Variant.\n\n @param p_self A pointer to the Variant.\n @param p_method A pointer to a StringName identifying the method.\n @param p_args A pointer to a C array of Variant.\n @param p_argument_count The number of arguments.\n @param r_return A pointer a Variant which will be assigned the return value.\n @param r_error A pointer the structure which will be updated with error information.\n\n @see Variant::call_static()"]
pub type GDExtensionInterfaceVariantCallStatic = ::std::option::Option<
    unsafe extern "C" fn(
        p_type: GDExtensionVariantType,
        p_method: GDExtensionConstStringNamePtr,
        p_args: *const GDExtensionConstVariantPtr,
        p_argument_count: GDExtensionInt,
        r_return: GDExtensionUninitializedVariantPtr,
        r_error: *mut GDExtensionCallError,
    ),
>;
#[doc = " @name variant_evaluate\n @since 4.1\n\n Evaluate an operator on two Variants.\n\n @param p_op The operator to evaluate.\n @param p_a The first Variant.\n @param p_b The second Variant.\n @param r_return A pointer a Variant which will be assigned the return value.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.\n\n @see Variant::evaluate()"]
pub type GDExtensionInterfaceVariantEvaluate = ::std::option::Option<
    unsafe extern "C" fn(
        p_op: GDExtensionVariantOperator,
        p_a: GDExtensionConstVariantPtr,
        p_b: GDExtensionConstVariantPtr,
        r_return: GDExtensionUninitializedVariantPtr,
        r_valid: *mut GDExtensionBool,
    ),
>;
#[doc = " @name variant_set\n @since 4.1\n\n Sets a key on a Variant to a value.\n\n @param p_self A pointer to the Variant.\n @param p_key A pointer to a Variant representing the key.\n @param p_value A pointer to a Variant representing the value.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.\n\n @see Variant::set()"]
pub type GDExtensionInterfaceVariantSet = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionVariantPtr,
        p_key: GDExtensionConstVariantPtr,
        p_value: GDExtensionConstVariantPtr,
        r_valid: *mut GDExtensionBool,
    ),
>;
#[doc = " @name variant_set_named\n @since 4.1\n\n Sets a named key on a Variant to a value.\n\n @param p_self A pointer to the Variant.\n @param p_key A pointer to a StringName representing the key.\n @param p_value A pointer to a Variant representing the value.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.\n\n @see Variant::set_named()"]
pub type GDExtensionInterfaceVariantSetNamed = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionVariantPtr,
        p_key: GDExtensionConstStringNamePtr,
        p_value: GDExtensionConstVariantPtr,
        r_valid: *mut GDExtensionBool,
    ),
>;
#[doc = " @name variant_set_keyed\n @since 4.1\n\n Sets a keyed property on a Variant to a value.\n\n @param p_self A pointer to the Variant.\n @param p_key A pointer to a Variant representing the key.\n @param p_value A pointer to a Variant representing the value.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.\n\n @see Variant::set_keyed()"]
pub type GDExtensionInterfaceVariantSetKeyed = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionVariantPtr,
        p_key: GDExtensionConstVariantPtr,
        p_value: GDExtensionConstVariantPtr,
        r_valid: *mut GDExtensionBool,
    ),
>;
#[doc = " @name variant_set_indexed\n @since 4.1\n\n Sets an index on a Variant to a value.\n\n @param p_self A pointer to the Variant.\n @param p_index The index.\n @param p_value A pointer to a Variant representing the value.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.\n @param r_oob A pointer to a boolean which will be set to true if the index is out of bounds."]
pub type GDExtensionInterfaceVariantSetIndexed = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionVariantPtr,
        p_index: GDExtensionInt,
        p_value: GDExtensionConstVariantPtr,
        r_valid: *mut GDExtensionBool,
        r_oob: *mut GDExtensionBool,
    ),
>;
#[doc = " @name variant_get\n @since 4.1\n\n Gets the value of a key from a Variant.\n\n @param p_self A pointer to the Variant.\n @param p_key A pointer to a Variant representing the key.\n @param r_ret A pointer to a Variant which will be assigned the value.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid."]
pub type GDExtensionInterfaceVariantGet = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        p_key: GDExtensionConstVariantPtr,
        r_ret: GDExtensionUninitializedVariantPtr,
        r_valid: *mut GDExtensionBool,
    ),
>;
#[doc = " @name variant_get_named\n @since 4.1\n\n Gets the value of a named key from a Variant.\n\n @param p_self A pointer to the Variant.\n @param p_key A pointer to a StringName representing the key.\n @param r_ret A pointer to a Variant which will be assigned the value.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid."]
pub type GDExtensionInterfaceVariantGetNamed = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        p_key: GDExtensionConstStringNamePtr,
        r_ret: GDExtensionUninitializedVariantPtr,
        r_valid: *mut GDExtensionBool,
    ),
>;
#[doc = " @name variant_get_keyed\n @since 4.1\n\n Gets the value of a keyed property from a Variant.\n\n @param p_self A pointer to the Variant.\n @param p_key A pointer to a Variant representing the key.\n @param r_ret A pointer to a Variant which will be assigned the value.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid."]
pub type GDExtensionInterfaceVariantGetKeyed = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        p_key: GDExtensionConstVariantPtr,
        r_ret: GDExtensionUninitializedVariantPtr,
        r_valid: *mut GDExtensionBool,
    ),
>;
#[doc = " @name variant_get_indexed\n @since 4.1\n\n Gets the value of an index from a Variant.\n\n @param p_self A pointer to the Variant.\n @param p_index The index.\n @param r_ret A pointer to a Variant which will be assigned the value.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.\n @param r_oob A pointer to a boolean which will be set to true if the index is out of bounds."]
pub type GDExtensionInterfaceVariantGetIndexed = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        p_index: GDExtensionInt,
        r_ret: GDExtensionUninitializedVariantPtr,
        r_valid: *mut GDExtensionBool,
        r_oob: *mut GDExtensionBool,
    ),
>;
#[doc = " @name variant_iter_init\n @since 4.1\n\n Initializes an iterator over a Variant.\n\n @param p_self A pointer to the Variant.\n @param r_iter A pointer to a Variant which will be assigned the iterator.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.\n\n @return true if the operation is valid; otherwise false.\n\n @see Variant::iter_init()"]
pub type GDExtensionInterfaceVariantIterInit = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        r_iter: GDExtensionUninitializedVariantPtr,
        r_valid: *mut GDExtensionBool,
    ) -> GDExtensionBool,
>;
#[doc = " @name variant_iter_next\n @since 4.1\n\n Gets the next value for an iterator over a Variant.\n\n @param p_self A pointer to the Variant.\n @param r_iter A pointer to a Variant which will be assigned the iterator.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.\n\n @return true if the operation is valid; otherwise false.\n\n @see Variant::iter_next()"]
pub type GDExtensionInterfaceVariantIterNext = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        r_iter: GDExtensionVariantPtr,
        r_valid: *mut GDExtensionBool,
    ) -> GDExtensionBool,
>;
#[doc = " @name variant_iter_get\n @since 4.1\n\n Gets the next value for an iterator over a Variant.\n\n @param p_self A pointer to the Variant.\n @param r_iter A pointer to a Variant which will be assigned the iterator.\n @param r_ret A pointer to a Variant which will be assigned false if the operation is invalid.\n @param r_valid A pointer to a boolean which will be set to false if the operation is invalid.\n\n @see Variant::iter_get()"]
pub type GDExtensionInterfaceVariantIterGet = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        r_iter: GDExtensionVariantPtr,
        r_ret: GDExtensionUninitializedVariantPtr,
        r_valid: *mut GDExtensionBool,
    ),
>;
#[doc = " @name variant_hash\n @since 4.1\n\n Gets the hash of a Variant.\n\n @param p_self A pointer to the Variant.\n\n @return The hash value.\n\n @see Variant::hash()"]
pub type GDExtensionInterfaceVariantHash = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionConstVariantPtr) -> GDExtensionInt,
>;
#[doc = " @name variant_recursive_hash\n @since 4.1\n\n Gets the recursive hash of a Variant.\n\n @param p_self A pointer to the Variant.\n @param p_recursion_count The number of recursive loops so far.\n\n @return The hash value.\n\n @see Variant::recursive_hash()"]
pub type GDExtensionInterfaceVariantRecursiveHash = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        p_recursion_count: GDExtensionInt,
    ) -> GDExtensionInt,
>;
#[doc = " @name variant_hash_compare\n @since 4.1\n\n Compares two Variants by their hash.\n\n @param p_self A pointer to the Variant.\n @param p_other A pointer to the other Variant to compare it to.\n\n @return The hash value.\n\n @see Variant::hash_compare()"]
pub type GDExtensionInterfaceVariantHashCompare = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        p_other: GDExtensionConstVariantPtr,
    ) -> GDExtensionBool,
>;
#[doc = " @name variant_booleanize\n @since 4.1\n\n Converts a Variant to a boolean.\n\n @param p_self A pointer to the Variant.\n\n @return The boolean value of the Variant."]
pub type GDExtensionInterfaceVariantBooleanize = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionConstVariantPtr) -> GDExtensionBool,
>;
#[doc = " @name variant_duplicate\n @since 4.1\n\n Duplicates a Variant.\n\n @param p_self A pointer to the Variant.\n @param r_ret A pointer to a Variant to store the duplicated value.\n @param p_deep Whether or not to duplicate deeply (when supported by the Variant type)."]
pub type GDExtensionInterfaceVariantDuplicate = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        r_ret: GDExtensionVariantPtr,
        p_deep: GDExtensionBool,
    ),
>;
#[doc = " @name variant_stringify\n @since 4.1\n\n Converts a Variant to a string.\n\n @param p_self A pointer to the Variant.\n @param r_ret A pointer to a String to store the resulting value."]
pub type GDExtensionInterfaceVariantStringify = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionConstVariantPtr, r_ret: GDExtensionStringPtr),
>;
#[doc = " @name variant_get_type\n @since 4.1\n\n Gets the type of a Variant.\n\n @param p_self A pointer to the Variant.\n\n @return The variant type."]
pub type GDExtensionInterfaceVariantGetType = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionConstVariantPtr) -> GDExtensionVariantType,
>;
#[doc = " @name variant_has_method\n @since 4.1\n\n Checks if a Variant has the given method.\n\n @param p_self A pointer to the Variant.\n @param p_method A pointer to a StringName with the method name.\n\n @return"]
pub type GDExtensionInterfaceVariantHasMethod = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        p_method: GDExtensionConstStringNamePtr,
    ) -> GDExtensionBool,
>;
#[doc = " @name variant_has_member\n @since 4.1\n\n Checks if a type of Variant has the given member.\n\n @param p_type The Variant type.\n @param p_member A pointer to a StringName with the member name.\n\n @return"]
pub type GDExtensionInterfaceVariantHasMember = ::std::option::Option<
    unsafe extern "C" fn(
        p_type: GDExtensionVariantType,
        p_member: GDExtensionConstStringNamePtr,
    ) -> GDExtensionBool,
>;
#[doc = " @name variant_has_key\n @since 4.1\n\n Checks if a Variant has a key.\n\n @param p_self A pointer to the Variant.\n @param p_key A pointer to a Variant representing the key.\n @param r_valid A pointer to a boolean which will be set to false if the key doesn't exist.\n\n @return true if the key exists; otherwise false."]
pub type GDExtensionInterfaceVariantHasKey = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstVariantPtr,
        p_key: GDExtensionConstVariantPtr,
        r_valid: *mut GDExtensionBool,
    ) -> GDExtensionBool,
>;
#[doc = " @name variant_get_type_name\n @since 4.1\n\n Gets the name of a Variant type.\n\n @param p_type The Variant type.\n @param r_name A pointer to a String to store the Variant type name."]
pub type GDExtensionInterfaceVariantGetTypeName = ::std::option::Option<
    unsafe extern "C" fn(p_type: GDExtensionVariantType, r_name: GDExtensionUninitializedStringPtr),
>;
#[doc = " @name variant_can_convert\n @since 4.1\n\n Checks if Variants can be converted from one type to another.\n\n @param p_from The Variant type to convert from.\n @param p_to The Variant type to convert to.\n\n @return true if the conversion is possible; otherwise false."]
pub type GDExtensionInterfaceVariantCanConvert = ::std::option::Option<
    unsafe extern "C" fn(
        p_from: GDExtensionVariantType,
        p_to: GDExtensionVariantType,
    ) -> GDExtensionBool,
>;
#[doc = " @name variant_can_convert_strict\n @since 4.1\n\n Checks if Variant can be converted from one type to another using stricter rules.\n\n @param p_from The Variant type to convert from.\n @param p_to The Variant type to convert to.\n\n @return true if the conversion is possible; otherwise false."]
pub type GDExtensionInterfaceVariantCanConvertStrict = ::std::option::Option<
    unsafe extern "C" fn(
        p_from: GDExtensionVariantType,
        p_to: GDExtensionVariantType,
    ) -> GDExtensionBool,
>;
#[doc = " @name get_variant_from_type_constructor\n @since 4.1\n\n Gets a pointer to a function that can create a Variant of the given type from a raw value.\n\n @param p_type The Variant type.\n\n @return A pointer to a function that can create a Variant of the given type from a raw value."]
pub type GDExtensionInterfaceGetVariantFromTypeConstructor = ::std::option::Option<
    unsafe extern "C" fn(
        p_type: GDExtensionVariantType,
    ) -> GDExtensionVariantFromTypeConstructorFunc,
>;
#[doc = " @name get_variant_to_type_constructor\n @since 4.1\n\n Gets a pointer to a function that can get the raw value from a Variant of the given type.\n\n @param p_type The Variant type.\n\n @return A pointer to a function that can get the raw value from a Variant of the given type."]
pub type GDExtensionInterfaceGetVariantToTypeConstructor = ::std::option::Option<
    unsafe extern "C" fn(
        p_type: GDExtensionVariantType,
    ) -> GDExtensionTypeFromVariantConstructorFunc,
>;
#[doc = " @name variant_get_ptr_operator_evaluator\n @since 4.1\n\n Gets a pointer to a function that can evaluate the given Variant operator on the given Variant types.\n\n @param p_operator The variant operator.\n @param p_type_a The type of the first Variant.\n @param p_type_b The type of the second Variant.\n\n @return A pointer to a function that can evaluate the given Variant operator on the given Variant types."]
pub type GDExtensionInterfaceVariantGetPtrOperatorEvaluator = ::std::option::Option<
    unsafe extern "C" fn(
        p_operator: GDExtensionVariantOperator,
        p_type_a: GDExtensionVariantType,
        p_type_b: GDExtensionVariantType,
    ) -> GDExtensionPtrOperatorEvaluator,
>;
#[doc = " @name variant_get_ptr_builtin_method\n @since 4.1\n\n Gets a pointer to a function that can call a builtin method on a type of Variant.\n\n @param p_type The Variant type.\n @param p_method A pointer to a StringName with the method name.\n @param p_hash A hash representing the method signature.\n\n @return A pointer to a function that can call a builtin method on a type of Variant."]
pub type GDExtensionInterfaceVariantGetPtrBuiltinMethod = ::std::option::Option<
    unsafe extern "C" fn(
        p_type: GDExtensionVariantType,
        p_method: GDExtensionConstStringNamePtr,
        p_hash: GDExtensionInt,
    ) -> GDExtensionPtrBuiltInMethod,
>;
#[doc = " @name variant_get_ptr_constructor\n @since 4.1\n\n Gets a pointer to a function that can call one of the constructors for a type of Variant.\n\n @param p_type The Variant type.\n @param p_constructor The index of the constructor.\n\n @return A pointer to a function that can call one of the constructors for a type of Variant."]
pub type GDExtensionInterfaceVariantGetPtrConstructor = ::std::option::Option<
    unsafe extern "C" fn(
        p_type: GDExtensionVariantType,
        p_constructor: i32,
    ) -> GDExtensionPtrConstructor,
>;
#[doc = " @name variant_get_ptr_destructor\n @since 4.1\n\n Gets a pointer to a function than can call the destructor for a type of Variant.\n\n @param p_type The Variant type.\n\n @return A pointer to a function than can call the destructor for a type of Variant."]
pub type GDExtensionInterfaceVariantGetPtrDestructor = ::std::option::Option<
    unsafe extern "C" fn(p_type: GDExtensionVariantType) -> GDExtensionPtrDestructor,
>;
#[doc = " @name variant_construct\n @since 4.1\n\n Constructs a Variant of the given type, using the first constructor that matches the given arguments.\n\n @param p_type The Variant type.\n @param p_base A pointer to a Variant to store the constructed value.\n @param p_args A pointer to a C array of Variant pointers representing the arguments for the constructor.\n @param p_argument_count The number of arguments to pass to the constructor.\n @param r_error A pointer the structure which will be updated with error information."]
pub type GDExtensionInterfaceVariantConstruct = ::std::option::Option<
    unsafe extern "C" fn(
        p_type: GDExtensionVariantType,
        r_base: GDExtensionUninitializedVariantPtr,
        p_args: *const GDExtensionConstVariantPtr,
        p_argument_count: i32,
        r_error: *mut GDExtensionCallError,
    ),
>;
#[doc = " @name variant_get_ptr_setter\n @since 4.1\n\n Gets a pointer to a function that can call a member's setter on the given Variant type.\n\n @param p_type The Variant type.\n @param p_member A pointer to a StringName with the member name.\n\n @return A pointer to a function that can call a member's setter on the given Variant type."]
pub type GDExtensionInterfaceVariantGetPtrSetter = ::std::option::Option<
    unsafe extern "C" fn(
        p_type: GDExtensionVariantType,
        p_member: GDExtensionConstStringNamePtr,
    ) -> GDExtensionPtrSetter,
>;
#[doc = " @name variant_get_ptr_getter\n @since 4.1\n\n Gets a pointer to a function that can call a member's getter on the given Variant type.\n\n @param p_type The Variant type.\n @param p_member A pointer to a StringName with the member name.\n\n @return A pointer to a function that can call a member's getter on the given Variant type."]
pub type GDExtensionInterfaceVariantGetPtrGetter = ::std::option::Option<
    unsafe extern "C" fn(
        p_type: GDExtensionVariantType,
        p_member: GDExtensionConstStringNamePtr,
    ) -> GDExtensionPtrGetter,
>;
#[doc = " @name variant_get_ptr_indexed_setter\n @since 4.1\n\n Gets a pointer to a function that can set an index on the given Variant type.\n\n @param p_type The Variant type.\n\n @return A pointer to a function that can set an index on the given Variant type."]
pub type GDExtensionInterfaceVariantGetPtrIndexedSetter = ::std::option::Option<
    unsafe extern "C" fn(p_type: GDExtensionVariantType) -> GDExtensionPtrIndexedSetter,
>;
#[doc = " @name variant_get_ptr_indexed_getter\n @since 4.1\n\n Gets a pointer to a function that can get an index on the given Variant type.\n\n @param p_type The Variant type.\n\n @return A pointer to a function that can get an index on the given Variant type."]
pub type GDExtensionInterfaceVariantGetPtrIndexedGetter = ::std::option::Option<
    unsafe extern "C" fn(p_type: GDExtensionVariantType) -> GDExtensionPtrIndexedGetter,
>;
#[doc = " @name variant_get_ptr_keyed_setter\n @since 4.1\n\n Gets a pointer to a function that can set a key on the given Variant type.\n\n @param p_type The Variant type.\n\n @return A pointer to a function that can set a key on the given Variant type."]
pub type GDExtensionInterfaceVariantGetPtrKeyedSetter = ::std::option::Option<
    unsafe extern "C" fn(p_type: GDExtensionVariantType) -> GDExtensionPtrKeyedSetter,
>;
#[doc = " @name variant_get_ptr_keyed_getter\n @since 4.1\n\n Gets a pointer to a function that can get a key on the given Variant type.\n\n @param p_type The Variant type.\n\n @return A pointer to a function that can get a key on the given Variant type."]
pub type GDExtensionInterfaceVariantGetPtrKeyedGetter = ::std::option::Option<
    unsafe extern "C" fn(p_type: GDExtensionVariantType) -> GDExtensionPtrKeyedGetter,
>;
#[doc = " @name variant_get_ptr_keyed_checker\n @since 4.1\n\n Gets a pointer to a function that can check a key on the given Variant type.\n\n @param p_type The Variant type.\n\n @return A pointer to a function that can check a key on the given Variant type."]
pub type GDExtensionInterfaceVariantGetPtrKeyedChecker = ::std::option::Option<
    unsafe extern "C" fn(p_type: GDExtensionVariantType) -> GDExtensionPtrKeyedChecker,
>;
#[doc = " @name variant_get_constant_value\n @since 4.1\n\n Gets the value of a constant from the given Variant type.\n\n @param p_type The Variant type.\n @param p_constant A pointer to a StringName with the constant name.\n @param r_ret A pointer to a Variant to store the value."]
pub type GDExtensionInterfaceVariantGetConstantValue = ::std::option::Option<
    unsafe extern "C" fn(
        p_type: GDExtensionVariantType,
        p_constant: GDExtensionConstStringNamePtr,
        r_ret: GDExtensionUninitializedVariantPtr,
    ),
>;
#[doc = " @name variant_get_ptr_utility_function\n @since 4.1\n\n Gets a pointer to a function that can call a Variant utility function.\n\n @param p_function A pointer to a StringName with the function name.\n @param p_hash A hash representing the function signature.\n\n @return A pointer to a function that can call a Variant utility function."]
pub type GDExtensionInterfaceVariantGetPtrUtilityFunction = ::std::option::Option<
    unsafe extern "C" fn(
        p_function: GDExtensionConstStringNamePtr,
        p_hash: GDExtensionInt,
    ) -> GDExtensionPtrUtilityFunction,
>;
#[doc = " @name string_new_with_latin1_chars\n @since 4.1\n\n Creates a String from a Latin-1 encoded C string.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a Latin-1 encoded C string (null terminated)."]
pub type GDExtensionInterfaceStringNewWithLatin1Chars = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringPtr,
        p_contents: *const ::std::os::raw::c_char,
    ),
>;
#[doc = " @name string_new_with_utf8_chars\n @since 4.1\n\n Creates a String from a UTF-8 encoded C string.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a UTF-8 encoded C string (null terminated)."]
pub type GDExtensionInterfaceStringNewWithUtf8Chars = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringPtr,
        p_contents: *const ::std::os::raw::c_char,
    ),
>;
#[doc = " @name string_new_with_utf16_chars\n @since 4.1\n\n Creates a String from a UTF-16 encoded C string.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a UTF-16 encoded C string (null terminated)."]
pub type GDExtensionInterfaceStringNewWithUtf16Chars = ::std::option::Option<
    unsafe extern "C" fn(r_dest: GDExtensionUninitializedStringPtr, p_contents: *const char16_t),
>;
#[doc = " @name string_new_with_utf32_chars\n @since 4.1\n\n Creates a String from a UTF-32 encoded C string.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a UTF-32 encoded C string (null terminated)."]
pub type GDExtensionInterfaceStringNewWithUtf32Chars = ::std::option::Option<
    unsafe extern "C" fn(r_dest: GDExtensionUninitializedStringPtr, p_contents: *const char32_t),
>;
#[doc = " @name string_new_with_wide_chars\n @since 4.1\n\n Creates a String from a wide C string.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a wide C string (null terminated)."]
pub type GDExtensionInterfaceStringNewWithWideChars = ::std::option::Option<
    unsafe extern "C" fn(r_dest: GDExtensionUninitializedStringPtr, p_contents: *const wchar_t),
>;
#[doc = " @name string_new_with_latin1_chars_and_len\n @since 4.1\n\n Creates a String from a Latin-1 encoded C string with the given length.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a Latin-1 encoded C string.\n @param p_size The number of characters (= number of bytes)."]
pub type GDExtensionInterfaceStringNewWithLatin1CharsAndLen = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringPtr,
        p_contents: *const ::std::os::raw::c_char,
        p_size: GDExtensionInt,
    ),
>;
#[doc = " @name string_new_with_utf8_chars_and_len\n @since 4.1\n @deprecated in Godot 4.3. Use `string_new_with_utf8_chars_and_len2` instead.\n\n Creates a String from a UTF-8 encoded C string with the given length.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a UTF-8 encoded C string.\n @param p_size The number of bytes (not code units)."]
pub type GDExtensionInterfaceStringNewWithUtf8CharsAndLen = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringPtr,
        p_contents: *const ::std::os::raw::c_char,
        p_size: GDExtensionInt,
    ),
>;
#[doc = " @name string_new_with_utf8_chars_and_len2\n @since 4.3\n\n Creates a String from a UTF-8 encoded C string with the given length.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a UTF-8 encoded C string.\n @param p_size The number of bytes (not code units).\n\n @return Error code signifying if the operation successful."]
pub type GDExtensionInterfaceStringNewWithUtf8CharsAndLen2 = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringPtr,
        p_contents: *const ::std::os::raw::c_char,
        p_size: GDExtensionInt,
    ) -> GDExtensionInt,
>;
#[doc = " @name string_new_with_utf16_chars_and_len\n @since 4.1\n @deprecated in Godot 4.3. Use `string_new_with_utf16_chars_and_len2` instead.\n\n Creates a String from a UTF-16 encoded C string with the given length.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a UTF-16 encoded C string.\n @param p_size The number of characters (not bytes)."]
pub type GDExtensionInterfaceStringNewWithUtf16CharsAndLen = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringPtr,
        p_contents: *const char16_t,
        p_char_count: GDExtensionInt,
    ),
>;
#[doc = " @name string_new_with_utf16_chars_and_len2\n @since 4.3\n\n Creates a String from a UTF-16 encoded C string with the given length.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a UTF-16 encoded C string.\n @param p_size The number of characters (not bytes).\n @param p_default_little_endian If true, UTF-16 use little endian.\n\n @return Error code signifying if the operation successful."]
pub type GDExtensionInterfaceStringNewWithUtf16CharsAndLen2 = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringPtr,
        p_contents: *const char16_t,
        p_char_count: GDExtensionInt,
        p_default_little_endian: GDExtensionBool,
    ) -> GDExtensionInt,
>;
#[doc = " @name string_new_with_utf32_chars_and_len\n @since 4.1\n\n Creates a String from a UTF-32 encoded C string with the given length.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a UTF-32 encoded C string.\n @param p_size The number of characters (not bytes)."]
pub type GDExtensionInterfaceStringNewWithUtf32CharsAndLen = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringPtr,
        p_contents: *const char32_t,
        p_char_count: GDExtensionInt,
    ),
>;
#[doc = " @name string_new_with_wide_chars_and_len\n @since 4.1\n\n Creates a String from a wide C string with the given length.\n\n @param r_dest A pointer to a Variant to hold the newly created String.\n @param p_contents A pointer to a wide C string.\n @param p_size The number of characters (not bytes)."]
pub type GDExtensionInterfaceStringNewWithWideCharsAndLen = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringPtr,
        p_contents: *const wchar_t,
        p_char_count: GDExtensionInt,
    ),
>;
#[doc = " @name string_to_latin1_chars\n @since 4.1\n\n Converts a String to a Latin-1 encoded C string.\n\n It doesn't write a null terminator.\n\n @param p_self A pointer to the String.\n @param r_text A pointer to the buffer to hold the resulting data. If NULL is passed in, only the length will be computed.\n @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.\n\n @return The resulting encoded string length in characters (not bytes), not including a null terminator."]
pub type GDExtensionInterfaceStringToLatin1Chars = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstStringPtr,
        r_text: *mut ::std::os::raw::c_char,
        p_max_write_length: GDExtensionInt,
    ) -> GDExtensionInt,
>;
#[doc = " @name string_to_utf8_chars\n @since 4.1\n\n Converts a String to a UTF-8 encoded C string.\n\n It doesn't write a null terminator.\n\n @param p_self A pointer to the String.\n @param r_text A pointer to the buffer to hold the resulting data. If NULL is passed in, only the length will be computed.\n @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.\n\n @return The resulting encoded string length in characters (not bytes), not including a null terminator."]
pub type GDExtensionInterfaceStringToUtf8Chars = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstStringPtr,
        r_text: *mut ::std::os::raw::c_char,
        p_max_write_length: GDExtensionInt,
    ) -> GDExtensionInt,
>;
#[doc = " @name string_to_utf16_chars\n @since 4.1\n\n Converts a String to a UTF-16 encoded C string.\n\n It doesn't write a null terminator.\n\n @param p_self A pointer to the String.\n @param r_text A pointer to the buffer to hold the resulting data. If NULL is passed in, only the length will be computed.\n @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.\n\n @return The resulting encoded string length in characters (not bytes), not including a null terminator."]
pub type GDExtensionInterfaceStringToUtf16Chars = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstStringPtr,
        r_text: *mut char16_t,
        p_max_write_length: GDExtensionInt,
    ) -> GDExtensionInt,
>;
#[doc = " @name string_to_utf32_chars\n @since 4.1\n\n Converts a String to a UTF-32 encoded C string.\n\n It doesn't write a null terminator.\n\n @param p_self A pointer to the String.\n @param r_text A pointer to the buffer to hold the resulting data. If NULL is passed in, only the length will be computed.\n @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.\n\n @return The resulting encoded string length in characters (not bytes), not including a null terminator."]
pub type GDExtensionInterfaceStringToUtf32Chars = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstStringPtr,
        r_text: *mut char32_t,
        p_max_write_length: GDExtensionInt,
    ) -> GDExtensionInt,
>;
#[doc = " @name string_to_wide_chars\n @since 4.1\n\n Converts a String to a wide C string.\n\n It doesn't write a null terminator.\n\n @param p_self A pointer to the String.\n @param r_text A pointer to the buffer to hold the resulting data. If NULL is passed in, only the length will be computed.\n @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.\n\n @return The resulting encoded string length in characters (not bytes), not including a null terminator."]
pub type GDExtensionInterfaceStringToWideChars = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstStringPtr,
        r_text: *mut wchar_t,
        p_max_write_length: GDExtensionInt,
    ) -> GDExtensionInt,
>;
#[doc = " @name string_operator_index\n @since 4.1\n\n Gets a pointer to the character at the given index from a String.\n\n @param p_self A pointer to the String.\n @param p_index The index.\n\n @return A pointer to the requested character."]
pub type GDExtensionInterfaceStringOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionStringPtr, p_index: GDExtensionInt) -> *mut char32_t,
>;
#[doc = " @name string_operator_index_const\n @since 4.1\n\n Gets a const pointer to the character at the given index from a String.\n\n @param p_self A pointer to the String.\n @param p_index The index.\n\n @return A const pointer to the requested character."]
pub type GDExtensionInterfaceStringOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstStringPtr,
        p_index: GDExtensionInt,
    ) -> *const char32_t,
>;
#[doc = " @name string_operator_plus_eq_string\n @since 4.1\n\n Appends another String to a String.\n\n @param p_self A pointer to the String.\n @param p_b A pointer to the other String to append."]
pub type GDExtensionInterfaceStringOperatorPlusEqString = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionStringPtr, p_b: GDExtensionConstStringPtr),
>;
#[doc = " @name string_operator_plus_eq_char\n @since 4.1\n\n Appends a character to a String.\n\n @param p_self A pointer to the String.\n @param p_b A pointer to the character to append."]
pub type GDExtensionInterfaceStringOperatorPlusEqChar =
    ::std::option::Option<unsafe extern "C" fn(p_self: GDExtensionStringPtr, p_b: char32_t)>;
#[doc = " @name string_operator_plus_eq_cstr\n @since 4.1\n\n Appends a Latin-1 encoded C string to a String.\n\n @param p_self A pointer to the String.\n @param p_b A pointer to a Latin-1 encoded C string (null terminated)."]
pub type GDExtensionInterfaceStringOperatorPlusEqCstr = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionStringPtr, p_b: *const ::std::os::raw::c_char),
>;
#[doc = " @name string_operator_plus_eq_wcstr\n @since 4.1\n\n Appends a wide C string to a String.\n\n @param p_self A pointer to the String.\n @param p_b A pointer to a wide C string (null terminated)."]
pub type GDExtensionInterfaceStringOperatorPlusEqWcstr =
    ::std::option::Option<unsafe extern "C" fn(p_self: GDExtensionStringPtr, p_b: *const wchar_t)>;
#[doc = " @name string_operator_plus_eq_c32str\n @since 4.1\n\n Appends a UTF-32 encoded C string to a String.\n\n @param p_self A pointer to the String.\n @param p_b A pointer to a UTF-32 encoded C string (null terminated)."]
pub type GDExtensionInterfaceStringOperatorPlusEqC32str =
    ::std::option::Option<unsafe extern "C" fn(p_self: GDExtensionStringPtr, p_b: *const char32_t)>;
#[doc = " @name string_resize\n @since 4.2\n\n Resizes the underlying string data to the given number of characters.\n\n Space needs to be allocated for the null terminating character ('\\0') which\n also must be added manually, in order for all string functions to work correctly.\n\n Warning: This is an error-prone operation - only use it if there's no other\n efficient way to accomplish your goal.\n\n @param p_self A pointer to the String.\n @param p_resize The new length for the String.\n\n @return Error code signifying if the operation successful."]
pub type GDExtensionInterfaceStringResize = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionStringPtr, p_resize: GDExtensionInt) -> GDExtensionInt,
>;
#[doc = " @name string_name_new_with_latin1_chars\n @since 4.2\n\n Creates a StringName from a Latin-1 encoded C string.\n\n If `p_is_static` is true, then:\n - The StringName will reuse the `p_contents` buffer instead of copying it.\n   You must guarantee that the buffer remains valid for the duration of the application (e.g. string literal).\n - You must not call a destructor for this StringName. Incrementing the initial reference once should achieve this.\n\n `p_is_static` is purely an optimization and can easily introduce undefined behavior if used wrong. In case of doubt, set it to false.\n\n @param r_dest A pointer to uninitialized storage, into which the newly created StringName is constructed.\n @param p_contents A pointer to a C string (null terminated and Latin-1 or ASCII encoded).\n @param p_is_static Whether the StringName reuses the buffer directly (see above)."]
pub type GDExtensionInterfaceStringNameNewWithLatin1Chars = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringNamePtr,
        p_contents: *const ::std::os::raw::c_char,
        p_is_static: GDExtensionBool,
    ),
>;
#[doc = " @name string_name_new_with_utf8_chars\n @since 4.2\n\n Creates a StringName from a UTF-8 encoded C string.\n\n @param r_dest A pointer to uninitialized storage, into which the newly created StringName is constructed.\n @param p_contents A pointer to a C string (null terminated and UTF-8 encoded)."]
pub type GDExtensionInterfaceStringNameNewWithUtf8Chars = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringNamePtr,
        p_contents: *const ::std::os::raw::c_char,
    ),
>;
#[doc = " @name string_name_new_with_utf8_chars_and_len\n @since 4.2\n\n Creates a StringName from a UTF-8 encoded string with a given number of characters.\n\n @param r_dest A pointer to uninitialized storage, into which the newly created StringName is constructed.\n @param p_contents A pointer to a C string (null terminated and UTF-8 encoded).\n @param p_size The number of bytes (not UTF-8 code points)."]
pub type GDExtensionInterfaceStringNameNewWithUtf8CharsAndLen = ::std::option::Option<
    unsafe extern "C" fn(
        r_dest: GDExtensionUninitializedStringNamePtr,
        p_contents: *const ::std::os::raw::c_char,
        p_size: GDExtensionInt,
    ),
>;
#[doc = " @name xml_parser_open_buffer\n @since 4.1\n\n Opens a raw XML buffer on an XMLParser instance.\n\n @param p_instance A pointer to an XMLParser object.\n @param p_buffer A pointer to the buffer.\n @param p_size The size of the buffer.\n\n @return A Godot error code (ex. OK, ERR_INVALID_DATA, etc).\n\n @see XMLParser::open_buffer()"]
pub type GDExtensionInterfaceXmlParserOpenBuffer = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionObjectPtr,
        p_buffer: *const u8,
        p_size: usize,
    ) -> GDExtensionInt,
>;
#[doc = " @name file_access_store_buffer\n @since 4.1\n\n Stores the given buffer using an instance of FileAccess.\n\n @param p_instance A pointer to a FileAccess object.\n @param p_src A pointer to the buffer.\n @param p_length The size of the buffer.\n\n @see FileAccess::store_buffer()"]
pub type GDExtensionInterfaceFileAccessStoreBuffer = ::std::option::Option<
    unsafe extern "C" fn(p_instance: GDExtensionObjectPtr, p_src: *const u8, p_length: u64),
>;
#[doc = " @name file_access_get_buffer\n @since 4.1\n\n Reads the next p_length bytes into the given buffer using an instance of FileAccess.\n\n @param p_instance A pointer to a FileAccess object.\n @param p_dst A pointer to the buffer to store the data.\n @param p_length The requested number of bytes to read.\n\n @return The actual number of bytes read (may be less than requested)."]
pub type GDExtensionInterfaceFileAccessGetBuffer = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionConstObjectPtr,
        p_dst: *mut u8,
        p_length: u64,
    ) -> u64,
>;
#[doc = " @name image_ptrw\n @since 4.3\n\n Returns writable pointer to internal Image buffer.\n\n @param p_instance A pointer to a Image object.\n\n @return Pointer to internal Image buffer.\n\n @see Image::ptrw()"]
pub type GDExtensionInterfaceImagePtrw =
    ::std::option::Option<unsafe extern "C" fn(p_instance: GDExtensionObjectPtr) -> *mut u8>;
#[doc = " @name image_ptr\n @since 4.3\n\n Returns read only pointer to internal Image buffer.\n\n @param p_instance A pointer to a Image object.\n\n @return Pointer to internal Image buffer.\n\n @see Image::ptr()"]
pub type GDExtensionInterfaceImagePtr =
    ::std::option::Option<unsafe extern "C" fn(p_instance: GDExtensionObjectPtr) -> *const u8>;
#[doc = " @name worker_thread_pool_add_native_group_task\n @since 4.1\n\n Adds a group task to an instance of WorkerThreadPool.\n\n @param p_instance A pointer to a WorkerThreadPool object.\n @param p_func A pointer to a function to run in the thread pool.\n @param p_userdata A pointer to arbitrary data which will be passed to p_func.\n @param p_tasks The number of tasks needed in the group.\n @param p_high_priority Whether or not this is a high priority task.\n @param p_description A pointer to a String with the task description.\n\n @return The task group ID.\n\n @see WorkerThreadPool::add_group_task()"]
pub type GDExtensionInterfaceWorkerThreadPoolAddNativeGroupTask = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionObjectPtr,
        p_func: ::std::option::Option<
            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: u32),
        >,
        p_userdata: *mut ::std::os::raw::c_void,
        p_elements: ::std::os::raw::c_int,
        p_tasks: ::std::os::raw::c_int,
        p_high_priority: GDExtensionBool,
        p_description: GDExtensionConstStringPtr,
    ) -> i64,
>;
#[doc = " @name worker_thread_pool_add_native_task\n @since 4.1\n\n Adds a task to an instance of WorkerThreadPool.\n\n @param p_instance A pointer to a WorkerThreadPool object.\n @param p_func A pointer to a function to run in the thread pool.\n @param p_userdata A pointer to arbitrary data which will be passed to p_func.\n @param p_high_priority Whether or not this is a high priority task.\n @param p_description A pointer to a String with the task description.\n\n @return The task ID."]
pub type GDExtensionInterfaceWorkerThreadPoolAddNativeTask = ::std::option::Option<
    unsafe extern "C" fn(
        p_instance: GDExtensionObjectPtr,
        p_func: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
        p_userdata: *mut ::std::os::raw::c_void,
        p_high_priority: GDExtensionBool,
        p_description: GDExtensionConstStringPtr,
    ) -> i64,
>;
#[doc = " @name packed_byte_array_operator_index\n @since 4.1\n\n Gets a pointer to a byte in a PackedByteArray.\n\n @param p_self A pointer to a PackedByteArray object.\n @param p_index The index of the byte to get.\n\n @return A pointer to the requested byte."]
pub type GDExtensionInterfacePackedByteArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionTypePtr, p_index: GDExtensionInt) -> *mut u8,
>;
#[doc = " @name packed_byte_array_operator_index_const\n @since 4.1\n\n Gets a const pointer to a byte in a PackedByteArray.\n\n @param p_self A const pointer to a PackedByteArray object.\n @param p_index The index of the byte to get.\n\n @return A const pointer to the requested byte."]
pub type GDExtensionInterfacePackedByteArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionConstTypePtr, p_index: GDExtensionInt) -> *const u8,
>;
#[doc = " @name packed_float32_array_operator_index\n @since 4.1\n\n Gets a pointer to a 32-bit float in a PackedFloat32Array.\n\n @param p_self A pointer to a PackedFloat32Array object.\n @param p_index The index of the float to get.\n\n @return A pointer to the requested 32-bit float."]
pub type GDExtensionInterfacePackedFloat32ArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionTypePtr, p_index: GDExtensionInt) -> *mut f32,
>;
#[doc = " @name packed_float32_array_operator_index_const\n @since 4.1\n\n Gets a const pointer to a 32-bit float in a PackedFloat32Array.\n\n @param p_self A const pointer to a PackedFloat32Array object.\n @param p_index The index of the float to get.\n\n @return A const pointer to the requested 32-bit float."]
pub type GDExtensionInterfacePackedFloat32ArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionConstTypePtr, p_index: GDExtensionInt) -> *const f32,
>;
#[doc = " @name packed_float64_array_operator_index\n @since 4.1\n\n Gets a pointer to a 64-bit float in a PackedFloat64Array.\n\n @param p_self A pointer to a PackedFloat64Array object.\n @param p_index The index of the float to get.\n\n @return A pointer to the requested 64-bit float."]
pub type GDExtensionInterfacePackedFloat64ArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionTypePtr, p_index: GDExtensionInt) -> *mut f64,
>;
#[doc = " @name packed_float64_array_operator_index_const\n @since 4.1\n\n Gets a const pointer to a 64-bit float in a PackedFloat64Array.\n\n @param p_self A const pointer to a PackedFloat64Array object.\n @param p_index The index of the float to get.\n\n @return A const pointer to the requested 64-bit float."]
pub type GDExtensionInterfacePackedFloat64ArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionConstTypePtr, p_index: GDExtensionInt) -> *const f64,
>;
#[doc = " @name packed_int32_array_operator_index\n @since 4.1\n\n Gets a pointer to a 32-bit integer in a PackedInt32Array.\n\n @param p_self A pointer to a PackedInt32Array object.\n @param p_index The index of the integer to get.\n\n @return A pointer to the requested 32-bit integer."]
pub type GDExtensionInterfacePackedInt32ArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionTypePtr, p_index: GDExtensionInt) -> *mut i32,
>;
#[doc = " @name packed_int32_array_operator_index_const\n @since 4.1\n\n Gets a const pointer to a 32-bit integer in a PackedInt32Array.\n\n @param p_self A const pointer to a PackedInt32Array object.\n @param p_index The index of the integer to get.\n\n @return A const pointer to the requested 32-bit integer."]
pub type GDExtensionInterfacePackedInt32ArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionConstTypePtr, p_index: GDExtensionInt) -> *const i32,
>;
#[doc = " @name packed_int64_array_operator_index\n @since 4.1\n\n Gets a pointer to a 64-bit integer in a PackedInt64Array.\n\n @param p_self A pointer to a PackedInt64Array object.\n @param p_index The index of the integer to get.\n\n @return A pointer to the requested 64-bit integer."]
pub type GDExtensionInterfacePackedInt64ArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionTypePtr, p_index: GDExtensionInt) -> *mut i64,
>;
#[doc = " @name packed_int64_array_operator_index_const\n @since 4.1\n\n Gets a const pointer to a 64-bit integer in a PackedInt64Array.\n\n @param p_self A const pointer to a PackedInt64Array object.\n @param p_index The index of the integer to get.\n\n @return A const pointer to the requested 64-bit integer."]
pub type GDExtensionInterfacePackedInt64ArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionConstTypePtr, p_index: GDExtensionInt) -> *const i64,
>;
#[doc = " @name packed_string_array_operator_index\n @since 4.1\n\n Gets a pointer to a string in a PackedStringArray.\n\n @param p_self A pointer to a PackedStringArray object.\n @param p_index The index of the String to get.\n\n @return A pointer to the requested String."]
pub type GDExtensionInterfacePackedStringArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionTypePtr,
        p_index: GDExtensionInt,
    ) -> GDExtensionStringPtr,
>;
#[doc = " @name packed_string_array_operator_index_const\n @since 4.1\n\n Gets a const pointer to a string in a PackedStringArray.\n\n @param p_self A const pointer to a PackedStringArray object.\n @param p_index The index of the String to get.\n\n @return A const pointer to the requested String."]
pub type GDExtensionInterfacePackedStringArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstTypePtr,
        p_index: GDExtensionInt,
    ) -> GDExtensionStringPtr,
>;
#[doc = " @name packed_vector2_array_operator_index\n @since 4.1\n\n Gets a pointer to a Vector2 in a PackedVector2Array.\n\n @param p_self A pointer to a PackedVector2Array object.\n @param p_index The index of the Vector2 to get.\n\n @return A pointer to the requested Vector2."]
pub type GDExtensionInterfacePackedVector2ArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionTypePtr, p_index: GDExtensionInt) -> GDExtensionTypePtr,
>;
#[doc = " @name packed_vector2_array_operator_index_const\n @since 4.1\n\n Gets a const pointer to a Vector2 in a PackedVector2Array.\n\n @param p_self A const pointer to a PackedVector2Array object.\n @param p_index The index of the Vector2 to get.\n\n @return A const pointer to the requested Vector2."]
pub type GDExtensionInterfacePackedVector2ArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstTypePtr,
        p_index: GDExtensionInt,
    ) -> GDExtensionTypePtr,
>;
#[doc = " @name packed_vector3_array_operator_index\n @since 4.1\n\n Gets a pointer to a Vector3 in a PackedVector3Array.\n\n @param p_self A pointer to a PackedVector3Array object.\n @param p_index The index of the Vector3 to get.\n\n @return A pointer to the requested Vector3."]
pub type GDExtensionInterfacePackedVector3ArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionTypePtr, p_index: GDExtensionInt) -> GDExtensionTypePtr,
>;
#[doc = " @name packed_vector3_array_operator_index_const\n @since 4.1\n\n Gets a const pointer to a Vector3 in a PackedVector3Array.\n\n @param p_self A const pointer to a PackedVector3Array object.\n @param p_index The index of the Vector3 to get.\n\n @return A const pointer to the requested Vector3."]
pub type GDExtensionInterfacePackedVector3ArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstTypePtr,
        p_index: GDExtensionInt,
    ) -> GDExtensionTypePtr,
>;
#[doc = " @name packed_vector4_array_operator_index\n @since 4.3\n\n Gets a pointer to a Vector4 in a PackedVector4Array.\n\n @param p_self A pointer to a PackedVector4Array object.\n @param p_index The index of the Vector4 to get.\n\n @return A pointer to the requested Vector4."]
pub type GDExtensionInterfacePackedVector4ArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionTypePtr, p_index: GDExtensionInt) -> GDExtensionTypePtr,
>;
#[doc = " @name packed_vector4_array_operator_index_const\n @since 4.3\n\n Gets a const pointer to a Vector4 in a PackedVector4Array.\n\n @param p_self A const pointer to a PackedVector4Array object.\n @param p_index The index of the Vector4 to get.\n\n @return A const pointer to the requested Vector4."]
pub type GDExtensionInterfacePackedVector4ArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstTypePtr,
        p_index: GDExtensionInt,
    ) -> GDExtensionTypePtr,
>;
#[doc = " @name packed_color_array_operator_index\n @since 4.1\n\n Gets a pointer to a color in a PackedColorArray.\n\n @param p_self A pointer to a PackedColorArray object.\n @param p_index The index of the Color to get.\n\n @return A pointer to the requested Color."]
pub type GDExtensionInterfacePackedColorArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionTypePtr, p_index: GDExtensionInt) -> GDExtensionTypePtr,
>;
#[doc = " @name packed_color_array_operator_index_const\n @since 4.1\n\n Gets a const pointer to a color in a PackedColorArray.\n\n @param p_self A const pointer to a PackedColorArray object.\n @param p_index The index of the Color to get.\n\n @return A const pointer to the requested Color."]
pub type GDExtensionInterfacePackedColorArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstTypePtr,
        p_index: GDExtensionInt,
    ) -> GDExtensionTypePtr,
>;
#[doc = " @name array_operator_index\n @since 4.1\n\n Gets a pointer to a Variant in an Array.\n\n @param p_self A pointer to an Array object.\n @param p_index The index of the Variant to get.\n\n @return A pointer to the requested Variant."]
pub type GDExtensionInterfaceArrayOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionTypePtr,
        p_index: GDExtensionInt,
    ) -> GDExtensionVariantPtr,
>;
#[doc = " @name array_operator_index_const\n @since 4.1\n\n Gets a const pointer to a Variant in an Array.\n\n @param p_self A const pointer to an Array object.\n @param p_index The index of the Variant to get.\n\n @return A const pointer to the requested Variant."]
pub type GDExtensionInterfaceArrayOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstTypePtr,
        p_index: GDExtensionInt,
    ) -> GDExtensionVariantPtr,
>;
#[doc = " @name array_ref\n @since 4.1\n\n Sets an Array to be a reference to another Array object.\n\n @param p_self A pointer to the Array object to update.\n @param p_from A pointer to the Array object to reference."]
pub type GDExtensionInterfaceArrayRef = ::std::option::Option<
    unsafe extern "C" fn(p_self: GDExtensionTypePtr, p_from: GDExtensionConstTypePtr),
>;
#[doc = " @name array_set_typed\n @since 4.1\n\n Makes an Array into a typed Array.\n\n @param p_self A pointer to the Array.\n @param p_type The type of Variant the Array will store.\n @param p_class_name A pointer to a StringName with the name of the object (if p_type is GDEXTENSION_VARIANT_TYPE_OBJECT).\n @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)."]
pub type GDExtensionInterfaceArraySetTyped = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionTypePtr,
        p_type: GDExtensionVariantType,
        p_class_name: GDExtensionConstStringNamePtr,
        p_script: GDExtensionConstVariantPtr,
    ),
>;
#[doc = " @name dictionary_operator_index\n @since 4.1\n\n Gets a pointer to a Variant in a Dictionary with the given key.\n\n @param p_self A pointer to a Dictionary object.\n @param p_key A pointer to a Variant representing the key.\n\n @return A pointer to a Variant representing the value at the given key."]
pub type GDExtensionInterfaceDictionaryOperatorIndex = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionTypePtr,
        p_key: GDExtensionConstVariantPtr,
    ) -> GDExtensionVariantPtr,
>;
#[doc = " @name dictionary_operator_index_const\n @since 4.1\n\n Gets a const pointer to a Variant in a Dictionary with the given key.\n\n @param p_self A const pointer to a Dictionary object.\n @param p_key A pointer to a Variant representing the key.\n\n @return A const pointer to a Variant representing the value at the given key."]
pub type GDExtensionInterfaceDictionaryOperatorIndexConst = ::std::option::Option<
    unsafe extern "C" fn(
        p_self: GDExtensionConstTypePtr,
        p_key: GDExtensionConstVariantPtr,
    ) -> GDExtensionVariantPtr,
>;
#[doc = " @name object_method_bind_call\n @since 4.1\n\n Calls a method on an Object.\n\n @param p_method_bind A pointer to the MethodBind representing the method on the Object's class.\n @param p_instance A pointer to the Object.\n @param p_args A pointer to a C array of Variants representing the arguments.\n @param p_arg_count The number of arguments.\n @param r_ret A pointer to Variant which will receive the return value.\n @param r_error A pointer to a GDExtensionCallError struct that will receive error information."]
pub type GDExtensionInterfaceObjectMethodBindCall = ::std::option::Option<
    unsafe extern "C" fn(
        p_method_bind: GDExtensionMethodBindPtr,
        p_instance: GDExtensionObjectPtr,
        p_args: *const GDExtensionConstVariantPtr,
        p_arg_count: GDExtensionInt,
        r_ret: GDExtensionUninitializedVariantPtr,
        r_error: *mut GDExtensionCallError,
    ),
>;
#[doc = " @name object_method_bind_ptrcall\n @since 4.1\n\n Calls a method on an Object (using a \"ptrcall\").\n\n @param p_method_bind A pointer to the MethodBind representing the method on the Object's class.\n @param p_instance A pointer to the Object.\n @param p_args A pointer to a C array representing the arguments.\n @param r_ret A pointer to the Object that will receive the return value."]
pub type GDExtensionInterfaceObjectMethodBindPtrcall = ::std::option::Option<
    unsafe extern "C" fn(
        p_method_bind: GDExtensionMethodBindPtr,
        p_instance: GDExtensionObjectPtr,
        p_args: *const GDExtensionConstTypePtr,
        r_ret: GDExtensionTypePtr,
    ),
>;
#[doc = " @name object_destroy\n @since 4.1\n\n Destroys an Object.\n\n @param p_o A pointer to the Object."]
pub type GDExtensionInterfaceObjectDestroy =
    ::std::option::Option<unsafe extern "C" fn(p_o: GDExtensionObjectPtr)>;
#[doc = " @name global_get_singleton\n @since 4.1\n\n Gets a global singleton by name.\n\n @param p_name A pointer to a StringName with the singleton name.\n\n @return A pointer to the singleton Object."]
pub type GDExtensionInterfaceGlobalGetSingleton = ::std::option::Option<
    unsafe extern "C" fn(p_name: GDExtensionConstStringNamePtr) -> GDExtensionObjectPtr,
>;
#[doc = " @name object_get_instance_binding\n @since 4.1\n\n Gets a pointer representing an Object's instance binding.\n\n @param p_o A pointer to the Object.\n @param p_library A token the library received by the GDExtension's entry point function.\n @param p_callbacks A pointer to a GDExtensionInstanceBindingCallbacks struct.\n\n @return"]
pub type GDExtensionInterfaceObjectGetInstanceBinding = ::std::option::Option<
    unsafe extern "C" fn(
        p_o: GDExtensionObjectPtr,
        p_token: *mut ::std::os::raw::c_void,
        p_callbacks: *const GDExtensionInstanceBindingCallbacks,
    ) -> *mut ::std::os::raw::c_void,
>;
#[doc = " @name object_set_instance_binding\n @since 4.1\n\n Sets an Object's instance binding.\n\n @param p_o A pointer to the Object.\n @param p_library A token the library received by the GDExtension's entry point function.\n @param p_binding A pointer to the instance binding.\n @param p_callbacks A pointer to a GDExtensionInstanceBindingCallbacks struct."]
pub type GDExtensionInterfaceObjectSetInstanceBinding = ::std::option::Option<
    unsafe extern "C" fn(
        p_o: GDExtensionObjectPtr,
        p_token: *mut ::std::os::raw::c_void,
        p_binding: *mut ::std::os::raw::c_void,
        p_callbacks: *const GDExtensionInstanceBindingCallbacks,
    ),
>;
#[doc = " @name object_free_instance_binding\n @since 4.2\n\n Free an Object's instance binding.\n\n @param p_o A pointer to the Object.\n @param p_library A token the library received by the GDExtension's entry point function."]
pub type GDExtensionInterfaceObjectFreeInstanceBinding = ::std::option::Option<
    unsafe extern "C" fn(p_o: GDExtensionObjectPtr, p_token: *mut ::std::os::raw::c_void),
>;
#[doc = " @name object_set_instance\n @since 4.1\n\n Sets an extension class instance on a Object.\n\n @param p_o A pointer to the Object.\n @param p_classname A pointer to a StringName with the registered extension class's name.\n @param p_instance A pointer to the extension class instance."]
pub type GDExtensionInterfaceObjectSetInstance = ::std::option::Option<
    unsafe extern "C" fn(
        p_o: GDExtensionObjectPtr,
        p_classname: GDExtensionConstStringNamePtr,
        p_instance: GDExtensionClassInstancePtr,
    ),
>;
#[doc = " @name object_get_class_name\n @since 4.1\n\n Gets the class name of an Object.\n\n If the GDExtension wraps the Godot object in an abstraction specific to its class, this is the\n function that should be used to determine which wrapper to use.\n\n @param p_object A pointer to the Object.\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param r_class_name A pointer to a String to receive the class name.\n\n @return true if successful in getting the class name; otherwise false."]
pub type GDExtensionInterfaceObjectGetClassName = ::std::option::Option<
    unsafe extern "C" fn(
        p_object: GDExtensionConstObjectPtr,
        p_library: GDExtensionClassLibraryPtr,
        r_class_name: GDExtensionUninitializedStringNamePtr,
    ) -> GDExtensionBool,
>;
#[doc = " @name object_cast_to\n @since 4.1\n\n Casts an Object to a different type.\n\n @param p_object A pointer to the Object.\n @param p_class_tag A pointer uniquely identifying a built-in class in the ClassDB.\n\n @return Returns a pointer to the Object, or NULL if it can't be cast to the requested type."]
pub type GDExtensionInterfaceObjectCastTo = ::std::option::Option<
    unsafe extern "C" fn(
        p_object: GDExtensionConstObjectPtr,
        p_class_tag: *mut ::std::os::raw::c_void,
    ) -> GDExtensionObjectPtr,
>;
#[doc = " @name object_get_instance_from_id\n @since 4.1\n\n Gets an Object by its instance ID.\n\n @param p_instance_id The instance ID.\n\n @return A pointer to the Object."]
pub type GDExtensionInterfaceObjectGetInstanceFromId = ::std::option::Option<
    unsafe extern "C" fn(p_instance_id: GDObjectInstanceID) -> GDExtensionObjectPtr,
>;
#[doc = " @name object_get_instance_id\n @since 4.1\n\n Gets the instance ID from an Object.\n\n @param p_object A pointer to the Object.\n\n @return The instance ID."]
pub type GDExtensionInterfaceObjectGetInstanceId = ::std::option::Option<
    unsafe extern "C" fn(p_object: GDExtensionConstObjectPtr) -> GDObjectInstanceID,
>;
#[doc = " @name object_has_script_method\n @since 4.3\n\n Checks if this object has a script with the given method.\n\n @param p_object A pointer to the Object.\n @param p_method A pointer to a StringName identifying the method.\n\n @returns true if the object has a script and that script has a method with the given name. Returns false if the object has no script."]
pub type GDExtensionInterfaceObjectHasScriptMethod = ::std::option::Option<
    unsafe extern "C" fn(
        p_object: GDExtensionConstObjectPtr,
        p_method: GDExtensionConstStringNamePtr,
    ) -> GDExtensionBool,
>;
#[doc = " @name object_call_script_method\n @since 4.3\n\n Call the given script method on this object.\n\n @param p_object A pointer to the Object.\n @param p_method A pointer to a StringName identifying the method.\n @param p_args A pointer to a C array of Variant.\n @param p_argument_count The number of arguments.\n @param r_return A pointer a Variant which will be assigned the return value.\n @param r_error A pointer the structure which will hold error information."]
pub type GDExtensionInterfaceObjectCallScriptMethod = ::std::option::Option<
    unsafe extern "C" fn(
        p_object: GDExtensionObjectPtr,
        p_method: GDExtensionConstStringNamePtr,
        p_args: *const GDExtensionConstVariantPtr,
        p_argument_count: GDExtensionInt,
        r_return: GDExtensionUninitializedVariantPtr,
        r_error: *mut GDExtensionCallError,
    ),
>;
#[doc = " @name ref_get_object\n @since 4.1\n\n Gets the Object from a reference.\n\n @param p_ref A pointer to the reference.\n\n @return A pointer to the Object from the reference or NULL."]
pub type GDExtensionInterfaceRefGetObject = ::std::option::Option<
    unsafe extern "C" fn(p_ref: GDExtensionConstRefPtr) -> GDExtensionObjectPtr,
>;
#[doc = " @name ref_set_object\n @since 4.1\n\n Sets the Object referred to by a reference.\n\n @param p_ref A pointer to the reference.\n @param p_object A pointer to the Object to refer to."]
pub type GDExtensionInterfaceRefSetObject = ::std::option::Option<
    unsafe extern "C" fn(p_ref: GDExtensionRefPtr, p_object: GDExtensionObjectPtr),
>;
#[doc = " @name script_instance_create\n @since 4.1\n @deprecated in Godot 4.2. Use `script_instance_create3` instead.\n\n Creates a script instance that contains the given info and instance data.\n\n @param p_info A pointer to a GDExtensionScriptInstanceInfo struct.\n @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.\n\n @return A pointer to a ScriptInstanceExtension object."]
pub type GDExtensionInterfaceScriptInstanceCreate = ::std::option::Option<
    unsafe extern "C" fn(
        p_info: *const GDExtensionScriptInstanceInfo,
        p_instance_data: GDExtensionScriptInstanceDataPtr,
    ) -> GDExtensionScriptInstancePtr,
>;
#[doc = " @name script_instance_create2\n @since 4.2\n @deprecated in Godot 4.3. Use `script_instance_create3` instead.\n\n Creates a script instance that contains the given info and instance data.\n\n @param p_info A pointer to a GDExtensionScriptInstanceInfo2 struct.\n @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.\n\n @return A pointer to a ScriptInstanceExtension object."]
pub type GDExtensionInterfaceScriptInstanceCreate2 = ::std::option::Option<
    unsafe extern "C" fn(
        p_info: *const GDExtensionScriptInstanceInfo2,
        p_instance_data: GDExtensionScriptInstanceDataPtr,
    ) -> GDExtensionScriptInstancePtr,
>;
#[doc = " @name script_instance_create3\n @since 4.3\n\n Creates a script instance that contains the given info and instance data.\n\n @param p_info A pointer to a GDExtensionScriptInstanceInfo3 struct.\n @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.\n\n @return A pointer to a ScriptInstanceExtension object."]
pub type GDExtensionInterfaceScriptInstanceCreate3 = ::std::option::Option<
    unsafe extern "C" fn(
        p_info: *const GDExtensionScriptInstanceInfo3,
        p_instance_data: GDExtensionScriptInstanceDataPtr,
    ) -> GDExtensionScriptInstancePtr,
>;
#[doc = " @name placeholder_script_instance_create\n @since 4.2\n\n Creates a placeholder script instance for a given script and instance.\n\n This interface is optional as a custom placeholder could also be created with script_instance_create().\n\n @param p_language A pointer to a ScriptLanguage.\n @param p_script A pointer to a Script.\n @param p_owner A pointer to an Object.\n\n @return A pointer to a PlaceHolderScriptInstance object."]
pub type GDExtensionInterfacePlaceHolderScriptInstanceCreate = ::std::option::Option<
    unsafe extern "C" fn(
        p_language: GDExtensionObjectPtr,
        p_script: GDExtensionObjectPtr,
        p_owner: GDExtensionObjectPtr,
    ) -> GDExtensionScriptInstancePtr,
>;
#[doc = " @name placeholder_script_instance_update\n @since 4.2\n\n Updates a placeholder script instance with the given properties and values.\n\n The passed in placeholder must be an instance of PlaceHolderScriptInstance\n such as the one returned by placeholder_script_instance_create().\n\n @param p_placeholder A pointer to a PlaceHolderScriptInstance.\n @param p_properties A pointer to an Array of Dictionary representing PropertyInfo.\n @param p_values A pointer to a Dictionary mapping StringName to Variant values."]
pub type GDExtensionInterfacePlaceHolderScriptInstanceUpdate = ::std::option::Option<
    unsafe extern "C" fn(
        p_placeholder: GDExtensionScriptInstancePtr,
        p_properties: GDExtensionConstTypePtr,
        p_values: GDExtensionConstTypePtr,
    ),
>;
#[doc = " @name object_get_script_instance\n @since 4.2\n\n Get the script instance data attached to this object.\n\n @param p_object A pointer to the Object.\n @param p_language A pointer to the language expected for this script instance.\n\n @return A GDExtensionScriptInstanceDataPtr that was attached to this object as part of script_instance_create."]
pub type GDExtensionInterfaceObjectGetScriptInstance = ::std::option::Option<
    unsafe extern "C" fn(
        p_object: GDExtensionConstObjectPtr,
        p_language: GDExtensionObjectPtr,
    ) -> GDExtensionScriptInstanceDataPtr,
>;
#[doc = " @name callable_custom_create\n @since 4.2\n @deprecated in Godot 4.3. Use `callable_custom_create2` instead.\n\n Creates a custom Callable object from a function pointer.\n\n Provided struct can be safely freed once the function returns.\n\n @param r_callable A pointer that will receive the new Callable.\n @param p_callable_custom_info The info required to construct a Callable."]
pub type GDExtensionInterfaceCallableCustomCreate = ::std::option::Option<
    unsafe extern "C" fn(
        r_callable: GDExtensionUninitializedTypePtr,
        p_callable_custom_info: *mut GDExtensionCallableCustomInfo,
    ),
>;
#[doc = " @name callable_custom_create2\n @since 4.3\n\n Creates a custom Callable object from a function pointer.\n\n Provided struct can be safely freed once the function returns.\n\n @param r_callable A pointer that will receive the new Callable.\n @param p_callable_custom_info The info required to construct a Callable."]
pub type GDExtensionInterfaceCallableCustomCreate2 = ::std::option::Option<
    unsafe extern "C" fn(
        r_callable: GDExtensionUninitializedTypePtr,
        p_callable_custom_info: *mut GDExtensionCallableCustomInfo2,
    ),
>;
#[doc = " @name callable_custom_get_userdata\n @since 4.2\n\n Retrieves the userdata pointer from a custom Callable.\n\n If the Callable is not a custom Callable or the token does not match the one provided to callable_custom_create() via GDExtensionCallableCustomInfo then NULL will be returned.\n\n @param p_callable A pointer to a Callable.\n @param p_token A pointer to an address that uniquely identifies the GDExtension."]
pub type GDExtensionInterfaceCallableCustomGetUserData = ::std::option::Option<
    unsafe extern "C" fn(
        p_callable: GDExtensionConstTypePtr,
        p_token: *mut ::std::os::raw::c_void,
    ) -> *mut ::std::os::raw::c_void,
>;
#[doc = " @name classdb_construct_object\n @since 4.1\n\n Constructs an Object of the requested class.\n\n 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.\n\n @param p_classname A pointer to a StringName with the class name.\n\n @return A pointer to the newly created Object."]
pub type GDExtensionInterfaceClassdbConstructObject = ::std::option::Option<
    unsafe extern "C" fn(p_classname: GDExtensionConstStringNamePtr) -> GDExtensionObjectPtr,
>;
#[doc = " @name classdb_get_method_bind\n @since 4.1\n\n Gets a pointer to the MethodBind in ClassDB for the given class, method and hash.\n\n @param p_classname A pointer to a StringName with the class name.\n @param p_methodname A pointer to a StringName with the method name.\n @param p_hash A hash representing the function signature.\n\n @return A pointer to the MethodBind from ClassDB."]
pub type GDExtensionInterfaceClassdbGetMethodBind = ::std::option::Option<
    unsafe extern "C" fn(
        p_classname: GDExtensionConstStringNamePtr,
        p_methodname: GDExtensionConstStringNamePtr,
        p_hash: GDExtensionInt,
    ) -> GDExtensionMethodBindPtr,
>;
#[doc = " @name classdb_get_class_tag\n @since 4.1\n\n Gets a pointer uniquely identifying the given built-in class in the ClassDB.\n\n @param p_classname A pointer to a StringName with the class name.\n\n @return A pointer uniquely identifying the built-in class in the ClassDB."]
pub type GDExtensionInterfaceClassdbGetClassTag = ::std::option::Option<
    unsafe extern "C" fn(p_classname: GDExtensionConstStringNamePtr) -> *mut ::std::os::raw::c_void,
>;
#[doc = " @name classdb_register_extension_class\n @since 4.1\n @deprecated in Godot 4.2. Use `classdb_register_extension_class3` instead.\n\n Registers an extension class in the ClassDB.\n\n Provided struct can be safely freed once the function returns.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_parent_class_name A pointer to a StringName with the parent class name.\n @param p_extension_funcs A pointer to a GDExtensionClassCreationInfo struct."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClass = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_parent_class_name: GDExtensionConstStringNamePtr,
        p_extension_funcs: *const GDExtensionClassCreationInfo,
    ),
>;
#[doc = " @name classdb_register_extension_class2\n @since 4.2\n @deprecated in Godot 4.3. Use `classdb_register_extension_class3` instead.\n\n Registers an extension class in the ClassDB.\n\n Provided struct can be safely freed once the function returns.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_parent_class_name A pointer to a StringName with the parent class name.\n @param p_extension_funcs A pointer to a GDExtensionClassCreationInfo2 struct."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClass2 = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_parent_class_name: GDExtensionConstStringNamePtr,
        p_extension_funcs: *const GDExtensionClassCreationInfo2,
    ),
>;
#[doc = " @name classdb_register_extension_class3\n @since 4.3\n\n Registers an extension class in the ClassDB.\n\n Provided struct can be safely freed once the function returns.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_parent_class_name A pointer to a StringName with the parent class name.\n @param p_extension_funcs A pointer to a GDExtensionClassCreationInfo2 struct."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClass3 = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_parent_class_name: GDExtensionConstStringNamePtr,
        p_extension_funcs: *const GDExtensionClassCreationInfo3,
    ),
>;
#[doc = " @name classdb_register_extension_class_method\n @since 4.1\n\n Registers a method on an extension class in the ClassDB.\n\n Provided struct can be safely freed once the function returns.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_method_info A pointer to a GDExtensionClassMethodInfo struct."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClassMethod = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_method_info: *const GDExtensionClassMethodInfo,
    ),
>;
#[doc = " @name classdb_register_extension_class_virtual_method\n @since 4.3\n\n Registers a virtual method on an extension class in ClassDB, that can be implemented by scripts or other extensions.\n\n Provided struct can be safely freed once the function returns.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_method_info A pointer to a GDExtensionClassMethodInfo struct."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClassVirtualMethod = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_method_info: *const GDExtensionClassVirtualMethodInfo,
    ),
>;
#[doc = " @name classdb_register_extension_class_integer_constant\n @since 4.1\n\n Registers an integer constant on an extension class in the ClassDB.\n\n Note about registering bitfield values (if p_is_bitfield is true): even though p_constant_value is signed, language bindings are\n advised to treat bitfields as uint64_t, since this is generally clearer and can prevent mistakes like using -1 for setting all bits.\n Language APIs should thus provide an abstraction that registers bitfields (uint64_t) separately from regular constants (int64_t).\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_enum_name A pointer to a StringName with the enum name.\n @param p_constant_name A pointer to a StringName with the constant name.\n @param p_constant_value The constant value.\n @param p_is_bitfield Whether or not this constant is part of a bitfield."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClassIntegerConstant = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_enum_name: GDExtensionConstStringNamePtr,
        p_constant_name: GDExtensionConstStringNamePtr,
        p_constant_value: GDExtensionInt,
        p_is_bitfield: GDExtensionBool,
    ),
>;
#[doc = " @name classdb_register_extension_class_property\n @since 4.1\n\n Registers a property on an extension class in the ClassDB.\n\n Provided struct can be safely freed once the function returns.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_info A pointer to a GDExtensionPropertyInfo struct.\n @param p_setter A pointer to a StringName with the name of the setter method.\n @param p_getter A pointer to a StringName with the name of the getter method."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClassProperty = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_info: *const GDExtensionPropertyInfo,
        p_setter: GDExtensionConstStringNamePtr,
        p_getter: GDExtensionConstStringNamePtr,
    ),
>;
#[doc = " @name classdb_register_extension_class_property_indexed\n @since 4.2\n\n Registers an indexed property on an extension class in the ClassDB.\n\n Provided struct can be safely freed once the function returns.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_info A pointer to a GDExtensionPropertyInfo struct.\n @param p_setter A pointer to a StringName with the name of the setter method.\n @param p_getter A pointer to a StringName with the name of the getter method.\n @param p_index The index to pass as the first argument to the getter and setter methods."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClassPropertyIndexed = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_info: *const GDExtensionPropertyInfo,
        p_setter: GDExtensionConstStringNamePtr,
        p_getter: GDExtensionConstStringNamePtr,
        p_index: GDExtensionInt,
    ),
>;
#[doc = " @name classdb_register_extension_class_property_group\n @since 4.1\n\n Registers a property group on an extension class in the ClassDB.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_group_name A pointer to a String with the group name.\n @param p_prefix A pointer to a String with the prefix used by properties in this group."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClassPropertyGroup = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_group_name: GDExtensionConstStringPtr,
        p_prefix: GDExtensionConstStringPtr,
    ),
>;
#[doc = " @name classdb_register_extension_class_property_subgroup\n @since 4.1\n\n Registers a property subgroup on an extension class in the ClassDB.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_subgroup_name A pointer to a String with the subgroup name.\n @param p_prefix A pointer to a String with the prefix used by properties in this subgroup."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClassPropertySubgroup = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_subgroup_name: GDExtensionConstStringPtr,
        p_prefix: GDExtensionConstStringPtr,
    ),
>;
#[doc = " @name classdb_register_extension_class_signal\n @since 4.1\n\n Registers a signal on an extension class in the ClassDB.\n\n Provided structs can be safely freed once the function returns.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name.\n @param p_signal_name A pointer to a StringName with the signal name.\n @param p_argument_info A pointer to a GDExtensionPropertyInfo struct.\n @param p_argument_count The number of arguments the signal receives."]
pub type GDExtensionInterfaceClassdbRegisterExtensionClassSignal = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
        p_signal_name: GDExtensionConstStringNamePtr,
        p_argument_info: *const GDExtensionPropertyInfo,
        p_argument_count: GDExtensionInt,
    ),
>;
#[doc = " @name classdb_unregister_extension_class\n @since 4.1\n\n Unregisters an extension class in the ClassDB.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param p_class_name A pointer to a StringName with the class name."]
pub type GDExtensionInterfaceClassdbUnregisterExtensionClass = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        p_class_name: GDExtensionConstStringNamePtr,
    ),
>;
#[doc = " @name get_library_path\n @since 4.1\n\n Gets the path to the current GDExtension library.\n\n @param p_library A pointer the library received by the GDExtension's entry point function.\n @param r_path A pointer to a String which will receive the path."]
pub type GDExtensionInterfaceGetLibraryPath = ::std::option::Option<
    unsafe extern "C" fn(
        p_library: GDExtensionClassLibraryPtr,
        r_path: GDExtensionUninitializedStringPtr,
    ),
>;
#[doc = " @name editor_add_plugin\n @since 4.1\n\n Adds an editor plugin.\n\n It's safe to call during initialization.\n\n @param p_class_name A pointer to a StringName with the name of a class (descending from EditorPlugin) which is already registered with ClassDB."]
pub type GDExtensionInterfaceEditorAddPlugin =
    ::std::option::Option<unsafe extern "C" fn(p_class_name: GDExtensionConstStringNamePtr)>;
#[doc = " @name editor_remove_plugin\n @since 4.1\n\n Removes an editor plugin.\n\n @param p_class_name A pointer to a StringName with the name of a class that was previously added as an editor plugin."]
pub type GDExtensionInterfaceEditorRemovePlugin =
    ::std::option::Option<unsafe extern "C" fn(p_class_name: GDExtensionConstStringNamePtr)>;
#[doc = " @name editor_help_load_xml_from_utf8_chars\n @since 4.3\n\n Loads new XML-formatted documentation data in the editor.\n\n The provided pointer can be immediately freed once the function returns.\n\n @param p_data A pointer to a UTF-8 encoded C string (null terminated)."]
pub type GDExtensionsInterfaceEditorHelpLoadXmlFromUtf8Chars =
    ::std::option::Option<unsafe extern "C" fn(p_data: *const ::std::os::raw::c_char)>;
#[doc = " @name editor_help_load_xml_from_utf8_chars_and_len\n @since 4.3\n\n Loads new XML-formatted documentation data in the editor.\n\n The provided pointer can be immediately freed once the function returns.\n\n @param p_data A pointer to a UTF-8 encoded C string.\n @param p_size The number of bytes (not code units)."]
pub type GDExtensionsInterfaceEditorHelpLoadXmlFromUtf8CharsAndLen = ::std::option::Option<
    unsafe extern "C" fn(p_data: *const ::std::os::raw::c_char, p_size: GDExtensionInt),
>;
