aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/shiboken6/generator/shiboken/cppgenerator_container.cpp7
-rw-r--r--sources/shiboken6/libshiboken/basewrapper.cpp13
-rw-r--r--sources/shiboken6/libshiboken/sbktypefactory.cpp28
-rw-r--r--sources/shiboken6/libshiboken/sbktypefactory.h14
-rw-r--r--sources/shiboken6/libshiboken/voidptr.cpp7
5 files changed, 29 insertions, 40 deletions
diff --git a/sources/shiboken6/generator/shiboken/cppgenerator_container.cpp b/sources/shiboken6/generator/shiboken/cppgenerator_container.cpp
index eab57bcc0..1fa7fc463 100644
--- a/sources/shiboken6/generator/shiboken/cppgenerator_container.cpp
+++ b/sources/shiboken6/generator/shiboken/cppgenerator_container.cpp
@@ -202,9 +202,10 @@ CppGenerator::OpaqueContainerData
// type creation function that sets a key in the type dict.
const QString typeCreationFName = u"create"_qs + result.name + u"Type"_qs;
s << "static inline PyTypeObject *" << typeCreationFName << "()\n{\n" << indent
- << "static auto *name = Shiboken::PyMagicName::opaque_container();\n"
- << "static auto *opaque_entry = Py_BuildValue(\"{O:O}\", name, Py_True);\n"
- << "static auto *result = SbkType_FromSpecAddDict(&" << specName << ", opaque_entry);\n"
+ << "auto *result = reinterpret_cast<PyTypeObject *>(SbkType_FromSpec(&"
+ << specName << "));\nPy_INCREF(Py_True);\n"
+ << "PyDict_SetItem(result->tp_dict, "
+ "Shiboken::PyMagicName::opaque_container(), Py_True);\n"
<< "return result;\n" << outdent << "}\n\n";
// typeF() function
diff --git a/sources/shiboken6/libshiboken/basewrapper.cpp b/sources/shiboken6/libshiboken/basewrapper.cpp
index cc62205b7..cd93d49b7 100644
--- a/sources/shiboken6/libshiboken/basewrapper.cpp
+++ b/sources/shiboken6/libshiboken/basewrapper.cpp
@@ -255,13 +255,12 @@ static const char *SbkObject_SignatureStrings[] = {
PyTypeObject *SbkObject_TypeF(void)
{
- static auto *type = SbkType_FromSpec_BMDWBD(&SbkObject_Type_spec,
- nullptr, // bases
- SbkObjectType_TypeF(),
- offsetof(SbkObject, ob_dict),
- offsetof(SbkObject, weakreflist),
- nullptr, // bufferprocs
- nullptr); // add to tp_dict
+ static auto *type = SbkType_FromSpec_BMDWB(&SbkObject_Type_spec,
+ nullptr, // bases
+ SbkObjectType_TypeF(),
+ offsetof(SbkObject, ob_dict),
+ offsetof(SbkObject, weakreflist),
+ nullptr); // bufferprocs
return type;
}
diff --git a/sources/shiboken6/libshiboken/sbktypefactory.cpp b/sources/shiboken6/libshiboken/sbktypefactory.cpp
index 08d6775f4..5efd45a2f 100644
--- a/sources/shiboken6/libshiboken/sbktypefactory.cpp
+++ b/sources/shiboken6/libshiboken/sbktypefactory.cpp
@@ -45,27 +45,22 @@ extern "C"
PyTypeObject *SbkType_FromSpec(PyType_Spec *spec)
{
- return SbkType_FromSpec_BMDWBD(spec, nullptr, nullptr, 0, 0, nullptr, nullptr);
-}
-
-PyTypeObject *SbkType_FromSpecAddDict(PyType_Spec *spec, PyObject *dict_add)
-{
- return SbkType_FromSpec_BMDWBD(spec, nullptr, nullptr, 0, 0, nullptr, dict_add);
+ return SbkType_FromSpec_BMDWB(spec, nullptr, nullptr, 0, 0, nullptr);
}
PyTypeObject *SbkType_FromSpecWithMeta(PyType_Spec *spec, PyTypeObject *meta)
{
- return SbkType_FromSpec_BMDWBD(spec, nullptr, meta, 0, 0, nullptr, nullptr);
+ return SbkType_FromSpec_BMDWB(spec, nullptr, meta, 0, 0, nullptr);
}
PyTypeObject *SbkType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases)
{
- return SbkType_FromSpec_BMDWBD(spec, bases, nullptr, 0, 0, nullptr, nullptr);
+ return SbkType_FromSpec_BMDWB(spec, bases, nullptr, 0, 0, nullptr);
}
PyTypeObject *SbkType_FromSpecBasesMeta(PyType_Spec *spec, PyObject *bases, PyTypeObject *meta)
{
- return SbkType_FromSpec_BMDWBD(spec, bases, meta, 0, 0, nullptr, nullptr);
+ return SbkType_FromSpec_BMDWB(spec, bases, meta, 0, 0, nullptr);
}
#ifdef PYPY_VERSION
@@ -78,13 +73,12 @@ static PyObject *_PyType_FromSpecWithBases(PyType_Spec *, PyObject *);
#endif // PYPY_VERSION
-PyTypeObject *SbkType_FromSpec_BMDWBD(PyType_Spec *spec,
- PyObject *bases,
- PyTypeObject *meta,
- int dictoffset,
- int weaklistoffset,
- PyBufferProcs *bufferprocs,
- PyObject *dict_add)
+PyTypeObject *SbkType_FromSpec_BMDWB(PyType_Spec *spec,
+ PyObject *bases,
+ PyTypeObject *meta,
+ int dictoffset,
+ int weaklistoffset,
+ PyBufferProcs *bufferprocs)
{
// PYSIDE-1286: Generate correct __module__ and __qualname__
// The name field can now be extended by an "n:" prefix which is
@@ -134,8 +128,6 @@ PyTypeObject *SbkType_FromSpec_BMDWBD(PyType_Spec *spec,
type->tp_weaklistoffset = weaklistoffset;
if (bufferprocs)
PepType_AS_BUFFER(type) = bufferprocs;
- if (dict_add)
- PyDict_Update(reinterpret_cast<PyObject *>(type->tp_dict), dict_add);
#ifdef PYPY_VERSION
// PYSIDE-535: Careful: Using PyObject_SetAttr would have the side-effect of calling
diff --git a/sources/shiboken6/libshiboken/sbktypefactory.h b/sources/shiboken6/libshiboken/sbktypefactory.h
index f17427052..3d25f4eef 100644
--- a/sources/shiboken6/libshiboken/sbktypefactory.h
+++ b/sources/shiboken6/libshiboken/sbktypefactory.h
@@ -47,17 +47,15 @@ extern "C"
// PYSIDE-535: Encapsulation of PyType_FromSpec special-cased for PyPy
LIBSHIBOKEN_API PyTypeObject *SbkType_FromSpec(PyType_Spec *);
-LIBSHIBOKEN_API PyTypeObject *SbkType_FromSpecAddDict(PyType_Spec *, PyObject *);
LIBSHIBOKEN_API PyTypeObject *SbkType_FromSpecWithMeta(PyType_Spec *, PyTypeObject *);
LIBSHIBOKEN_API PyTypeObject *SbkType_FromSpecWithBases(PyType_Spec *, PyObject *);
LIBSHIBOKEN_API PyTypeObject *SbkType_FromSpecBasesMeta(PyType_Spec *, PyObject *, PyTypeObject *);
-LIBSHIBOKEN_API PyTypeObject *SbkType_FromSpec_BMDWBD(PyType_Spec *spec,
- PyObject *bases,
- PyTypeObject *meta,
- int dictoffset,
- int weaklistoffset,
- PyBufferProcs *bufferprocs,
- PyObject *dict_add);
+LIBSHIBOKEN_API PyTypeObject *SbkType_FromSpec_BMDWB(PyType_Spec *spec,
+ PyObject *bases,
+ PyTypeObject *meta,
+ int dictoffset,
+ int weaklistoffset,
+ PyBufferProcs *bufferprocs);
} //extern "C"
diff --git a/sources/shiboken6/libshiboken/voidptr.cpp b/sources/shiboken6/libshiboken/voidptr.cpp
index 7a6a04e3a..f0161d282 100644
--- a/sources/shiboken6/libshiboken/voidptr.cpp
+++ b/sources/shiboken6/libshiboken/voidptr.cpp
@@ -318,10 +318,9 @@ static PyType_Spec SbkVoidPtrType_spec = {
PyTypeObject *SbkVoidPtrTypeF(void)
{
- static PyTypeObject *type = SbkType_FromSpec_BMDWBD(&SbkVoidPtrType_spec,
- nullptr, nullptr, 0, 0,
- &SbkVoidPtrObjectBufferProc,
- nullptr);
+ static PyTypeObject *type = SbkType_FromSpec_BMDWB(&SbkVoidPtrType_spec,
+ nullptr, nullptr, 0, 0,
+ &SbkVoidPtrObjectBufferProc);
return type;
}