mesytec-mnode/src/internal/mana_api.h

77 lines
2.2 KiB
C
Raw Normal View History

2024-12-25 05:47:38 +01:00
#ifndef A51A04C1_ABD6_4DE9_B16A_49A9DA46C67E
#define A51A04C1_ABD6_4DE9_B16A_49A9DA46C67E
#include <stdint.h>
#include <stddef.h>
#ifdef __cplusplus
extern "C"
{
#endif
2024-12-25 05:47:38 +01:00
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()
2024-12-25 05:47:38 +01:00
#define MANA_DEFINE_PLUGIN_SHUTDOWN(name) void name(void *context)
2024-12-25 05:47:38 +01:00
#define MANA_DEFINE_PLUGIN_BEGIN_RUN(name) void name(void *context, const char *descriptor_json)
2024-12-25 05:47:38 +01:00
#define MANA_DEFINE_PLUGIN_END_RUN(name) void name(void *context, const char *descriptor_json)
2024-12-25 05:47:38 +01:00
#define MANA_DEFINE_PLUGIN_EVENT_DATA(name) \
void name(void *context, uint16_t eventIndex, mana_offset_array_t *arrays, size_t arrayCount, \
size_t totalBytes)
2024-12-25 05:47:38 +01:00
#define MANA_DEFINE_PLUGIN_SYSTEM_EVENT(name) \
void name(void *context, const uint32_t *data, size_t size)
2024-12-25 05:47:38 +01:00
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);
2024-12-25 05:47:38 +01:00
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_plugin_t;
// plugins need to define this function with the name 'mana_get_plugin'
#define MANA_DEFINE_GET_PLUGIN(name) mana_plugin_t name()
typedef MANA_DEFINE_GET_PLUGIN(mana_get_plugin_t);
#ifdef __cplusplus
2024-12-25 05:47:38 +01:00
}
#endif
2024-12-25 05:47:38 +01:00
#endif /* A51A04C1_ABD6_4DE9_B16A_49A9DA46C67E */