aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-09-13 08:24:37 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2021-09-13 11:11:26 +0200
commit7ac7e8f34750202948117a2a3bd716b7ceef43f7 (patch)
tree76eb9d2eb280536806c70c63bbdeeb9c7294ac35
parent788ee54acebb6bc6a8d2a8817f048749cc8b3b3c (diff)
Remove C-style casts to SbkObjectType *
Complements a4311711eb89e3f9833a05edf3debdf7563a104f. Task-number: PYSIDE-535 Change-Id: Iedb4b03be4fcac1622c1fabf8d60e0853d939bd6 Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r--sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp47
-rw-r--r--sources/pyside6/PySide6/glue/qtcore.cpp7
-rw-r--r--sources/shiboken6/shibokenmodule/typesystem_shiboken.xml10
3 files changed, 42 insertions, 22 deletions
diff --git a/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp b/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp
index 873ec53ce..817396b4b 100644
--- a/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp
+++ b/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp
@@ -212,13 +212,13 @@ int PySide::qmlRegisterSingletonType(PyObject *pyObj, const char *uri, int versi
if (hasCallback) {
PyTuple_SET_ITEM(args, 0, Conversions::pointerToPython(
- (SbkObjectType *)SbkPySide6_QtQmlTypes[SBK_QQMLENGINE_IDX],
- engine));
+ SbkPySide6_QtQmlTypes[SBK_QQMLENGINE_IDX],
+ engine));
}
AutoDecRef retVal(PyObject_CallObject(hasCallback ? callback : pyObj, args));
- SbkObjectType *qobjectType = (SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX];
+ PyTypeObject *qobjectType = SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX];
// Make sure the callback returns something we can convert, else the entire application will crash.
if (retVal.isNull() ||
@@ -242,12 +242,12 @@ int PySide::qmlRegisterSingletonType(PyObject *pyObj, const char *uri, int versi
AutoDecRef args(PyTuple_New(1));
PyTuple_SET_ITEM(args, 0, Conversions::pointerToPython(
- (SbkObjectType *)SbkPySide6_QtQmlTypes[SBK_QQMLENGINE_IDX],
- engine));
+ SbkPySide6_QtQmlTypes[SBK_QQMLENGINE_IDX],
+ engine));
AutoDecRef retVal(PyObject_CallObject(callback, args));
- SbkObjectType *qjsvalueType = (SbkObjectType *)SbkPySide6_QtQmlTypes[SBK_QJSVALUE_IDX];
+ SbkObjectType *qjsvalueType = SbkPySide6_QtQmlTypes[SBK_QJSVALUE_IDX];
// Make sure the callback returns something we can convert, else the entire application will crash.
if (retVal.isNull() ||
@@ -422,8 +422,11 @@ void propListAppender(QQmlListProperty<QObject> *propList, QObject *item)
Shiboken::GilState state;
Shiboken::AutoDecRef args(PyTuple_New(2));
- PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
- PyTuple_SET_ITEM(args, 1, Shiboken::Conversions::pointerToPython((SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX], item));
+ PyTypeObject *qobjectType = SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX];
+ PyTuple_SET_ITEM(args, 0,
+ Shiboken::Conversions::pointerToPython(qobjectType, propList->object));
+ PyTuple_SET_ITEM(args, 1,
+ Shiboken::Conversions::pointerToPython(qobjectType, item));
auto data = reinterpret_cast<QmlListProperty *>(propList->data);
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->append, args));
@@ -438,7 +441,9 @@ qsizetype propListCount(QQmlListProperty<QObject> *propList)
Shiboken::GilState state;
Shiboken::AutoDecRef args(PyTuple_New(1));
- PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
+ PyTypeObject *qobjectType = SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX];
+ PyTuple_SET_ITEM(args, 0,
+ Shiboken::Conversions::pointerToPython(qobjectType, propList->object));
auto data = reinterpret_cast<QmlListProperty *>(propList->data);
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->count, args));
@@ -459,7 +464,9 @@ QObject *propListAt(QQmlListProperty<QObject> *propList, qsizetype index)
Shiboken::GilState state;
Shiboken::AutoDecRef args(PyTuple_New(2));
- PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
+ PyTypeObject *qobjectType = SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX];
+ PyTuple_SET_ITEM(args, 0,
+ Shiboken::Conversions::pointerToPython(qobjectType, propList->object));
PyTuple_SET_ITEM(args, 1, Shiboken::Conversions::copyToPython(Shiboken::Conversions::PrimitiveTypeConverter<qsizetype>(), &index));
auto data = reinterpret_cast<QmlListProperty *>(propList->data);
@@ -469,7 +476,7 @@ QObject *propListAt(QQmlListProperty<QObject> *propList, qsizetype index)
if (PyErr_Occurred())
PyErr_Print();
else if (PyType_IsSubtype(Py_TYPE(retVal), data->type))
- Shiboken::Conversions::pythonToCppPointer((SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX], retVal, &result);
+ Shiboken::Conversions::pythonToCppPointer(qobjectType, retVal, &result);
return result;
}
@@ -479,7 +486,9 @@ void propListClear(QQmlListProperty<QObject> * propList)
Shiboken::GilState state;
Shiboken::AutoDecRef args(PyTuple_New(1));
- PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
+ PyTypeObject *qobjectType = SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX];
+ PyTuple_SET_ITEM(args, 0,
+ Shiboken::Conversions::pointerToPython(qobjectType, propList->object));
auto data = reinterpret_cast<QmlListProperty *>(propList->data);
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->clear, args));
@@ -494,9 +503,12 @@ void propListReplace(QQmlListProperty<QObject> *propList, qsizetype index, QObje
Shiboken::GilState state;
Shiboken::AutoDecRef args(PyTuple_New(3));
- PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
+ PyTypeObject *qobjectType = SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX];
+ PyTuple_SET_ITEM(args, 0,
+ Shiboken::Conversions::pointerToPython(qobjectType, propList->object));
PyTuple_SET_ITEM(args, 1, Shiboken::Conversions::copyToPython(Shiboken::Conversions::PrimitiveTypeConverter<qsizetype>(), &index));
- PyTuple_SET_ITEM(args, 2, Shiboken::Conversions::pointerToPython((SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX], value));
+ PyTuple_SET_ITEM(args, 2,
+ Shiboken::Conversions::pointerToPython(qobjectType, value));
auto data = reinterpret_cast<QmlListProperty *>(propList->data);
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->replace, args));
@@ -511,7 +523,9 @@ void propListRemoveLast(QQmlListProperty<QObject> *propList)
Shiboken::GilState state;
Shiboken::AutoDecRef args(PyTuple_New(1));
- PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
+ PyTypeObject *qobjectType = SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX];
+ PyTuple_SET_ITEM(args, 0,
+ Shiboken::Conversions::pointerToPython(qobjectType, propList->object));
auto data = reinterpret_cast<QmlListProperty *>(propList->data);
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->removeLast, args));
@@ -528,7 +542,8 @@ static void propListMetaCall(PySideProperty *pp, PyObject *self, QMetaObject::Ca
auto data = reinterpret_cast<QmlListProperty *>(PySide::Property::userData(pp));
QObject *qobj;
- Shiboken::Conversions::pythonToCppPointer((SbkObjectType *)SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX], self, &qobj);
+ PyTypeObject *qobjectType = SbkPySide6_QtCoreTypes[SBK_QOBJECT_IDX];
+ Shiboken::Conversions::pythonToCppPointer(qobjectType, self, &qobj);
QQmlListProperty<QObject> declProp(qobj, data,
data->append && data->append != Py_None ? &propListAppender : nullptr,
data->count && data->count != Py_None ? &propListCount : nullptr,
diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp
index ad5eb447f..2cbc3c11a 100644
--- a/sources/pyside6/PySide6/glue/qtcore.cpp
+++ b/sources/pyside6/PySide6/glue/qtcore.cpp
@@ -127,16 +127,17 @@ else {
// @snippet qsettings-value
// @snippet conversion-pytypeobject-qmetatype
-if (Shiboken::String::checkType(reinterpret_cast<PyTypeObject *>(%in)))
+auto *pyType = reinterpret_cast<PyTypeObject *&>(%in);
+if (Shiboken::String::checkType(pyType))
%out = QMetaType(QMetaType::QString);
else if (%in == reinterpret_cast<PyObject *>(&PyFloat_Type))
%out = QMetaType(QMetaType::Double);
else if (%in == reinterpret_cast<PyObject *>(&PyLong_Type))
%out = QMetaType(QMetaType::Int);
else if (Py_TYPE(%in) == SbkObjectType_TypeF())
- %out = QMetaType::fromName(Shiboken::ObjectType::getOriginalName((SbkObjectType *)%in));
+ %out = QMetaType::fromName(Shiboken::ObjectType::getOriginalName(pyType));
else
- %out = QMetaType::fromName(reinterpret_cast<PyTypeObject *>(%in)->tp_name);
+ %out = QMetaType::fromName(pyType->tp_name);
// @snippet conversion-pytypeobject-qmetatype
// @snippet conversion-qmetatype-pytypeobject
diff --git a/sources/shiboken6/shibokenmodule/typesystem_shiboken.xml b/sources/shiboken6/shibokenmodule/typesystem_shiboken.xml
index 741826bff..b1b1f3212 100644
--- a/sources/shiboken6/shibokenmodule/typesystem_shiboken.xml
+++ b/sources/shiboken6/shibokenmodule/typesystem_shiboken.xml
@@ -20,10 +20,14 @@
<add-function signature="wrapInstance(size_t, PyType)" return-type="PyObject*">
<inject-code>
- if (Shiboken::ObjectType::checkType((PyTypeObject*)%2))
- %PYARG_0 = Shiboken::Object::newObject((SbkObjectType*)%2, (void*)%1, false, true);
- else
+ auto *pyType = reinterpret_cast&lt;PyTypeObject *&gt;(%2);
+ if (Shiboken::ObjectType::checkType(pyType)) {
+ %PYARG_0 = Shiboken::Object::newObject(pyType,
+ reinterpret_cast&lt;void *&gt;(%1),
+ false, true);
+ } else {
PyErr_SetString(PyExc_TypeError, "You need a shiboken-based type.");
+ }
</inject-code>
</add-function>