aboutsummaryrefslogtreecommitdiffstats
path: root/generator
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2011-07-28 03:32:16 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:17:05 -0300
commit767e21c15eb9a400fb43eda35fa3aea01330e8b6 (patch)
treede4b755763a7d4875fcd7cf2c1c83af0e0321d1e /generator
parentf50a2b5841d63ddaef3195a29bfe3e07de91157a (diff)
More readable code on CppGenerator::writeVirtualMethodNative() method.
Diffstat (limited to 'generator')
-rw-r--r--generator/cppgenerator.cpp28
1 files changed, 12 insertions, 16 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp
index 9687b02dc..20d99f257 100644
--- a/generator/cppgenerator.cpp
+++ b/generator/cppgenerator.cpp
@@ -862,28 +862,24 @@ void CppGenerator::writeVirtualMethodNative(QTextStream &s, const AbstractMetaFu
CodeSnipList convRule = getReturnConversionRule(TypeSystem::NativeCode, func, "", CPP_RETURN_VAR);
writeCodeSnips(s, convRule, CodeSnip::Any, TypeSystem::NativeCode, func);
} else if (!injectedCodeHasReturnValueAttribution(func, TypeSystem::NativeCode)) {
- s << INDENT;
- QString protectedEnumName;
- if (avoidProtectedHack()) {
+ QString conversion;
+ QTextStream c(&conversion);
+ writeToCppConversion(c, func->type(), func->implementingClass(), PYTHON_RETURN_VAR);
+ QString typeName;
+ if (avoidProtectedHack() && func->type()->isEnum()) {
const AbstractMetaEnum* metaEnum = findAbstractMetaEnum(func->type());
bool isProtectedEnum = metaEnum && metaEnum->isProtected();
if (isProtectedEnum) {
- protectedEnumName = metaEnum->name();
if (metaEnum->enclosingClass())
- protectedEnumName = metaEnum->enclosingClass()->qualifiedCppName() + "::" + protectedEnumName;
- s << protectedEnumName;
+ typeName = QString("%1::").arg(metaEnum->enclosingClass()->qualifiedCppName());
+ typeName += metaEnum->name();
+ conversion.prepend(typeName+'(');
+ conversion.append(')');
}
}
- if (protectedEnumName.isEmpty())
- s << translateTypeForWrapperMethod(func->type(), func->implementingClass());
- s << " " CPP_RETURN_VAR "(";
- if (avoidProtectedHack() && !protectedEnumName.isEmpty())
- s << protectedEnumName << '(';
- writeToCppConversion(s, func->type(), func->implementingClass(), PYTHON_RETURN_VAR);
- if (avoidProtectedHack() && !protectedEnumName.isEmpty())
- s << ')';
- s << ')';
- s << ';' << endl;
+ if (typeName.isEmpty())
+ typeName = translateTypeForWrapperMethod(func->type(), func->implementingClass());
+ s << INDENT << typeName << " " CPP_RETURN_VAR " = " << conversion << ';' << endl;
}
}
}