diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-11-10 18:33:00 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:08:58 -0300 |
commit | de64d27687365c0114853a64b76939a7a611bb28 (patch) | |
tree | 2c03de1970c4fd1019a10db083d03509d479445a /generator | |
parent | 4564787f4785ba6b2ace7fe4afa70b30246adb6a (diff) |
Fix the fix that was previously reverted in d8e2d87f.
Reviewed by Lauro Moura <lauro.neto@openbossa.org>
Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'generator')
-rw-r--r-- | generator/overloaddata.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/generator/overloaddata.cpp b/generator/overloaddata.cpp index 9be972f1f..29a1615ff 100644 --- a/generator/overloaddata.cpp +++ b/generator/overloaddata.cpp @@ -147,6 +147,10 @@ void OverloadData::sortNextOverloads() OverloadSortData sortData; bool checkPyObject = false; int pyobjectIndex = 0; + bool checkQString = false; + int qstringIndex = 0; + bool checkQVariant = false; + int qvariantIndex = 0; // Primitive types that are not int, long, short, // char and their respective unsigned counterparts. @@ -172,6 +176,12 @@ void OverloadData::sortNextOverloads() if (!checkPyObject && getTypeName(ov->argType()).contains("PyObject")) { checkPyObject = true; pyobjectIndex = sortData.lastProcessedItemId(); + } else if (!checkQVariant && getTypeName(ov->argType()) == "QVariant") { + checkQVariant = true; + qvariantIndex = sortData.lastProcessedItemId(); + } else if (!checkQString && getTypeName(ov->argType()) == "QString") { + checkQString = true; + qstringIndex = sortData.lastProcessedItemId(); } foreach (const AbstractMetaType* instantiation, ov->argType()->instantiations()) { @@ -265,8 +275,15 @@ void OverloadData::sortNextOverloads() } /* Add dependency on PyObject, so its check is the last one (too generic) */ - if (checkPyObject && !targetTypeEntryName.contains("PyObject")) + if (checkPyObject && !targetTypeEntryName.contains("PyObject")) { graph.addEdge(sortData.map[targetTypeEntryName], pyobjectIndex); + } else if (checkQVariant && targetTypeEntryName != "QVariant") { + if (!graph.containsEdge(qvariantIndex, sortData.map[targetTypeEntryName])) // Avoid cyclic dependency. + graph.addEdge(sortData.map[targetTypeEntryName], qvariantIndex); + } else if (checkQString && ov->argType()->indirections() > 0 && targetTypeEntryName != "QString") { + if (!graph.containsEdge(qstringIndex, sortData.map[targetTypeEntryName])) // Avoid cyclic dependency. + graph.addEdge(sortData.map[targetTypeEntryName], qstringIndex); + } if (targetTypeEntry->isEnum()) { for (int i = 0; i < numPrimitives; ++i) { |