aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-02-01 16:57:19 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2017-02-02 07:12:47 +0000
commit5aea62a20195ff45d8f471609a135b9053547b5f (patch)
treebc36477b30a5694d4e59e2133c9a61b18d3bb649
parentdf2b25ac3dcabcba1aefaa4e81fb61f407a9e210 (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.cpp27
-rw-r--r--ApiExtractor/parser/codemodel.h2
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);