diff options
author | root <root> | 2007-12-14 17:47:52 +0000 |
---|---|---|
committer | root <root> | 2007-12-14 17:47:52 +0000 |
commit | dfa948951dd77048e8b05540d86c4ffe1a0205d2 (patch) | |
tree | 3cd63ccbe0f8cadc02e24d1b1af6be6d8fbc3120 | |
parent | fc57824a79588a1adced09953b2a22b87ac9c9f6 (diff) |
*** empty log message ***
-rw-r--r-- | ev++.h | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -28,6 +28,7 @@ namespace ev { ev_set_cb (static_cast<ev_watcher *>(this), cb); } + // method callback 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); } + // const method callback 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); } + // function callback template<void (*function)(watcher &w, int)> void set (void *data = 0) { @@ -66,6 +69,20 @@ namespace ev { 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)) |