aboutsummaryrefslogtreecommitdiffstats
path: root/shibokengenerator.cpp
diff options
context:
space:
mode:
authorLuciano Wolf <luciano.wolf@openbossa.org>2009-09-22 17:36:00 -0300
committerLuciano Wolf <luciano.wolf@openbossa.org>2009-09-22 17:51:57 -0300
commit6b9a6c30cb4899d7536dfae7e74413f7d6cf897b (patch)
tree69d2aaac53867c87e6ffcec91e71d50f6071b8bf /shibokengenerator.cpp
parent0581436081ef69ae62c51d4bb53c03cb9e6adefb (diff)
Fix QTextCodec and QTextCodec::ConverterState generation:
- Fix function names containing "::" (such as QTextCodec); - Fix wrong method naming while generating CPython code; - Fix inner classes code generation.
Diffstat (limited to 'shibokengenerator.cpp')
-rw-r--r--shibokengenerator.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/shibokengenerator.cpp b/shibokengenerator.cpp
index fdb03b6b1..22cc3de50 100644
--- a/shibokengenerator.cpp
+++ b/shibokengenerator.cpp
@@ -177,15 +177,11 @@ QString ShibokenGenerator::wrapperName(const AbstractMetaClass* metaClass)
QString ShibokenGenerator::cpythonFunctionName(const AbstractMetaFunction* func)
{
- QString result = QLatin1String("Py");
+ QString result;
if (func->ownerClass()) {
- result += func->ownerClass()->name();
- if (func->ownerClass()->enclosingClass()) // is a inner class
- result.replace("::", "_");
-
+ result = cpythonBaseName(func->ownerClass()->typeEntry());
result += '_';
-
if (func->isConstructor() || func->isCopyConstructor())
result += "New";
else if (func->isOperatorOverload())
@@ -193,7 +189,7 @@ QString ShibokenGenerator::cpythonFunctionName(const AbstractMetaFunction* func)
else
result += func->name();
} else {
- result += moduleName() + "Module_" + func->name();
+ result = "Py" + moduleName() + "Module_" + func->name();
}
return result;
@@ -319,7 +315,7 @@ QString ShibokenGenerator::cpythonBaseName(const AbstractMetaType* type)
QString ShibokenGenerator::cpythonBaseName(const TypeEntry* type)
{
QString baseName;
- if ((type->isObject() || type->isValue())) { // && !type->isReference()) {
+ if ((type->isObject() || type->isValue() || type->isNamespace())) { // && !type->isReference()) {
baseName = QString("Py") + type->name();
} else if (type->isPrimitive()) {
const PrimitiveTypeEntry* ptype = (const PrimitiveTypeEntry*) type;
@@ -363,7 +359,12 @@ QString ShibokenGenerator::cpythonBaseName(const TypeEntry* type)
} else {
baseName = "PyObject";
}
- return baseName;
+ return baseName.replace("::", "_");
+}
+
+QString ShibokenGenerator::cpythonTypeName(const AbstractMetaClass* metaClass)
+{
+ return cpythonTypeName(metaClass->typeEntry());
}
QString ShibokenGenerator::cpythonTypeName(const TypeEntry* type)