-#define ev_is_pending(ev) (0 + (ev)->pending) /* true when watcher is waiting for callback invocation */
-#define ev_is_active(ev) (0 + (ev)->active) /* true when the watcher has been started */
-#define ev_set_priority(ev,pri) (ev)->priority = pri
+#define ev_is_pending(ev) (0 + ((struct ev_watcher *)(void *)(ev))->pending) /* ro, true when watcher is waiting for callback invocation */
+#define ev_is_active(ev) (0 + ((struct ev_watcher *)(void *)(ev))->active) /* ro, true when the watcher has been started */
+
+#define ev_priority(ev) ((struct ev_watcher *)(void *)(ev))->priority /* rw */
+#define ev_cb(ev) (ev)->cb /* rw */
+#define ev_set_priority(ev,pri) ev_priority (ev) = (pri)
+#define ev_set_cb(ev,cb_) ev_cb (ev) = (cb_)