Listener.h
Go to the documentation of this file.
00001 // -*- C++ -*-
00019 #ifndef Listener_h
00020 #define Listener_h
00021 
00022 
00043 class ListenerBase
00044 {
00045 public:
00059   virtual ~ListenerBase(){}
00060   
00074   virtual void invoke() = 0;
00075 };
00076 
00096 template <class ListenerClass,
00097           class CallbackFunc = void (ListenerClass::*)()>
00098 class ListenerObject
00099   : public ListenerBase
00100 {
00101 public:
00121   ListenerObject(ListenerClass* obj, CallbackFunc cbf)
00122     : m_obj(obj), m_cbf(cbf)
00123   {
00124   }
00125   
00139   virtual ~ListenerObject()
00140   {
00141   }
00142   
00156   virtual void invoke()
00157   {
00158     (m_obj->*m_cbf)();
00159   }
00160   
00161 private:
00162   ListenerClass* m_obj;
00163   CallbackFunc m_cbf;
00164 };
00165 
00185 typedef void (*CallbackFunc)();
00186 class ListenerFunc
00187   : public ListenerBase
00188 {
00189 public:
00207   ListenerFunc(CallbackFunc cbf)
00208     : m_cbf(cbf)
00209   {
00210   }
00211   
00225   virtual ~ListenerFunc(){}
00226   
00240   virtual void invoke()
00241   {
00242     (*m_cbf)();
00243   }
00244   
00245 private:
00246   CallbackFunc m_cbf;
00247 };
00248 
00249 #endif // Listener_h


openrtm_aist
Author(s): Noriaki Ando
autogenerated on Sat Jun 8 2019 18:49:04