aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pysideqobject.h
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside6/libpyside/pysideqobject.h')
-rw-r--r--sources/pyside6/libpyside/pysideqobject.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/sources/pyside6/libpyside/pysideqobject.h b/sources/pyside6/libpyside/pysideqobject.h
new file mode 100644
index 000000000..f81c50399
--- /dev/null
+++ b/sources/pyside6/libpyside/pysideqobject.h
@@ -0,0 +1,70 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef PYSIDEQOBJECT_H
+#define PYSIDEQOBJECT_H
+
+#include <sbkpython.h>
+
+#include <pysidemacros.h>
+
+#include <QtCore/qtclasshelpermacros.h>
+
+#include <cstddef>
+
+QT_FORWARD_DECLARE_CLASS(QObject)
+QT_FORWARD_DECLARE_STRUCT(QMetaObject)
+QT_FORWARD_DECLARE_CLASS(QMutex)
+
+namespace PySide
+{
+
+/// Fill QObject properties and do signal connections using the values found in \p kwds dictionary.
+/// \param qObj PyObject fot the QObject.
+/// \param metaObj QMetaObject of \p qObj.
+/// \param kwds key->value dictonary.
+/// \return True if everything goes well, false with a Python error set otherwise.
+PYSIDE_API bool fillQtProperties(PyObject *qObj, const QMetaObject *metaObj,
+ PyObject *kwds, bool allowErrors);
+
+PYSIDE_API void initDynamicMetaObject(PyTypeObject *type, const QMetaObject *base,
+ std::size_t cppObjSize);
+PYSIDE_API void initQObjectSubType(PyTypeObject *type, PyObject *args, PyObject *kwds);
+
+/// Return the size in bytes of a type that inherits QObject.
+PYSIDE_API std::size_t getSizeOfQObject(PyTypeObject *type);
+
+/// Check if a PyTypeObject or its bases contains a QObject
+/// \param pyType is the PyTypeObject to check
+/// \param raiseError controls if a TypeError is raised when an object does not
+/// inherit QObject
+PYSIDE_API bool isQObjectDerived(PyTypeObject *pyType, bool raiseError);
+
+/// Convenience to convert a PyObject to QObject
+PYSIDE_API QObject *convertToQObject(PyObject *object, bool raiseError);
+
+/// Check for properties and signals registered on MetaObject and return these.
+/// Also handle Python properties when true_property was selected.
+/// \param cppSelf Is the QObject which contains the metaobject
+/// \param self Python object of cppSelf
+/// \param name Name of the argument which the function will try retrieve from MetaData
+/// \return The Python object which contains the Data obtained in metaObject or the Python
+/// method pulled out of a Python property.
+PYSIDE_API PyObject *getHiddenDataFromQObject(QObject *cppSelf, PyObject *self, PyObject *name);
+
+/// Mutex for accessing QObject memory helpers from multiple threads
+PYSIDE_API QMutex &nextQObjectMemoryAddrMutex();
+PYSIDE_API void *nextQObjectMemoryAddr();
+/// Set the address where to allocate the next QObject (for QML)
+PYSIDE_API void setNextQObjectMemoryAddr(void *addr);
+
+PYSIDE_API PyObject *getWrapperForQObject(QObject *cppSelf, PyTypeObject *sbk_type);
+
+/// Return the best-matching type for a QObject (Helper for QObject.findType())
+/// \param cppSelf QObject instance
+/// \return type object
+PYSIDE_API PyTypeObject *getTypeForQObject(const QObject *cppSelf);
+
+} //namespace PySide
+
+#endif // PYSIDEQOBJECT_H