summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-03-06 10:59:54 +0100
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-03-06 10:59:54 +0100
commit5feeff6e7263d78d482b4c262ace851f370957d6 (patch)
tree6b98aa47741eee89d2a14356707993ce5c7bfa19
parent1a5573246367d457fe4fd961b7faf3b308a88d0c (diff)
changes to documentation, added support for const methods so that they can also be exported
-rw-r--r--documentation/classes-and-objects.html8
-rw-r--r--include/class.h24
-rw-r--r--include/classbase.h8
-rw-r--r--src/classbase.cpp52
-rw-r--r--src/method.h22
5 files changed, 97 insertions, 17 deletions
diff --git a/documentation/classes-and-objects.html b/documentation/classes-and-objects.html
index c45ca09..0fed826 100644
--- a/documentation/classes-and-objects.html
+++ b/documentation/classes-and-objects.html
@@ -23,8 +23,8 @@ private:
int _value = 0;
public:
- MyClass() {}
- virtual ~MyClass() {}
+ Counter() {}
+ virtual ~Counter() {}
Php::Value increment() { return ++_value; }
Php::Value decrement() { return --_value; }
@@ -116,8 +116,8 @@ private:
int _value = 0;
public:
- MyClass() {}
- virtual ~MyClass() {}
+ Counter() {}
+ virtual ~Counter() {}
Php::Value increment(Php::Parameters &params)
{
diff --git a/include/class.h b/include/class.h
index 7d82441..a22b9a8 100644
--- a/include/class.h
+++ b/include/class.h
@@ -73,14 +73,22 @@ public:
* @param flags Optional flags
* @param args Argument descriptions
*/
- void method(const char *name, void (T::*method)(), int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_0>(method), flags, args); }
- void method(const char *name, void (T::*method)(Parameters &params), int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_1>(method), flags, args); }
- void method(const char *name, Value (T::*method)(), int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_2>(method), flags, args); }
- void method(const char *name, Value (T::*method)(Parameters &params), int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_3>(method), flags, args); }
- void method(const char *name, void (T::*method)(), const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_0>(method), Public, args); }
- void method(const char *name, void (T::*method)(Parameters &params), const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_1>(method), Public, args); }
- void method(const char *name, Value (T::*method)(), const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_2>(method), Public, args); }
- void method(const char *name, Value (T::*method)(Parameters &params), const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_3>(method), Public, args); }
+ void method(const char *name, void (T::*method)(), int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_0>(method), flags, args); }
+ void method(const char *name, void (T::*method)(Parameters &params), int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_1>(method), flags, args); }
+ void method(const char *name, Value (T::*method)(), int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_2>(method), flags, args); }
+ void method(const char *name, Value (T::*method)(Parameters &params), int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_3>(method), flags, args); }
+ void method(const char *name, void (T::*method)(), const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_0>(method), Public, args); }
+ void method(const char *name, void (T::*method)(Parameters &params), const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_1>(method), Public, args); }
+ void method(const char *name, Value (T::*method)(), const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_2>(method), Public, args); }
+ void method(const char *name, Value (T::*method)(Parameters &params), const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_3>(method), Public, args); }
+ void method(const char *name, void (T::*method)() const, int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_4>(method), flags, args); }
+ void method(const char *name, void (T::*method)(Parameters &params) const, int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_5>(method), flags, args); }
+ void method(const char *name, Value (T::*method)() const, int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_6>(method), flags, args); }
+ void method(const char *name, Value (T::*method)(Parameters &params) const, int flags, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_7>(method), flags, args); }
+ void method(const char *name, void (T::*method)() const, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_4>(method), Public, args); }
+ void method(const char *name, void (T::*method)(Parameters &params) const, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_5>(method), Public, args); }
+ void method(const char *name, Value (T::*method)() const, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_6>(method), Public, args); }
+ void method(const char *name, Value (T::*method)(Parameters &params) const, const Arguments &args = {}) { ClassBase::method(name, static_cast<method_callback_7>(method), Public, args); }
/**
* Add an abstract method to the class
diff --git a/include/classbase.h b/include/classbase.h
index 9dd4628..3792fdb 100644
--- a/include/classbase.h
+++ b/include/classbase.h
@@ -32,6 +32,10 @@ typedef void (Base::*method_callback_0)();
typedef void (Base::*method_callback_1)(Parameters &);
typedef Value (Base::*method_callback_2)();
typedef Value (Base::*method_callback_3)(Parameters &);
+typedef void (Base::*method_callback_4)() const;
+typedef void (Base::*method_callback_5)(Parameters &) const;
+typedef Value (Base::*method_callback_6)() const;
+typedef Value (Base::*method_callback_7)(Parameters &) const;
/**
* Forward declarations
@@ -133,6 +137,10 @@ protected:
void method(const char *name, method_callback_1, int flags=0, const Arguments &args = {});
void method(const char *name, method_callback_2, int flags=0, const Arguments &args = {});
void method(const char *name, method_callback_3, int flags=0, const Arguments &args = {});
+ void method(const char *name, method_callback_4, int flags=0, const Arguments &args = {});
+ void method(const char *name, method_callback_5, int flags=0, const Arguments &args = {});
+ void method(const char *name, method_callback_6, int flags=0, const Arguments &args = {});
+ void method(const char *name, method_callback_7, int flags=0, const Arguments &args = {});
/**
* Add an abstract method to the class
diff --git a/src/classbase.cpp b/src/classbase.cpp
index e813617..19ac6bc 100644
--- a/src/classbase.cpp
+++ b/src/classbase.cpp
@@ -307,6 +307,58 @@ void ClassBase::method(const char *name, method_callback_3 callback, int flags,
}
/**
+ * Add a method to the class
+ * @param name Name of the method
+ * @param method The actual method
+ * @param flags Optional flags
+ * @param args Description of the supported arguments
+ */
+void ClassBase::method(const char *name, method_callback_4 callback, int flags, const Arguments &args)
+{
+ // add the method
+ _methods.push_back(std::make_shared<Method>(name, callback, flags, args));
+}
+
+/**
+ * Add a method to the class
+ * @param name Name of the method
+ * @param method The actual method
+ * @param flags Optional flags
+ * @param args Description of the supported arguments
+ */
+void ClassBase::method(const char *name, method_callback_5 callback, int flags, const Arguments &args)
+{
+ // add the method
+ _methods.push_back(std::make_shared<Method>(name, callback, flags, args));
+}
+
+/**
+ * Add a method to the class
+ * @param name Name of the method
+ * @param method The actual method
+ * @param flags Optional flags
+ * @param args Description of the supported arguments
+ */
+void ClassBase::method(const char *name, method_callback_6 callback, int flags, const Arguments &args)
+{
+ // add the method
+ _methods.push_back(std::make_shared<Method>(name, callback, flags, args));
+}
+
+/**
+ * Add a method to the class
+ * @param name Name of the method
+ * @param method The actual method
+ * @param flags Optional flags
+ * @param args Description of the supported arguments
+ */
+void ClassBase::method(const char *name, method_callback_7 callback, int flags, const Arguments &args)
+{
+ // add the method
+ _methods.push_back(std::make_shared<Method>(name, callback, flags, args));
+}
+
+/**
* Add an abstract method to the class
* @param name Name of the method
* @param flags Optional flags (like public or protected)
diff --git a/src/method.h b/src/method.h
index f583fc8..f305d42 100644
--- a/src/method.h
+++ b/src/method.h
@@ -27,11 +27,15 @@ public:
* @param flags Access flags
* @param args Argument description
*/
- Method(const char *name, method_callback_0 callback, int flags, const Arguments &args) : Callable(name, args), _type(0), _flags(flags) { _callback.m0 = callback; }
- Method(const char *name, method_callback_1 callback, int flags, const Arguments &args) : Callable(name, args), _type(1), _flags(flags) { _callback.m1 = callback; }
- Method(const char *name, method_callback_2 callback, int flags, const Arguments &args) : Callable(name, args), _type(2), _flags(flags) { _callback.m2 = callback; }
- Method(const char *name, method_callback_3 callback, int flags, const Arguments &args) : Callable(name, args), _type(3), _flags(flags) { _callback.m3 = callback; }
- Method(const char *name, int flags, const Arguments &args) : Callable(name, args), _type(4), _flags(flags) { _callback.m0 = nullptr; }
+ Method(const char *name, method_callback_0 callback, int flags, const Arguments &args) : Callable(name, args), _type(0), _flags(flags) { _callback.m0 = callback; }
+ Method(const char *name, method_callback_1 callback, int flags, const Arguments &args) : Callable(name, args), _type(1), _flags(flags) { _callback.m1 = callback; }
+ Method(const char *name, method_callback_2 callback, int flags, const Arguments &args) : Callable(name, args), _type(2), _flags(flags) { _callback.m2 = callback; }
+ Method(const char *name, method_callback_3 callback, int flags, const Arguments &args) : Callable(name, args), _type(3), _flags(flags) { _callback.m3 = callback; }
+ Method(const char *name, method_callback_4 callback, int flags, const Arguments &args) : Callable(name, args), _type(4), _flags(flags) { _callback.m4 = callback; }
+ Method(const char *name, method_callback_5 callback, int flags, const Arguments &args) : Callable(name, args), _type(5), _flags(flags) { _callback.m5 = callback; }
+ Method(const char *name, method_callback_6 callback, int flags, const Arguments &args) : Callable(name, args), _type(6), _flags(flags) { _callback.m6 = callback; }
+ Method(const char *name, method_callback_7 callback, int flags, const Arguments &args) : Callable(name, args), _type(7), _flags(flags) { _callback.m7 = callback; }
+ Method(const char *name, int flags, const Arguments &args) : Callable(name, args), _type(9999), _flags(flags) { _callback.m0 = nullptr; }
/**
* Copy and move constructors
@@ -78,6 +82,10 @@ public:
case 1: (base->*_callback.m1)(parameters); return Value();
case 2: return (base->*_callback.m2)();
case 3: return (base->*_callback.m3)(parameters);
+ case 4: (base->*_callback.m4)(); return Value();
+ case 5: (base->*_callback.m5)(parameters); return Value();
+ case 6: return (base->*_callback.m6)();
+ case 7: return (base->*_callback.m7)(parameters);
default: return Value();
}
}
@@ -105,6 +113,10 @@ private:
method_callback_1 m1;
method_callback_2 m2;
method_callback_3 m3;
+ method_callback_4 m4;
+ method_callback_5 m5;
+ method_callback_6 m6;
+ method_callback_7 m7;
} _callback;
};