summaryrefslogtreecommitdiff
path: root/base/callback.hh
diff options
context:
space:
mode:
Diffstat (limited to 'base/callback.hh')
-rw-r--r--base/callback.hh18
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__