]> git.llucax.com Git - software/libev.git/blobdiff - ev++.h
document c++ callbacks!
[software/libev.git] / ev++.h
diff --git a/ev++.h b/ev++.h
index 6086a977eae12dacc0fefe0a38b7ad048bda5468..fea0ac170ee85850d318d50d643a8ee5acbf14f9 100644 (file)
--- a/ev++.h
+++ b/ev++.h
@@ -22,7 +22,7 @@ namespace ev {
       ev_init (this, 0);
     }
 
-    void set_ (void *object, void (*cb)(ev_watcher *w, int revents))
+    void set_ (void *object, void (*cb)(EV_P_ ev_watcher *w, int revents))
     {
       this->data = object;
       ev_set_cb (static_cast<ev_watcher *>(this), cb);
@@ -35,7 +35,7 @@ namespace ev {
     }
 
     template<class K, void (K::*method)(watcher &w, int)>
-    static void method_thunk (ev_watcher *w, int revents)
+    static void method_thunk (EV_P_ ev_watcher *w, int revents)
     {
       watcher *self = static_cast<watcher *>(w);
       K *obj = static_cast<K *>(self->data);
@@ -49,21 +49,21 @@ namespace ev {
     }
 
     template<class K, void (K::*method)(watcher &w, int) const>
-    static void const_method_thunk (ev_watcher *w, int revents)
+    static void const_method_thunk (EV_P_ ev_watcher *w, int revents)
     {
       watcher *self = static_cast<watcher *>(w);
       K *obj = static_cast<K *>(self->data);
       (obj->*method) (*self, revents);
     }
 
-    template<void (*function)(watcher &w, int)>
+    template<void (*function)(watcher &w, int), void *data = 0>
     void set ()
     {
-      set_ (0, function_thunk<function>);
+      set_ (data, function_thunk<function>);
     }
 
     template<void (*function)(watcher &w, int)>
-    static void function_thunk (ev_watcher *w, int revents)
+    static void function_thunk (EV_P_ ev_watcher *w, int revents)
     {
       watcher *self = static_cast<watcher *>(w);
       function (*self, revents);
@@ -71,7 +71,8 @@ namespace ev {
 
     void operator ()(int events = EV_UNDEF)
     {
-      return e_cb (static_cast<ev_watcher *>(this)) (events);
+      return ev_cb (static_cast<ev_watcher *>(this))
+        (static_cast<ev_watcher *>(this), events);
     }
 
     bool is_active () const