#ifndef _INCLUDE_EVENT_H_ #define _INCLUDE_EVENT_H_ #define CONCAT_(prefix, suffix) prefix##suffix /// Concatenate `prefix, suffix` into `prefixsuffix` #define CONCAT(prefix, suffix) CONCAT_(prefix, suffix) /// Register event handler #define ON_EVENT_EX(name, func, data) \ static void func (const char* event_name, void *args, void* user_data); \ int CONCAT(func, _register_ret) = etif_event_register(#name, func, data);\ static void func (const char* event_name, void *args, void* user_data) #define ON_EVENT(name) ON_EVENT_EX(name, CONCAT(_event_ ## name ## _handle_line_, __LINE__), NULL) #ifdef __cplusplus extern "C" { #endif typedef void (*event_callback)(const char*, void*, void*); void etif_event(const char *event_name, void *args, size_t args_size); int etif_event_register(const char *event_name, event_callback callback, void* user_data); int etif_event_unregister(const char *event_name, event_callback callback, void* user_data); void* etif_event_thread(void*); #ifdef __cplusplus } #endif #endif