diff options
author | Emiel Bruijntjes <emiel.bruijntjes@copernica.com> | 2014-02-28 10:25:01 +0100 |
---|---|---|
committer | Emiel Bruijntjes <emiel.bruijntjes@copernica.com> | 2014-02-28 10:25:01 +0100 |
commit | 71055ebdea1e8eec30747a04f36e0c10e750bff5 (patch) | |
tree | 18ed63d5fe64a936c284a38d4f72921a4ddc97df /include/method.h | |
parent | 85349bbb642a83012a7d0dbccde8b7c1eea1b914 (diff) |
a lot of refactoring, to make it much easier to define classes in an extension
Diffstat (limited to 'include/method.h')
-rw-r--r-- | include/method.h | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/include/method.h b/include/method.h deleted file mode 100644 index d652d89..0000000 --- a/include/method.h +++ /dev/null @@ -1,110 +0,0 @@ -/** - * Method.h - */ - -/** - * Namespace - */ -namespace Php { - -/** - * A very generic function pointer - */ -typedef void (*function_ptr)(); - -/** - * Base class of the method - */ -class _Method -{ -public: - /** - * Copy constructor - * @param method - */ - _Method(const _Method &method) : _type(method._type), _callback(method._callback) {} - - /** - * Destructor - * @param type - * @param callback - */ - virtual ~_Method() {} - - /** - * Invoke the method - * @param parameters - * @return Value - */ - Value invoke(Parameters ¶meters) - { - // the object to call a method on - Base *base = parameters.object(); - - // find out which method to call, and call it - switch (_type) { - case 0: (base->*_callback.m0)(); return Value(); - case 1: (base->*_callback.m1)(parameters); return Value(); - case 2: return (base->*_callback.m2)(); - case 3: return (base->*_callback.m3)(parameters); - default: return Value(); - } - } - -protected: - /** - * Protected constructor to prevent that anyone instantiates this object - */ - _Method(method_callback_0 callback) : _type(0) { _callback.m0 = callback; } - _Method(method_callback_1 callback) : _type(1) { _callback.m1 = callback; } - _Method(method_callback_2 callback) : _type(2) { _callback.m2 = callback; } - _Method(method_callback_3 callback) : _type(3) { _callback.m3 = callback; } - -private: - /** - * Callback type - * @var int - */ - int _type; - - /** - * The actual callback - * @var void* - */ - union { - method_callback_0 m0; - method_callback_1 m1; - method_callback_2 m2; - method_callback_3 m3; - } _callback; -}; - -/** - * Actual template class of the method - */ -template <typename T> -class Method : public _Method -{ -public: - /** - * Constructor - * @param callback - */ - Method(void(T::*callback)()) : _Method(static_cast<method_callback_0>(callback)) {} - Method(void(T::*callback)(Parameters&)) : _Method(static_cast<method_callback_1>(callback)) {} - Method(Value(T::*callback)()) : _Method(static_cast<method_callback_2>(callback)) {} - Method(Value(T::*callback)(Parameters&)) : _Method(static_cast<method_callback_3>(callback)) {} - - /** - * Destructor - */ - virtual ~Method() {} - -}; - -/** - * End of namespace - */ -} - - |