/*
 * Internal module API header file.
 *
 * 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.
 */

#ifndef _Qt3DLogicAPI_H
#define _Qt3DLogicAPI_H

#if !defined(Py_LIMITED_API)
#define Py_LIMITED_API
#endif

#include "sip.h"

#include <QMetaType>
#include <QThread>

/* These are the qualifiers that are enabled. */
#define SIP_FEATURE_PyQt_CONSTEXPR
#define SIP_FEATURE_PyQt_MacOSXOnly
#define SIP_FEATURE_PyQt_Process
#define SIP_FEATURE_PyQt_NotBootstrapped
#define SIP_FEATURE_PyQt_Desktop_OpenGL
#define SIP_FEATURE_PyQt_OpenGL
#define SIP_FEATURE_PyQt_RawFont
#define SIP_FEATURE_PyQt_PrintPreviewDialog
#define SIP_FEATURE_PyQt_PrintPreviewWidget
#define SIP_FEATURE_PyQt_Printer
#define SIP_FEATURE_PyQt_PrintDialog
#define SIP_FEATURE_Py_v3
#define SIP_FEATURE_PyQt_qreal_double
#define SIP_FEATURE_PyQt_SSL
#define SIP_FEATURE_PyQt_SessionManager
#define SIP_FEATURE_PyQt_Accessibility
#define SIP_PLATFORM_WS_X11


/*
 * Convenient names to refer to various strings defined in this module.
 * Only the class names are part of the public API.
 */
#define sipNameNr_Qt3DLogic__QFrameAction 0
#define sipName_Qt3DLogic__QFrameAction &sipStrings_Qt3DLogic[0]
#define sipNameNr_Qt3DLogic__QLogicAspect 24
#define sipName_Qt3DLogic__QLogicAspect &sipStrings_Qt3DLogic[24]
#define sipNameNr_disconnectNotify 48
#define sipName_disconnectNotify &sipStrings_Qt3DLogic[48]
#define sipNameNr_sceneChangeEvent 65
#define sipName_sceneChangeEvent &sipStrings_Qt3DLogic[65]
#define sipNameNr_PyQt5_Qt3DLogic 82
#define sipName_PyQt5_Qt3DLogic &sipStrings_Qt3DLogic[82]
#define sipNameNr_connectNotify 51
#define sipName_connectNotify &sipStrings_Qt3DLogic[51]
#define sipNameNr_QFrameAction 11
#define sipName_QFrameAction &sipStrings_Qt3DLogic[11]
#define sipNameNr_QLogicAspect 35
#define sipName_QLogicAspect &sipStrings_Qt3DLogic[35]
#define sipNameNr_customEvent 98
#define sipName_customEvent &sipStrings_Qt3DLogic[98]
#define sipNameNr_eventFilter 110
#define sipName_eventFilter &sipStrings_Qt3DLogic[110]
#define sipNameNr_childEvent 122
#define sipName_childEvent &sipStrings_Qt3DLogic[122]
#define sipNameNr_timerEvent 133
#define sipName_timerEvent &sipStrings_Qt3DLogic[133]
#define sipNameNr_Qt3DLogic 88
#define sipName_Qt3DLogic &sipStrings_Qt3DLogic[88]
#define sipNameNr_triggered 144
#define sipName_triggered &sipStrings_Qt3DLogic[144]
#define sipNameNr_parent 154
#define sipName_parent &sipStrings_Qt3DLogic[154]
#define sipNameNr_event 161
#define sipName_event &sipStrings_Qt3DLogic[161]

#define sipMalloc                   sipAPI_Qt3DLogic->api_malloc
#define sipFree                     sipAPI_Qt3DLogic->api_free
#define sipBuildResult              sipAPI_Qt3DLogic->api_build_result
#define sipCallMethod               sipAPI_Qt3DLogic->api_call_method
#define sipCallProcedureMethod      sipAPI_Qt3DLogic->api_call_procedure_method
#define sipCallErrorHandler         sipAPI_Qt3DLogic->api_call_error_handler
#define sipParseResultEx            sipAPI_Qt3DLogic->api_parse_result_ex
#define sipParseResult              sipAPI_Qt3DLogic->api_parse_result
#define sipParseArgs                sipAPI_Qt3DLogic->api_parse_args
#define sipParseKwdArgs             sipAPI_Qt3DLogic->api_parse_kwd_args
#define sipParsePair                sipAPI_Qt3DLogic->api_parse_pair
#define sipInstanceDestroyed        sipAPI_Qt3DLogic->api_instance_destroyed
#define sipInstanceDestroyedEx      sipAPI_Qt3DLogic->api_instance_destroyed_ex
#define sipConvertFromSequenceIndex sipAPI_Qt3DLogic->api_convert_from_sequence_index
#define sipConvertFromSliceObject   sipAPI_Qt3DLogic->api_convert_from_slice_object
#define sipConvertFromVoidPtr       sipAPI_Qt3DLogic->api_convert_from_void_ptr
#define sipConvertToVoidPtr         sipAPI_Qt3DLogic->api_convert_to_void_ptr
#define sipAddException             sipAPI_Qt3DLogic->api_add_exception
#define sipNoFunction               sipAPI_Qt3DLogic->api_no_function
#define sipNoMethod                 sipAPI_Qt3DLogic->api_no_method
#define sipAbstractMethod           sipAPI_Qt3DLogic->api_abstract_method
#define sipBadClass                 sipAPI_Qt3DLogic->api_bad_class
#define sipBadCatcherResult         sipAPI_Qt3DLogic->api_bad_catcher_result
#define sipBadCallableArg           sipAPI_Qt3DLogic->api_bad_callable_arg
#define sipBadOperatorArg           sipAPI_Qt3DLogic->api_bad_operator_arg
#define sipTrace                    sipAPI_Qt3DLogic->api_trace
#define sipTransferBack             sipAPI_Qt3DLogic->api_transfer_back
#define sipTransferTo               sipAPI_Qt3DLogic->api_transfer_to
#define sipSimpleWrapper_Type       sipAPI_Qt3DLogic->api_simplewrapper_type
#define sipWrapper_Type             sipAPI_Qt3DLogic->api_wrapper_type
#define sipWrapperType_Type         sipAPI_Qt3DLogic->api_wrappertype_type
#define sipVoidPtr_Type             sipAPI_Qt3DLogic->api_voidptr_type
#define sipGetPyObject              sipAPI_Qt3DLogic->api_get_pyobject
#define sipGetAddress               sipAPI_Qt3DLogic->api_get_address
#define sipGetMixinAddress          sipAPI_Qt3DLogic->api_get_mixin_address
#define sipGetCppPtr                sipAPI_Qt3DLogic->api_get_cpp_ptr
#define sipGetComplexCppPtr         sipAPI_Qt3DLogic->api_get_complex_cpp_ptr
#define sipCallHook                 sipAPI_Qt3DLogic->api_call_hook
#define sipEndThread                sipAPI_Qt3DLogic->api_end_thread
#define sipRaiseUnknownException    sipAPI_Qt3DLogic->api_raise_unknown_exception
#define sipRaiseTypeException       sipAPI_Qt3DLogic->api_raise_type_exception
#define sipBadLengthForSlice        sipAPI_Qt3DLogic->api_bad_length_for_slice
#define sipAddTypeInstance          sipAPI_Qt3DLogic->api_add_type_instance
#define sipPySlotExtend             sipAPI_Qt3DLogic->api_pyslot_extend
#define sipAddDelayedDtor           sipAPI_Qt3DLogic->api_add_delayed_dtor
#define sipCanConvertToType         sipAPI_Qt3DLogic->api_can_convert_to_type
#define sipConvertToType            sipAPI_Qt3DLogic->api_convert_to_type
#define sipForceConvertToType       sipAPI_Qt3DLogic->api_force_convert_to_type
#define sipConvertToEnum            sipAPI_Qt3DLogic->api_convert_to_enum
#define sipConvertToBool            sipAPI_Qt3DLogic->api_convert_to_bool
#define sipReleaseType              sipAPI_Qt3DLogic->api_release_type
#define sipConvertFromType          sipAPI_Qt3DLogic->api_convert_from_type
#define sipConvertFromNewType       sipAPI_Qt3DLogic->api_convert_from_new_type
#define sipConvertFromNewPyType     sipAPI_Qt3DLogic->api_convert_from_new_pytype
#define sipConvertFromEnum          sipAPI_Qt3DLogic->api_convert_from_enum
#define sipGetState                 sipAPI_Qt3DLogic->api_get_state
#define sipExportSymbol             sipAPI_Qt3DLogic->api_export_symbol
#define sipImportSymbol             sipAPI_Qt3DLogic->api_import_symbol
#define sipFindType                 sipAPI_Qt3DLogic->api_find_type
#define sipBytes_AsChar             sipAPI_Qt3DLogic->api_bytes_as_char
#define sipBytes_AsString           sipAPI_Qt3DLogic->api_bytes_as_string
#define sipString_AsASCIIChar       sipAPI_Qt3DLogic->api_string_as_ascii_char
#define sipString_AsASCIIString     sipAPI_Qt3DLogic->api_string_as_ascii_string
#define sipString_AsLatin1Char      sipAPI_Qt3DLogic->api_string_as_latin1_char
#define sipString_AsLatin1String    sipAPI_Qt3DLogic->api_string_as_latin1_string
#define sipString_AsUTF8Char        sipAPI_Qt3DLogic->api_string_as_utf8_char
#define sipString_AsUTF8String      sipAPI_Qt3DLogic->api_string_as_utf8_string
#define sipUnicode_AsWChar          sipAPI_Qt3DLogic->api_unicode_as_wchar
#define sipUnicode_AsWString        sipAPI_Qt3DLogic->api_unicode_as_wstring
#define sipConvertFromConstVoidPtr  sipAPI_Qt3DLogic->api_convert_from_const_void_ptr
#define sipConvertFromVoidPtrAndSize    sipAPI_Qt3DLogic->api_convert_from_void_ptr_and_size
#define sipConvertFromConstVoidPtrAndSize   sipAPI_Qt3DLogic->api_convert_from_const_void_ptr_and_size
#define sipWrappedTypeName(wt)      ((wt)->wt_td->td_cname)
#define sipGetReference             sipAPI_Qt3DLogic->api_get_reference
#define sipKeepReference            sipAPI_Qt3DLogic->api_keep_reference
#define sipRegisterProxyResolver    sipAPI_Qt3DLogic->api_register_proxy_resolver
#define sipRegisterPyType           sipAPI_Qt3DLogic->api_register_py_type
#define sipTypeFromPyTypeObject     sipAPI_Qt3DLogic->api_type_from_py_type_object
#define sipTypeScope                sipAPI_Qt3DLogic->api_type_scope
#define sipResolveTypedef           sipAPI_Qt3DLogic->api_resolve_typedef
#define sipRegisterAttributeGetter  sipAPI_Qt3DLogic->api_register_attribute_getter
#define sipEnableAutoconversion     sipAPI_Qt3DLogic->api_enable_autoconversion
#define sipInitMixin                sipAPI_Qt3DLogic->api_init_mixin
#define sipExportModule             sipAPI_Qt3DLogic->api_export_module
#define sipInitModule               sipAPI_Qt3DLogic->api_init_module
#define sipGetInterpreter           sipAPI_Qt3DLogic->api_get_interpreter
#define sipSetTypeUserData          sipAPI_Qt3DLogic->api_set_type_user_data
#define sipGetTypeUserData          sipAPI_Qt3DLogic->api_get_type_user_data
#define sipPyTypeDict               sipAPI_Qt3DLogic->api_py_type_dict
#define sipPyTypeName               sipAPI_Qt3DLogic->api_py_type_name
#define sipGetCFunction             sipAPI_Qt3DLogic->api_get_c_function
#define sipGetMethod                sipAPI_Qt3DLogic->api_get_method
#define sipFromMethod               sipAPI_Qt3DLogic->api_from_method
#define sipGetDate                  sipAPI_Qt3DLogic->api_get_date
#define sipFromDate                 sipAPI_Qt3DLogic->api_from_date
#define sipGetDateTime              sipAPI_Qt3DLogic->api_get_datetime
#define sipFromDateTime             sipAPI_Qt3DLogic->api_from_datetime
#define sipGetTime                  sipAPI_Qt3DLogic->api_get_time
#define sipFromTime                 sipAPI_Qt3DLogic->api_from_time
#define sipIsUserType               sipAPI_Qt3DLogic->api_is_user_type
#define sipCheckPluginForType       sipAPI_Qt3DLogic->api_check_plugin_for_type
#define sipUnicodeNew               sipAPI_Qt3DLogic->api_unicode_new
#define sipUnicodeWrite             sipAPI_Qt3DLogic->api_unicode_write
#define sipUnicodeData              sipAPI_Qt3DLogic->api_unicode_data
#define sipGetBufferInfo            sipAPI_Qt3DLogic->api_get_buffer_info
#define sipReleaseBufferInfo        sipAPI_Qt3DLogic->api_release_buffer_info
#define sipIsOwnedByPython          sipAPI_Qt3DLogic->api_is_owned_by_python
#define sipIsDerivedClass           sipAPI_Qt3DLogic->api_is_derived_class
#define sipGetUserObject            sipAPI_Qt3DLogic->api_get_user_object
#define sipSetUserObject            sipAPI_Qt3DLogic->api_set_user_object
#define sipRegisterEventHandler     sipAPI_Qt3DLogic->api_register_event_handler
#define sipConvertToArray           sipAPI_Qt3DLogic->api_convert_to_array
#define sipConvertToTypedArray      sipAPI_Qt3DLogic->api_convert_to_typed_array
#define sipEnableGC                 sipAPI_Qt3DLogic->api_enable_gc
#define sipPrintObject              sipAPI_Qt3DLogic->api_print_object
#define sipLong_AsChar              sipAPI_Qt3DLogic->api_long_as_char
#define sipLong_AsSignedChar        sipAPI_Qt3DLogic->api_long_as_signed_char
#define sipLong_AsUnsignedChar      sipAPI_Qt3DLogic->api_long_as_unsigned_char
#define sipLong_AsShort             sipAPI_Qt3DLogic->api_long_as_short
#define sipLong_AsUnsignedShort     sipAPI_Qt3DLogic->api_long_as_unsigned_short
#define sipLong_AsInt               sipAPI_Qt3DLogic->api_long_as_int
#define sipLong_AsUnsignedInt       sipAPI_Qt3DLogic->api_long_as_unsigned_int
#define sipLong_AsLong              sipAPI_Qt3DLogic->api_long_as_long
#define sipLong_AsUnsignedLong      sipAPI_Qt3DLogic->api_long_as_unsigned_long
#define sipLong_AsLongLong          sipAPI_Qt3DLogic->api_long_as_long_long
#define sipLong_AsUnsignedLongLong  sipAPI_Qt3DLogic->api_long_as_unsigned_long_long
#define sipLong_AsSizeT             sipAPI_Qt3DLogic->api_long_as_size_t
#define sipVisitWrappers            sipAPI_Qt3DLogic->api_visit_wrappers
#define sipRegisterExitNotifier     sipAPI_Qt3DLogic->api_register_exit_notifier
#define sipDeprecated               sipAPI_Qt3DLogic->api_deprecated
#define sipPyTypeDictRef            sipAPI_Qt3DLogic->api_py_type_dict_ref
#define sipNextExceptionHandler     sipAPI_Qt3DLogic->api_next_exception_handler
#define sipSetNewUserTypeHandler    sipAPI_Qt3DLogic->api_set_new_user_type_handler
#define sipGetFrame                 sipAPI_Qt3DLogic->api_get_frame
#define sipSetDestroyOnExit         sipAPI_Qt3DLogic->api_set_destroy_on_exit
#define sipEnableOverflowChecking   sipAPI_Qt3DLogic->api_enable_overflow_checking
#define sipIsAPIEnabled             sipAPI_Qt3DLogic->api_is_api_enabled
#define sipClearAnySlotReference    sipAPI_Qt3DLogic->api_clear_any_slot_reference
#define sipConnectRx                sipAPI_Qt3DLogic->api_connect_rx
#define sipConvertRx                sipAPI_Qt3DLogic->api_convert_rx
#define sipDisconnectRx             sipAPI_Qt3DLogic->api_disconnect_rx
#define sipFreeSipslot              sipAPI_Qt3DLogic->api_free_sipslot
#define sipInvokeSlot               sipAPI_Qt3DLogic->api_invoke_slot
#define sipInvokeSlotEx             sipAPI_Qt3DLogic->api_invoke_slot_ex
#define sipSameSlot                 sipAPI_Qt3DLogic->api_same_slot
#define sipSaveSlot                 sipAPI_Qt3DLogic->api_save_slot
#define sipVisitSlot                sipAPI_Qt3DLogic->api_visit_slot
#define sipIsPyMethod               sipAPI_Qt3DLogic->api_is_py_method_12_8

/* The strings used by this module. */
extern const char sipStrings_Qt3DLogic[];


#define sipType_Qt3DLogic_QFrameAction sipExportedTypes_Qt3DLogic[0]

extern sipClassTypeDef sipTypeDef_Qt3DLogic_Qt3DLogic_QFrameAction;

#define sipType_Qt3DLogic_QLogicAspect sipExportedTypes_Qt3DLogic[1]

extern sipClassTypeDef sipTypeDef_Qt3DLogic_Qt3DLogic_QLogicAspect;

/* The SIP API, this module's API and the APIs of any imported modules. */
extern const sipAPIDef *sipAPI_Qt3DLogic;
extern sipExportedModuleDef sipModuleAPI_Qt3DLogic;
extern sipTypeDef *sipExportedTypes_Qt3DLogic[];

#define sipType_QObject sipImportedTypes_Qt3DLogic_QtCore[3].it_td

#define sipType_QEvent sipImportedTypes_Qt3DLogic_QtCore[1].it_td

#define sipType_QTimerEvent sipImportedTypes_Qt3DLogic_QtCore[4].it_td

#define sipType_QChildEvent sipImportedTypes_Qt3DLogic_QtCore[0].it_td

#define sipType_QMetaMethod sipImportedTypes_Qt3DLogic_QtCore[2].it_td
extern sipImportedTypeDef sipImportedTypes_Qt3DLogic_QtCore[];
extern sipImportedVirtErrorHandlerDef sipImportedVirtErrorHandlers_Qt3DLogic_QtCore[];

#define sipType_Qt3DCore_QAbstractAspect sipImportedTypes_Qt3DLogic_Qt3DCore[1].it_td

#define sipType_Qt3DCore_QNode sipImportedTypes_Qt3DLogic_Qt3DCore[3].it_td

#define sipType_Qt3DCore_QComponent sipImportedTypes_Qt3DLogic_Qt3DCore[2].it_td

#define sipType_QSharedPointer_0100Qt3DCore_QSceneChange sipImportedTypes_Qt3DLogic_Qt3DCore[0].it_td
extern sipImportedTypeDef sipImportedTypes_Qt3DLogic_Qt3DCore[];

typedef const QMetaObject *(*sip_qt_metaobject_func)(sipSimpleWrapper *, sipTypeDef *);
extern sip_qt_metaobject_func sip_Qt3DLogic_qt_metaobject;

typedef int (*sip_qt_metacall_func)(sipSimpleWrapper *, sipTypeDef *, QMetaObject::Call, int, void **);
extern sip_qt_metacall_func sip_Qt3DLogic_qt_metacall;

typedef bool (*sip_qt_metacast_func)(sipSimpleWrapper *, const sipTypeDef *, const char *, void **);
extern sip_qt_metacast_func sip_Qt3DLogic_qt_metacast;
#line 100 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/sip/Qt3DCore/qsharedpointer.sip"

#include <qsharedpointer.h>


// The dtor for the saved QSharedPointer.
#if defined(SIP_USE_PYCAPSULE)
template<class T>
void qt3d_QspDtor(PyObject *capsule)
{
    delete reinterpret_cast<QSharedPointer<T> *>(
            PyCapsule_GetPointer(capsule, 0));
}
#else
template<class T>
void qt3d_QspDtor(void *shared)
{
    delete reinterpret_cast<QSharedPointer<T> *>(array);
}
#endif


template<class T>
bool qt3d_SaveQsp(PyObject *py, QSharedPointer<T> *qsp)
{
    // Wrap the copy in a Python object.
#if defined(SIP_USE_PYCAPSULE)
    PyObject *qsp_obj = PyCapsule_New(qsp, 0, qt3d_QspDtor<T>);
#else
    PyObject *qsp_obj = PyCObject_FromVoidPtr(qsp, qt3d_QspDto<T>r);
#endif

    if (!qsp_obj)
        return false;

    sipSetUserObject((sipSimpleWrapper *)py, qsp_obj);

    return true;
}

#line 329 "/build/python-pyqt5-3d/src/PyQt3D-5.15.7/build/Qt3DLogic/sipAPIQt3DLogic.h"

#endif
