From 3613ffd9aab5cd1fcedbbb82584337ad4cc26d41 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 15 Mar 2017 12:53:27 +0100 Subject: _ScopeModelItem: Store functions in list This should remove the non-determinism when generating code. Change-Id: Ica9eb8e620d442b3d5166ac4c9f37894debcdd4c Reviewed-by: Christian Tismer --- ApiExtractor/asttoxml.cpp | 6 +++--- ApiExtractor/parser/codemodel.cpp | 24 +++++++++++------------- 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 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 m_functions; + FunctionList m_functions; private: QStringList m_enumsDeclarations; -- cgit v1.2.3