00001 #ifndef TEMU_EVENTS_H
00002 #define TEMU_EVENTS_H
00003
00004 #include <stdint.h>
00005 #include "temu-c/Support/Objsys.h"
00006
00007 #ifdef __cplusplus
00008 extern "C" {
00009 #endif
00010
00011 void* temu_allocateEventQueue(void);
00012 void temu_disposeEventQueue(void *Queue);
00013
00014 int64_t temu_triggerCurrentTimers(void *Queue, int64_t Srt);
00015
00016 int64_t temu_nextTimer(void *Queue);
00017
00018 void temu_postEvent(void *Queue, void (*callback)(void *Queue, void *Data),
00019 void *Data, uint64_t Time);
00020
00021 void temu_stackEvent(void *Queue, void (*callback)(void *Queue, void *Data),
00022 void *Data);
00023
00024
00025
00026 int64_t temu_eventTime(void *Queue, void (*callback)(void *Queue, void *Data),
00027 void *Obj);
00028
00029 void temu_descheduleEvent(void *Queue,
00030 void (*callback)(void *Queue, void *Data), void *Obj);
00031
00032 typedef struct {
00033 void (*stackPostEvent)(void *Obj, void (*Ev)(void *, void *), void *Data);
00034
00035 void (*postDeltaEvent)(void *Obj, void (*Ev)(void *, void *), void *Data,
00036 int64_t Cycles);
00037
00038 void (*postAbsoluteEvent)(void *Obj, void (*Ev)(void *, void *), void *Data,
00039 int64_t Cycles);
00040 int64_t (*getEventDeltaTime)(void *Obj, void (*Ev)(void *, void *), void *Data);
00041 int64_t (*getEventAbsoluteTime)(void *Obj, void (*Ev)(void *, void *), void *Data);
00042 void (*descheduleEvent)(void *Obj, void (*Ev)(void *, void *), void *Data);
00043 void (*registerEvent)(void *Obj, const char *EvName, void (*Ev)(void *, void *));
00044 } temu_EventIface;
00045
00046 OBJSYS_OBJ_TYPE(temu_Event);
00047
00048
00049 void temu_registerEvent(void *Queue, const char *Name,
00050 void (*Callback)(void *Queue, void *Data));
00051 void temu_serialiseEvents(void *Obj, void *Ctxt);
00052 void temu_deserialiseEvents(void *Obj, void *Ctxt);
00053
00054 #ifdef __cplusplus
00055 }
00056 #endif
00057
00058 #endif