From ec74d012b6dc5eb49df4259dd64e33e455b8c5cc Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Tue, 29 Jun 2010 10:38:17 -0300 Subject: Guarantees that namespaces and inner classes will not be repeated. Lists of global namespaces, inner classes and inner namespaces now have duplicated entries removed. --- abstractmetabuilder.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'abstractmetabuilder.cpp') diff --git a/abstractmetabuilder.cpp b/abstractmetabuilder.cpp index 41a8b9532..41d49d00b 100644 --- a/abstractmetabuilder.cpp +++ b/abstractmetabuilder.cpp @@ -366,8 +366,13 @@ bool AbstractMetaBuilder::build(QIODevice* input) ReportHandler::flush(); QHash namespaceMap = m_dom->namespaceMap(); + NamespaceList namespaceTypeValues = namespaceMap.values(); + qSort(namespaceTypeValues); + NamespaceList::iterator nsit = std::unique(namespaceTypeValues.begin(), namespaceTypeValues.end()); + namespaceTypeValues.erase(nsit, namespaceTypeValues.end()); + ReportHandler::setProgressReference(namespaceMap); - foreach (NamespaceModelItem item, namespaceMap.values()) { + foreach (NamespaceModelItem item, namespaceTypeValues) { ReportHandler::progress("Generating namespace model..."); AbstractMetaClass *metaClass = traverseNamespace(item); if (metaClass) @@ -1130,7 +1135,10 @@ void AbstractMetaBuilder::traverseClassMembers(ScopeModelItem scopeItem) traverseFunctions(scopeItem, metaClass); { - QList innerClasses = scopeItem->classMap().values(); + ClassList innerClasses = scopeItem->classMap().values(); + qSort(innerClasses); + ClassList::iterator it = std::unique(innerClasses.begin(), innerClasses.end()); + innerClasses.erase(it, innerClasses.end()); foreach (const ClassModelItem& ci, innerClasses) traverseClassMembers(model_dynamic_cast(ci)); } -- cgit v1.2.3