diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-05-31 15:25:12 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-06-02 13:30:39 -0300 |
commit | 47d4a1f545eb7f348e46d39230a73a1b465e57a4 (patch) | |
tree | e8574c6fee17835de762730cce10b82f6871c2ae /shibokengenerator.cpp | |
parent | dfdc92fbe5288064987beb097f50a73a63d2546e (diff) |
Generator improved to handle protected enums without the protected hack.
Diffstat (limited to 'shibokengenerator.cpp')
-rw-r--r-- | shibokengenerator.cpp | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/shibokengenerator.cpp b/shibokengenerator.cpp index 64976d3dd..5b85ef43a 100644 --- a/shibokengenerator.cpp +++ b/shibokengenerator.cpp @@ -157,10 +157,19 @@ QString ShibokenGenerator::translateTypeForWrapperMethod(const AbstractMetaType* { QString result; - if (cType->isArray()) + if (cType->isArray()) { result = translateTypeForWrapperMethod(cType->arrayElementType(), context) + "[]"; - else - result = translateType(cType, context); + } else { +#ifdef AVOID_PROTECTED_HACK + if (cType->isEnum()) { + const AbstractMetaEnum* metaEnum = findAbstractMetaEnum(cType); + if (metaEnum && metaEnum->isProtected()) + result = protectedEnumSurrogateName(metaEnum); + } + if (result.isEmpty()) +#endif + result = translateType(cType, context); + } return result; } @@ -188,6 +197,11 @@ QString ShibokenGenerator::wrapperName(const AbstractMetaClass* metaClass) } } +QString ShibokenGenerator::protectedEnumSurrogateName(const AbstractMetaEnum* metaEnum) +{ + return metaEnum->fullName().replace(".", "_") + "_Surrogate"; +} + QString ShibokenGenerator::cpythonFunctionName(const AbstractMetaFunction* func) { QString result; @@ -299,6 +313,13 @@ void ShibokenGenerator::writeBaseConversion(QTextStream& s, const TypeEntry* typ QString typeName = type->name(); if (type->isObject()) typeName.append('*'); +#ifdef AVOID_PROTECTED_HACK + if (type->isEnum()) { + const AbstractMetaEnum* metaEnum = findAbstractMetaEnum(type); + if (metaEnum && metaEnum->isProtected()) + typeName = protectedEnumSurrogateName(metaEnum); + } +#endif s << baseConversionString(typeName); } |