31,32c31,32
< #ifndef __CALLBACK_HH__
< #define __CALLBACK_HH__
---
> #ifndef __BASE_CALLBACK_HH__
> #define __BASE_CALLBACK_HH__
34a35
> #include <string>
41a43,46
> protected:
> friend class CallbackQueue;
> virtual void autoDestruct() {}
>
55a61,83
> /// Helper template class to turn a simple class member function into
> /// a callback.
> template <class T, void (T::* F)()>
> class MakeCallback : public Callback
> {
> protected:
> T *object;
> const bool autoDestroy;
>
> void autoDestruct() { if (autoDestroy) delete this; }
>
> public:
> MakeCallback(T *o, bool auto_destroy = false)
> : object(o), autoDestroy(auto_destroy)
> { }
>
> MakeCallback(T &o, bool auto_destroy = false)
> : object(&o), autoDestroy(auto_destroy)
> { }
>
> void process() { (object->*F)(); }
> };
>
70a99,101
> ~CallbackQueue();
> std::string name() const { return "CallbackQueue"; }
>
75c106,107
< void add(Callback *callback)
---
> void
> add(Callback *callback)
79a112,125
> template <class T, void (T::* F)()>
> void
> add(T *obj)
> {
> add(new MakeCallback<T, F>(obj, true));
> }
>
> template <class T, void (T::* F)()>
> void
> add(T &obj)
> {
> add(new MakeCallback<T, F>(&obj, true));
> }
>
88c134,135
< void process()
---
> void
> process()
102c149,150
< void clear()
---
> void
> clear()
108,124c156
< /// Helper template class to turn a simple class member function into
< /// a callback.
< template <class T, void (T::* F)()>
< class MakeCallback : public Callback
< {
< private:
< T *object;
<
< public:
< MakeCallback(T *o)
< : object(o)
< { }
<
< void process() { (object->*F)(); }
< };
<
< #endif // __CALLBACK_HH__
---
> #endif // __BASE_CALLBACK_HH__