aboutsummaryrefslogtreecommitdiffstats
path: root/generator
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2011-06-06 11:41:10 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:15:25 -0300
commitc2890587871dd425da146d0c60510119a809b869 (patch)
treed7aa064a9ca49210747c623e6b0aca0c8cc69bc6 /generator
parent7b419e9c5996dc3ffc72d2ae2a6d6f73f8954112 (diff)
Fix overload decisor on rich-compare function.
Fixes bug #292. Reviewer: Marcelo Lira <marcelo.lira@openbossa.org> Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'generator')
-rw-r--r--generator/cppgenerator.cpp13
1 files changed, 4 insertions, 9 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp
index efcba7c48..9e9c31ae9 100644
--- a/generator/cppgenerator.cpp
+++ b/generator/cppgenerator.cpp
@@ -3035,7 +3035,6 @@ void CppGenerator::writeRichCompareFunction(QTextStream& s, const AbstractMetaCl
{
Indentation indent(INDENT);
foreach (AbstractMetaFunctionList overloads, cmpOverloads) {
- OverloadData overloadData(overloads, this);
const AbstractMetaFunction* rfunc = overloads[0];
QString operatorId = ShibokenGenerator::pythonRichCompareOperatorId(rfunc);
@@ -3055,7 +3054,9 @@ void CppGenerator::writeRichCompareFunction(QTextStream& s, const AbstractMetaCl
bool first = true;
bool comparesWithSameType = false;
- foreach (const AbstractMetaFunction* func, overloads) {
+ OverloadData overloadData(overloads, this);
+ foreach (OverloadData* data, overloadData.nextOverloadData()) {
+ const AbstractMetaFunction* func = data->referenceFunction();
if (func->isStatic())
continue;
@@ -3088,13 +3089,7 @@ void CppGenerator::writeRichCompareFunction(QTextStream& s, const AbstractMetaCl
{
Indentation indent(INDENT);
s << INDENT << "// " << func->signature() << endl;
- s << INDENT;
- s << translateTypeForWrapperMethod(type, 0, ExcludeReference | ExcludeConst);
- if (type->isObject() || type->isQObject())
- s << '&';
- s << " cppArg0 = ";
- writeToCppConversion(s, type, 0, "arg", ExcludeReference | ExcludeConst);
- s << ';' << endl;
+ writeArgumentConversion(s, type, "cppArg0", "arg", metaClass);
// If the function is user added, use the inject code
if (func->isUserAdded()) {