aboutsummaryrefslogtreecommitdiffstats
path: root/generator
diff options
context:
space:
mode:
Diffstat (limited to 'generator')
-rw-r--r--generator/generator.cpp5
-rw-r--r--generator/generator.h6
-rw-r--r--generator/shiboken/cppgenerator.cpp2
3 files changed, 12 insertions, 1 deletions
diff --git a/generator/generator.cpp b/generator/generator.cpp
index 80399f71b..2d2456a10 100644
--- a/generator/generator.cpp
+++ b/generator/generator.cpp
@@ -153,6 +153,11 @@ AbstractMetaClassList Generator::classes() const
return m_d->apiextractor->classes();
}
+AbstractMetaClassList Generator::classesTopologicalSorted() const
+{
+ return m_d->apiextractor->classesTopologicalSorted();
+}
+
AbstractMetaFunctionList Generator::globalFunctions() const
{
return m_d->apiextractor->globalFunctions();
diff --git a/generator/generator.h b/generator/generator.h
index 3c357675c..8435ab6f7 100644
--- a/generator/generator.h
+++ b/generator/generator.h
@@ -95,6 +95,12 @@ public:
/// Returns the classes used to generate the binding code.
AbstractMetaClassList classes() const;
+ /// Returns the classes, topologically ordered, used to generate the binding code.
+ ///
+ /// The classes are ordered such that derived classes appear later in the list than
+ /// their parent classes.
+ AbstractMetaClassList classesTopologicalSorted() const;
+
/// Returns all global functions found by APIExtractor
AbstractMetaFunctionList globalFunctions() const;
diff --git a/generator/shiboken/cppgenerator.cpp b/generator/shiboken/cppgenerator.cpp
index a6ec5746d..04a087021 100644
--- a/generator/shiboken/cppgenerator.cpp
+++ b/generator/shiboken/cppgenerator.cpp
@@ -4590,7 +4590,7 @@ void CppGenerator::finishGeneration()
//this is a temporary solution before new type revison implementation
//We need move QMetaObject register before QObject
- AbstractMetaClassList lst = classes();
+ AbstractMetaClassList lst = classesTopologicalSorted();
AbstractMetaClass* klassQObject = lst.findClass("QObject");
AbstractMetaClass* klassQMetaObject = lst.findClass("QMetaObject");
if (klassQObject && klassQMetaObject) {