diff options
Diffstat (limited to 'ev++.h')
-rw-r--r-- | ev++.h | 29 |
1 files changed, 13 insertions, 16 deletions
@@ -22,10 +22,10 @@ namespace ev { ev_init (this, 0); } - void set_ (void *object, void (*cb)(EV_P_ ev_watcher *w, int revents)) + void set_ (void *data, void (*cb)(EV_P_ watcher *w, int revents)) { - this->data = object; - ev_set_cb (static_cast<ev_watcher *>(this), cb); + this->data = data; + ev_set_cb (static_cast<watcher *>(this), cb); } template<class K, void (K::*method)(watcher &w, int)> @@ -35,11 +35,10 @@ namespace ev { } template<class K, void (K::*method)(watcher &w, int)> - static void method_thunk (EV_P_ ev_watcher *w, int revents) + static void method_thunk (EV_P_ watcher *w, int revents) { - watcher *self = static_cast<watcher *>(w); - K *obj = static_cast<K *>(self->data); - (obj->*method) (*self, revents); + K *obj = static_cast<K *>(w->data); + (obj->*method) (*w, revents); } template<class K, void (K::*method)(watcher &w, int) const> @@ -49,24 +48,22 @@ namespace ev { } template<class K, void (K::*method)(watcher &w, int) const> - static void const_method_thunk (EV_P_ ev_watcher *w, int revents) + static void const_method_thunk (EV_P_ watcher *w, int revents) { - watcher *self = static_cast<watcher *>(w); - K *obj = static_cast<K *>(self->data); - (obj->*method) (*self, revents); + K *obj = static_cast<K *>(w->data); + (obj->*method) (*w, revents); } - template<void (*function)(watcher &w, int), void *data = 0> - void set () + template<void (*function)(watcher &w, int)> + void set (void *data = 0) { set_ (data, function_thunk<function>); } template<void (*function)(watcher &w, int)> - static void function_thunk (EV_P_ ev_watcher *w, int revents) + static void function_thunk (EV_P_ watcher *w, int revents) { - watcher *self = static_cast<watcher *>(w); - function (*self, revents); + function (*w, revents); } void operator ()(int events = EV_UNDEF) |