aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristián Maureira-Fredes <[email protected]>2024-11-07 10:59:03 +0100
committerCristián Maureira-Fredes <[email protected]>2024-11-08 08:33:38 +0100
commit57cf99afc5fcbc7608790a42471667ed6d7bdea3 (patch)
tree96f426bb1ff7b22c8d89679edd19ca1c7faf4469
parentfb13a26a76eba415e743d119d5d2782c607fee2f (diff)
limited api: replace PySequence_Fast_GET_SIZE by PySequence_Size
PySequence_Fast_GET_SIZE is defined as: (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o)) and when using the Limited API we re-define the _GET_SIZE macro to be the _Size function, and considering this is our standard use case, the macro could be replaced directly by the function. Replacing also some cases were int was used instead of Py_ssize_t when using PySequence_Size. Pick-to: 6.8 Change-Id: I31aecd571a1d8ea82a3441f0b9e16ee19f026b05 Reviewed-by: Friedemann Kleint <[email protected]>
-rw-r--r--sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp2
-rw-r--r--sources/pyside6/PySide6/glue/qtcore.cpp2
-rw-r--r--sources/pyside6/PySide6/glue/qtgui.cpp2
-rw-r--r--sources/pyside6/PySide6/templates/core_common.xml2
-rw-r--r--sources/pyside6/PySide6/templates/gui_common.xml4
-rw-r--r--sources/pyside6/PySide6/templates/widgets_common.xml2
-rw-r--r--sources/pyside6/libpyside/pysidemetafunction.cpp2
-rw-r--r--sources/pyside6/libpyside/pysidesignal.cpp2
-rw-r--r--sources/shiboken6/libshiboken/basewrapper.cpp4
-rw-r--r--sources/shiboken6/libshiboken/helper.cpp6
-rw-r--r--sources/shiboken6/libshiboken/sbkarrayconverter.cpp2
-rw-r--r--sources/shiboken6/tests/samplebinding/typesystem_sample.xml12
-rw-r--r--sources/shiboken6/tests/smartbinding/typesystem_smart.xml2
13 files changed, 22 insertions, 22 deletions
diff --git a/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp b/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp
index e4aeb6e37..3f8172871 100644
--- a/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp
+++ b/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp
@@ -103,7 +103,7 @@ bool QVariant_isStringList(PyObject *list)
}
Shiboken::AutoDecRef fast(PySequence_Fast(list, "Failed to convert QVariantList"));
- const Py_ssize_t size = PySequence_Fast_GET_SIZE(fast.object());
+ const Py_ssize_t size = PySequence_Size(fast.object());
for (Py_ssize_t i = 0; i < size; ++i) {
Shiboken::AutoDecRef item(PySequence_GetItem(fast.object(), i));
if (PyUnicode_Check(item) == 0)
diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp
index 50f1bfc8e..121a937a2 100644
--- a/sources/pyside6/PySide6/glue/qtcore.cpp
+++ b/sources/pyside6/PySide6/glue/qtcore.cpp
@@ -259,7 +259,7 @@ static QVariant QVariant_convertToVariantList(PyObject *list)
QList<QVariant> lst;
Shiboken::AutoDecRef fast(PySequence_Fast(list, "Failed to convert QVariantList"));
- const Py_ssize_t size = PySequence_Fast_GET_SIZE(fast.object());
+ const Py_ssize_t size = PySequence_Size(fast.object());
for (Py_ssize_t i = 0; i < size; ++i) {
Shiboken::AutoDecRef pyItem(PySequence_GetItem(fast.object(), i));
QVariant item = %CONVERTTOCPP[QVariant](pyItem);
diff --git a/sources/pyside6/PySide6/glue/qtgui.cpp b/sources/pyside6/PySide6/glue/qtgui.cpp
index 428840898..9ef97dfd3 100644
--- a/sources/pyside6/PySide6/glue/qtgui.cpp
+++ b/sources/pyside6/PySide6/glue/qtgui.cpp
@@ -740,7 +740,7 @@ for (Py_ssize_t i = 0; i < 16; ++i) {
// @snippet qmatrix4x4-mgetitem
if (PySequence_Check(_key)) {
Shiboken::AutoDecRef key(PySequence_Fast(_key, "Invalid matrix index."));
- if (PySequence_Fast_GET_SIZE(key.object()) == 2) {
+ if (PySequence_Size(key.object()) == 2) {
Shiboken::AutoDecRef posx(PySequence_GetItem(key.object(), 0));
Shiboken::AutoDecRef posy(PySequence_GetItem(key.object(), 1));
Py_ssize_t x = PyLong_AsSsize_t(posx);
diff --git a/sources/pyside6/PySide6/templates/core_common.xml b/sources/pyside6/PySide6/templates/core_common.xml
index dd4588f71..7f18318ae 100644
--- a/sources/pyside6/PySide6/templates/core_common.xml
+++ b/sources/pyside6/PySide6/templates/core_common.xml
@@ -160,7 +160,7 @@
Shiboken::AutoDecRef _obj2(PySequence_GetItem(_obj, 2));
Shiboken::AutoDecRef _obj3(PySequence_GetItem(_obj, 3));
if (!PySequence_Check(_obj)
- || PySequence_Fast_GET_SIZE(_obj) != 4
+ || PySequence_Size(_obj) != 4
|| !PyNumber_Check(_obj0)
|| !PyNumber_Check(_obj1)
|| !PyNumber_Check(_obj2)
diff --git a/sources/pyside6/PySide6/templates/gui_common.xml b/sources/pyside6/PySide6/templates/gui_common.xml
index 68ca5c2a8..5d2222d26 100644
--- a/sources/pyside6/PySide6/templates/gui_common.xml
+++ b/sources/pyside6/PySide6/templates/gui_common.xml
@@ -18,7 +18,7 @@
<template name="load_xpm">
Shiboken::AutoDecRef strList(PySequence_Fast(%PYARG_1, "Invalid sequence."));
- Py_ssize_t lineCount = PySequence_Fast_GET_SIZE(strList.object());
+ Py_ssize_t lineCount = PySequence_Size(strList.object());
for (Py_ssize_t line = 0; line &lt; lineCount; ++line) {
Shiboken::AutoDecRef _obj(PySequence_GetItem(strList.object(), line));
bool isString = Shiboken::String::check(_obj);
@@ -102,7 +102,7 @@
if (PySequence_Check(%PYARG_0)) {
Shiboken::AutoDecRef seq(PySequence_Fast(%PYARG_0, 0));
- const Py_ssize_t size = PySequence_Fast_GET_SIZE(seq.object());
+ const Py_ssize_t size = PySequence_Size(seq.object());
if (size > 1) {
Shiboken::AutoDecRef _obj1(PySequence_GetItem(seq.object(), 1));
diff --git a/sources/pyside6/PySide6/templates/widgets_common.xml b/sources/pyside6/PySide6/templates/widgets_common.xml
index fe2f35e7a..39dd80cf8 100644
--- a/sources/pyside6/PySide6/templates/widgets_common.xml
+++ b/sources/pyside6/PySide6/templates/widgets_common.xml
@@ -51,7 +51,7 @@
</template>
<template name="pysequencesize_int">
- int %out = PySequence_Size(%PYARG_1);
+ Py_ssize_t %out = PySequence_Size(%PYARG_1);
</template>
</typesystem>
diff --git a/sources/pyside6/libpyside/pysidemetafunction.cpp b/sources/pyside6/libpyside/pysidemetafunction.cpp
index 342ffc04d..fecd5192a 100644
--- a/sources/pyside6/libpyside/pysidemetafunction.cpp
+++ b/sources/pyside6/libpyside/pysidemetafunction.cpp
@@ -107,7 +107,7 @@ bool call(QObject *self, int methodIndex, PyObject *args, PyObject **retVal)
// args given plus return type
Shiboken::AutoDecRef sequence(PySequence_Fast(args, nullptr));
- qsizetype numArgs = PySequence_Fast_GET_SIZE(sequence.object()) + 1;
+ qsizetype numArgs = PySequence_Size(sequence.object()) + 1;
if (numArgs - 1 > argTypes.size()) {
PyErr_Format(PyExc_TypeError, "%s only accepts %d argument(s), %d given!",
diff --git a/sources/pyside6/libpyside/pysidesignal.cpp b/sources/pyside6/libpyside/pysidesignal.cpp
index 13d95fa09..aaffc9548 100644
--- a/sources/pyside6/libpyside/pysidesignal.cpp
+++ b/sources/pyside6/libpyside/pysidesignal.cpp
@@ -592,7 +592,7 @@ static PyObject *signalInstanceEmit(PyObject *self, PyObject *args)
return PyErr_Format(PyExc_RuntimeError, "The SignalInstance object was already deleted");
Shiboken::AutoDecRef pyArgs(PyList_New(0));
- int numArgsGiven = PySequence_Fast_GET_SIZE(args);
+ Py_ssize_t numArgsGiven = PySequence_Size(args);
int numArgsInSignature = argCountInSignature(source->d->signature);
// If number of arguments given to emit is smaller than the first source signature expects,
diff --git a/sources/shiboken6/libshiboken/basewrapper.cpp b/sources/shiboken6/libshiboken/basewrapper.cpp
index 5256f73a8..53c58fd0c 100644
--- a/sources/shiboken6/libshiboken/basewrapper.cpp
+++ b/sources/shiboken6/libshiboken/basewrapper.cpp
@@ -893,7 +893,7 @@ std::vector<SbkObject *> splitPyObject(PyObject *pyObj)
if (PySequence_Check(pyObj)) {
AutoDecRef lst(PySequence_Fast(pyObj, "Invalid keep reference object."));
if (!lst.isNull()) {
- for (Py_ssize_t i = 0, i_max = PySequence_Fast_GET_SIZE(lst.object()); i < i_max; ++i) {
+ for (Py_ssize_t i = 0, i_max = PySequence_Size(lst.object()); i < i_max; ++i) {
Shiboken::AutoDecRef item(PySequence_GetItem(lst.object(), i));
if (Object::checkType(item))
result.push_back(reinterpret_cast<SbkObject *>(item.object()));
@@ -1003,7 +1003,7 @@ introduceWrapperType(PyObject *enclosingObject,
PyObject *bases,
unsigned wrapperFlags)
{
- assert(PySequence_Fast_GET_SIZE(bases) > 0);
+ assert(PySequence_Size(bases) > 0);
typeSpec->slots[0].pfunc = PySequence_GetItem(bases, 0);
auto *type = SbkType_FromSpecBasesMeta(typeSpec, bases, SbkObjectType_TypeF());
diff --git a/sources/shiboken6/libshiboken/helper.cpp b/sources/shiboken6/libshiboken/helper.cpp
index f50136aff..dc81bbb29 100644
--- a/sources/shiboken6/libshiboken/helper.cpp
+++ b/sources/shiboken6/libshiboken/helper.cpp
@@ -481,8 +481,8 @@ bool listToArgcArgv(PyObject *argList, int *argc, char ***argv, const char *defa
// Check all items
Shiboken::AutoDecRef args(PySequence_Fast(argList, nullptr));
- int numArgs = int(PySequence_Fast_GET_SIZE(argList));
- for (int i = 0; i < numArgs; ++i) {
+ Py_ssize_t numArgs = PySequence_Size(argList);
+ for (Py_ssize_t i = 0; i < numArgs; ++i) {
PyObject *item = PyList_GET_ITEM(args.object(), i);
if (!PyBytes_Check(item) && !PyUnicode_Check(item))
return false;
@@ -524,7 +524,7 @@ int *sequenceToIntArray(PyObject *obj, bool zeroTerminated)
if (seq.isNull())
return nullptr;
- Py_ssize_t size = PySequence_Fast_GET_SIZE(seq.object());
+ Py_ssize_t size = PySequence_Size(seq.object());
int *array = new int[size + (zeroTerminated ? 1 : 0)];
for (int i = 0; i < size; i++) {
diff --git a/sources/shiboken6/libshiboken/sbkarrayconverter.cpp b/sources/shiboken6/libshiboken/sbkarrayconverter.cpp
index be7c6296e..886baf1bb 100644
--- a/sources/shiboken6/libshiboken/sbkarrayconverter.cpp
+++ b/sources/shiboken6/libshiboken/sbkarrayconverter.cpp
@@ -79,7 +79,7 @@ static void sequenceToCppShortArray(PyObject *pyIn, void *cppOut)
static inline bool sequenceSizeCheck(PyObject *pyIn, int expectedSize = -1)
{
if (expectedSize >= 0) {
- const int size = int(PySequence_Size(pyIn));
+ const Py_ssize_t size = PySequence_Size(pyIn);
if (size < expectedSize) {
warning(PyExc_RuntimeWarning, 0, "A sequence of size %d was passed to a function that expects %d.",
size, expectedSize);
diff --git a/sources/shiboken6/tests/samplebinding/typesystem_sample.xml b/sources/shiboken6/tests/samplebinding/typesystem_sample.xml
index 92a886b1e..0e0d884c0 100644
--- a/sources/shiboken6/tests/samplebinding/typesystem_sample.xml
+++ b/sources/shiboken6/tests/samplebinding/typesystem_sample.xml
@@ -226,7 +226,7 @@
<add-conversion type="PySequence">
%OUTTYPE&amp; list = %out;
Shiboken::AutoDecRef seq(PySequence_Fast(%in, 0));
- for (int i = 0; i &lt; PySequence_Size(seq.object()); i++) {
+ for (Py_ssize_t i = 0; i &lt; PySequence_Size(seq.object()); i++) {
Shiboken::AutoDecRef pyItem(PySequence_GetItem(seq.object(), i));
PStr cppItem = %CONVERTTOCPP[PStr](pyItem);
list.push_back(cppItem);
@@ -1392,7 +1392,7 @@
Shiboken::AutoDecRef _obj2(PySequence_GetItem(_obj, 2));
Shiboken::AutoDecRef _obj3(PySequence_GetItem(_obj, 3));
if (!PySequence_Check(_obj)
- || PySequence_Fast_GET_SIZE(_obj) != 4
+ || PySequence_Size(_obj) != 4
|| !PyNumber_Check(_obj0)
|| !PyNumber_Check(_obj1)
|| !PyNumber_Check(_obj2)
@@ -1583,13 +1583,13 @@
<modify-argument index="1">
<remove-argument/>
<conversion-rule class="native">
- const auto %out = PySequence_Size(%PYARG_1);
+ const Py_ssize_t %out = PySequence_Size(%PYARG_1);
</conversion-rule>
</modify-argument>
<modify-argument index="2">
<replace-type modified-type="PySequence"/>
<conversion-rule class="native">
- const auto numItems = PySequence_Size(%PYARG_1);
+ const Py_ssize_t numItems = PySequence_Size(%PYARG_1);
Shiboken::AutoArrayPointer&lt;int&gt; %out(numItems);
for (Py_ssize_t i = 0; i &lt; numItems; ++i) {
Shiboken::AutoDecRef _obj(PySequence_GetItem(%PYARG_1, i));
@@ -1617,7 +1617,7 @@
<replace-type modified-type="PySequence"/>
</modify-argument>
<inject-code class="target" position="beginning">
- int numItems = PySequence_Size(%PYARG_1);
+ Py_ssize_t numItems = PySequence_Size(%PYARG_1);
int *cppItems = new int[numItems];
for (int i = 0; i &lt; numItems; i++) {
Shiboken::AutoDecRef _obj(PySequence_GetItem(%PYARG_1, i));
@@ -1960,7 +1960,7 @@
<conversion-rule class="native">
{
Shiboken::AutoDecRef strList(PySequence_Fast(%PYARG_1, "The argument must be a sequence."));
- int lineCount = PySequence_Fast_GET_SIZE(strList.object());
+ const Py_ssize_t lineCount = PySequence_Size(strList.object());
for (int line = 0; line &lt; lineCount; ++line) {
Shiboken::AutoDecRef _obj(PySequence_GetItem(strList.object(), line));
bool isString = Shiboken::String::check(_obj);
diff --git a/sources/shiboken6/tests/smartbinding/typesystem_smart.xml b/sources/shiboken6/tests/smartbinding/typesystem_smart.xml
index fd44f4f6d..68f12ce6f 100644
--- a/sources/shiboken6/tests/smartbinding/typesystem_smart.xml
+++ b/sources/shiboken6/tests/smartbinding/typesystem_smart.xml
@@ -11,7 +11,7 @@
</template>
<template name="pyseq_to_cpplist_convertion">
Shiboken::AutoDecRef seq(PySequence_Fast(%in, 0));
- for (int i = 0, size = PySequence_Fast_GET_SIZE(seq.object()); i &lt; size; ++i) {
+ for (Py_ssize_t i = 0, size = PySequence_Size(seq.object()); i &lt; size; ++i) {
Shiboken::AutoDecRef pyItem(PySequence_GetItem(seq.object(), i));
%OUTTYPE_0 cppItem = %CONVERTTOCPP[%OUTTYPE_0](pyItem);
%out.push_back(cppItem);