diff options
-rw-r--r-- | overloaddata.cpp | 46 | ||||
-rw-r--r-- | overloaddata.h | 20 |
2 files changed, 65 insertions, 1 deletions
diff --git a/overloaddata.cpp b/overloaddata.cpp index 7b23730a6..80b884d19 100644 --- a/overloaddata.cpp +++ b/overloaddata.cpp @@ -254,6 +254,52 @@ bool OverloadData::hasAllowThread() const return false; } +bool OverloadData::hasStaticFunction(const AbstractMetaFunctionList& overloads) +{ + foreach (const AbstractMetaFunction* func, overloads) { + if (func->isStatic()) + return true; + } + return false; +} + +bool OverloadData::hasStaticFunction() const +{ + foreach (const AbstractMetaFunction* func, m_overloads) { + if (func->isStatic()) + return true; + } + return false; +} + +bool OverloadData::hasInstanceFunction(const AbstractMetaFunctionList& overloads) +{ + foreach (const AbstractMetaFunction* func, overloads) { + if (!func->isStatic()) + return true; + } + return false; +} + +bool OverloadData::hasInstanceFunction() const +{ + foreach (const AbstractMetaFunction* func, m_overloads) { + if (!func->isStatic()) + return true; + } + return false; +} + +bool OverloadData::hasStaticAndInstanceFunctions(const AbstractMetaFunctionList& overloads) +{ + return OverloadData::hasStaticFunction(overloads) && OverloadData::hasInstanceFunction(overloads); +} + +bool OverloadData::hasStaticAndInstanceFunctions() const +{ + return OverloadData::hasStaticFunction() && OverloadData::hasInstanceFunction(); +} + const AbstractMetaFunction* OverloadData::referenceFunction() const { return m_overloads.first(); diff --git a/overloaddata.h b/overloaddata.h index 86c93cfef..4b324f5b5 100644 --- a/overloaddata.h +++ b/overloaddata.h @@ -57,6 +57,24 @@ public: /// Returns true if any of the overloads for the current OverloadData allows threads when called. bool hasAllowThread() const; + /// Returns true if any of the overloads for the current OverloadData is static. + bool hasStaticFunction() const; + + /// Returns true if any of the overloads passed as argument is static. + static bool hasStaticFunction(const AbstractMetaFunctionList& overloads); + + /// Returns true if any of the overloads for the current OverloadData is not static. + bool hasInstanceFunction() const; + + /// Returns true if any of the overloads passed as argument is not static. + static bool hasInstanceFunction(const AbstractMetaFunctionList& overloads); + + /// Returns true if among the overloads for the current OverloadData there are static and non-static methods altogether. + bool hasStaticAndInstanceFunctions() const; + + /// Returns true if among the overloads passed as argument there are static and non-static methods altogether. + static bool hasStaticAndInstanceFunctions(const AbstractMetaFunctionList& overloads); + const AbstractMetaFunction* referenceFunction() const; const AbstractMetaArgument* argument(const AbstractMetaFunction* func) const; OverloadDataList overloadDataOnPosition(int argPos) const; @@ -74,7 +92,7 @@ public: OverloadData* findNextArgWithDefault(); bool isFinalOccurrence(const AbstractMetaFunction* func) const; - QList<const AbstractMetaFunction*> overloads() const { return m_overloads; } + const QList<const AbstractMetaFunction*>& overloads() const { return m_overloads; } OverloadDataList nextOverloadData() const { return m_nextOverloadData; } QList<int> invalidArgumentLengths() const; |