diff options
Diffstat (limited to 'generator')
-rw-r--r-- | generator/overloaddata.cpp | 11 | ||||
-rw-r--r-- | generator/shibokengenerator.cpp | 2 |
2 files changed, 12 insertions, 1 deletions
diff --git a/generator/overloaddata.cpp b/generator/overloaddata.cpp index 6bb06fe57..7ec8cf07f 100644 --- a/generator/overloaddata.cpp +++ b/generator/overloaddata.cpp @@ -163,6 +163,8 @@ void OverloadData::sortNextOverloads() int qstringIndex = 0; bool checkQVariant = false; int qvariantIndex = 0; + bool checkPyBuffer = false; + int pyBufferIndex = 0; // Primitive types that are not int, long, short, // char and their respective unsigned counterparts. @@ -194,6 +196,9 @@ void OverloadData::sortNextOverloads() } else if (!checkPySequence && typeName == "PySequence") { checkPySequence = true; pySeqIndex = sortData.lastProcessedItemId(); + } else if (!checkPyBuffer && typeName == "PyBuffer") { + checkPyBuffer = true; + pyBufferIndex = sortData.lastProcessedItemId(); } else if (!checkQVariant && typeName == "QVariant") { checkQVariant = true; qvariantIndex = sortData.lastProcessedItemId(); @@ -315,12 +320,16 @@ void OverloadData::sortNextOverloads() } - if ((checkPySequence || checkPyObject) + if ((checkPySequence || checkPyObject || checkPyBuffer) && !targetTypeEntryName.contains("PyObject") + && !targetTypeEntryName.contains("PyBuffer") && !targetTypeEntryName.contains("PySequence")) { if (checkPySequence) { // PySequence will be checked after all more specific types, but before PyObject. graph.addEdge(targetTypeId, pySeqIndex); + } else if (checkPyBuffer) { + // PySequence will be checked after all more specific types, but before PyObject. + graph.addEdge(targetTypeId, pyBufferIndex); } else { // Add dependency on PyObject, so its check is the last one (too generic). graph.addEdge(targetTypeId, pyobjectIndex); diff --git a/generator/shibokengenerator.cpp b/generator/shibokengenerator.cpp index de96d03ac..8d98869d7 100644 --- a/generator/shibokengenerator.cpp +++ b/generator/shibokengenerator.cpp @@ -865,6 +865,8 @@ QString ShibokenGenerator::guessCPythonCheckFunction(const QString& type) metaType = 0; } else if (type == "PyTypeObject") { retval = "PyType_Check"; + } else if (type == "PyBuffer") { + retval = "Shiboken::Buffer::checkType"; } else { retval = QString("%1_Check").arg(type); } |