aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/libpyside/pysideclassinfo.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-10-04 13:30:08 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-10-16 13:22:47 +0000
commitbbd32e9e52bda460dd1cb75d128dd1165d1fd152 (patch)
tree2b9b106a0f863fcf33a4f8a2bcefea9446b304e4 /sources/pyside2/libpyside/pysideclassinfo.cpp
parent6bfbfd6edd0f9701664698768f9ec8d29f96a5bd (diff)
libpyside: Introduce helper functions for accessing TypeUserData and meta objects
Add helpers with overloads to reduce reinterpret_cast<> and increase type safety. Task-number: PYSIDE-784 Change-Id: I334fd7d149a6730094b062dd0371b9a29379d725 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'sources/pyside2/libpyside/pysideclassinfo.cpp')
-rw-r--r--sources/pyside2/libpyside/pysideclassinfo.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/sources/pyside2/libpyside/pysideclassinfo.cpp b/sources/pyside2/libpyside/pysideclassinfo.cpp
index e3a437438..88b2b89f5 100644
--- a/sources/pyside2/libpyside/pysideclassinfo.cpp
+++ b/sources/pyside2/libpyside/pysideclassinfo.cpp
@@ -97,8 +97,7 @@ PyObject *classCall(PyObject *self, PyObject *args, PyObject * /* kw */)
return 0;
}
- PyObject* klass;
- klass = PyTuple_GetItem(args, 0);
+ PyObject *klass = PyTuple_GetItem(args, 0);
bool validClass = false;
// This will sometimes segfault if you mistakenly use it on a function declaration
@@ -107,10 +106,10 @@ PyObject *classCall(PyObject *self, PyObject *args, PyObject * /* kw */)
return 0;
}
- if (Shiboken::ObjectType::checkType(reinterpret_cast<PyTypeObject*>(klass))) {
- if (void *userData = Shiboken::ObjectType::getTypeUserData(reinterpret_cast<SbkObjectType*>(klass))) {
- PySide::DynamicQMetaObject &mo = reinterpret_cast<PySide::TypeUserData *>(userData)->mo;
- mo.addInfo(PySide::ClassInfo::getMap(data));
+ PyTypeObject *klassType = reinterpret_cast<PyTypeObject*>(klass);
+ if (Shiboken::ObjectType::checkType(klassType)) {
+ if (PySide::DynamicQMetaObject *mo = PySide::retrieveMetaObject(klassType)) {
+ mo->addInfo(PySide::ClassInfo::getMap(data));
pData->m_alreadyWrapped = true;
validClass = true;
}