aboutsummaryrefslogtreecommitdiffstats
path: root/overloaddata.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2009-11-20 13:28:26 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2009-11-20 14:37:24 -0300
commitd4325c727704f294019a759d20a4fda57bb4d5dc (patch)
tree559d064e1cca18dad71ec6faef6eea1784dc1ae7 /overloaddata.cpp
parent0a7e1e307a3686c7e12d422913f08c8790293f61 (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.cpp20
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();