aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--overloaddata.cpp46
-rw-r--r--overloaddata.h20
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;