From 3a300338545442396f95d930afa11a7635df0bd6 Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Fri, 6 Nov 2009 10:37:03 -0300 Subject: added the method OverloadData::findNextArgWithDefault() which returns the nearest occurrence of an argument with a default value. this could be used when the overload has only one signature and some of the arguments ahead could have default values leading to more than one way of calling the method. --- overloaddata.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'overloaddata.cpp') diff --git a/overloaddata.cpp b/overloaddata.cpp index 48e7e27ce..c9e5b5b44 100644 --- a/overloaddata.cpp +++ b/overloaddata.cpp @@ -188,6 +188,25 @@ bool OverloadData::nextArgumentHasDefaultValue() const return false; } +static OverloadData* _findNextArgWithDefault(OverloadData* overloadData) +{ + if (overloadData->hasDefaultValue()) + return overloadData; + + OverloadData* result = 0; + foreach (OverloadData* odata, overloadData->nextOverloadData()) { + OverloadData* tmp = _findNextArgWithDefault(odata); + if (!result || (tmp && result->argPos() > tmp->argPos())) + result = tmp; + } + return result; +} + +OverloadData* OverloadData::findNextArgWithDefault() +{ + return _findNextArgWithDefault(this); +} + bool OverloadData::isFinalOccurrence(const AbstractMetaFunction* func) const { foreach (const OverloadData* pd, m_nextOverloadData) { -- cgit v1.2.3