From 293dca7e9b7909a54f057cf658bdea7c07fb49ee Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Fri, 16 Apr 2010 19:39:47 -0300 Subject: Fix class dependence in topological sort. - An inner class depends on their enclosed class. - A class depends on their namespace. --- abstractmetabuilder.cpp | 31 ++++--------------------------- 1 file changed, 4 insertions(+), 27 deletions(-) (limited to 'abstractmetabuilder.cpp') diff --git a/abstractmetabuilder.cpp b/abstractmetabuilder.cpp index 797f76d2d..1d1cd07b1 100644 --- a/abstractmetabuilder.cpp +++ b/abstractmetabuilder.cpp @@ -2668,34 +2668,11 @@ AbstractMetaClassList AbstractMetaBuilder::classesTopologicalSorted(const Abstra if (clazz->isInterface() || !clazz->typeEntry()->generateCode()) continue; - // check base class dep. - QString baseClassName(clazz->baseClassName()); - if (!baseClassName.isNull() && baseClassName != clazz->name() && map.contains(baseClassName)) { - if (clazz->baseClass()->enclosingClass() && - clazz->baseClass()->enclosingClass() != clazz->enclosingClass()) { - baseClassName = clazz->baseClass()->enclosingClass()->name(); - } - graph.addEdge(map[baseClassName], map[clazz->name()]); - } - - // interfaces... - foreach (AbstractMetaClass* interface, clazz->interfaces()) { - if (!interface->typeEntry()->generateCode()) - continue; - - if (interface->isInterface()) - interface = interface->primaryInterfaceImplementor(); + if (clazz->enclosingClass()) + graph.addEdge(map[clazz->enclosingClass()->name()], map[clazz->name()]); - if (interface->enclosingClass() && - interface->enclosingClass() != clazz->enclosingClass()) { - baseClassName = interface->enclosingClass()->name(); - } else { - baseClassName = interface->name(); - } - - if (!baseClassName.isNull() && baseClassName != clazz->name() && map.contains(baseClassName)) - graph.addEdge(map[baseClassName], map[clazz->name()]); - } + foreach(AbstractMetaClass* baseClass, getBaseClasses(clazz)) + graph.addEdge(map[baseClass->name()], map[clazz->name()]); foreach (AbstractMetaFunction* func, clazz->functions()) { foreach (AbstractMetaArgument* arg, func->arguments()) { -- cgit v1.2.3