diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-11-20 13:28:26 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-11-20 14:37:24 -0300 |
commit | d4325c727704f294019a759d20a4fda57bb4d5dc (patch) | |
tree | 559d064e1cca18dad71ec6faef6eea1784dc1ae7 /overloaddata.cpp | |
parent | 0a7e1e307a3686c7e12d422913f08c8790293f61 (diff) |
Added methods to OverloadData:
* OverloadData* headOverloadData() const;
Return the root OverloadData object for the current OverloadData.
* QStringList returnTypes() const;
Returns a list of the possible return types for the current OverloadData.
* bool hasNonVoidReturnType() const;
Returns true if any of the overloads for the current OverloadData has a
return type different from void.
Diffstat (limited to 'overloaddata.cpp')
-rw-r--r-- | overloaddata.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/overloaddata.cpp b/overloaddata.cpp index 860e9fa9a..6190674d0 100644 --- a/overloaddata.cpp +++ b/overloaddata.cpp @@ -180,6 +180,26 @@ OverloadData* OverloadData::addOverloadData(const AbstractMetaFunction* func, return overloadData; } +QStringList OverloadData::returnTypes() const +{ + QSet<QString> retTypes; + foreach (const AbstractMetaFunction* func, m_overloads) { + if (!func->typeReplaced(0).isEmpty()) + retTypes << func->typeReplaced(0); + else if (func->type() && !func->argumentRemoved(0)) + retTypes << func->type()->cppSignature(); + else + retTypes << "void"; + } + return QStringList(retTypes.toList()); +} + +bool OverloadData::hasNonVoidReturnType() const +{ + QStringList retTypes = returnTypes(); + return !retTypes.contains("void") || retTypes.size() > 1; +} + const AbstractMetaFunction* OverloadData::referenceFunction() const { return m_overloads.first(); |