EventHandler.h++
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __ccxx_EventHandler_hxx
00024 #define __ccxx_EventHandler_hxx
00025
00026 #include <commonc++/Common.h++>
00027
00028 namespace ccxx {
00029
00036 template<class E> class EventHandler
00037 {
00038 public:
00039
00041 virtual ~EventHandler() { }
00042
00047 inline void operator() (E event)
00048 { invoke(event); }
00049
00050 protected:
00051
00056 virtual void invoke(E event) = 0;
00057 };
00058
00068 template<class T, class E> class EventHandlerDelegate
00069 : public EventHandler<E>
00070 {
00071 public:
00072
00079 EventHandlerDelegate(T *object, void (T::* func)(E))
00080 : _object(object), _func(func)
00081 {
00082 }
00083
00084 protected:
00085
00086 inline void invoke(E event)
00087 { (_object->*_func)(event); }
00088
00089 private:
00090
00091 T* _object;
00092 void (T::*_func)(E);
00093 };
00094
00095 };
00096
00097 #endif // __ccxx_EventHandler_hxx
00098
00099