// Code generated by cmd/codegen from https://github.com/AllenDang/cimgui-go.
// DO NOT EDIT.

package implot

// #include <stdlib.h>
// #include <memory.h>
// #include "wrapper.h"
// #include "typedefs.h"
// #include "../imgui/extra_types.h"
// extern int callbackFormatter0(double, char*, int, void*);
// extern int callbackFormatter1(double, char*, int, void*);
// extern int callbackFormatter2(double, char*, int, void*);
// extern int callbackFormatter3(double, char*, int, void*);
// extern int callbackFormatter4(double, char*, int, void*);
// extern int callbackFormatter5(double, char*, int, void*);
// extern int callbackFormatter6(double, char*, int, void*);
// extern int callbackFormatter7(double, char*, int, void*);
// extern int callbackFormatter8(double, char*, int, void*);
// extern int callbackFormatter9(double, char*, int, void*);
// extern int callbackFormatter10(double, char*, int, void*);
// extern int callbackFormatter11(double, char*, int, void*);
// extern int callbackFormatter12(double, char*, int, void*);
// extern int callbackFormatter13(double, char*, int, void*);
// extern int callbackFormatter14(double, char*, int, void*);
// extern int callbackFormatter15(double, char*, int, void*);
// extern int callbackFormatter16(double, char*, int, void*);
// extern int callbackFormatter17(double, char*, int, void*);
// extern int callbackFormatter18(double, char*, int, void*);
// extern int callbackFormatter19(double, char*, int, void*);
// extern int callbackFormatter20(double, char*, int, void*);
// extern int callbackFormatter21(double, char*, int, void*);
// extern int callbackFormatter22(double, char*, int, void*);
// extern int callbackFormatter23(double, char*, int, void*);
// extern int callbackFormatter24(double, char*, int, void*);
// extern int callbackFormatter25(double, char*, int, void*);
// extern int callbackFormatter26(double, char*, int, void*);
// extern int callbackFormatter27(double, char*, int, void*);
// extern int callbackFormatter28(double, char*, int, void*);
// extern int callbackFormatter29(double, char*, int, void*);
// extern int callbackFormatter30(double, char*, int, void*);
// extern int callbackFormatter31(double, char*, int, void*);
// extern ImPlotPoint callbackter0(int, void*);
// extern ImPlotPoint callbackter1(int, void*);
// extern ImPlotPoint callbackter2(int, void*);
// extern ImPlotPoint callbackter3(int, void*);
// extern ImPlotPoint callbackter4(int, void*);
// extern ImPlotPoint callbackter5(int, void*);
// extern ImPlotPoint callbackter6(int, void*);
// extern ImPlotPoint callbackter7(int, void*);
// extern ImPlotPoint callbackter8(int, void*);
// extern ImPlotPoint callbackter9(int, void*);
// extern ImPlotPoint callbackter10(int, void*);
// extern ImPlotPoint callbackter11(int, void*);
// extern ImPlotPoint callbackter12(int, void*);
// extern ImPlotPoint callbackter13(int, void*);
// extern ImPlotPoint callbackter14(int, void*);
// extern ImPlotPoint callbackter15(int, void*);
// extern ImPlotPoint callbackter16(int, void*);
// extern ImPlotPoint callbackter17(int, void*);
// extern ImPlotPoint callbackter18(int, void*);
// extern ImPlotPoint callbackter19(int, void*);
// extern ImPlotPoint callbackter20(int, void*);
// extern ImPlotPoint callbackter21(int, void*);
// extern ImPlotPoint callbackter22(int, void*);
// extern ImPlotPoint callbackter23(int, void*);
// extern ImPlotPoint callbackter24(int, void*);
// extern ImPlotPoint callbackter25(int, void*);
// extern ImPlotPoint callbackter26(int, void*);
// extern ImPlotPoint callbackter27(int, void*);
// extern ImPlotPoint callbackter28(int, void*);
// extern ImPlotPoint callbackter29(int, void*);
// extern ImPlotPoint callbackter30(int, void*);
// extern ImPlotPoint callbackter31(int, void*);
// extern double callbackTransform0(double, void*);
// extern double callbackTransform1(double, void*);
// extern double callbackTransform2(double, void*);
// extern double callbackTransform3(double, void*);
// extern double callbackTransform4(double, void*);
// extern double callbackTransform5(double, void*);
// extern double callbackTransform6(double, void*);
// extern double callbackTransform7(double, void*);
// extern double callbackTransform8(double, void*);
// extern double callbackTransform9(double, void*);
// extern double callbackTransform10(double, void*);
// extern double callbackTransform11(double, void*);
// extern double callbackTransform12(double, void*);
// extern double callbackTransform13(double, void*);
// extern double callbackTransform14(double, void*);
// extern double callbackTransform15(double, void*);
// extern double callbackTransform16(double, void*);
// extern double callbackTransform17(double, void*);
// extern double callbackTransform18(double, void*);
// extern double callbackTransform19(double, void*);
// extern double callbackTransform20(double, void*);
// extern double callbackTransform21(double, void*);
// extern double callbackTransform22(double, void*);
// extern double callbackTransform23(double, void*);
// extern double callbackTransform24(double, void*);
// extern double callbackTransform25(double, void*);
// extern double callbackTransform26(double, void*);
// extern double callbackTransform27(double, void*);
// extern double callbackTransform28(double, void*);
// extern double callbackTransform29(double, void*);
// extern double callbackTransform30(double, void*);
// extern double callbackTransform31(double, void*);
import "C"
import (
	"unsafe"

	"github.com/AllenDang/cimgui-go/internal"
)

type (
	Formatter  func(value float64, buff string, size int32, user_data unsafe.Pointer) int32
	cFormatter func(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int
)

func NewFormatterFromC(cvalue *C.ImPlotFormatter) *Formatter {
	result := poolFormatter.Find(*cvalue)
	return &result
}

func (c Formatter) C() (C.ImPlotFormatter, func()) {
	return poolFormatter.Allocate(c), func() {}
}

func wrapFormatter(cb Formatter, value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	result := cb(float64(value), C.GoString(buff), int32(size), unsafe.Pointer(user_data))

	defer func() {
	}()
	return C.int(result)
}

//export callbackFormatter0
func callbackFormatter0(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(0), value, buff, size, user_data)
}

//export callbackFormatter1
func callbackFormatter1(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(1), value, buff, size, user_data)
}

//export callbackFormatter2
func callbackFormatter2(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(2), value, buff, size, user_data)
}

//export callbackFormatter3
func callbackFormatter3(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(3), value, buff, size, user_data)
}

//export callbackFormatter4
func callbackFormatter4(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(4), value, buff, size, user_data)
}

//export callbackFormatter5
func callbackFormatter5(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(5), value, buff, size, user_data)
}

//export callbackFormatter6
func callbackFormatter6(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(6), value, buff, size, user_data)
}

//export callbackFormatter7
func callbackFormatter7(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(7), value, buff, size, user_data)
}

//export callbackFormatter8
func callbackFormatter8(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(8), value, buff, size, user_data)
}

//export callbackFormatter9
func callbackFormatter9(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(9), value, buff, size, user_data)
}

//export callbackFormatter10
func callbackFormatter10(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(10), value, buff, size, user_data)
}

//export callbackFormatter11
func callbackFormatter11(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(11), value, buff, size, user_data)
}

//export callbackFormatter12
func callbackFormatter12(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(12), value, buff, size, user_data)
}

//export callbackFormatter13
func callbackFormatter13(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(13), value, buff, size, user_data)
}

//export callbackFormatter14
func callbackFormatter14(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(14), value, buff, size, user_data)
}

//export callbackFormatter15
func callbackFormatter15(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(15), value, buff, size, user_data)
}

//export callbackFormatter16
func callbackFormatter16(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(16), value, buff, size, user_data)
}

//export callbackFormatter17
func callbackFormatter17(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(17), value, buff, size, user_data)
}

//export callbackFormatter18
func callbackFormatter18(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(18), value, buff, size, user_data)
}

//export callbackFormatter19
func callbackFormatter19(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(19), value, buff, size, user_data)
}

//export callbackFormatter20
func callbackFormatter20(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(20), value, buff, size, user_data)
}

//export callbackFormatter21
func callbackFormatter21(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(21), value, buff, size, user_data)
}

//export callbackFormatter22
func callbackFormatter22(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(22), value, buff, size, user_data)
}

//export callbackFormatter23
func callbackFormatter23(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(23), value, buff, size, user_data)
}

//export callbackFormatter24
func callbackFormatter24(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(24), value, buff, size, user_data)
}

//export callbackFormatter25
func callbackFormatter25(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(25), value, buff, size, user_data)
}

//export callbackFormatter26
func callbackFormatter26(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(26), value, buff, size, user_data)
}

//export callbackFormatter27
func callbackFormatter27(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(27), value, buff, size, user_data)
}

//export callbackFormatter28
func callbackFormatter28(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(28), value, buff, size, user_data)
}

//export callbackFormatter29
func callbackFormatter29(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(29), value, buff, size, user_data)
}

//export callbackFormatter30
func callbackFormatter30(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(30), value, buff, size, user_data)
}

//export callbackFormatter31
func callbackFormatter31(value C.double, buff *C.char, size C.int, user_data unsafe.Pointer) C.int {
	return wrapFormatter(poolFormatter.Get(31), value, buff, size, user_data)
}

var poolFormatter *internal.Pool[Formatter, C.ImPlotFormatter]

func init() {
	poolFormatter = internal.NewPool[Formatter, C.ImPlotFormatter](
		C.ImPlotFormatter(C.callbackFormatter0),
		C.ImPlotFormatter(C.callbackFormatter1),
		C.ImPlotFormatter(C.callbackFormatter2),
		C.ImPlotFormatter(C.callbackFormatter3),
		C.ImPlotFormatter(C.callbackFormatter4),
		C.ImPlotFormatter(C.callbackFormatter5),
		C.ImPlotFormatter(C.callbackFormatter6),
		C.ImPlotFormatter(C.callbackFormatter7),
		C.ImPlotFormatter(C.callbackFormatter8),
		C.ImPlotFormatter(C.callbackFormatter9),
		C.ImPlotFormatter(C.callbackFormatter10),
		C.ImPlotFormatter(C.callbackFormatter11),
		C.ImPlotFormatter(C.callbackFormatter12),
		C.ImPlotFormatter(C.callbackFormatter13),
		C.ImPlotFormatter(C.callbackFormatter14),
		C.ImPlotFormatter(C.callbackFormatter15),
		C.ImPlotFormatter(C.callbackFormatter16),
		C.ImPlotFormatter(C.callbackFormatter17),
		C.ImPlotFormatter(C.callbackFormatter18),
		C.ImPlotFormatter(C.callbackFormatter19),
		C.ImPlotFormatter(C.callbackFormatter20),
		C.ImPlotFormatter(C.callbackFormatter21),
		C.ImPlotFormatter(C.callbackFormatter22),
		C.ImPlotFormatter(C.callbackFormatter23),
		C.ImPlotFormatter(C.callbackFormatter24),
		C.ImPlotFormatter(C.callbackFormatter25),
		C.ImPlotFormatter(C.callbackFormatter26),
		C.ImPlotFormatter(C.callbackFormatter27),
		C.ImPlotFormatter(C.callbackFormatter28),
		C.ImPlotFormatter(C.callbackFormatter29),
		C.ImPlotFormatter(C.callbackFormatter30),
		C.ImPlotFormatter(C.callbackFormatter31),
	)
}

func ClearFormatterPool() {
	poolFormatter.Clear()
}

type (
	ter  func(idx int32, user_data unsafe.Pointer) PlotPoint
	cter func(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint
)

func NewterFromC(cvalue *C.ImPlotGetter) *ter {
	result := poolter.Find(*cvalue)
	return &result
}

func (c ter) C() (C.ImPlotGetter, func()) {
	return poolter.Allocate(c), func() {}
}

func wrapter(cb ter, idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	result := cb(int32(idx), unsafe.Pointer(user_data))

	defer func() {
	}()
	return internal.ReinterpretCast[C.ImPlotPoint](result.ToC())
}

//export callbackter0
func callbackter0(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(0), idx, user_data)
}

//export callbackter1
func callbackter1(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(1), idx, user_data)
}

//export callbackter2
func callbackter2(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(2), idx, user_data)
}

//export callbackter3
func callbackter3(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(3), idx, user_data)
}

//export callbackter4
func callbackter4(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(4), idx, user_data)
}

//export callbackter5
func callbackter5(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(5), idx, user_data)
}

//export callbackter6
func callbackter6(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(6), idx, user_data)
}

//export callbackter7
func callbackter7(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(7), idx, user_data)
}

//export callbackter8
func callbackter8(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(8), idx, user_data)
}

//export callbackter9
func callbackter9(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(9), idx, user_data)
}

//export callbackter10
func callbackter10(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(10), idx, user_data)
}

//export callbackter11
func callbackter11(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(11), idx, user_data)
}

//export callbackter12
func callbackter12(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(12), idx, user_data)
}

//export callbackter13
func callbackter13(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(13), idx, user_data)
}

//export callbackter14
func callbackter14(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(14), idx, user_data)
}

//export callbackter15
func callbackter15(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(15), idx, user_data)
}

//export callbackter16
func callbackter16(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(16), idx, user_data)
}

//export callbackter17
func callbackter17(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(17), idx, user_data)
}

//export callbackter18
func callbackter18(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(18), idx, user_data)
}

//export callbackter19
func callbackter19(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(19), idx, user_data)
}

//export callbackter20
func callbackter20(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(20), idx, user_data)
}

//export callbackter21
func callbackter21(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(21), idx, user_data)
}

//export callbackter22
func callbackter22(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(22), idx, user_data)
}

//export callbackter23
func callbackter23(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(23), idx, user_data)
}

//export callbackter24
func callbackter24(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(24), idx, user_data)
}

//export callbackter25
func callbackter25(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(25), idx, user_data)
}

//export callbackter26
func callbackter26(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(26), idx, user_data)
}

//export callbackter27
func callbackter27(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(27), idx, user_data)
}

//export callbackter28
func callbackter28(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(28), idx, user_data)
}

//export callbackter29
func callbackter29(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(29), idx, user_data)
}

//export callbackter30
func callbackter30(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(30), idx, user_data)
}

//export callbackter31
func callbackter31(idx C.int, user_data unsafe.Pointer) C.ImPlotPoint {
	return wrapter(poolter.Get(31), idx, user_data)
}

var poolter *internal.Pool[ter, C.ImPlotGetter]

func init() {
	poolter = internal.NewPool[ter, C.ImPlotGetter](
		C.ImPlotGetter(C.callbackter0),
		C.ImPlotGetter(C.callbackter1),
		C.ImPlotGetter(C.callbackter2),
		C.ImPlotGetter(C.callbackter3),
		C.ImPlotGetter(C.callbackter4),
		C.ImPlotGetter(C.callbackter5),
		C.ImPlotGetter(C.callbackter6),
		C.ImPlotGetter(C.callbackter7),
		C.ImPlotGetter(C.callbackter8),
		C.ImPlotGetter(C.callbackter9),
		C.ImPlotGetter(C.callbackter10),
		C.ImPlotGetter(C.callbackter11),
		C.ImPlotGetter(C.callbackter12),
		C.ImPlotGetter(C.callbackter13),
		C.ImPlotGetter(C.callbackter14),
		C.ImPlotGetter(C.callbackter15),
		C.ImPlotGetter(C.callbackter16),
		C.ImPlotGetter(C.callbackter17),
		C.ImPlotGetter(C.callbackter18),
		C.ImPlotGetter(C.callbackter19),
		C.ImPlotGetter(C.callbackter20),
		C.ImPlotGetter(C.callbackter21),
		C.ImPlotGetter(C.callbackter22),
		C.ImPlotGetter(C.callbackter23),
		C.ImPlotGetter(C.callbackter24),
		C.ImPlotGetter(C.callbackter25),
		C.ImPlotGetter(C.callbackter26),
		C.ImPlotGetter(C.callbackter27),
		C.ImPlotGetter(C.callbackter28),
		C.ImPlotGetter(C.callbackter29),
		C.ImPlotGetter(C.callbackter30),
		C.ImPlotGetter(C.callbackter31),
	)
}

func ClearterPool() {
	poolter.Clear()
}

type (
	Transform  func(value float64, user_data unsafe.Pointer) float64
	cTransform func(value C.double, user_data unsafe.Pointer) C.double
)

func NewTransformFromC(cvalue *C.ImPlotTransform) *Transform {
	result := poolTransform.Find(*cvalue)
	return &result
}

func (c Transform) C() (C.ImPlotTransform, func()) {
	return poolTransform.Allocate(c), func() {}
}

func wrapTransform(cb Transform, value C.double, user_data unsafe.Pointer) C.double {
	result := cb(float64(value), unsafe.Pointer(user_data))

	defer func() {
	}()
	return C.double(result)
}

//export callbackTransform0
func callbackTransform0(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(0), value, user_data)
}

//export callbackTransform1
func callbackTransform1(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(1), value, user_data)
}

//export callbackTransform2
func callbackTransform2(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(2), value, user_data)
}

//export callbackTransform3
func callbackTransform3(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(3), value, user_data)
}

//export callbackTransform4
func callbackTransform4(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(4), value, user_data)
}

//export callbackTransform5
func callbackTransform5(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(5), value, user_data)
}

//export callbackTransform6
func callbackTransform6(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(6), value, user_data)
}

//export callbackTransform7
func callbackTransform7(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(7), value, user_data)
}

//export callbackTransform8
func callbackTransform8(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(8), value, user_data)
}

//export callbackTransform9
func callbackTransform9(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(9), value, user_data)
}

//export callbackTransform10
func callbackTransform10(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(10), value, user_data)
}

//export callbackTransform11
func callbackTransform11(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(11), value, user_data)
}

//export callbackTransform12
func callbackTransform12(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(12), value, user_data)
}

//export callbackTransform13
func callbackTransform13(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(13), value, user_data)
}

//export callbackTransform14
func callbackTransform14(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(14), value, user_data)
}

//export callbackTransform15
func callbackTransform15(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(15), value, user_data)
}

//export callbackTransform16
func callbackTransform16(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(16), value, user_data)
}

//export callbackTransform17
func callbackTransform17(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(17), value, user_data)
}

//export callbackTransform18
func callbackTransform18(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(18), value, user_data)
}

//export callbackTransform19
func callbackTransform19(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(19), value, user_data)
}

//export callbackTransform20
func callbackTransform20(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(20), value, user_data)
}

//export callbackTransform21
func callbackTransform21(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(21), value, user_data)
}

//export callbackTransform22
func callbackTransform22(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(22), value, user_data)
}

//export callbackTransform23
func callbackTransform23(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(23), value, user_data)
}

//export callbackTransform24
func callbackTransform24(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(24), value, user_data)
}

//export callbackTransform25
func callbackTransform25(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(25), value, user_data)
}

//export callbackTransform26
func callbackTransform26(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(26), value, user_data)
}

//export callbackTransform27
func callbackTransform27(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(27), value, user_data)
}

//export callbackTransform28
func callbackTransform28(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(28), value, user_data)
}

//export callbackTransform29
func callbackTransform29(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(29), value, user_data)
}

//export callbackTransform30
func callbackTransform30(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(30), value, user_data)
}

//export callbackTransform31
func callbackTransform31(value C.double, user_data unsafe.Pointer) C.double {
	return wrapTransform(poolTransform.Get(31), value, user_data)
}

var poolTransform *internal.Pool[Transform, C.ImPlotTransform]

func init() {
	poolTransform = internal.NewPool[Transform, C.ImPlotTransform](
		C.ImPlotTransform(C.callbackTransform0),
		C.ImPlotTransform(C.callbackTransform1),
		C.ImPlotTransform(C.callbackTransform2),
		C.ImPlotTransform(C.callbackTransform3),
		C.ImPlotTransform(C.callbackTransform4),
		C.ImPlotTransform(C.callbackTransform5),
		C.ImPlotTransform(C.callbackTransform6),
		C.ImPlotTransform(C.callbackTransform7),
		C.ImPlotTransform(C.callbackTransform8),
		C.ImPlotTransform(C.callbackTransform9),
		C.ImPlotTransform(C.callbackTransform10),
		C.ImPlotTransform(C.callbackTransform11),
		C.ImPlotTransform(C.callbackTransform12),
		C.ImPlotTransform(C.callbackTransform13),
		C.ImPlotTransform(C.callbackTransform14),
		C.ImPlotTransform(C.callbackTransform15),
		C.ImPlotTransform(C.callbackTransform16),
		C.ImPlotTransform(C.callbackTransform17),
		C.ImPlotTransform(C.callbackTransform18),
		C.ImPlotTransform(C.callbackTransform19),
		C.ImPlotTransform(C.callbackTransform20),
		C.ImPlotTransform(C.callbackTransform21),
		C.ImPlotTransform(C.callbackTransform22),
		C.ImPlotTransform(C.callbackTransform23),
		C.ImPlotTransform(C.callbackTransform24),
		C.ImPlotTransform(C.callbackTransform25),
		C.ImPlotTransform(C.callbackTransform26),
		C.ImPlotTransform(C.callbackTransform27),
		C.ImPlotTransform(C.callbackTransform28),
		C.ImPlotTransform(C.callbackTransform29),
		C.ImPlotTransform(C.callbackTransform30),
		C.ImPlotTransform(C.callbackTransform31),
	)
}

func ClearTransformPool() {
	poolTransform.Clear()
}
