diff options
-rw-r--r-- | overloaddata.cpp | 20 | ||||
-rw-r--r-- | overloaddata.h | 11 |
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. |