#ifndef STATE_H #define STATE_H #include typedef enum StateType { STATE_null, #define State(name) STATE_##name, #include #undef State STATE_quit, } StateType; extern const char *StateTypeStr[]; StateType(*State_updateFunc(StateType type))(void*); void State_init(StateType type, memory *mem); void State_free(StateType type, memory *mem); StateType State_update(StateType type, memory *mem); /* Reloads shared object file associated with state */ #ifdef DAW_BUILD_HOTRELOAD bool State_reload(StateType type); #define get_statelib_var(type) libstate_##name #define State_load_binding(type, function_name) dynamic_library_get_symbol(get_statelib_var(type), #function_name) #else #define State_reload(_) true #define State_load_binding(_, __) true #endif #endif