… | |
… | |
187 | * or simply 1 for watchers that aren't in some array. |
187 | * or simply 1 for watchers that aren't in some array. |
188 | * pending is either 0, in which case the watcher isn't, |
188 | * pending is either 0, in which case the watcher isn't, |
189 | * or the array index + 1 in the pendings array. |
189 | * or the array index + 1 in the pendings array. |
190 | */ |
190 | */ |
191 | |
191 | |
|
|
192 | #if EV_MINPRI == EV_MAXPRI |
|
|
193 | # define EV_DECL_PRIORITY |
|
|
194 | #else |
|
|
195 | # define EV_DECL_PRIORITY int priority; |
|
|
196 | #endif |
|
|
197 | |
192 | /* shared by all watchers */ |
198 | /* shared by all watchers */ |
193 | #define EV_WATCHER(type) \ |
199 | #define EV_WATCHER(type) \ |
194 | int active; /* private */ \ |
200 | int active; /* private */ \ |
195 | int pending; /* private */ \ |
201 | int pending; /* private */ \ |
196 | int priority; /* private */ \ |
202 | EV_DECL_PRIORITY /* private */ \ |
197 | EV_COMMON /* rw */ \ |
203 | EV_COMMON /* rw */ \ |
198 | EV_CB_DECLARE (type) /* private */ |
204 | EV_CB_DECLARE (type) /* private */ |
199 | |
205 | |
200 | #define EV_WATCHER_LIST(type) \ |
206 | #define EV_WATCHER_LIST(type) \ |
201 | EV_WATCHER (type) \ |
207 | EV_WATCHER (type) \ |
… | |
… | |
546 | #endif |
552 | #endif |
547 | |
553 | |
548 | /* these may evaluate ev multiple times, and the other arguments at most once */ |
554 | /* these may evaluate ev multiple times, and the other arguments at most once */ |
549 | /* either use ev_init + ev_TYPE_set, or the ev_TYPE_init macro, below, to first initialise a watcher */ |
555 | /* either use ev_init + ev_TYPE_set, or the ev_TYPE_init macro, below, to first initialise a watcher */ |
550 | #define ev_init(ev,cb_) do { \ |
556 | #define ev_init(ev,cb_) do { \ |
551 | ((ev_watcher *)(void *)(ev))->active = \ |
557 | ((ev_watcher *)(void *)(ev))->active = \ |
552 | ((ev_watcher *)(void *)(ev))->pending = \ |
558 | ((ev_watcher *)(void *)(ev))->pending = 0; \ |
553 | ((ev_watcher *)(void *)(ev))->priority = 0; \ |
559 | ev_set_priority ((ev), 0); \ |
554 | ev_set_cb ((ev), cb_); \ |
560 | ev_set_cb ((ev), cb_); \ |
555 | } while (0) |
561 | } while (0) |
556 | |
562 | |
557 | #define ev_io_set(ev,fd_,events_) do { (ev)->fd = (fd_); (ev)->events = (events_) | EV__IOFDSET; } while (0) |
563 | #define ev_io_set(ev,fd_,events_) do { (ev)->fd = (fd_); (ev)->events = (events_) | EV__IOFDSET; } while (0) |
558 | #define ev_timer_set(ev,after_,repeat_) do { ((ev_watcher_time *)(ev))->at = (after_); (ev)->repeat = (repeat_); } while (0) |
564 | #define ev_timer_set(ev,after_,repeat_) do { ((ev_watcher_time *)(ev))->at = (after_); (ev)->repeat = (repeat_); } while (0) |
… | |
… | |
581 | #define ev_async_init(ev,cb) do { ev_init ((ev), (cb)); ev_async_set ((ev)); } while (0) |
587 | #define ev_async_init(ev,cb) do { ev_init ((ev), (cb)); ev_async_set ((ev)); } while (0) |
582 | |
588 | |
583 | #define ev_is_pending(ev) (0 + ((ev_watcher *)(void *)(ev))->pending) /* ro, true when watcher is waiting for callback invocation */ |
589 | #define ev_is_pending(ev) (0 + ((ev_watcher *)(void *)(ev))->pending) /* ro, true when watcher is waiting for callback invocation */ |
584 | #define ev_is_active(ev) (0 + ((ev_watcher *)(void *)(ev))->active) /* ro, true when the watcher has been started */ |
590 | #define ev_is_active(ev) (0 + ((ev_watcher *)(void *)(ev))->active) /* ro, true when the watcher has been started */ |
585 | |
591 | |
586 | #define ev_priority(ev) ((((ev_watcher *)(void *)(ev))->priority) + 0) |
|
|
587 | #define ev_cb(ev) (ev)->cb /* rw */ |
592 | #define ev_cb(ev) (ev)->cb /* rw */ |
|
|
593 | |
|
|
594 | #if EV_MINPRI == EV_MAXPRI |
|
|
595 | # define ev_priority(ev) ((ev), EV_MINPRI) |
|
|
596 | # define ev_set_priority(ev,pri) ((ev), (pri)) |
|
|
597 | #else |
|
|
598 | # define ev_priority(ev) ((((ev_watcher *)(void *)(ev))->priority) + 0) |
588 | #define ev_set_priority(ev,pri) ((ev_watcher *)(void *)(ev))->priority = (pri) |
599 | # define ev_set_priority(ev,pri) ( (ev_watcher *)(void *)(ev))->priority = (pri) |
|
|
600 | #endif |
589 | |
601 | |
590 | #define ev_periodic_at(ev) (((ev_watcher_time *)(ev))->at + 0.) |
602 | #define ev_periodic_at(ev) (((ev_watcher_time *)(ev))->at + 0.) |
591 | |
603 | |
592 | #ifndef ev_set_cb |
604 | #ifndef ev_set_cb |
593 | # define ev_set_cb(ev,cb_) ev_cb (ev) = (cb_) |
605 | # define ev_set_cb(ev,cb_) ev_cb (ev) = (cb_) |