// Copyright © 2019 - 2020 Oscar Campos <oscar.campos@thepimpam.com>
// Copyright © 2017 - William Edwards
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package gdnative

// ==================================================================
// This file was autogenerated by PimPam GDNative-Go binding tools
// Please do not modify this file, any change will be lost
// ==================================================================

/*
#include "gdnative.gen.h"
#include <gdnative_api_struct.gen.h>
// Include all headers for now. TODO: Look up all the required
// headers we need to import based on the method arguments and return types.
#include <gdnative/aabb.h>
#include <gdnative/array.h>
#include <gdnative/basis.h>
#include <gdnative/color.h>
#include <gdnative/dictionary.h>
#include <gdnative/gdnative.h>
#include <gdnative/node_path.h>
#include <gdnative/plane.h>
#include <gdnative/pool_arrays.h>
#include <gdnative/quat.h>
#include <gdnative/rect2.h>
#include <gdnative/rid.h>
#include <gdnative/string.h>
#include <gdnative/string_name.h>
#include <gdnative/transform.h>
#include <gdnative/transform2d.h>
#include <gdnative/variant.h>
#include <gdnative/vector2.h>
#include <gdnative/vector3.h>
#include <gdnative_api_struct.gen.h>
*/
import "C"
import "unsafe"

// NewEmptyGdnativeExtAndroidApiStruct will return a pointer to an empty
// initialized GdnativeExtAndroidApiStruct. This is primarily used in
// conjunction with MethodBindPtrCall.
func NewEmptyGdnativeExtAndroidApiStruct() Pointer {
	var obj C.godot_gdnative_ext_android_api_struct
	return Pointer{base: unsafe.Pointer(&obj)}
}

// NewPointerFromGdnativeExtAndroidApiStruct will return an unsafe pointer to the given
// object. This is primarily used in conjunction with MethodBindPtrCall.
func NewPointerFromGdnativeExtAndroidApiStruct(obj GdnativeExtAndroidApiStruct) Pointer {
	return Pointer{base: unsafe.Pointer(obj.getBase())}
}

// NewGdnativeExtAndroidApiStructFromPointer will return a GdnativeExtAndroidApiStruct from the
// given unsafe pointer. This is primarily used in conjunction with MethodBindPtrCall.
func NewGdnativeExtAndroidApiStructFromPointer(ptr Pointer) GdnativeExtAndroidApiStruct {

	return GdnativeExtAndroidApiStruct{base: (*C.godot_gdnative_ext_android_api_struct)(ptr.getBase())}
}

// GdnativeExtAndroidApiStruct data structure wrapper
type GdnativeExtAndroidApiStruct struct {
	base *C.godot_gdnative_ext_android_api_struct

	Type    Uint
	Version GdnativeApiVersion
}

// returns the wrapped C base data type for this type
func (gdt GdnativeExtAndroidApiStruct) getBase() *C.godot_gdnative_ext_android_api_struct {
	return gdt.base
}

// NewEmptyGdnativeExtArvr12ApiStruct will return a pointer to an empty
// initialized GdnativeExtArvr12ApiStruct. This is primarily used in
// conjunction with MethodBindPtrCall.
func NewEmptyGdnativeExtArvr12ApiStruct() Pointer {
	var obj C.godot_gdnative_ext_arvr_1_2_api_struct
	return Pointer{base: unsafe.Pointer(&obj)}
}

// NewPointerFromGdnativeExtArvr12ApiStruct will return an unsafe pointer to the given
// object. This is primarily used in conjunction with MethodBindPtrCall.
func NewPointerFromGdnativeExtArvr12ApiStruct(obj GdnativeExtArvr12ApiStruct) Pointer {
	return Pointer{base: unsafe.Pointer(obj.getBase())}
}

// NewGdnativeExtArvr12ApiStructFromPointer will return a GdnativeExtArvr12ApiStruct from the
// given unsafe pointer. This is primarily used in conjunction with MethodBindPtrCall.
func NewGdnativeExtArvr12ApiStructFromPointer(ptr Pointer) GdnativeExtArvr12ApiStruct {

	return GdnativeExtArvr12ApiStruct{base: (*C.godot_gdnative_ext_arvr_1_2_api_struct)(ptr.getBase())}
}

// GdnativeExtArvr12ApiStruct data structure wrapper
type GdnativeExtArvr12ApiStruct struct {
	base *C.godot_gdnative_ext_arvr_1_2_api_struct

	Type    Uint
	Version GdnativeApiVersion
}

// returns the wrapped C base data type for this type
func (gdt GdnativeExtArvr12ApiStruct) getBase() *C.godot_gdnative_ext_arvr_1_2_api_struct {
	return gdt.base
}

// NewEmptyGdnativeExtVideodecoderApiStruct will return a pointer to an empty
// initialized GdnativeExtVideodecoderApiStruct. This is primarily used in
// conjunction with MethodBindPtrCall.
func NewEmptyGdnativeExtVideodecoderApiStruct() Pointer {
	var obj C.godot_gdnative_ext_videodecoder_api_struct
	return Pointer{base: unsafe.Pointer(&obj)}
}

// NewPointerFromGdnativeExtVideodecoderApiStruct will return an unsafe pointer to the given
// object. This is primarily used in conjunction with MethodBindPtrCall.
func NewPointerFromGdnativeExtVideodecoderApiStruct(obj GdnativeExtVideodecoderApiStruct) Pointer {
	return Pointer{base: unsafe.Pointer(obj.getBase())}
}

// NewGdnativeExtVideodecoderApiStructFromPointer will return a GdnativeExtVideodecoderApiStruct from the
// given unsafe pointer. This is primarily used in conjunction with MethodBindPtrCall.
func NewGdnativeExtVideodecoderApiStructFromPointer(ptr Pointer) GdnativeExtVideodecoderApiStruct {

	return GdnativeExtVideodecoderApiStruct{base: (*C.godot_gdnative_ext_videodecoder_api_struct)(ptr.getBase())}
}

// GdnativeExtVideodecoderApiStruct data structure wrapper
type GdnativeExtVideodecoderApiStruct struct {
	base *C.godot_gdnative_ext_videodecoder_api_struct

	Type    Uint
	Version GdnativeApiVersion
}

// returns the wrapped C base data type for this type
func (gdt GdnativeExtVideodecoderApiStruct) getBase() *C.godot_gdnative_ext_videodecoder_api_struct {
	return gdt.base
}

// NewEmptyGdnativeExtNetApiStruct will return a pointer to an empty
// initialized GdnativeExtNetApiStruct. This is primarily used in
// conjunction with MethodBindPtrCall.
func NewEmptyGdnativeExtNetApiStruct() Pointer {
	var obj C.godot_gdnative_ext_net_api_struct
	return Pointer{base: unsafe.Pointer(&obj)}
}

// NewPointerFromGdnativeExtNetApiStruct will return an unsafe pointer to the given
// object. This is primarily used in conjunction with MethodBindPtrCall.
func NewPointerFromGdnativeExtNetApiStruct(obj GdnativeExtNetApiStruct) Pointer {
	return Pointer{base: unsafe.Pointer(obj.getBase())}
}

// NewGdnativeExtNetApiStructFromPointer will return a GdnativeExtNetApiStruct from the
// given unsafe pointer. This is primarily used in conjunction with MethodBindPtrCall.
func NewGdnativeExtNetApiStructFromPointer(ptr Pointer) GdnativeExtNetApiStruct {

	return GdnativeExtNetApiStruct{base: (*C.godot_gdnative_ext_net_api_struct)(ptr.getBase())}
}

// GdnativeExtNetApiStruct data structure wrapper
type GdnativeExtNetApiStruct struct {
	base *C.godot_gdnative_ext_net_api_struct

	Type    Uint
	Version GdnativeApiVersion
}

// returns the wrapped C base data type for this type
func (gdt GdnativeExtNetApiStruct) getBase() *C.godot_gdnative_ext_net_api_struct {
	return gdt.base
}

// NewEmptyGdnativeCore12ApiStruct will return a pointer to an empty
// initialized GdnativeCore12ApiStruct. This is primarily used in
// conjunction with MethodBindPtrCall.
func NewEmptyGdnativeCore12ApiStruct() Pointer {
	var obj C.godot_gdnative_core_1_2_api_struct
	return Pointer{base: unsafe.Pointer(&obj)}
}

// NewPointerFromGdnativeCore12ApiStruct will return an unsafe pointer to the given
// object. This is primarily used in conjunction with MethodBindPtrCall.
func NewPointerFromGdnativeCore12ApiStruct(obj GdnativeCore12ApiStruct) Pointer {
	return Pointer{base: unsafe.Pointer(obj.getBase())}
}

// NewGdnativeCore12ApiStructFromPointer will return a GdnativeCore12ApiStruct from the
// given unsafe pointer. This is primarily used in conjunction with MethodBindPtrCall.
func NewGdnativeCore12ApiStructFromPointer(ptr Pointer) GdnativeCore12ApiStruct {

	return GdnativeCore12ApiStruct{base: (*C.godot_gdnative_core_1_2_api_struct)(ptr.getBase())}
}

// GdnativeCore12ApiStruct data structure wrapper
type GdnativeCore12ApiStruct struct {
	base *C.godot_gdnative_core_1_2_api_struct

	Type    Uint
	Version GdnativeApiVersion
}

// returns the wrapped C base data type for this type
func (gdt GdnativeCore12ApiStruct) getBase() *C.godot_gdnative_core_1_2_api_struct {
	return gdt.base
}

// NewEmptyGdnativeCore11ApiStruct will return a pointer to an empty
// initialized GdnativeCore11ApiStruct. This is primarily used in
// conjunction with MethodBindPtrCall.
func NewEmptyGdnativeCore11ApiStruct() Pointer {
	var obj C.godot_gdnative_core_1_1_api_struct
	return Pointer{base: unsafe.Pointer(&obj)}
}

// NewPointerFromGdnativeCore11ApiStruct will return an unsafe pointer to the given
// object. This is primarily used in conjunction with MethodBindPtrCall.
func NewPointerFromGdnativeCore11ApiStruct(obj GdnativeCore11ApiStruct) Pointer {
	return Pointer{base: unsafe.Pointer(obj.getBase())}
}

// NewGdnativeCore11ApiStructFromPointer will return a GdnativeCore11ApiStruct from the
// given unsafe pointer. This is primarily used in conjunction with MethodBindPtrCall.
func NewGdnativeCore11ApiStructFromPointer(ptr Pointer) GdnativeCore11ApiStruct {

	return GdnativeCore11ApiStruct{base: (*C.godot_gdnative_core_1_1_api_struct)(ptr.getBase())}
}

// GdnativeCore11ApiStruct data structure wrapper
type GdnativeCore11ApiStruct struct {
	base *C.godot_gdnative_core_1_1_api_struct

	Type    Uint
	Version GdnativeApiVersion
}

// returns the wrapped C base data type for this type
func (gdt GdnativeCore11ApiStruct) getBase() *C.godot_gdnative_core_1_1_api_struct {
	return gdt.base
}
