aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--overloaddata.cpp16
-rw-r--r--overloaddata.h2
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; }