/*
 * Module code.
 *
 * Generated by SIP 6.15.3
 *
 * Copyright (c) 2024 Riverbank Computing Limited <info@riverbankcomputing.com>
 * 
 * This file is part of PyQt3D.
 * 
 * This file may be used under the terms of the GNU General Public License
 * version 3.0 as published by the Free Software Foundation and appearing in
 * the file LICENSE included in the packaging of this file.  Please review the
 * following information to ensure the GNU General Public License version 3.0
 * requirements will be met: http://www.gnu.org/copyleft/gpl.html.
 * 
 * If you do not wish to use this file under the terms of the GPL version 3.0
 * then you may purchase a commercial license.  For more information contact
 * info@riverbankcomputing.com.
 * 
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

#include "sipAPIQt3DLogic.h"

#line 28 "/usr/lib/python3.14/site-packages/PyQt5/bindings/QtCore/qobject.sip"
#include <qobject.h>
#line 29 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipQt3DLogiccmodule.cpp"
#line 26 "/usr/lib/python3.14/site-packages/PyQt5/bindings/QtCore/qmetaobject.sip"
#include <qmetaobject.h>
#line 32 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipQt3DLogiccmodule.cpp"
#line 26 "/usr/lib/python3.14/site-packages/PyQt5/bindings/QtCore/qcoreevent.sip"
#include <qcoreevent.h>
#line 35 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipQt3DLogiccmodule.cpp"
#line 252 "/usr/lib/python3.14/site-packages/PyQt5/bindings/QtCore/qcoreevent.sip"
#include <qcoreevent.h>
#line 38 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipQt3DLogiccmodule.cpp"
#line 240 "/usr/lib/python3.14/site-packages/PyQt5/bindings/QtCore/qcoreevent.sip"
#include <qcoreevent.h>
#line 41 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipQt3DLogiccmodule.cpp"
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qsharedpointer.sip"
#include <qsharedpointer.h>
#line 44 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipQt3DLogiccmodule.cpp"
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qabstractaspect.sip"
#include <qabstractaspect.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qaspectengine.sip"
#include <qaspectengine.h>
#line 28 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qabstractskeleton.sip"
#include <qabstractskeleton.h>
#line 28 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qarmature.sip"
#include <qarmature.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qbackendnode.sip"
#include <qbackendnode.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qcomponent.sip"
#include <qcomponent.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qcomponentaddedchange.sip"
#include <qcomponentaddedchange.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qcomponentremovedchange.sip"
#include <qcomponentremovedchange.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qdynamicpropertyupdatedchange.sip"
#include <qdynamicpropertyupdatedchange.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qentity.sip"
#include <qentity.h>
#line 28 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qjoint.sip"
#include <qjoint.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qnode.sip"
#include <qnode.h>
#line 28 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qnodecommand.sip"
#include <qnodecommand.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qnodecreatedchange.sip"
#include <qnodecreatedchange.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qnodedestroyedchange.sip"
#include <qnodedestroyedchange.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qnodeid.sip"
#include <qnodeid.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qpropertynodeaddedchange.sip"
#include <qpropertynodeaddedchange.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qpropertynoderemovedchange.sip"
#include <qpropertynoderemovedchange.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qpropertyupdatedchange.sip"
#include <qpropertyupdatedchange.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qpropertyupdatedchangebase.sip"
#include <qpropertyupdatedchangebase.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qpropertyvalueaddedchange.sip"
#include <qpropertyvalueaddedchange.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qpropertyvalueaddedchangebase.sip"
#include <qpropertyvalueaddedchangebase.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qpropertyvalueremovedchange.sip"
#include <qpropertyvalueremovedchange.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qpropertyvalueremovedchangebase.sip"
#include <qpropertyvalueremovedchangebase.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qscenechange.sip"
#include <qscenechange.h>
#line 53 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qscenechange.sip"
#include <qscenechange.h>
#line 97 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipQt3DLogiccmodule.cpp"
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DLogic/qframeaction.sip"
#include <qframeaction.h>
#line 32 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DLogic/qframeaction.sip"
#include <qframeaction.h>
#line 102 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipQt3DLogiccmodule.cpp"
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DLogic/qframeaction.sip"
#include <qframeaction.h>
#line 26 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DLogic/qlogicaspect.sip"
#include <qlogicaspect.h>
#line 32 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DLogic/qlogicaspect.sip"
#include <qlogicaspect.h>
#line 109 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipQt3DLogiccmodule.cpp"

/* Define the strings used by this module. */
const char sipStrings_Qt3DLogic[] = {
    'Q', 't', '3', 'D', 'L', 'o', 'g', 'i', 'c', ':', ':', 'Q', 'F', 'r', 'a', 'm', 'e', 'A', 'c', 't', 'i', 'o', 'n', 0,
    'Q', 't', '3', 'D', 'L', 'o', 'g', 'i', 'c', ':', ':', 'Q', 'L', 'o', 'g', 'i', 'c', 'A', 's', 'p', 'e', 'c', 't', 0,
    'd', 'i', 's', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'N', 'o', 't', 'i', 'f', 'y', 0,
    's', 'c', 'e', 'n', 'e', 'C', 'h', 'a', 'n', 'g', 'e', 'E', 'v', 'e', 'n', 't', 0,
    'P', 'y', 'Q', 't', '5', '.', 'Q', 't', '3', 'D', 'L', 'o', 'g', 'i', 'c', 0,
    'c', 'u', 's', 't', 'o', 'm', 'E', 'v', 'e', 'n', 't', 0,
    'e', 'v', 'e', 'n', 't', 'F', 'i', 'l', 't', 'e', 'r', 0,
    'c', 'h', 'i', 'l', 'd', 'E', 'v', 'e', 'n', 't', 0,
    't', 'i', 'm', 'e', 'r', 'E', 'v', 'e', 'n', 't', 0,
    't', 'r', 'i', 'g', 'g', 'e', 'r', 'e', 'd', 0,
    'p', 'a', 'r', 'e', 'n', 't', 0,
    'e', 'v', 'e', 'n', 't', 0,
};

void sipVH_Qt3DLogic_6(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod, const ::Qt3DCore::QSceneChangePtr& a0)
{
    sipCallProcedureMethod(sipGILState, sipErrorHandler, sipPySelf, sipMethod, "N", new ::Qt3DCore::QSceneChangePtr(a0), sipType_QSharedPointer_0100Qt3DCore_QSceneChange, SIP_NULLPTR);
}

bool sipVH_Qt3DLogic_5(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod, ::QEvent*a0)
{
    bool sipRes = 0;
    PyObject *sipResObj = sipCallMethod(SIP_NULLPTR, sipMethod, "D", a0, sipType_QEvent, SIP_NULLPTR);

    sipParseResultEx(sipGILState, sipErrorHandler, sipPySelf, sipMethod, sipResObj, "b", &sipRes);

    return sipRes;
}

bool sipVH_Qt3DLogic_4(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod, ::QObject*a0, ::QEvent*a1)
{
    bool sipRes = 0;
    PyObject *sipResObj = sipCallMethod(SIP_NULLPTR, sipMethod, "DD", a0, sipType_QObject, SIP_NULLPTR, a1, sipType_QEvent, SIP_NULLPTR);

    sipParseResultEx(sipGILState, sipErrorHandler, sipPySelf, sipMethod, sipResObj, "b", &sipRes);

    return sipRes;
}

void sipVH_Qt3DLogic_3(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod, ::QTimerEvent*a0)
{
    sipCallProcedureMethod(sipGILState, sipErrorHandler, sipPySelf, sipMethod, "D", a0, sipType_QTimerEvent, SIP_NULLPTR);
}

void sipVH_Qt3DLogic_2(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod, ::QChildEvent*a0)
{
    sipCallProcedureMethod(sipGILState, sipErrorHandler, sipPySelf, sipMethod, "D", a0, sipType_QChildEvent, SIP_NULLPTR);
}

void sipVH_Qt3DLogic_1(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod, ::QEvent*a0)
{
    sipCallProcedureMethod(sipGILState, sipErrorHandler, sipPySelf, sipMethod, "D", a0, sipType_QEvent, SIP_NULLPTR);
}

void sipVH_Qt3DLogic_0(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod, const ::QMetaMethod& a0)
{
    sipCallProcedureMethod(sipGILState, sipErrorHandler, sipPySelf, sipMethod, "N", new ::QMetaMethod(a0), sipType_QMetaMethod, SIP_NULLPTR);
}


/* Convert to a sub-class if possible. */
extern "C" {static const sipTypeDef *sipSubClass_Qt3DLogic_QFrameAction(void **);}
static const sipTypeDef *sipSubClass_Qt3DLogic_QFrameAction(void **sipCppRet)
{
    ::QObject *sipCpp = reinterpret_cast< ::QObject *>(*sipCppRet);
    const sipTypeDef *sipType;

#line 36 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DLogic/qframeaction.sip"
        static struct class_graph {
            const char *name;
            sipTypeDef **type;
            int yes, no;
        } graph[] = {
            {sipName_Qt3DLogic__QLogicAspect, &sipType_Qt3DLogic_QLogicAspect, -1, 1},
            {sipName_Qt3DLogic__QFrameAction, &sipType_Qt3DLogic_QFrameAction, -1, -1},
        };
        
        int i = 0;
        
        sipType = NULL;
        
        do
        {
            struct class_graph *cg = &graph[i];
        
            if (cg->name != NULL && sipCpp->inherits(cg->name))
            {
                sipType = *cg->type;
                i = cg->yes;
            }
            else
                i = cg->no;
        }
        while (i >= 0);
#line 207 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipQt3DLogiccmodule.cpp"

    return sipType;
}


/*
 * This defines each type in this module.
 */
sipTypeDef *sipExportedTypes_Qt3DLogic[] = {
    &sipTypeDef_Qt3DLogic_Qt3DLogic_QFrameAction.ctd_base,
    &sipTypeDef_Qt3DLogic_Qt3DLogic_QLogicAspect.ctd_base,
};


/* This defines the types that this module needs to import from QtCore. */
sipImportedTypeDef sipImportedTypes_Qt3DLogic_QtCore[] = {
    {"QChildEvent"},
    {"QEvent"},
    {"QMetaMethod"},
    {"QObject"},
    {"QTimerEvent"},
    {SIP_NULLPTR}
};


/*
 * This defines the virtual error handlers that this module needs to import
 * from QtCore.
 */
sipImportedVirtErrorHandlerDef sipImportedVirtErrorHandlers_Qt3DLogic_QtCore[] = {
    {"PyQt5"},
    {SIP_NULLPTR}
};


/* This defines the types that this module needs to import from Qt3DCore. */
sipImportedTypeDef sipImportedTypes_Qt3DLogic_Qt3DCore[] = {
    {"QSharedPointer<Qt3DCore::QSceneChange>"},
    {"Qt3DCore::QAbstractAspect"},
    {"Qt3DCore::QComponent"},
    {"Qt3DCore::QNode"},
    {SIP_NULLPTR}
};


/* This defines the modules that this module needs to import. */
static sipImportedModuleDef importsTable[] = {
    {"PyQt5.QtCore", sipImportedTypes_Qt3DLogic_QtCore, sipImportedVirtErrorHandlers_Qt3DLogic_QtCore, SIP_NULLPTR},
    {"PyQt5.QtGui", SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR},
    {"PyQt5.Qt3DCore", sipImportedTypes_Qt3DLogic_Qt3DCore, SIP_NULLPTR, SIP_NULLPTR},
    {SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR}
};


/* This defines the class sub-convertors that this module defines. */
static sipSubClassConvertorDef convertorsTable[] = {
    {sipSubClass_Qt3DLogic_QFrameAction, {3, 0, 0}, SIP_NULLPTR},
    {SIP_NULLPTR, {0, 0, 0}, SIP_NULLPTR}
};


/* This defines this module. */
sipExportedModuleDef sipModuleAPI_Qt3DLogic = {
    SIP_NULLPTR,
    15,
    sipNameNr_PyQt5_Qt3DLogic,
    0,
    sipStrings_Qt3DLogic,
    importsTable,
    SIP_NULLPTR,
    2,
    sipExportedTypes_Qt3DLogic,
    SIP_NULLPTR,
    0,
    SIP_NULLPTR,
    0,
    SIP_NULLPTR,
    SIP_NULLPTR,
    convertorsTable,
    {SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR},
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
};


/* The SIP API and the APIs of any imported modules. */
const sipAPIDef *sipAPI_Qt3DLogic;

sip_qt_metaobject_func sip_Qt3DLogic_qt_metaobject;
sip_qt_metacall_func sip_Qt3DLogic_qt_metacall;
sip_qt_metacast_func sip_Qt3DLogic_qt_metacast;


/* The Python module initialisation function. */
#if defined(SIP_STATIC_MODULE)
extern "C" PyObject *PyInit_Qt3DLogic()
#else
PyMODINIT_FUNC PyInit_Qt3DLogic()
#endif
{
    static PyMethodDef sip_methods[] = {
        {SIP_NULLPTR, SIP_NULLPTR, 0, SIP_NULLPTR}
    };
    static PyModuleDef sip_module_def = {
        PyModuleDef_HEAD_INIT,
        "PyQt5.Qt3DLogic",
        SIP_NULLPTR,
        -1,
        sip_methods,
        SIP_NULLPTR,
        SIP_NULLPTR,
        SIP_NULLPTR,
        SIP_NULLPTR
    };

    PyObject *sipModule, *sipModuleDict;
    PyObject *sip_sipmod, *sip_capiobj;

    /* Initialise the module and get it's dictionary. */
    if ((sipModule = PyModule_Create(&sip_module_def)) == SIP_NULLPTR)
        return SIP_NULLPTR;

    sipModuleDict = PyModule_GetDict(sipModule);

    /* Get the SIP module's API. */
    if ((sip_sipmod = PyImport_ImportModule("PyQt5.sip")) == SIP_NULLPTR)
    {
        Py_DECREF(sipModule);
        return SIP_NULLPTR;
    }

    sip_capiobj = PyDict_GetItemString(PyModule_GetDict(sip_sipmod), "_C_API");
    Py_DECREF(sip_sipmod);

    if (sip_capiobj == SIP_NULLPTR || !PyCapsule_CheckExact(sip_capiobj))
    {
        PyErr_SetString(PyExc_AttributeError, "PyQt5.sip._C_API is missing or has the wrong type");
        Py_DECREF(sipModule);
        return SIP_NULLPTR;
    }

    sipAPI_Qt3DLogic = reinterpret_cast<const sipAPIDef *>(PyCapsule_GetPointer(sip_capiobj, "PyQt5.sip._C_API"));

    if (sipAPI_Qt3DLogic == SIP_NULLPTR)
    {
        Py_DECREF(sipModule);
        return SIP_NULLPTR;
    }

    /* Export the module and publish it's API. */
    if (sipExportModule(&sipModuleAPI_Qt3DLogic, 12, 15, 0) < 0)
    {
        Py_DECREF(sipModule);
        return SIP_NULLPTR;
    }


    sip_Qt3DLogic_qt_metaobject = (sip_qt_metaobject_func)sipImportSymbol("qtcore_qt_metaobject");
    sip_Qt3DLogic_qt_metacall = (sip_qt_metacall_func)sipImportSymbol("qtcore_qt_metacall");
    sip_Qt3DLogic_qt_metacast = (sip_qt_metacast_func)sipImportSymbol("qtcore_qt_metacast");

    if (!sip_Qt3DLogic_qt_metacast)
        Py_FatalError("Unable to import qtcore_qt_metacast");

    /* Initialise the module now all its dependencies have been set up. */
    if (sipInitModule(&sipModuleAPI_Qt3DLogic, sipModuleDict) < 0)
    {
        Py_DECREF(sipModule);
        return SIP_NULLPTR;
    }

    return sipModule;
}
