Merge ktlim@zizzer.eecs.umich.edu:/bk/m5
[gem5.git] / base / callback.hh
index eee629cf545fe4de5de9e8c27193511bc1f657a6..cc2a2f4295a995c89226ca0bb8766456b0ba75bd 100644 (file)
@@ -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__