diff options
-rw-r--r-- | overloaddata.cpp | 16 | ||||
-rw-r--r-- | overloaddata.h | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/overloaddata.cpp b/overloaddata.cpp index 66705333c..d773ddf42 100644 --- a/overloaddata.cpp +++ b/overloaddata.cpp @@ -470,6 +470,22 @@ bool OverloadData::isFinalOccurrence(const AbstractMetaFunction* func) const return true; } +QList<const AbstractMetaFunction*> OverloadData::overloadsWithoutRepetition() const +{ + QList<const AbstractMetaFunction*> overloads = m_overloads; + foreach (const AbstractMetaFunction* func, m_overloads) { + if (func->minimalSignature().endsWith("const")) + continue; + foreach (const AbstractMetaFunction* f, overloads) { + if ((func->minimalSignature() + "const") == f->minimalSignature()) { + overloads.removeOne(f); + break; + } + } + } + return overloads; +} + const AbstractMetaFunction* OverloadData::getFunctionWithDefaultValue() const { foreach (const AbstractMetaFunction* func, m_overloads) { diff --git a/overloaddata.h b/overloaddata.h index 703407063..13276c609 100644 --- a/overloaddata.h +++ b/overloaddata.h @@ -92,6 +92,8 @@ public: OverloadData* findNextArgWithDefault(); bool isFinalOccurrence(const AbstractMetaFunction* func) const; + /// Returns the list of overloads removing repeated constant functions (ex.: "foo()" and "foo()const", the second is removed). + QList<const AbstractMetaFunction*> overloadsWithoutRepetition() const; const QList<const AbstractMetaFunction*>& overloads() const { return m_overloads; } OverloadDataList nextOverloadData() const { return m_nextOverloadData; } OverloadData* previousOverloadData() const { return m_previousOverloadData; } |