aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cppgenerator.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/cppgenerator.cpp b/cppgenerator.cpp
index 2a70d94fc..6f9a20538 100644
--- a/cppgenerator.cpp
+++ b/cppgenerator.cpp
@@ -546,11 +546,17 @@ void CppGenerator::writeVirtualMethodNative(QTextStream &s, const AbstractMetaFu
s << INDENT << INDENT << ";" << endl;
s << INDENT << "}" << endl;
- s << INDENT;
- s << translateTypeForWrapperMethod(func->type(), func->implementingClass()) << ' ' << CPP_RETURN_VAR << "(";
- writeToCppConversion(s, func->type(), func->implementingClass(), PYTHON_RETURN_VAR);
- s << ')';
- s << ';' << endl;
+ bool hasConversionRule = !func->conversionRule(TypeSystem::NativeCode, 0).isEmpty();
+ if (hasConversionRule) {
+ 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;
+ s << translateTypeForWrapperMethod(func->type(), func->implementingClass()) << ' ' << CPP_RETURN_VAR << "(";
+ writeToCppConversion(s, func->type(), func->implementingClass(), PYTHON_RETURN_VAR);
+ s << ')';
+ s << ';' << endl;
+ }
}
}