diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-06-15 15:03:45 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-06-15 15:13:56 -0300 |
commit | 7f433285d4e78a9525d6b72fcaf679a208d45bf3 (patch) | |
tree | d4ebc02192ce14929310524108ef940d178f4e35 | |
parent | 7e6b26aeeb9d97cbae6ac9fca290b109fdd2e828 (diff) |
Added method to OverloadData to return the list of overloads without repetition.
The method OverloadData::overloadsWithoutRepetition() returns the
overload list of the OverloadData object removing "almost" duplicated
functions. For our purposes "foo()" and "foo()const" means the same,
so the constant version is removed.
-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; } |