odyssey/src/mm_clock.h

37 lines
667 B
C
Raw Normal View History

2017-04-10 12:11:06 +00:00
#ifndef MM_CLOCK_H_
#define MM_CLOCK_H_
/*
* machinarium.
*
* cooperative multitasking engine.
*/
typedef struct mm_clock_t mm_clock_t;
struct mm_clock_t {
2017-04-10 13:03:15 +00:00
int time;
2017-04-10 12:11:06 +00:00
mm_buf_t timers;
int timers_count;
int timers_seq;
};
void mm_clock_init(mm_clock_t*);
void mm_clock_free(mm_clock_t*);
2017-04-10 12:55:59 +00:00
void mm_clock_update(mm_clock_t*);
int mm_clock_step(mm_clock_t*);
2017-04-10 12:11:06 +00:00
int mm_clock_timer_add(mm_clock_t*, mm_timer_t*);
int mm_clock_timer_del(mm_clock_t*, mm_timer_t*);
2017-04-10 12:11:06 +00:00
mm_timer_t*
mm_clock_timer_min(mm_clock_t*);
static inline void
mm_timer_stop(mm_timer_t *timer) {
if (! timer->active)
return;
mm_clock_timer_del(timer->clock, timer);
}
2017-04-10 12:11:06 +00:00
#endif