diff options
author | Renato Araujo Oliveira Filho <renato.filho@openbossa.org> | 2010-12-22 12:39:41 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:12:50 -0300 |
commit | f4b51923793402b43abc713be92119e560fc60ba (patch) | |
tree | c17445cfc749677b0c189ea672b872b620288a79 | |
parent | c036aa708b0232406f6f278ad0578b7b333c0f6a (diff) |
Use converter during generation only for primitives types which is
impossible to convert using by Py_BuildValue.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Hugo Parente <hugo.lima@openbossa.org>
-rw-r--r-- | generator/cppgenerator.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp index d90720018..6e92cd648 100644 --- a/generator/cppgenerator.cpp +++ b/generator/cppgenerator.cpp @@ -624,19 +624,25 @@ void CppGenerator::writeVirtualMethodNative(QTextStream &s, const AbstractMetaFu QString argConv; QTextStream ac(&argConv); - bool convert = arg->type()->isObject() + const PrimitiveTypeEntry* argType = (const PrimitiveTypeEntry*) arg->type()->typeEntry(); + bool convert = argType->isObject() || arg->type()->isQObject() - || arg->type()->isValue() + || argType->isValue() || arg->type()->isValuePointer() || arg->type()->isNativePointer() - || arg->type()->isFlags() - || arg->type()->isEnum() - || arg->type()->isContainer() + || argType->isFlags() + || argType->isEnum() + || argType->isContainer() || arg->type()->isReference(); - //leave the conversion to python - if (arg->type()->isPrimitive() && (m_formatUnits.contains(arg->type()->typeEntry()->name()) || m_formatUnits.contains(arg->type()->typeEntry()->qualifiedCppName()))) - convert = false; + if (!convert && argType->isPrimitive()) { + if (argType->basicAliasedTypeEntry()) + argType = argType->basicAliasedTypeEntry(); + if (m_formatUnits.contains(argType->name())) + convert = false; + else + convert = true; + } bool hasConversionRule = !func->conversionRule(TypeSystem::TargetLangCode, arg->argumentIndex() + 1).isEmpty(); |