diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-11-06 10:37:03 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-11-06 13:35:19 -0300 |
commit | 3a300338545442396f95d930afa11a7635df0bd6 (patch) | |
tree | e0730bab0df17d82093a7ebde5ccce6b49250556 /overloaddata.cpp | |
parent | f69bf045ad195efe9725c2c6a483a1473cd9ce43 (diff) |
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.
Diffstat (limited to 'overloaddata.cpp')
-rw-r--r-- | overloaddata.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
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) { |