diff options
author | Hugo Parente Lima <hugo.lima@openbossa.org> | 2010-04-19 15:16:10 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-09 19:10:00 -0300 |
commit | ba1ec45a45a197a3b1b9a3c00bd3f91a2dea13b8 (patch) | |
tree | 697ab4273f19dff78e346fe53f9c5e973e1c1804 | |
parent | 9800093dbfb9054354ec04a1a035b7f85f328af4 (diff) |
Do not create two AbstractMetaClass for every template class.
-rw-r--r-- | abstractmetabuilder.cpp | 6 | ||||
-rw-r--r-- | parser/codemodel.cpp | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/abstractmetabuilder.cpp b/abstractmetabuilder.cpp index 1d1cd07b1..8e0e29cfe 100644 --- a/abstractmetabuilder.cpp +++ b/abstractmetabuilder.cpp @@ -45,6 +45,7 @@ #include <QDir> #include <cstdio> +#include <algorithm> #include "graph.h" static QString stripTemplateArgs(const QString &name) @@ -334,7 +335,10 @@ bool AbstractMetaBuilder::build(QIODevice* input) fixQObjectForScope(types, model_dynamic_cast<NamespaceModelItem>(m_dom)); // Start the generation... - QList<ClassModelItem > typeValues = typeMap.values(); + ClassList typeValues = typeMap.values(); + ClassList::iterator it = std::unique(typeValues.begin(), typeValues.end()); + typeValues.erase(it, typeValues.end()); + ReportHandler::setProgressReference(typeValues); foreach (ClassModelItem item, typeValues) { ReportHandler::progress("Generating class model for %s", qPrintable(item->name())); diff --git a/parser/codemodel.cpp b/parser/codemodel.cpp index ecc8e3036..861a6708c 100644 --- a/parser/codemodel.cpp +++ b/parser/codemodel.cpp @@ -24,6 +24,7 @@ #include "codemodel.h" +#include <algorithm> // --------------------------------------------------------------------------- CodeModel::CodeModel() @@ -371,7 +372,10 @@ FunctionModelItem _ScopeModelItem::declaredFunction(FunctionModelItem item) ClassList _ScopeModelItem::classes() const { - return _M_classes.values(); + ClassList result = _M_classes.values(); + ClassList::iterator it = std::unique(result.begin(), result.end()); + result.erase(it, result.end()); + return result; } TypeAliasList _ScopeModelItem::typeAliases() const |