diff options
-rw-r--r-- | cppgenerator.cpp | 4 | ||||
-rw-r--r-- | shibokengenerator.cpp | 26 | ||||
-rw-r--r-- | shibokengenerator.h | 4 |
3 files changed, 9 insertions, 25 deletions
diff --git a/cppgenerator.cpp b/cppgenerator.cpp index bd3adc529..e3574d7cf 100644 --- a/cppgenerator.cpp +++ b/cppgenerator.cpp @@ -1868,10 +1868,8 @@ void CppGenerator::writeClassRegister(QTextStream& s, const AbstractMetaClass* m s << metaClass->baseClassNames().size(); s << ',' << endl; QStringList bases; - foreach (QString baseName, metaClass->baseClassNames()) { - const AbstractMetaClass* base = classes().findClass(baseName); + foreach (const AbstractMetaClass* base, getBaseClasses(metaClass)) bases << QString("(PyTypeObject*)&%1").arg(cpythonTypeName(base->typeEntry())); - } Indentation indent(INDENT); s << INDENT << bases.join(", ") << ");" << endl << endl; } diff --git a/shibokengenerator.cpp b/shibokengenerator.cpp index 3e6d6ff34..f26c872c6 100644 --- a/shibokengenerator.cpp +++ b/shibokengenerator.cpp @@ -952,28 +952,12 @@ bool ShibokenGenerator::injectedCodeCallsCppFunction(const AbstractMetaFunction* return false; } -QStringList ShibokenGenerator::getBaseClasses(const AbstractMetaClass* metaClass) +AbstractMetaClassList ShibokenGenerator::getBaseClasses(const AbstractMetaClass* metaClass) { - QStringList baseClass; - - if (!metaClass->baseClassName().isEmpty() && - (metaClass->name() != metaClass->baseClassName())) - baseClass.append(metaClass->baseClassName()); - - foreach (AbstractMetaClass* interface, metaClass->interfaces()) { - AbstractMetaClass* aux = interface->primaryInterfaceImplementor(); - if (!aux) - continue; - - //skip templates - if (!aux->templateArguments().isEmpty()) - continue; - - if (!aux->name().isEmpty() && (metaClass->name() != aux->name())) - baseClass.append(aux->name()); - } - - return baseClass; + AbstractMetaClassList baseClasses; + foreach (QString parent, metaClass->baseClassNames()) + baseClasses << classes().findClass(parent); + return baseClasses; } const AbstractMetaClass* ShibokenGenerator::getMultipleInheritingClass(const AbstractMetaClass* metaClass) diff --git a/shibokengenerator.h b/shibokengenerator.h index dd1d521d5..1acf9d204 100644 --- a/shibokengenerator.h +++ b/shibokengenerator.h @@ -154,7 +154,9 @@ public: int arg_count = -1) const; bool hasInjectedCodeOrSignatureModification(const AbstractMetaFunction* func); - QStringList getBaseClasses(const AbstractMetaClass* metaClass); + + /// Returns a list of parent classes for a method. + AbstractMetaClassList getBaseClasses(const AbstractMetaClass* metaClass); const AbstractMetaClass* getMultipleInheritingClass(const AbstractMetaClass* metaClass); |