aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--overloaddata.cpp20
-rw-r--r--overloaddata.h11
2 files changed, 31 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();
diff --git a/overloaddata.h b/overloaddata.h
index 9d720dba2..4e01e3d50 100644
--- a/overloaddata.h
+++ b/overloaddata.h
@@ -44,11 +44,22 @@ public:
int argPos() const { return m_argPos; }
const AbstractMetaType* argType() const { return m_argType; }
+
+ /// Returns a string list containing all the possible return types (including void) for the current OverloadData.
+ QStringList returnTypes() const;
+
+ /// Returns true if any of the overloads for the current OverloadData has a return type different from void.
+ bool hasNonVoidReturnType() const;
+
const AbstractMetaFunction* referenceFunction() const;
const AbstractMetaArgument* argument(const AbstractMetaFunction* func) const;
OverloadDataList overloadDataOnPosition(int argPos) const;
bool isHeadOverloadData() const { return this == m_headOverloadData; }
+
+ /// Returns the root OverloadData object that represents all the overloads.
+ OverloadData* headOverloadData() const { return m_headOverloadData; }
+
bool hasDefaultValue() const;
bool nextArgumentHasDefaultValue() const;
/// Returns the nearest occurrence, including this instance, of an argument with a default value.