aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-03-15 12:53:27 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2017-03-16 07:22:27 +0000
commit3613ffd9aab5cd1fcedbbb82584337ad4cc26d41 (patch)
treebe96ad4582aad33703c73a9e83d8e698de3e237d
parent3c325a0004a377da14ad255addb42e23c4e9cf17 (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.cpp6
-rw-r--r--ApiExtractor/parser/codemodel.cpp24
-rw-r--r--ApiExtractor/parser/codemodel.h6
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;