aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken2/generator/shiboken2/cppgenerator.cpp')
-rw-r--r--sources/shiboken2/generator/shiboken2/cppgenerator.cpp36
1 files changed, 21 insertions, 15 deletions
diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
index be9d426b5..b4337c2b1 100644
--- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
+++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
@@ -4894,18 +4894,20 @@ void CppGenerator::writeFlagsUnaryOperator(QTextStream& s, const AbstractMetaEnu
s << '}' << endl << endl;
}
-QString CppGenerator::getInitFunctionName(GeneratorContext &context) const
+QString CppGenerator::getSimpleClassInitFunctionName(const AbstractMetaClass *metaClass) const
{
- QString initFunctionName;
- if (!context.forSmartPointer()) {
- initFunctionName = context.metaClass()->qualifiedCppName();
- initFunctionName.replace(QLatin1String("::"), QLatin1String("_"));
- } else {
- initFunctionName = getFilteredCppSignatureString(context.preciseType()->cppSignature());
- }
+ QString initFunctionName = metaClass->qualifiedCppName();
+ initFunctionName.replace(QLatin1String("::"), QLatin1String("_"));
return initFunctionName;
}
+QString CppGenerator::getInitFunctionName(GeneratorContext &context) const
+{
+ return !context.forSmartPointer()
+ ? getSimpleClassInitFunctionName(context.metaClass())
+ : getFilteredCppSignatureString(context.preciseType()->cppSignature());
+}
+
void CppGenerator::writeClassRegister(QTextStream &s,
const AbstractMetaClass *metaClass,
GeneratorContext &classContext,
@@ -5441,15 +5443,19 @@ bool CppGenerator::finishGeneration()
if (!shouldGenerate(cls))
continue;
- s_classInitDecl << "void init_" << cls->qualifiedCppName().replace(QLatin1String("::"), QLatin1String("_")) << "(PyObject* module);" << endl;
+ const QString initFunctionName = QLatin1String("init_") + getSimpleClassInitFunctionName(cls);
- QString defineStr = QLatin1String("init_") + cls->qualifiedCppName().replace(QLatin1String("::"), QLatin1String("_"));
+ s_classInitDecl << "void " << initFunctionName << "(PyObject* module);" << endl;
- if (cls->enclosingClass() && (cls->enclosingClass()->typeEntry()->codeGeneration() != TypeEntry::GenerateForSubclass))
- defineStr += QLatin1String("(reinterpret_cast<PyTypeObject *>(") + cpythonTypeNameExt(cls->enclosingClass()->typeEntry()) + QLatin1String(")->tp_dict);");
- else
- defineStr += QLatin1String("(module);");
- s_classPythonDefines << INDENT << defineStr << endl;
+ s_classPythonDefines << INDENT << initFunctionName;
+ if (cls->enclosingClass()
+ && (cls->enclosingClass()->typeEntry()->codeGeneration() != TypeEntry::GenerateForSubclass)) {
+ s_classPythonDefines << "(reinterpret_cast<PyTypeObject *>("
+ << cpythonTypeNameExt(cls->enclosingClass()->typeEntry()) << ")->tp_dict);";
+ } else {
+ s_classPythonDefines << "(module);";
+ }
+ s_classPythonDefines << endl;
}
// Initialize smart pointer types.