aboutsummaryrefslogtreecommitdiffstats
path: root/shibokengenerator.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2010-05-31 15:25:12 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2010-06-02 13:30:39 -0300
commit47d4a1f545eb7f348e46d39230a73a1b465e57a4 (patch)
treee8574c6fee17835de762730cce10b82f6871c2ae /shibokengenerator.cpp
parentdfdc92fbe5288064987beb097f50a73a63d2546e (diff)
Generator improved to handle protected enums without the protected hack.
Diffstat (limited to 'shibokengenerator.cpp')
-rw-r--r--shibokengenerator.cpp27
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);
}