aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shibokengenerator.cpp11
-rw-r--r--shibokengenerator.h5
2 files changed, 15 insertions, 1 deletions
diff --git a/shibokengenerator.cpp b/shibokengenerator.cpp
index 84ce72300..77fabf130 100644
--- a/shibokengenerator.cpp
+++ b/shibokengenerator.cpp
@@ -1204,6 +1204,17 @@ const AbstractMetaClass* ShibokenGenerator::getMultipleInheritingClass(const Abs
return getMultipleInheritingClass(metaClass->baseClass());
}
+AbstractMetaClassList ShibokenGenerator::getAllAncestors(const AbstractMetaClass* metaClass)
+{
+ AbstractMetaClassList result;
+ AbstractMetaClassList baseClasses = getBaseClasses(metaClass);
+ foreach (AbstractMetaClass* base, baseClasses) {
+ result.append(base);
+ result.append(getAllAncestors(base));
+ }
+ return result;
+}
+
QString ShibokenGenerator::getApiExportMacro() const
{
return "SHIBOKEN_"+moduleName().toUpper()+"_API"; // a longer name to avoid name clashes
diff --git a/shibokengenerator.h b/shibokengenerator.h
index 6fbc15852..34ad26177 100644
--- a/shibokengenerator.h
+++ b/shibokengenerator.h
@@ -189,9 +189,12 @@ public:
/// Returns a list of methods of the given class where each one is part of a different overload with both static and non-static method.
AbstractMetaFunctionList getMethodsWithBothStaticAndNonStaticMethods(const AbstractMetaClass* metaClass);
- /// Returns a list of parent classes for a method.
+ /// Returns a list of parent classes for a given class.
AbstractMetaClassList getBaseClasses(const AbstractMetaClass* metaClass);
+ /// Returns a list of all ancestor classes for the given class.
+ AbstractMetaClassList getAllAncestors(const AbstractMetaClass* metaClass);
+
const AbstractMetaClass* getMultipleInheritingClass(const AbstractMetaClass* metaClass);
void writeBaseConversion(QTextStream& s, const AbstractMetaType* type,