
// generated from codegen/templates/_modulestate.hpp

#ifndef E_MATH_MODULESTATE_HPP
#define E_MATH_MODULESTATE_HPP

// python
#define PY_SSIZE_T_CLEAN
#include <Python.h>
// emath
#include "_module.hpp"

struct ModuleState
{
    PyObject *ctypes_c_bool_p;
    PyObject *ctypes_c_int8_t_p;
    PyObject *ctypes_c_uint8_t_p;
    PyObject *ctypes_c_int16_t_p;
    PyObject *ctypes_c_uint16_t_p;
    PyObject *ctypes_c_int32_t_p;
    PyObject *ctypes_c_uint32_t_p;
    PyObject *ctypes_c_int64_t_p;
    PyObject *ctypes_c_uint64_t_p;
    PyObject *ctypes_c_int_p;
    PyObject *ctypes_c_unsigned_int_p;
    PyObject *ctypes_c_float_p;
    PyObject *ctypes_c_double_p;

        PyTypeObject *BVector1_PyTypeObject;
        PyTypeObject *BVector1Array_PyTypeObject;

        PyTypeObject *DVector1_PyTypeObject;
        PyTypeObject *DVector1Array_PyTypeObject;

        PyTypeObject *FVector1_PyTypeObject;
        PyTypeObject *FVector1Array_PyTypeObject;

        PyTypeObject *I8Vector1_PyTypeObject;
        PyTypeObject *I8Vector1Array_PyTypeObject;

        PyTypeObject *U8Vector1_PyTypeObject;
        PyTypeObject *U8Vector1Array_PyTypeObject;

        PyTypeObject *I16Vector1_PyTypeObject;
        PyTypeObject *I16Vector1Array_PyTypeObject;

        PyTypeObject *U16Vector1_PyTypeObject;
        PyTypeObject *U16Vector1Array_PyTypeObject;

        PyTypeObject *I32Vector1_PyTypeObject;
        PyTypeObject *I32Vector1Array_PyTypeObject;

        PyTypeObject *U32Vector1_PyTypeObject;
        PyTypeObject *U32Vector1Array_PyTypeObject;

        PyTypeObject *IVector1_PyTypeObject;
        PyTypeObject *IVector1Array_PyTypeObject;

        PyTypeObject *UVector1_PyTypeObject;
        PyTypeObject *UVector1Array_PyTypeObject;

        PyTypeObject *I64Vector1_PyTypeObject;
        PyTypeObject *I64Vector1Array_PyTypeObject;

        PyTypeObject *U64Vector1_PyTypeObject;
        PyTypeObject *U64Vector1Array_PyTypeObject;

        PyTypeObject *BVector2_PyTypeObject;
        PyTypeObject *BVector2Array_PyTypeObject;

        PyTypeObject *DVector2_PyTypeObject;
        PyTypeObject *DVector2Array_PyTypeObject;

        PyTypeObject *FVector2_PyTypeObject;
        PyTypeObject *FVector2Array_PyTypeObject;

        PyTypeObject *I8Vector2_PyTypeObject;
        PyTypeObject *I8Vector2Array_PyTypeObject;

        PyTypeObject *U8Vector2_PyTypeObject;
        PyTypeObject *U8Vector2Array_PyTypeObject;

        PyTypeObject *I16Vector2_PyTypeObject;
        PyTypeObject *I16Vector2Array_PyTypeObject;

        PyTypeObject *U16Vector2_PyTypeObject;
        PyTypeObject *U16Vector2Array_PyTypeObject;

        PyTypeObject *I32Vector2_PyTypeObject;
        PyTypeObject *I32Vector2Array_PyTypeObject;

        PyTypeObject *U32Vector2_PyTypeObject;
        PyTypeObject *U32Vector2Array_PyTypeObject;

        PyTypeObject *IVector2_PyTypeObject;
        PyTypeObject *IVector2Array_PyTypeObject;

        PyTypeObject *UVector2_PyTypeObject;
        PyTypeObject *UVector2Array_PyTypeObject;

        PyTypeObject *I64Vector2_PyTypeObject;
        PyTypeObject *I64Vector2Array_PyTypeObject;

        PyTypeObject *U64Vector2_PyTypeObject;
        PyTypeObject *U64Vector2Array_PyTypeObject;

        PyTypeObject *BVector3_PyTypeObject;
        PyTypeObject *BVector3Array_PyTypeObject;

        PyTypeObject *DVector3_PyTypeObject;
        PyTypeObject *DVector3Array_PyTypeObject;

        PyTypeObject *FVector3_PyTypeObject;
        PyTypeObject *FVector3Array_PyTypeObject;

        PyTypeObject *I8Vector3_PyTypeObject;
        PyTypeObject *I8Vector3Array_PyTypeObject;

        PyTypeObject *U8Vector3_PyTypeObject;
        PyTypeObject *U8Vector3Array_PyTypeObject;

        PyTypeObject *I16Vector3_PyTypeObject;
        PyTypeObject *I16Vector3Array_PyTypeObject;

        PyTypeObject *U16Vector3_PyTypeObject;
        PyTypeObject *U16Vector3Array_PyTypeObject;

        PyTypeObject *I32Vector3_PyTypeObject;
        PyTypeObject *I32Vector3Array_PyTypeObject;

        PyTypeObject *U32Vector3_PyTypeObject;
        PyTypeObject *U32Vector3Array_PyTypeObject;

        PyTypeObject *IVector3_PyTypeObject;
        PyTypeObject *IVector3Array_PyTypeObject;

        PyTypeObject *UVector3_PyTypeObject;
        PyTypeObject *UVector3Array_PyTypeObject;

        PyTypeObject *I64Vector3_PyTypeObject;
        PyTypeObject *I64Vector3Array_PyTypeObject;

        PyTypeObject *U64Vector3_PyTypeObject;
        PyTypeObject *U64Vector3Array_PyTypeObject;

        PyTypeObject *BVector4_PyTypeObject;
        PyTypeObject *BVector4Array_PyTypeObject;

        PyTypeObject *DVector4_PyTypeObject;
        PyTypeObject *DVector4Array_PyTypeObject;

        PyTypeObject *FVector4_PyTypeObject;
        PyTypeObject *FVector4Array_PyTypeObject;

        PyTypeObject *I8Vector4_PyTypeObject;
        PyTypeObject *I8Vector4Array_PyTypeObject;

        PyTypeObject *U8Vector4_PyTypeObject;
        PyTypeObject *U8Vector4Array_PyTypeObject;

        PyTypeObject *I16Vector4_PyTypeObject;
        PyTypeObject *I16Vector4Array_PyTypeObject;

        PyTypeObject *U16Vector4_PyTypeObject;
        PyTypeObject *U16Vector4Array_PyTypeObject;

        PyTypeObject *I32Vector4_PyTypeObject;
        PyTypeObject *I32Vector4Array_PyTypeObject;

        PyTypeObject *U32Vector4_PyTypeObject;
        PyTypeObject *U32Vector4Array_PyTypeObject;

        PyTypeObject *IVector4_PyTypeObject;
        PyTypeObject *IVector4Array_PyTypeObject;

        PyTypeObject *UVector4_PyTypeObject;
        PyTypeObject *UVector4Array_PyTypeObject;

        PyTypeObject *I64Vector4_PyTypeObject;
        PyTypeObject *I64Vector4Array_PyTypeObject;

        PyTypeObject *U64Vector4_PyTypeObject;
        PyTypeObject *U64Vector4Array_PyTypeObject;

        PyTypeObject *DMatrix2x2_PyTypeObject;
        PyTypeObject *DMatrix2x2Array_PyTypeObject;

        PyTypeObject *FMatrix2x2_PyTypeObject;
        PyTypeObject *FMatrix2x2Array_PyTypeObject;

        PyTypeObject *DMatrix2x3_PyTypeObject;
        PyTypeObject *DMatrix2x3Array_PyTypeObject;

        PyTypeObject *FMatrix2x3_PyTypeObject;
        PyTypeObject *FMatrix2x3Array_PyTypeObject;

        PyTypeObject *DMatrix2x4_PyTypeObject;
        PyTypeObject *DMatrix2x4Array_PyTypeObject;

        PyTypeObject *FMatrix2x4_PyTypeObject;
        PyTypeObject *FMatrix2x4Array_PyTypeObject;

        PyTypeObject *DMatrix3x2_PyTypeObject;
        PyTypeObject *DMatrix3x2Array_PyTypeObject;

        PyTypeObject *FMatrix3x2_PyTypeObject;
        PyTypeObject *FMatrix3x2Array_PyTypeObject;

        PyTypeObject *DMatrix3x3_PyTypeObject;
        PyTypeObject *DMatrix3x3Array_PyTypeObject;

        PyTypeObject *FMatrix3x3_PyTypeObject;
        PyTypeObject *FMatrix3x3Array_PyTypeObject;

        PyTypeObject *DMatrix3x4_PyTypeObject;
        PyTypeObject *DMatrix3x4Array_PyTypeObject;

        PyTypeObject *FMatrix3x4_PyTypeObject;
        PyTypeObject *FMatrix3x4Array_PyTypeObject;

        PyTypeObject *DMatrix4x2_PyTypeObject;
        PyTypeObject *DMatrix4x2Array_PyTypeObject;

        PyTypeObject *FMatrix4x2_PyTypeObject;
        PyTypeObject *FMatrix4x2Array_PyTypeObject;

        PyTypeObject *DMatrix4x3_PyTypeObject;
        PyTypeObject *DMatrix4x3Array_PyTypeObject;

        PyTypeObject *FMatrix4x3_PyTypeObject;
        PyTypeObject *FMatrix4x3Array_PyTypeObject;

        PyTypeObject *DMatrix4x4_PyTypeObject;
        PyTypeObject *DMatrix4x4Array_PyTypeObject;

        PyTypeObject *FMatrix4x4_PyTypeObject;
        PyTypeObject *FMatrix4x4Array_PyTypeObject;

        PyTypeObject *DQuaternion_PyTypeObject;
        PyTypeObject *DQuaternionArray_PyTypeObject;

        PyTypeObject *FQuaternion_PyTypeObject;
        PyTypeObject *FQuaternionArray_PyTypeObject;


        PyTypeObject *BArray_PyTypeObject;

        PyTypeObject *DArray_PyTypeObject;

        PyTypeObject *FArray_PyTypeObject;

        PyTypeObject *I8Array_PyTypeObject;

        PyTypeObject *U8Array_PyTypeObject;

        PyTypeObject *I16Array_PyTypeObject;

        PyTypeObject *U16Array_PyTypeObject;

        PyTypeObject *I32Array_PyTypeObject;

        PyTypeObject *U32Array_PyTypeObject;

        PyTypeObject *IArray_PyTypeObject;

        PyTypeObject *UArray_PyTypeObject;

        PyTypeObject *I64Array_PyTypeObject;

        PyTypeObject *U64Array_PyTypeObject;

};


static int
ModuleState_traverse(
    struct ModuleState *self,
    visitproc visit,
    void *arg
)
{
    Py_VISIT(self->ctypes_c_bool_p);
    Py_VISIT(self->ctypes_c_int8_t_p);
    Py_VISIT(self->ctypes_c_uint8_t_p);
    Py_VISIT(self->ctypes_c_int16_t_p);
    Py_VISIT(self->ctypes_c_uint16_t_p);
    Py_VISIT(self->ctypes_c_int32_t_p);
    Py_VISIT(self->ctypes_c_uint32_t_p);
    Py_VISIT(self->ctypes_c_int64_t_p);
    Py_VISIT(self->ctypes_c_uint64_t_p);
    Py_VISIT(self->ctypes_c_int_p);
    Py_VISIT(self->ctypes_c_unsigned_int_p);
    Py_VISIT(self->ctypes_c_float_p);
    Py_VISIT(self->ctypes_c_double_p);

        Py_VISIT(self->BVector1_PyTypeObject);
        Py_VISIT(self->BVector1Array_PyTypeObject);

        Py_VISIT(self->DVector1_PyTypeObject);
        Py_VISIT(self->DVector1Array_PyTypeObject);

        Py_VISIT(self->FVector1_PyTypeObject);
        Py_VISIT(self->FVector1Array_PyTypeObject);

        Py_VISIT(self->I8Vector1_PyTypeObject);
        Py_VISIT(self->I8Vector1Array_PyTypeObject);

        Py_VISIT(self->U8Vector1_PyTypeObject);
        Py_VISIT(self->U8Vector1Array_PyTypeObject);

        Py_VISIT(self->I16Vector1_PyTypeObject);
        Py_VISIT(self->I16Vector1Array_PyTypeObject);

        Py_VISIT(self->U16Vector1_PyTypeObject);
        Py_VISIT(self->U16Vector1Array_PyTypeObject);

        Py_VISIT(self->I32Vector1_PyTypeObject);
        Py_VISIT(self->I32Vector1Array_PyTypeObject);

        Py_VISIT(self->U32Vector1_PyTypeObject);
        Py_VISIT(self->U32Vector1Array_PyTypeObject);

        Py_VISIT(self->IVector1_PyTypeObject);
        Py_VISIT(self->IVector1Array_PyTypeObject);

        Py_VISIT(self->UVector1_PyTypeObject);
        Py_VISIT(self->UVector1Array_PyTypeObject);

        Py_VISIT(self->I64Vector1_PyTypeObject);
        Py_VISIT(self->I64Vector1Array_PyTypeObject);

        Py_VISIT(self->U64Vector1_PyTypeObject);
        Py_VISIT(self->U64Vector1Array_PyTypeObject);

        Py_VISIT(self->BVector2_PyTypeObject);
        Py_VISIT(self->BVector2Array_PyTypeObject);

        Py_VISIT(self->DVector2_PyTypeObject);
        Py_VISIT(self->DVector2Array_PyTypeObject);

        Py_VISIT(self->FVector2_PyTypeObject);
        Py_VISIT(self->FVector2Array_PyTypeObject);

        Py_VISIT(self->I8Vector2_PyTypeObject);
        Py_VISIT(self->I8Vector2Array_PyTypeObject);

        Py_VISIT(self->U8Vector2_PyTypeObject);
        Py_VISIT(self->U8Vector2Array_PyTypeObject);

        Py_VISIT(self->I16Vector2_PyTypeObject);
        Py_VISIT(self->I16Vector2Array_PyTypeObject);

        Py_VISIT(self->U16Vector2_PyTypeObject);
        Py_VISIT(self->U16Vector2Array_PyTypeObject);

        Py_VISIT(self->I32Vector2_PyTypeObject);
        Py_VISIT(self->I32Vector2Array_PyTypeObject);

        Py_VISIT(self->U32Vector2_PyTypeObject);
        Py_VISIT(self->U32Vector2Array_PyTypeObject);

        Py_VISIT(self->IVector2_PyTypeObject);
        Py_VISIT(self->IVector2Array_PyTypeObject);

        Py_VISIT(self->UVector2_PyTypeObject);
        Py_VISIT(self->UVector2Array_PyTypeObject);

        Py_VISIT(self->I64Vector2_PyTypeObject);
        Py_VISIT(self->I64Vector2Array_PyTypeObject);

        Py_VISIT(self->U64Vector2_PyTypeObject);
        Py_VISIT(self->U64Vector2Array_PyTypeObject);

        Py_VISIT(self->BVector3_PyTypeObject);
        Py_VISIT(self->BVector3Array_PyTypeObject);

        Py_VISIT(self->DVector3_PyTypeObject);
        Py_VISIT(self->DVector3Array_PyTypeObject);

        Py_VISIT(self->FVector3_PyTypeObject);
        Py_VISIT(self->FVector3Array_PyTypeObject);

        Py_VISIT(self->I8Vector3_PyTypeObject);
        Py_VISIT(self->I8Vector3Array_PyTypeObject);

        Py_VISIT(self->U8Vector3_PyTypeObject);
        Py_VISIT(self->U8Vector3Array_PyTypeObject);

        Py_VISIT(self->I16Vector3_PyTypeObject);
        Py_VISIT(self->I16Vector3Array_PyTypeObject);

        Py_VISIT(self->U16Vector3_PyTypeObject);
        Py_VISIT(self->U16Vector3Array_PyTypeObject);

        Py_VISIT(self->I32Vector3_PyTypeObject);
        Py_VISIT(self->I32Vector3Array_PyTypeObject);

        Py_VISIT(self->U32Vector3_PyTypeObject);
        Py_VISIT(self->U32Vector3Array_PyTypeObject);

        Py_VISIT(self->IVector3_PyTypeObject);
        Py_VISIT(self->IVector3Array_PyTypeObject);

        Py_VISIT(self->UVector3_PyTypeObject);
        Py_VISIT(self->UVector3Array_PyTypeObject);

        Py_VISIT(self->I64Vector3_PyTypeObject);
        Py_VISIT(self->I64Vector3Array_PyTypeObject);

        Py_VISIT(self->U64Vector3_PyTypeObject);
        Py_VISIT(self->U64Vector3Array_PyTypeObject);

        Py_VISIT(self->BVector4_PyTypeObject);
        Py_VISIT(self->BVector4Array_PyTypeObject);

        Py_VISIT(self->DVector4_PyTypeObject);
        Py_VISIT(self->DVector4Array_PyTypeObject);

        Py_VISIT(self->FVector4_PyTypeObject);
        Py_VISIT(self->FVector4Array_PyTypeObject);

        Py_VISIT(self->I8Vector4_PyTypeObject);
        Py_VISIT(self->I8Vector4Array_PyTypeObject);

        Py_VISIT(self->U8Vector4_PyTypeObject);
        Py_VISIT(self->U8Vector4Array_PyTypeObject);

        Py_VISIT(self->I16Vector4_PyTypeObject);
        Py_VISIT(self->I16Vector4Array_PyTypeObject);

        Py_VISIT(self->U16Vector4_PyTypeObject);
        Py_VISIT(self->U16Vector4Array_PyTypeObject);

        Py_VISIT(self->I32Vector4_PyTypeObject);
        Py_VISIT(self->I32Vector4Array_PyTypeObject);

        Py_VISIT(self->U32Vector4_PyTypeObject);
        Py_VISIT(self->U32Vector4Array_PyTypeObject);

        Py_VISIT(self->IVector4_PyTypeObject);
        Py_VISIT(self->IVector4Array_PyTypeObject);

        Py_VISIT(self->UVector4_PyTypeObject);
        Py_VISIT(self->UVector4Array_PyTypeObject);

        Py_VISIT(self->I64Vector4_PyTypeObject);
        Py_VISIT(self->I64Vector4Array_PyTypeObject);

        Py_VISIT(self->U64Vector4_PyTypeObject);
        Py_VISIT(self->U64Vector4Array_PyTypeObject);

        Py_VISIT(self->DMatrix2x2_PyTypeObject);
        Py_VISIT(self->DMatrix2x2Array_PyTypeObject);

        Py_VISIT(self->FMatrix2x2_PyTypeObject);
        Py_VISIT(self->FMatrix2x2Array_PyTypeObject);

        Py_VISIT(self->DMatrix2x3_PyTypeObject);
        Py_VISIT(self->DMatrix2x3Array_PyTypeObject);

        Py_VISIT(self->FMatrix2x3_PyTypeObject);
        Py_VISIT(self->FMatrix2x3Array_PyTypeObject);

        Py_VISIT(self->DMatrix2x4_PyTypeObject);
        Py_VISIT(self->DMatrix2x4Array_PyTypeObject);

        Py_VISIT(self->FMatrix2x4_PyTypeObject);
        Py_VISIT(self->FMatrix2x4Array_PyTypeObject);

        Py_VISIT(self->DMatrix3x2_PyTypeObject);
        Py_VISIT(self->DMatrix3x2Array_PyTypeObject);

        Py_VISIT(self->FMatrix3x2_PyTypeObject);
        Py_VISIT(self->FMatrix3x2Array_PyTypeObject);

        Py_VISIT(self->DMatrix3x3_PyTypeObject);
        Py_VISIT(self->DMatrix3x3Array_PyTypeObject);

        Py_VISIT(self->FMatrix3x3_PyTypeObject);
        Py_VISIT(self->FMatrix3x3Array_PyTypeObject);

        Py_VISIT(self->DMatrix3x4_PyTypeObject);
        Py_VISIT(self->DMatrix3x4Array_PyTypeObject);

        Py_VISIT(self->FMatrix3x4_PyTypeObject);
        Py_VISIT(self->FMatrix3x4Array_PyTypeObject);

        Py_VISIT(self->DMatrix4x2_PyTypeObject);
        Py_VISIT(self->DMatrix4x2Array_PyTypeObject);

        Py_VISIT(self->FMatrix4x2_PyTypeObject);
        Py_VISIT(self->FMatrix4x2Array_PyTypeObject);

        Py_VISIT(self->DMatrix4x3_PyTypeObject);
        Py_VISIT(self->DMatrix4x3Array_PyTypeObject);

        Py_VISIT(self->FMatrix4x3_PyTypeObject);
        Py_VISIT(self->FMatrix4x3Array_PyTypeObject);

        Py_VISIT(self->DMatrix4x4_PyTypeObject);
        Py_VISIT(self->DMatrix4x4Array_PyTypeObject);

        Py_VISIT(self->FMatrix4x4_PyTypeObject);
        Py_VISIT(self->FMatrix4x4Array_PyTypeObject);

        Py_VISIT(self->DQuaternion_PyTypeObject);
        Py_VISIT(self->DQuaternionArray_PyTypeObject);

        Py_VISIT(self->FQuaternion_PyTypeObject);
        Py_VISIT(self->FQuaternionArray_PyTypeObject);


        Py_VISIT(self->BArray_PyTypeObject);

        Py_VISIT(self->DArray_PyTypeObject);

        Py_VISIT(self->FArray_PyTypeObject);

        Py_VISIT(self->I8Array_PyTypeObject);

        Py_VISIT(self->U8Array_PyTypeObject);

        Py_VISIT(self->I16Array_PyTypeObject);

        Py_VISIT(self->U16Array_PyTypeObject);

        Py_VISIT(self->I32Array_PyTypeObject);

        Py_VISIT(self->U32Array_PyTypeObject);

        Py_VISIT(self->IArray_PyTypeObject);

        Py_VISIT(self->UArray_PyTypeObject);

        Py_VISIT(self->I64Array_PyTypeObject);

        Py_VISIT(self->U64Array_PyTypeObject);

    return 0;
}


static int
ModuleState_clear(struct ModuleState *self)
{
    Py_CLEAR(self->ctypes_c_bool_p);
    Py_CLEAR(self->ctypes_c_int8_t_p);
    Py_CLEAR(self->ctypes_c_uint8_t_p);
    Py_CLEAR(self->ctypes_c_int16_t_p);
    Py_CLEAR(self->ctypes_c_uint16_t_p);
    Py_CLEAR(self->ctypes_c_int32_t_p);
    Py_CLEAR(self->ctypes_c_uint32_t_p);
    Py_CLEAR(self->ctypes_c_int64_t_p);
    Py_CLEAR(self->ctypes_c_uint64_t_p);
    Py_CLEAR(self->ctypes_c_int_p);
    Py_CLEAR(self->ctypes_c_unsigned_int_p);
    Py_CLEAR(self->ctypes_c_float_p);
    Py_CLEAR(self->ctypes_c_double_p);

        Py_CLEAR(self->BVector1_PyTypeObject);
        Py_CLEAR(self->BVector1Array_PyTypeObject);

        Py_CLEAR(self->DVector1_PyTypeObject);
        Py_CLEAR(self->DVector1Array_PyTypeObject);

        Py_CLEAR(self->FVector1_PyTypeObject);
        Py_CLEAR(self->FVector1Array_PyTypeObject);

        Py_CLEAR(self->I8Vector1_PyTypeObject);
        Py_CLEAR(self->I8Vector1Array_PyTypeObject);

        Py_CLEAR(self->U8Vector1_PyTypeObject);
        Py_CLEAR(self->U8Vector1Array_PyTypeObject);

        Py_CLEAR(self->I16Vector1_PyTypeObject);
        Py_CLEAR(self->I16Vector1Array_PyTypeObject);

        Py_CLEAR(self->U16Vector1_PyTypeObject);
        Py_CLEAR(self->U16Vector1Array_PyTypeObject);

        Py_CLEAR(self->I32Vector1_PyTypeObject);
        Py_CLEAR(self->I32Vector1Array_PyTypeObject);

        Py_CLEAR(self->U32Vector1_PyTypeObject);
        Py_CLEAR(self->U32Vector1Array_PyTypeObject);

        Py_CLEAR(self->IVector1_PyTypeObject);
        Py_CLEAR(self->IVector1Array_PyTypeObject);

        Py_CLEAR(self->UVector1_PyTypeObject);
        Py_CLEAR(self->UVector1Array_PyTypeObject);

        Py_CLEAR(self->I64Vector1_PyTypeObject);
        Py_CLEAR(self->I64Vector1Array_PyTypeObject);

        Py_CLEAR(self->U64Vector1_PyTypeObject);
        Py_CLEAR(self->U64Vector1Array_PyTypeObject);

        Py_CLEAR(self->BVector2_PyTypeObject);
        Py_CLEAR(self->BVector2Array_PyTypeObject);

        Py_CLEAR(self->DVector2_PyTypeObject);
        Py_CLEAR(self->DVector2Array_PyTypeObject);

        Py_CLEAR(self->FVector2_PyTypeObject);
        Py_CLEAR(self->FVector2Array_PyTypeObject);

        Py_CLEAR(self->I8Vector2_PyTypeObject);
        Py_CLEAR(self->I8Vector2Array_PyTypeObject);

        Py_CLEAR(self->U8Vector2_PyTypeObject);
        Py_CLEAR(self->U8Vector2Array_PyTypeObject);

        Py_CLEAR(self->I16Vector2_PyTypeObject);
        Py_CLEAR(self->I16Vector2Array_PyTypeObject);

        Py_CLEAR(self->U16Vector2_PyTypeObject);
        Py_CLEAR(self->U16Vector2Array_PyTypeObject);

        Py_CLEAR(self->I32Vector2_PyTypeObject);
        Py_CLEAR(self->I32Vector2Array_PyTypeObject);

        Py_CLEAR(self->U32Vector2_PyTypeObject);
        Py_CLEAR(self->U32Vector2Array_PyTypeObject);

        Py_CLEAR(self->IVector2_PyTypeObject);
        Py_CLEAR(self->IVector2Array_PyTypeObject);

        Py_CLEAR(self->UVector2_PyTypeObject);
        Py_CLEAR(self->UVector2Array_PyTypeObject);

        Py_CLEAR(self->I64Vector2_PyTypeObject);
        Py_CLEAR(self->I64Vector2Array_PyTypeObject);

        Py_CLEAR(self->U64Vector2_PyTypeObject);
        Py_CLEAR(self->U64Vector2Array_PyTypeObject);

        Py_CLEAR(self->BVector3_PyTypeObject);
        Py_CLEAR(self->BVector3Array_PyTypeObject);

        Py_CLEAR(self->DVector3_PyTypeObject);
        Py_CLEAR(self->DVector3Array_PyTypeObject);

        Py_CLEAR(self->FVector3_PyTypeObject);
        Py_CLEAR(self->FVector3Array_PyTypeObject);

        Py_CLEAR(self->I8Vector3_PyTypeObject);
        Py_CLEAR(self->I8Vector3Array_PyTypeObject);

        Py_CLEAR(self->U8Vector3_PyTypeObject);
        Py_CLEAR(self->U8Vector3Array_PyTypeObject);

        Py_CLEAR(self->I16Vector3_PyTypeObject);
        Py_CLEAR(self->I16Vector3Array_PyTypeObject);

        Py_CLEAR(self->U16Vector3_PyTypeObject);
        Py_CLEAR(self->U16Vector3Array_PyTypeObject);

        Py_CLEAR(self->I32Vector3_PyTypeObject);
        Py_CLEAR(self->I32Vector3Array_PyTypeObject);

        Py_CLEAR(self->U32Vector3_PyTypeObject);
        Py_CLEAR(self->U32Vector3Array_PyTypeObject);

        Py_CLEAR(self->IVector3_PyTypeObject);
        Py_CLEAR(self->IVector3Array_PyTypeObject);

        Py_CLEAR(self->UVector3_PyTypeObject);
        Py_CLEAR(self->UVector3Array_PyTypeObject);

        Py_CLEAR(self->I64Vector3_PyTypeObject);
        Py_CLEAR(self->I64Vector3Array_PyTypeObject);

        Py_CLEAR(self->U64Vector3_PyTypeObject);
        Py_CLEAR(self->U64Vector3Array_PyTypeObject);

        Py_CLEAR(self->BVector4_PyTypeObject);
        Py_CLEAR(self->BVector4Array_PyTypeObject);

        Py_CLEAR(self->DVector4_PyTypeObject);
        Py_CLEAR(self->DVector4Array_PyTypeObject);

        Py_CLEAR(self->FVector4_PyTypeObject);
        Py_CLEAR(self->FVector4Array_PyTypeObject);

        Py_CLEAR(self->I8Vector4_PyTypeObject);
        Py_CLEAR(self->I8Vector4Array_PyTypeObject);

        Py_CLEAR(self->U8Vector4_PyTypeObject);
        Py_CLEAR(self->U8Vector4Array_PyTypeObject);

        Py_CLEAR(self->I16Vector4_PyTypeObject);
        Py_CLEAR(self->I16Vector4Array_PyTypeObject);

        Py_CLEAR(self->U16Vector4_PyTypeObject);
        Py_CLEAR(self->U16Vector4Array_PyTypeObject);

        Py_CLEAR(self->I32Vector4_PyTypeObject);
        Py_CLEAR(self->I32Vector4Array_PyTypeObject);

        Py_CLEAR(self->U32Vector4_PyTypeObject);
        Py_CLEAR(self->U32Vector4Array_PyTypeObject);

        Py_CLEAR(self->IVector4_PyTypeObject);
        Py_CLEAR(self->IVector4Array_PyTypeObject);

        Py_CLEAR(self->UVector4_PyTypeObject);
        Py_CLEAR(self->UVector4Array_PyTypeObject);

        Py_CLEAR(self->I64Vector4_PyTypeObject);
        Py_CLEAR(self->I64Vector4Array_PyTypeObject);

        Py_CLEAR(self->U64Vector4_PyTypeObject);
        Py_CLEAR(self->U64Vector4Array_PyTypeObject);

        Py_CLEAR(self->DMatrix2x2_PyTypeObject);
        Py_CLEAR(self->DMatrix2x2Array_PyTypeObject);

        Py_CLEAR(self->FMatrix2x2_PyTypeObject);
        Py_CLEAR(self->FMatrix2x2Array_PyTypeObject);

        Py_CLEAR(self->DMatrix2x3_PyTypeObject);
        Py_CLEAR(self->DMatrix2x3Array_PyTypeObject);

        Py_CLEAR(self->FMatrix2x3_PyTypeObject);
        Py_CLEAR(self->FMatrix2x3Array_PyTypeObject);

        Py_CLEAR(self->DMatrix2x4_PyTypeObject);
        Py_CLEAR(self->DMatrix2x4Array_PyTypeObject);

        Py_CLEAR(self->FMatrix2x4_PyTypeObject);
        Py_CLEAR(self->FMatrix2x4Array_PyTypeObject);

        Py_CLEAR(self->DMatrix3x2_PyTypeObject);
        Py_CLEAR(self->DMatrix3x2Array_PyTypeObject);

        Py_CLEAR(self->FMatrix3x2_PyTypeObject);
        Py_CLEAR(self->FMatrix3x2Array_PyTypeObject);

        Py_CLEAR(self->DMatrix3x3_PyTypeObject);
        Py_CLEAR(self->DMatrix3x3Array_PyTypeObject);

        Py_CLEAR(self->FMatrix3x3_PyTypeObject);
        Py_CLEAR(self->FMatrix3x3Array_PyTypeObject);

        Py_CLEAR(self->DMatrix3x4_PyTypeObject);
        Py_CLEAR(self->DMatrix3x4Array_PyTypeObject);

        Py_CLEAR(self->FMatrix3x4_PyTypeObject);
        Py_CLEAR(self->FMatrix3x4Array_PyTypeObject);

        Py_CLEAR(self->DMatrix4x2_PyTypeObject);
        Py_CLEAR(self->DMatrix4x2Array_PyTypeObject);

        Py_CLEAR(self->FMatrix4x2_PyTypeObject);
        Py_CLEAR(self->FMatrix4x2Array_PyTypeObject);

        Py_CLEAR(self->DMatrix4x3_PyTypeObject);
        Py_CLEAR(self->DMatrix4x3Array_PyTypeObject);

        Py_CLEAR(self->FMatrix4x3_PyTypeObject);
        Py_CLEAR(self->FMatrix4x3Array_PyTypeObject);

        Py_CLEAR(self->DMatrix4x4_PyTypeObject);
        Py_CLEAR(self->DMatrix4x4Array_PyTypeObject);

        Py_CLEAR(self->FMatrix4x4_PyTypeObject);
        Py_CLEAR(self->FMatrix4x4Array_PyTypeObject);

        Py_CLEAR(self->DQuaternion_PyTypeObject);
        Py_CLEAR(self->DQuaternionArray_PyTypeObject);

        Py_CLEAR(self->FQuaternion_PyTypeObject);
        Py_CLEAR(self->FQuaternionArray_PyTypeObject);


        Py_CLEAR(self->BArray_PyTypeObject);

        Py_CLEAR(self->DArray_PyTypeObject);

        Py_CLEAR(self->FArray_PyTypeObject);

        Py_CLEAR(self->I8Array_PyTypeObject);

        Py_CLEAR(self->U8Array_PyTypeObject);

        Py_CLEAR(self->I16Array_PyTypeObject);

        Py_CLEAR(self->U16Array_PyTypeObject);

        Py_CLEAR(self->I32Array_PyTypeObject);

        Py_CLEAR(self->U32Array_PyTypeObject);

        Py_CLEAR(self->IArray_PyTypeObject);

        Py_CLEAR(self->UArray_PyTypeObject);

        Py_CLEAR(self->I64Array_PyTypeObject);

        Py_CLEAR(self->U64Array_PyTypeObject);

    return 0;
}


static ModuleState *
get_module_state()
{
    PyObject *module = get_module();
    if (!module){ return 0; }
    return (ModuleState *)PyModule_GetState(module);
}

#endif
