ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.xs
(Generate patch)

Comparing EV/EV.xs (file contents):
Revision 1.17 by root, Wed Oct 31 11:52:11 2007 UTC vs.
Revision 1.18 by root, Wed Oct 31 11:55:42 2007 UTC

210 } 210 }
211 211
212 LEAVE; 212 LEAVE;
213} 213}
214#endif 214#endif
215
216#define CHECK_REPEAT(repeat) if (repeat < 0.) \
217 croak (# repeat " value must be >= 0");
215 218
216///////////////////////////////////////////////////////////////////////////// 219/////////////////////////////////////////////////////////////////////////////
217// XS interface functions 220// XS interface functions
218 221
219MODULE = EV PACKAGE = EV PREFIX = ev_ 222MODULE = EV PACKAGE = EV PREFIX = ev_
324 RETVAL 327 RETVAL
325 328
326struct ev_timer *timer (NV after, NV repeat, SV *cb) 329struct ev_timer *timer (NV after, NV repeat, SV *cb)
327 ALIAS: 330 ALIAS:
328 timer_ns = 1 331 timer_ns = 1
332 INIT:
333 CHECK_REPEAT (repeat);
329 CODE: 334 CODE:
330 RETVAL = e_new (sizeof (struct ev_timer), cb); 335 RETVAL = e_new (sizeof (struct ev_timer), cb);
331 evtimer_set (RETVAL, after, repeat); 336 evtimer_set (RETVAL, after, repeat);
332 if (!ix) evtimer_start (RETVAL); 337 if (!ix) evtimer_start (RETVAL);
333 OUTPUT: 338 OUTPUT:
334 RETVAL 339 RETVAL
335 340
336struct ev_periodic *periodic (NV at, NV interval, SV *cb) 341struct ev_periodic *periodic (NV at, NV interval, SV *cb)
337 ALIAS: 342 ALIAS:
338 periodic_ns = 1 343 periodic_ns = 1
344 INIT:
345 CHECK_REPEAT (interval);
339 CODE: 346 CODE:
340 RETVAL = e_new (sizeof (struct ev_periodic), cb); 347 RETVAL = e_new (sizeof (struct ev_periodic), cb);
341 evperiodic_set (RETVAL, at, interval); 348 evperiodic_set (RETVAL, at, interval);
342 if (!ix) evperiodic_start (RETVAL); 349 if (!ix) evperiodic_start (RETVAL);
343 OUTPUT: 350 OUTPUT:
466MODULE = EV PACKAGE = EV::Time 473MODULE = EV PACKAGE = EV::Time
467 474
468MODULE = EV PACKAGE = EV::Timer PREFIX = evtimer_ 475MODULE = EV PACKAGE = EV::Timer PREFIX = evtimer_
469 476
470void evtimer_start (struct ev_timer *w) 477void evtimer_start (struct ev_timer *w)
478 INIT:
479 CHECK_REPEAT (w->repeat);
471 480
472void evtimer_stop (struct ev_timer *w) 481void evtimer_stop (struct ev_timer *w)
473 482
474void evtimer_again (struct ev_timer *w) 483void evtimer_again (struct ev_timer *w)
484 INIT:
485 CHECK_REPEAT (w->repeat);
475 486
476void set (struct ev_timer *w, NV after, NV repeat = 0.) 487void set (struct ev_timer *w, NV after, NV repeat = 0.)
488 INIT:
489 CHECK_REPEAT (repeat);
477 CODE: 490 CODE:
478{ 491{
479 int active = w->active; 492 int active = w->active;
480 if (active) evtimer_stop (w); 493 if (active) evtimer_stop (w);
481 evtimer_set (w, after, repeat); 494 evtimer_set (w, after, repeat);
483} 496}
484 497
485MODULE = EV PACKAGE = EV::Periodic PREFIX = evperiodic_ 498MODULE = EV PACKAGE = EV::Periodic PREFIX = evperiodic_
486 499
487void evperiodic_start (struct ev_periodic *w) 500void evperiodic_start (struct ev_periodic *w)
501 INIT:
502 CHECK_REPEAT (w->interval);
488 503
489void evperiodic_stop (struct ev_periodic *w) 504void evperiodic_stop (struct ev_periodic *w)
490 505
491void set (struct ev_periodic *w, NV at, NV interval = 0.) 506void set (struct ev_periodic *w, NV at, NV interval = 0.)
507 INIT:
508 CHECK_REPEAT (interval);
492 CODE: 509 CODE:
493{ 510{
494 int active = w->active; 511 int active = w->active;
495 if (active) evperiodic_stop (w); 512 if (active) evperiodic_stop (w);
496 evperiodic_set (w, at, interval); 513 evperiodic_set (w, at, interval);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines