From dfa948951dd77048e8b05540d86c4ffe1a0205d2 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 14 Dec 2007 17:47:52 +0000 Subject: *** empty log message *** --- ev++.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'ev++.h') diff --git a/ev++.h b/ev++.h index 604340e..ac63970 100644 --- a/ev++.h +++ b/ev++.h @@ -28,6 +28,7 @@ namespace ev { ev_set_cb (static_cast(this), cb); } + // method callback template void set (K *object) { @@ -41,6 +42,7 @@ namespace ev { (obj->*method) (*static_cast(w), revents); } + // const method callback template void set (const K *object) { @@ -54,6 +56,7 @@ namespace ev { (static_cast(w->data)->*method) (*static_cast(w), revents); } + // function callback template void set (void *data = 0) { @@ -66,6 +69,20 @@ namespace ev { function (*static_cast(w), revents); } + // simple callback + template + void set (K *object) + { + set_ (object, method_noargs_thunk); + } + + template + static void method_noargs_thunk (EV_P_ ev_watcher *w, int revents) + { + K *obj = static_cast(w->data); + (obj->*method) (); + } + void operator ()(int events = EV_UNDEF) { return ev_cb (static_cast(this)) -- cgit v1.2.3