]> git.llucax.com Git - software/libev.git/blobdiff - ev++.h
*** empty log message ***
[software/libev.git] / ev++.h
diff --git a/ev++.h b/ev++.h
index 604340e19d9e5a84f49dca6783478bfce2bd5abc..ac6397086ed5558f87078d5b45d0801f24c5c8ea 100644 (file)
--- a/ev++.h
+++ b/ev++.h
@@ -28,6 +28,7 @@ namespace ev {
       ev_set_cb (static_cast<ev_watcher *>(this), cb);
     }
 
       ev_set_cb (static_cast<ev_watcher *>(this), cb);
     }
 
+    // method callback
     template<class K, void (K::*method)(watcher &w, int)>
     void set (K *object)
     {
     template<class K, void (K::*method)(watcher &w, int)>
     void set (K *object)
     {
@@ -41,6 +42,7 @@ namespace ev {
       (obj->*method) (*static_cast<watcher *>(w), revents);
     }
 
       (obj->*method) (*static_cast<watcher *>(w), revents);
     }
 
+    // const method callback
     template<class K, void (K::*method)(watcher &w, int) const>
     void set (const K *object)
     {
     template<class K, void (K::*method)(watcher &w, int) const>
     void set (const K *object)
     {
@@ -54,6 +56,7 @@ namespace ev {
       (static_cast<K *>(w->data)->*method) (*static_cast<watcher *>(w), revents);
     }
 
       (static_cast<K *>(w->data)->*method) (*static_cast<watcher *>(w), revents);
     }
 
+    // function callback
     template<void (*function)(watcher &w, int)>
     void set (void *data = 0)
     {
     template<void (*function)(watcher &w, int)>
     void set (void *data = 0)
     {
@@ -66,6 +69,20 @@ namespace ev {
       function (*static_cast<watcher *>(w), revents);
     }
 
       function (*static_cast<watcher *>(w), revents);
     }
 
+    // simple callback
+    template<class K, void (K::*method)()>
+    void set (K *object)
+    {
+      set_ (object, method_noargs_thunk<K, method>);
+    }
+
+    template<class K, void (K::*method)()>
+    static void method_noargs_thunk (EV_P_ ev_watcher *w, int revents)
+    {
+      K *obj = static_cast<K *>(w->data);
+      (obj->*method) ();
+    }
+
     void operator ()(int events = EV_UNDEF)
     {
       return ev_cb (static_cast<ev_watcher *>(this))
     void operator ()(int events = EV_UNDEF)
     {
       return ev_cb (static_cast<ev_watcher *>(this))