| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650 |
- // qobject.sip generated by MetaSIP
- //
- // This file is part of the QtCore Python extension module.
- //
- // Copyright (c) 2026 Riverbank Computing Limited <info@riverbankcomputing.com>
- //
- // This file is part of PyQt6.
- //
- // 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.
- typedef QList<QObject *> QObjectList;
- class QObject /Supertype=PyQt6.sip.wrapper/
- {
- %TypeHeaderCode
- #include <qobject.h>
- %End
- %TypeCode
- // This is needed by the tr() handwritten implementation.
- #include <qcoreapplication.h>
- // These are the helper functions for QObject::findChild() and
- // QObject::findChildren.
- // Wrap the given type in a 1-tuple.
- static PyObject *qtcore_type_to_tuple(PyObject *type)
- {
- PyObject *tuple = PyTuple_New(1);
- if (tuple)
- {
- Py_INCREF(type);
- PyTuple_SetItem(tuple, 0, type);
- }
- return tuple;
- }
- // Check all elements of a given tuple are type objects and return a new
- // reference to the tuple if so.
- static PyObject *qtcore_check_tuple_types(PyObject *types)
- {
- for (Py_ssize_t i = 0; i < PyTuple_Size(types); ++i)
- if (!PyObject_TypeCheck(PyTuple_GetItem(types, i), &PyType_Type))
- {
- PyErr_SetString(PyExc_TypeError,
- "all elements of the types argument must be type objects");
- return 0;
- }
- Py_INCREF(types);
- return types;
- }
- // Do the main work of finding a child.
- static PyObject *qtcore_do_find_child(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options)
- {
- const QObjectList &children = parent->children();
- int i;
- for (i = 0; i < children.size(); ++i)
- {
- QObject *obj = children.at(i);
- PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0);
- if (!pyo)
- return 0;
- // Allow for proxies.
- QObject *resolved = reinterpret_cast<QObject *>(sipGetAddress((sipSimpleWrapper *)pyo));
- if (name.isNull() || resolved->objectName() == name)
- for (Py_ssize_t t = 0; t < PyTuple_Size(types); ++t)
- if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GetItem(types, t)))
- return pyo;
- Py_DECREF(pyo);
- }
- if (options == Qt::FindChildrenRecursively)
- for (i = 0; i < children.size(); ++i)
- {
- PyObject *pyo = qtcore_do_find_child(children.at(i), types, name, options);
- if (pyo != Py_None)
- return pyo;
- Py_DECREF(pyo);
- }
- Py_INCREF(Py_None);
- return Py_None;
- }
- // Find a child that is one of a number of types and with an optional name.
- static PyObject *qtcore_FindChild(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options)
- {
- // Check that the types checking was successful.
- if (!types)
- return 0;
- PyObject *child = qtcore_do_find_child(parent, types, name, options);
- Py_DECREF(types);
- return child;
- }
- // Do the main work of finding the children with a string name.
- static bool qtcore_do_find_children(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options, PyObject *list)
- {
- const QObjectList &children = parent->children();
- int i;
- for (i = 0; i < children.size(); ++i)
- {
- QObject *obj = children.at(i);
- PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0);
- if (!pyo)
- return false;
- // Allow for proxies.
- QObject *resolved = reinterpret_cast<QObject *>(sipGetAddress((sipSimpleWrapper *)pyo));
- if (name.isNull() || resolved->objectName() == name)
- for (Py_ssize_t t = 0; t < PyTuple_Size(types); ++t)
- if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GetItem(types, t)))
- if (PyList_Append(list, pyo) < 0)
- {
- Py_DECREF(pyo);
- return false;
- }
- Py_DECREF(pyo);
- if (options == Qt::FindChildrenRecursively)
- {
- bool ok = qtcore_do_find_children(obj, types, name, options, list);
- if (!ok)
- return false;
- }
- }
- return true;
- }
- // Find a child that is one of a number of types and with an optional string
- // name.
- static PyObject *qtcore_FindChildren(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options)
- {
- // Check that the types checking was successful.
- if (!types)
- return 0;
- PyObject *list = PyList_New(0);
- if (list)
- if (!qtcore_do_find_children(parent, types, name, options, list))
- Py_DECREF(list);
- Py_DECREF(types);
- return list;
- }
- // Do the main work of finding the children with a QRegularExpression name.
- static bool qtcore_do_find_children(const QObject *parent, PyObject *types, const QRegularExpression &re, Qt::FindChildOptions options, PyObject *list)
- {
- const QObjectList &children = parent->children();
- int i;
- for (i = 0; i < children.size(); ++i)
- {
- QObject *obj = children.at(i);
- PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0);
- if (!pyo)
- return false;
- QRegularExpressionMatch m = re.match(obj->objectName());
-
- if (m.hasMatch())
- for (Py_ssize_t t = 0; t < PyTuple_Size(types); ++t)
- if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GetItem(types, t)))
- if (PyList_Append(list, pyo) < 0)
- {
- Py_DECREF(pyo);
- return false;
- }
- Py_DECREF(pyo);
- if (options == Qt::FindChildrenRecursively)
- {
- bool ok = qtcore_do_find_children(obj, types, re, options, list);
- if (!ok)
- return false;
- }
- }
- return true;
- }
- // Find a child that is one of a number of types and with an optional
- // QRegularExpression name.
- static PyObject *qtcore_FindChildren(const QObject *parent, PyObject *types, const QRegularExpression &re, Qt::FindChildOptions options)
- {
- // Check that the types checking was successful.
- if (!types)
- return 0;
- PyObject *list = PyList_New(0);
- if (list)
- if (!qtcore_do_find_children(parent, types, re, options, list))
- Py_DECREF(list);
- Py_DECREF(types);
- return list;
- }
- %End
- %FinalisationCode
- return qpycore_qobject_finalisation(sipSelf, sipCpp, sipKwds, sipUnused);
- %End
- %ConvertToSubClassCode
- static struct class_graph {
- const char *name;
- sipTypeDef **type;
- int yes, no;
- } graph[] = {
- {sipName_QAbstractAnimation, &sipType_QAbstractAnimation, 24, 1},
- {sipName_QAbstractEventDispatcher, &sipType_QAbstractEventDispatcher, -1, 2},
- {sipName_QAbstractItemModel, &sipType_QAbstractItemModel, 30, 3},
- {sipName_QIODevice, &sipType_QIODevice, 39, 4},
- {sipName_QCoreApplication, &sipType_QCoreApplication, -1, 5},
- {sipName_QEventLoop, &sipType_QEventLoop, -1, 6},
- {sipName_QFileSelector, &sipType_QFileSelector, -1, 7},
- {sipName_QFileSystemWatcher, &sipType_QFileSystemWatcher, -1, 8},
- {sipName_QItemSelectionModel, &sipType_QItemSelectionModel, -1, 9},
- {sipName_QLibrary, &sipType_QLibrary, -1, 10},
- {sipName_QMimeData, &sipType_QMimeData, -1, 11},
- {sipName_QObjectCleanupHandler, &sipType_QObjectCleanupHandler, -1, 12},
- {sipName_QPluginLoader, &sipType_QPluginLoader, -1, 13},
- #if QT_VERSION >= 0x060a00
- {sipName_QPyAbstractRange, &sipType_QPyAbstractRange, 45, 14},
- #else
- {0, 0, 45, 14},
- #endif
- {sipName_QSettings, &sipType_QSettings, -1, 15},
- {sipName_QSharedMemory, &sipType_QSharedMemory, -1, 16},
- {sipName_QSignalMapper, &sipType_QSignalMapper, -1, 17},
- {sipName_QSocketNotifier, &sipType_QSocketNotifier, -1, 18},
- {sipName_QThread, &sipType_QThread, -1, 19},
- {sipName_QThreadPool, &sipType_QThreadPool, -1, 20},
- {sipName_QTimeLine, &sipType_QTimeLine, -1, 21},
- {sipName_QTimer, &sipType_QTimer, -1, 22},
- {sipName_QTranslator, &sipType_QTranslator, -1, 23},
- #if defined(Q_OS_WIN)
- {sipName_QWinEventNotifier, &sipType_QWinEventNotifier, -1, -1},
- #else
- {0, 0, -1, -1},
- #endif
- {sipName_QAnimationGroup, &sipType_QAnimationGroup, 27, 25},
- {sipName_QPauseAnimation, &sipType_QPauseAnimation, -1, 26},
- {sipName_QVariantAnimation, &sipType_QVariantAnimation, 29, -1},
- {sipName_QParallelAnimationGroup, &sipType_QParallelAnimationGroup, -1, 28},
- {sipName_QSequentialAnimationGroup, &sipType_QSequentialAnimationGroup, -1, -1},
- {sipName_QPropertyAnimation, &sipType_QPropertyAnimation, -1, -1},
- {sipName_QAbstractListModel, &sipType_QAbstractListModel, 35, 31},
- {sipName_QAbstractProxyModel, &sipType_QAbstractProxyModel, 36, 32},
- {sipName_QAbstractTableModel, &sipType_QAbstractTableModel, -1, 33},
- {sipName_QConcatenateTablesProxyModel, &sipType_QConcatenateTablesProxyModel, -1, 34},
- #if QT_VERSION >= 0x060a00
- {sipName_QRangeModel, &sipType_QRangeModel, -1, -1},
- #else
- {0, 0, -1, -1},
- #endif
- {sipName_QStringListModel, &sipType_QStringListModel, -1, -1},
- {sipName_QIdentityProxyModel, &sipType_QIdentityProxyModel, -1, 37},
- {sipName_QSortFilterProxyModel, &sipType_QSortFilterProxyModel, -1, 38},
- {sipName_QTransposeProxyModel, &sipType_QTransposeProxyModel, -1, -1},
- {sipName_QBuffer, &sipType_QBuffer, -1, 40},
- {sipName_QFileDevice, &sipType_QFileDevice, 42, 41},
- #if !defined(QT_NO_PROCESS)
- {sipName_QProcess, &sipType_QProcess, -1, -1},
- #else
- {0, 0, -1, -1},
- #endif
- {sipName_QFile, &sipType_QFile, 44, 43},
- {sipName_QSaveFile, &sipType_QSaveFile, -1, -1},
- {sipName_QTemporaryFile, &sipType_QTemporaryFile, -1, -1},
- #if QT_VERSION >= 0x060a00
- {sipName_QPySequenceRange, &sipType_QPySequenceRange, -1, 46},
- #else
- {0, 0, -1, 46},
- #endif
- #if QT_VERSION >= 0x060a00
- {sipName_QPyTableRange, &sipType_QPyTableRange, -1, -1},
- #else
- {0, 0, -1, -1},
- #endif
- };
-
- 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);
- %End
- %GCTraverseCode
- // Traverse any saved slots we might be connected to.
- sipRes = qpycore_visitSlotProxies(sipCpp, sipVisit, sipArg);
- %End
- %GCClearCode
- // Clear any saved slots we might be connected to.
- sipRes = qpycore_clearSlotProxies(sipCpp);
- %End
- public:
- static const QMetaObject staticMetaObject {
- %GetCode
- sipPy = qpycore_qobject_staticmetaobject(sipPyType);
- %End
- };
- const QMetaObject *metaObject() const;
- explicit QObject(QObject *parent /TransferThis/ = 0);
- virtual ~QObject();
- void pyqtConfigure(SIP_PYOBJECT) /NoArgParser/;
- %Docstring
- QObject.pyqtConfigure(...)
- Each keyword argument is either the name of a Qt property or a Qt signal.
- For properties the property is set to the given value which should be of an
- appropriate type.
- For signals the signal is connected to the given value which should be a
- callable.
- %End
- %MethodCode
- return qpycore_pyqtconfigure(sipSelf, sipArgs, sipKwds);
- %End
- SIP_PYOBJECT __getattr__(const char *name /Encoding="UTF-8"/) const /NoTypeHint/;
- %MethodCode
- sipRes = qpycore_qobject_getattr(sipCpp, sipSelf, a0);
- %End
- virtual bool event(QEvent *);
- virtual bool eventFilter(QObject *, QEvent *);
- static QString tr(const char *sourceText /Encoding="UTF-8"/, const char *disambiguation = 0, int n = -1);
- %MethodCode
- sipRes = new QString(QCoreApplication::translate(sipPyTypeName((PyTypeObject *)sipSelf), a0, a1, a2));
- %End
- SIP_PYOBJECT findChild(SIP_PYTYPE type /TypeHint="Type[QObjectT]"/, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="QObjectT"/;
- %MethodCode
- sipRes = qtcore_FindChild(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2);
-
- if (!sipRes)
- sipIsErr = 1;
- %End
- SIP_PYOBJECT findChild(SIP_PYTUPLE types /TypeHint="Tuple[Type[QObjectT], ...]", TypeHintValue="()"/, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="QObjectT"/;
- %MethodCode
- sipRes = qtcore_FindChild(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2);
-
- if (!sipRes)
- sipIsErr = 1;
- %End
- SIP_PYLIST findChildren(SIP_PYTYPE type /TypeHint="Type[QObjectT]"/, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObjectT]"/;
- %MethodCode
- sipRes = qtcore_FindChildren(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2);
-
- if (!sipRes)
- sipIsErr = 1;
- %End
- SIP_PYLIST findChildren(SIP_PYTUPLE types /TypeHint="Tuple[Type[QObjectT], ...]", TypeHintValue="()"/, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObjectT]"/;
- %MethodCode
- sipRes = qtcore_FindChildren(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2);
-
- if (!sipRes)
- sipIsErr = 1;
- %End
- SIP_PYLIST findChildren(SIP_PYTYPE type /TypeHint="Type[QObjectT]"/, const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObjectT]"/;
- %MethodCode
- sipRes = qtcore_FindChildren(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2);
-
- if (!sipRes)
- sipIsErr = 1;
- %End
- SIP_PYLIST findChildren(SIP_PYTUPLE types /TypeHint="Tuple[Type[QObjectT], ...]", TypeHintValue="()"/, const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObjectT]"/;
- %MethodCode
- sipRes = qtcore_FindChildren(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2);
-
- if (!sipRes)
- sipIsErr = 1;
- %End
- QString objectName() const;
- %If (Qt_6_4_0 -)
- void setObjectName(QAnyStringView name);
- %End
- %If (- Qt_6_4_0)
- void setObjectName(const QString &name);
- %End
- bool isWidgetType() const;
- bool isWindowType() const;
- bool signalsBlocked() const;
- bool blockSignals(bool b);
- QThread *thread() const;
- void moveToThread(QThread *thread);
- int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);
- void killTimer(int id);
- const QObjectList &children() const;
- void setParent(QObject * /TransferThis/);
- void installEventFilter(QObject *);
- void removeEventFilter(QObject *);
- void dumpObjectInfo() const;
- void dumpObjectTree() const;
- QList<QByteArray> dynamicPropertyNames() const;
- bool setProperty(const char *name, const QVariant &value);
- QVariant property(const char *name) const;
- signals:
- void destroyed(QObject *object = 0);
- void objectNameChanged(const QString &objectName);
- public:
- QObject *parent() const;
- bool inherits(const char *classname) const;
- public slots:
- void deleteLater() /TransferThis/;
- protected:
- QObject *sender() const /ReleaseGIL/;
- %MethodCode
- // sender() must be called without the GIL to avoid possible deadlocks between
- // the GIL and Qt's internal thread data mutex.
-
- Py_BEGIN_ALLOW_THREADS
-
- #if defined(SIP_PROTECTED_IS_PUBLIC)
- sipRes = sipCpp->sender();
- #else
- sipRes = sipCpp->sipProtect_sender();
- #endif
-
- Py_END_ALLOW_THREADS
-
- if (!sipRes)
- {
- typedef QObject *(*qtcore_qobject_sender_t)();
-
- static qtcore_qobject_sender_t qtcore_qobject_sender = 0;
-
- if (!qtcore_qobject_sender)
- {
- qtcore_qobject_sender = (qtcore_qobject_sender_t)sipImportSymbol("qtcore_qobject_sender");
- Q_ASSERT(qtcore_qobject_sender);
- }
-
- sipRes = qtcore_qobject_sender();
- }
- %End
- int receivers(SIP_PYOBJECT signal /TypeHint="PYQT_SIGNAL"/) const [int (const char *signal)];
- %MethodCode
- // We need to handle the signal object. Import the helper if it hasn't already
- // been done.
- typedef sipErrorState (*pyqt6_get_signal_signature_t)(PyObject *, const QObject *, const QByteArray &);
-
- static pyqt6_get_signal_signature_t pyqt6_get_signal_signature = 0;
-
- if (!pyqt6_get_signal_signature)
- {
- pyqt6_get_signal_signature = (pyqt6_get_signal_signature_t)sipImportSymbol("pyqt6_get_signal_signature");
- Q_ASSERT(pyqt6_get_signal_signature);
- }
-
- QByteArray signal_signature;
-
- #if defined(SIP_PROTECTED_IS_PUBLIC)
- if ((sipError = pyqt6_get_signal_signature(a0, sipCpp, signal_signature)) == sipErrorNone)
- {
- sipRes = sipCpp->receivers(signal_signature.constData());
- }
- #else
- if ((sipError = pyqt6_get_signal_signature(a0, static_cast<const QObject *>(sipCpp), signal_signature)) == sipErrorNone)
- {
- sipRes = sipCpp->sipProtect_receivers(signal_signature.constData());
- }
- #endif
- else if (sipError == sipErrorContinue)
- {
- sipError = sipBadCallableArg(0, a0);
- }
- %End
- virtual void timerEvent(QTimerEvent *);
- virtual void childEvent(QChildEvent *);
- virtual void customEvent(QEvent *);
- virtual void connectNotify(const QMetaMethod &signal);
- virtual void disconnectNotify(const QMetaMethod &signal);
- int senderSignalIndex() const;
- bool isSignalConnected(const QMetaMethod &signal) const;
- public:
- static bool disconnect(const QMetaObject::Connection &);
- SIP_PYOBJECT disconnect() const /TypeHint=""/;
- %MethodCode
- sipRes = qpycore_qobject_disconnect(sipCpp);
- %End
- %If (Qt_6_4_0 -)
- bool isQuickItemType() const;
- %End
- %If (Qt_6_11_0 -)
- bool isQmlExposed() const;
- %End
- private:
- QObject(const QObject &);
- };
- SIP_PYOBJECT pyqtClassInfo(const char *, const char *) /NoArgParser, TypeHint=""/;
- %MethodCode
- return qpycore_pyqtClassInfo(sipArgs, sipKwds);
- %End
- SIP_PYOBJECT pyqtEnum(SIP_PYENUM = 0) /TypeHint=""/;
- %MethodCode
- sipRes = qpycore_pyqtEnum(a0);
- %End
- SIP_PYOBJECT pyqtSlot(... types, const char *name = 0, const char *result = 0) /NoArgParser, NoTypeHint/;
- %Docstring
- @pyqtSlot(*types, name: typing.Optional[str], result: typing.Optional[str])
- This is a decorator applied to Python methods of a QObject that marks them
- as Qt slots.
- The non-keyword arguments are the types of the slot arguments and each may
- be a Python type object or a string specifying a C++ type.
- name is the name of the slot and defaults to the name of the method.
- result is type of the value returned by the slot.
- %End
- %MethodCode
- return qpycore_pyqtslot(sipArgs, sipKwds);
- %End
- SIP_PYOBJECT QT_TR_NOOP(SIP_PYOBJECT /TypeHint="str"/) /TypeHint="str"/;
- %MethodCode
- Py_INCREF(a0);
- sipRes = a0;
- %End
- SIP_PYOBJECT QT_TRANSLATE_NOOP(SIP_PYOBJECT /TypeHint="str"/, SIP_PYOBJECT /TypeHint="str"/) /TypeHint="str"/;
- %MethodCode
- Py_INCREF(a1);
- sipRes = a1;
- %End
- class QSignalBlocker
- {
- %TypeHeaderCode
- #include <qobject.h>
- %End
- public:
- explicit QSignalBlocker(QObject *o);
- ~QSignalBlocker();
- %If (Qt_6_7_0 -)
- void dismiss();
- %End
- void reblock();
- void unblock();
- SIP_PYOBJECT __enter__();
- %MethodCode
- // Just return a reference to self.
- sipRes = sipSelf;
- Py_INCREF(sipRes);
- %End
- void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback);
- %MethodCode
- sipCpp->unblock();
- %End
- private:
- QSignalBlocker(const QSignalBlocker &);
- };
- %ModuleHeaderCode
- #include "qpycore_api.h"
- %End
- %InitialisationCode
- qpycore_init();
- %End
- %PostInitialisationCode
- qpycore_post_init(sipModuleDict);
- %End
|