diff options
Diffstat (limited to 'generator')
-rw-r--r-- | generator/overloaddata.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/generator/overloaddata.cpp b/generator/overloaddata.cpp index 9be972f1f..031c06848 100644 --- a/generator/overloaddata.cpp +++ b/generator/overloaddata.cpp @@ -147,6 +147,9 @@ void OverloadData::sortNextOverloads() OverloadSortData sortData; bool checkPyObject = false; int pyobjectIndex = 0; + bool checkQString = false; + bool hasObjectPointer = false; + int qstringIndex = 0; // Primitive types that are not int, long, short, // char and their respective unsigned counterparts. @@ -172,6 +175,15 @@ void OverloadData::sortNextOverloads() if (!checkPyObject && getTypeName(ov->argType()).contains("PyObject")) { checkPyObject = true; pyobjectIndex = sortData.lastProcessedItemId(); + } else if (!checkQString && getTypeName(ov->argType()) == "QString") { + checkQString = true; + qstringIndex = sortData.lastProcessedItemId(); + if (referenceFunction()->name() == "QListWidgetItem") + qDebug() << ov->argType()->minimalSignature() << " checkQString: " << checkQString; + } else if (!hasObjectPointer && (ov->argType()->isValuePointer() || ov->argType()->typeEntry()->isObject() )) { + hasObjectPointer = true; + if (referenceFunction()->name() == "QListWidgetItem") + qDebug() << ov->argType()->minimalSignature() << " hasObjectPointer: " << hasObjectPointer; } foreach (const AbstractMetaType* instantiation, ov->argType()->instantiations()) { @@ -267,6 +279,8 @@ void OverloadData::sortNextOverloads() /* Add dependency on PyObject, so its check is the last one (too generic) */ if (checkPyObject && !targetTypeEntryName.contains("PyObject")) graph.addEdge(sortData.map[targetTypeEntryName], pyobjectIndex); + else if (checkQString && hasObjectPointer && targetTypeEntryName != "QString") + graph.addEdge(sortData.map[targetTypeEntryName], qstringIndex); if (targetTypeEntry->isEnum()) { for (int i = 0; i < numPrimitives; ++i) { |