diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-02-20 18:18:34 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-02-20 18:33:31 -0300 |
commit | a71641d51bca4ca7ae4435f7674b7b33dab39457 (patch) | |
tree | e39f00a1e52183104bb943934605f3f6e7da29af /cppgenerator.cpp | |
parent | 5ce831e73fc4b8bee7a5b62d7485eee11f498a92 (diff) |
Adds the convenience method 'isPairContainer' to ShibokenGenerator.
It checks if an AbstractMetaType represents a C++ pair container.
Also updated code to make use of the new method.
Reviewed by Lauro Moura <lauro.neto@openbossa.org>
Diffstat (limited to 'cppgenerator.cpp')
-rw-r--r-- | cppgenerator.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/cppgenerator.cpp b/cppgenerator.cpp index 17ff3f4f1..538e60a1e 100644 --- a/cppgenerator.cpp +++ b/cppgenerator.cpp @@ -1046,16 +1046,11 @@ void CppGenerator::writeInvalidCppObjectCheck(QTextStream& s, QString pyArgName, void CppGenerator::writeTypeCheck(QTextStream& s, const AbstractMetaType* argType, QString argumentName, bool isNumber, QString customType) { - bool isPairContainer = argType->isContainer() - && ((ContainerTypeEntry*)argType->typeEntry())->type() == ContainerTypeEntry::PairContainer; bool writeIsConvertibleCheck = !implicitConversions(argType).isEmpty() || argType->typeEntry()->isObject() || argType->isValuePointer(); - if (writeIsConvertibleCheck) - s << '('; - - if (isPairContainer) + if (writeIsConvertibleCheck || isCString(argType) || isPairContainer(argType)) s << '('; if (!customType.isEmpty()) @@ -1069,10 +1064,11 @@ void CppGenerator::writeTypeCheck(QTextStream& s, const AbstractMetaType* argTyp s << '(' << argumentName << ')'; - if (isPairContainer) + if (isPairContainer(argType)) s << " && PySequence_Size(" << argumentName << ") == 2)"; - - if (writeIsConvertibleCheck) + else if (isCString(argType)) + s << " || " << argumentName << " == Py_None)"; + else if (writeIsConvertibleCheck) s << " || " << cpythonIsConvertibleFunction(argType) << '(' << argumentName << "))"; } |