From c068f22329d5cc722622a2183bbb22eef2093df7 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 24 Aug 2026 11:16:07 +0200 Subject: initial import --- src/parsec/include/e_events.h | 66 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/parsec/include/e_events.h (limited to 'src/parsec/include/e_events.h') diff --git a/src/parsec/include/e_events.h b/src/parsec/include/e_events.h new file mode 100644 index 0000000..08f2554 --- /dev/null +++ b/src/parsec/include/e_events.h @@ -0,0 +1,66 @@ +/* + * PARSEC HEADER: e_events.h + */ + +#ifndef _E_EVENTS_H_ +#define _E_EVENTS_H_ + + + +// event parameter flags ------------------------------------------------------ +// +#define EVENT_PARAM_LOOP_MASK 0x000f // mask for loop parameter +#define EVENT_PARAM_ONESHOT 0x0000 // execute event once +#define EVENT_PARAM_LOOP_COUNT 0x0001 // execute event loopinfo times +#define EVENT_PARAM_LOOP_INDEFINITE 0x0002 // execute event until removed + +#define EVENT_PARAM_ONE_PER_TYPE 0x0010 // remove any other event of same type +#define EVENT_PARAM_DEPENDENT 0x0020 // trigger of event depends on other event's trigger +#define EVENT_PARAM_AUTOFREE 0x0040 // event is automatically freed after it's last fired +#define EVENT_PARAM_AUTOFREE_CALLBACK 0x0080 // callback data is automatically freed after it's last fired +#define EVENT_PARAM_AUTOTRIGGER 0x0100 // event is automatically triggered when added to the list + +#define EVENT_UNTRIGGERED -1 // event is not triggered yet + + +// generic event information -------------------------------------------------- +// +struct event_s { + + event_s* next; + event_s* prec; + dword type; // type information of event + int (*callback)(void *); // callback function to be called, when event is fired + void* callback_params; // parameters passed to the callback function + refframe_t refframe_delay; // delay in refframes for event from trigger to fire + dword flags; // flags describing the event + dword loopcount; // loop count for looping events + dword dependent_on; // id of event this event depends on + refframe_t refframe_trigger; // refframe when event is to trigger + int _mksiz64[6]; +}; + + +// for easy casting of event callback function pointers ----------------------- +// +typedef int (*event_callback_t)(void*); + + +// external functions --------------------------------------------------------- +// +int EVT_InitManager(); +int EVT_KillManager(); +size_t EVT_AddEvent( event_s *event ); +void EVT_RemoveEvent( size_t id ); +void EVT_RemoveEventType( dword type ); +void EVT_Maintain(); + + +// include event definitions -------------------------------------------------- +// +#include "e_evtdef.h" + + +#endif // _E_EVENTS_H_ + + -- cgit v1.2.3