diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-03-15 12:53:27 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-03-16 07:22:27 +0000 |
commit | 3613ffd9aab5cd1fcedbbb82584337ad4cc26d41 (patch) | |
tree | be96ad4582aad33703c73a9e83d8e698de3e237d | |
parent | 3c325a0004a377da14ad255addb42e23c4e9cf17 (diff) |
_ScopeModelItem: Store functions in list
This should remove the non-determinism when
generating code.
Change-Id: Ica9eb8e620d442b3d5166ac4c9f37894debcdd4c
Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r-- | ApiExtractor/asttoxml.cpp | 6 | ||||
-rw-r--r-- | ApiExtractor/parser/codemodel.cpp | 24 | ||||
-rw-r--r-- | ApiExtractor/parser/codemodel.h | 6 |
3 files changed, 16 insertions, 20 deletions
diff --git a/ApiExtractor/asttoxml.cpp b/ApiExtractor/asttoxml.cpp index cc9533d97..7a2f1261e 100644 --- a/ApiExtractor/asttoxml.cpp +++ b/ApiExtractor/asttoxml.cpp @@ -147,9 +147,9 @@ void writeOutClass(QXmlStreamWriter &s, const ClassModelItem &item) foreach (const EnumModelItem &e, enums) writeOutEnum(s, e); - const FunctionModelItemMap &functionMap = item->functionMap(); - for (FunctionModelItemMap::const_iterator it = functionMap.cbegin(), end = functionMap.cend(); it != end; ++it) - writeOutFunction(s, it.value()); + const FunctionList &functionList = item->functions(); + foreach (const FunctionModelItem &func, functionList) + writeOutFunction(s, func); const ClassList &classList = item->classes(); foreach (const ClassModelItem &c, classList) diff --git a/ApiExtractor/parser/codemodel.cpp b/ApiExtractor/parser/codemodel.cpp index c0ecf8b73..a5024c4a3 100644 --- a/ApiExtractor/parser/codemodel.cpp +++ b/ApiExtractor/parser/codemodel.cpp @@ -588,13 +588,11 @@ void _ClassModelItem::formatDebug(QDebug &d) const // --------------------------------------------------------------------------- FunctionModelItem _ScopeModelItem::declaredFunction(FunctionModelItem item) { - FunctionList function_list = findFunctions(item->name()); - - foreach(FunctionModelItem fun, function_list) { - if (fun->isSimilar(item)) + foreach (const FunctionModelItem &fun, m_functions) { + if (fun->name() == item->name() && fun->isSimilar(item)) return fun; - } + } return FunctionModelItem(); } @@ -602,11 +600,6 @@ _ScopeModelItem::~_ScopeModelItem() { } -FunctionList _ScopeModelItem::functions() const -{ - return m_functions.values(); -} - void _ScopeModelItem::addEnumsDeclaration(const QString &enumsDeclaration) { m_enumsDeclarations << enumsDeclaration; @@ -619,7 +612,7 @@ void _ScopeModelItem::addClass(ClassModelItem item) void _ScopeModelItem::addFunction(FunctionModelItem item) { - m_functions.insert(item->name(), item); + m_functions.append(item); } void _ScopeModelItem::addVariable(VariableModelItem item) @@ -678,7 +671,7 @@ void _ScopeModelItem::formatScopeItemsDebug(QDebug &d) const formatScopeList(d, ", classes=", m_classes, "\n", true); formatScopeList(d, ", enums=", m_enums, "\n", true); formatScopeList(d, ", aliases=", m_typeDefs, "\n", true); - formatScopeHash(d, ", functions=", m_functions, "\n", true); + formatScopeList(d, ", functions=", m_functions, "\n", true); formatScopeList(d, ", variables=", m_variables); } @@ -736,7 +729,12 @@ EnumModelItem _ScopeModelItem::findEnum(const QString &name) const FunctionList _ScopeModelItem::findFunctions(const QString &name) const { - return m_functions.values(name); + FunctionList result; + foreach (const FunctionModelItem &func, m_functions) { + if (func->name() == name) + result.append(func); + } + return result; } // --------------------------------------------------------------------------- diff --git a/ApiExtractor/parser/codemodel.h b/ApiExtractor/parser/codemodel.h index 66a107ab9..811cfec3e 100644 --- a/ApiExtractor/parser/codemodel.h +++ b/ApiExtractor/parser/codemodel.h @@ -298,7 +298,7 @@ public: ClassList classes() const { return m_classes; } EnumList enums() const { return m_enums; } - FunctionList functions() const; + inline FunctionList functions() const { return m_functions; } TypeDefList typeDefs() const { return m_typeDefs; } VariableList variables() const { return m_variables; } @@ -317,8 +317,6 @@ public: void addEnumsDeclaration(const QString &enumsDeclaration); QStringList enumsDeclarations() const { return m_enumsDeclarations; } - inline QMultiHash<QString, FunctionModelItem> functionMap() const { return m_functions; } - FunctionModelItem declaredFunction(FunctionModelItem item); #ifndef QT_NO_DEBUG_STREAM @@ -340,7 +338,7 @@ private: EnumList m_enums; TypeDefList m_typeDefs; VariableList m_variables; - QMultiHash<QString, FunctionModelItem> m_functions; + FunctionList m_functions; private: QStringList m_enumsDeclarations; |