aboutsummaryrefslogtreecommitdiffstats
path: root/overloaddata.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2010-01-19 13:55:35 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2010-01-19 14:36:12 -0300
commite540d86f173b151997313ba23e7fe382bd2623c4 (patch)
tree85f4b84135956a1aa31f13d15189da37bf028219 /overloaddata.cpp
parent2e7bab62943ada0320ce0cd7c8a6d6be6e64a6f3 (diff)
Adds helpers to OverloadData to check for static and non-static methods.
OverloadDecisor received some new methods: hasStaticFunction, hasInstanceFunction and hasStaticAndInstanceFunctions. They are useful to check if an overload contains both static and non-static signatures.
Diffstat (limited to 'overloaddata.cpp')
-rw-r--r--overloaddata.cpp46
1 files changed, 46 insertions, 0 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();