80 lines
2 KiB
C
80 lines
2 KiB
C
|
#ifndef A51A04C1_ABD6_4DE9_B16A_49A9DA46C67E
|
||
|
#define A51A04C1_ABD6_4DE9_B16A_49A9DA46C67E
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#include <stddef.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C"
|
||
|
#endif
|
||
|
{
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
mana_custom,
|
||
|
mana_uint8,
|
||
|
mana_sint8,
|
||
|
mana_uint16,
|
||
|
mana_uint32,
|
||
|
mana_uint64,
|
||
|
mana_float,
|
||
|
mana_double,
|
||
|
} mana_data_type_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
mana_data_type_t data_type;
|
||
|
ptrdiff_t offset;
|
||
|
} mana_offset_ptr_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
mana_offset_ptr_t ptr;
|
||
|
size_t size_bytes;
|
||
|
} mana_offset_array_t;
|
||
|
|
||
|
#define MANA_DEFINE_PLUGIN_INIT(name) \
|
||
|
void *name()
|
||
|
|
||
|
#define MANA_DEFINE_PLUGIN_SHUTDOWN(name) \
|
||
|
void name(void *context)
|
||
|
|
||
|
#define MANA_DEFINE_PLUGIN_BEGIN_RUN(name) \
|
||
|
void name(void *context, const char *descriptor_json)
|
||
|
|
||
|
#define MANA_DEFINE_PLUGIN_END_RUN(name) \
|
||
|
void name(void *context, const char *descriptor_json)
|
||
|
|
||
|
#define MANA_DEFINE_PLUGIN_EVENT_DATA(name) \
|
||
|
void name(void *context, uint16_t eventIndex, const mana_offset_array_t *arrays, size_t arrayCount, size_t totalBytes)
|
||
|
|
||
|
#define MANA_DEFINE_PLUGIN_SYSTEM_EVENT(name) \
|
||
|
void name(void *context, const uint32_t *data, size_t size)
|
||
|
|
||
|
typedef MANA_DEFINE_PLUGIN_INIT(mana_init_t);
|
||
|
typedef MANA_DEFINE_PLUGIN_SHUTDOWN(mana_shutdown_t);
|
||
|
typedef MANA_DEFINE_PLUGIN_BEGIN_RUN(mana_begin_run_t);
|
||
|
typedef MANA_DEFINE_PLUGIN_END_RUN(mana_end_run_t);
|
||
|
typedef MANA_DEFINE_PLUGIN_EVENT_DATA(mana_process_event_t);
|
||
|
typedef MANA_DEFINE_PLUGIN_SYSTEM_EVENT(mana_process_system_event_t);
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
mana_init_t *init;
|
||
|
mana_shutdown_t *shutdown;
|
||
|
mana_begin_run_t *begin_run;
|
||
|
mana_end_run_t *end_run;
|
||
|
mana_process_event_t *process_event;
|
||
|
mana_process_system_event_t *process_system_event;
|
||
|
} mana_sink_t;
|
||
|
|
||
|
// event data serialization format:
|
||
|
// u32 event count
|
||
|
// u32 total size in bytes
|
||
|
// u16 eventIndex, u16 array descriptor count
|
||
|
// array descriptors
|
||
|
// data arrays
|
||
|
}
|
||
|
|
||
|
#endif /* A51A04C1_ABD6_4DE9_B16A_49A9DA46C67E */
|