diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-02-01 16:57:19 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-02-02 07:12:47 +0000 |
commit | 5aea62a20195ff45d8f471609a135b9053547b5f (patch) | |
tree | bc36477b30a5694d4e59e2133c9a61b18d3bb649 | |
parent | df2b25ac3dcabcba1aefaa4e81fb61f407a9e210 (diff) |
Fix unique code model items
Add _NamespaceModelItem::uniqueNamespaces() returning a QSet
of unique namespaces via QSharedPointer::operator< instead
of repetitively sorting in AbstractMetaBuilderPrivate.
Remove the sorting for classes as it is not needed.
Task-number: PYSIDE-323
Change-Id: I0bc62bd8a44a99ca33a6499d64f7d5ab8f590a82
Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r-- | ApiExtractor/abstractmetabuilder.cpp | 27 | ||||
-rw-r--r-- | ApiExtractor/parser/codemodel.h | 2 |
2 files changed, 7 insertions, 22 deletions
diff --git a/ApiExtractor/abstractmetabuilder.cpp b/ApiExtractor/abstractmetabuilder.cpp index e26342cf2..85d959d50 100644 --- a/ApiExtractor/abstractmetabuilder.cpp +++ b/ApiExtractor/abstractmetabuilder.cpp @@ -474,11 +474,7 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom) fixQObjectForScope(dom, types, dom); // Start the generation... - ClassList typeValues = dom->classes(); - qSort(typeValues); - ClassList::iterator it = std::unique(typeValues.begin(), typeValues.end()); - typeValues.erase(it, typeValues.end()); - + const ClassList &typeValues = dom->classes(); ReportHandler::setProgressReference(typeValues); foreach (const ClassModelItem &item, typeValues) { ReportHandler::progress(QLatin1String("Generating class model...")); @@ -500,11 +496,7 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom) } } - NamespaceList namespaceTypeValues = dom->namespaces(); - qSort(namespaceTypeValues); - NamespaceList::iterator nsit = std::unique(namespaceTypeValues.begin(), namespaceTypeValues.end()); - namespaceTypeValues.erase(nsit, namespaceTypeValues.end()); - + const QSet<NamespaceModelItem> &namespaceTypeValues = dom->uniqueNamespaces(); ReportHandler::setProgressReference(namespaceTypeValues); foreach (NamespaceModelItem item, namespaceTypeValues) { ReportHandler::progress(QLatin1String("Generating namespace model...")); @@ -816,10 +808,7 @@ AbstractMetaClass *AbstractMetaBuilderPrivate::traverseNamespace(const FileModel } // Traverse namespaces recursively - NamespaceList innerNamespaces = namespaceItem->namespaces(); - qSort(innerNamespaces); - NamespaceList::iterator it = std::unique(innerNamespaces.begin(), innerNamespaces.end()); - innerNamespaces.erase(it, innerNamespaces.end()); + const QSet<NamespaceModelItem> &innerNamespaces = namespaceItem->uniqueNamespaces(); foreach (const NamespaceModelItem &ni, innerNamespaces) { AbstractMetaClass* mjc = traverseNamespace(dom, ni); if (mjc) { @@ -1323,10 +1312,7 @@ void AbstractMetaBuilderPrivate::traverseScopeMembers(ScopeModelItem item, traverseFunctions(item, metaClass); // Inner classes - ClassList innerClasses = item->classes(); - qSort(innerClasses); - ClassList::iterator it = std::unique(innerClasses.begin(), innerClasses.end()); - innerClasses.erase(it, innerClasses.end()); + const ClassList &innerClasses = item->classes(); foreach (const ClassModelItem& ci, innerClasses) traverseClassMembers(ci); } @@ -1374,10 +1360,7 @@ void AbstractMetaBuilderPrivate::traverseNamespaceMembers(NamespaceModelItem ite traverseScopeMembers(item, metaClass); // Inner namespaces - NamespaceList innerNamespaces = item->namespaces(); - qSort(innerNamespaces); - NamespaceList::iterator it = std::unique(innerNamespaces.begin(), innerNamespaces.end()); - innerNamespaces.erase(it, innerNamespaces.end()); + const QSet<NamespaceModelItem> &innerNamespaces = item->uniqueNamespaces(); foreach (const NamespaceModelItem &ni, innerNamespaces) traverseNamespaceMembers(ni); diff --git a/ApiExtractor/parser/codemodel.h b/ApiExtractor/parser/codemodel.h index 635ae9538..5df8efd93 100644 --- a/ApiExtractor/parser/codemodel.h +++ b/ApiExtractor/parser/codemodel.h @@ -35,6 +35,7 @@ #include <QtCore/QHash> #include <QtCore/QList> +#include <QtCore/QSet> #include <QtCore/QString> #include <QtCore/QStringList> #include <QtCore/QVector> @@ -403,6 +404,7 @@ public: ~_NamespaceModelItem(); NamespaceList namespaces() const { return m_namespaces; } + QSet<NamespaceModelItem> uniqueNamespaces() const { return m_namespaces.toSet(); } void addNamespace(NamespaceModelItem item); |