diff options
Diffstat (limited to 'base/callback.hh')
-rw-r--r-- | base/callback.hh | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/base/callback.hh b/base/callback.hh index eee629cf5..cc2a2f429 100644 --- a/base/callback.hh +++ b/base/callback.hh @@ -32,7 +32,7 @@ #include <list> /** - * Generic callback class. This base class provides a virutal process + * Generic callback class. This base class provides a virtual process * function that gets called when the callback queue is processed. */ class Callback @@ -103,4 +103,20 @@ class CallbackQueue } }; +/// 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__ |