diff options
Diffstat (limited to 'generator')
-rw-r--r-- | generator/generator.cpp | 5 | ||||
-rw-r--r-- | generator/generator.h | 6 | ||||
-rw-r--r-- | generator/shiboken/cppgenerator.cpp | 2 |
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) { |