feat(core): add flags bitfield system
- Replace stk_initialized with stk_flags bitfield - Add STK_FLAG_INITIALIZED (0x01) and STK_FLAG_LOGGING_ENABLED (0x02) - Add stk_set_logging_enabled() and stk_is_logging_enabled() API - Single byte for all boolean state and settings Logging enabled by default, packs all flags into one byte for efficiency.
This commit is contained in:
@@ -30,6 +30,10 @@
|
|||||||
#define STK_PLATFORM_REMOVE_DIR_ERROR 3
|
#define STK_PLATFORM_REMOVE_DIR_ERROR 3
|
||||||
#define STK_PLATFORM_REMOVE_FILE_ERROR 4
|
#define STK_PLATFORM_REMOVE_FILE_ERROR 4
|
||||||
|
|
||||||
|
/* Settings flags */
|
||||||
|
#define STK_FLAG_INITIALIZED 0x01
|
||||||
|
#define STK_FLAG_LOGGING_ENABLED 0x02
|
||||||
|
|
||||||
#if defined(__linux__) || defined(_WIN32)
|
#if defined(__linux__) || defined(_WIN32)
|
||||||
#define STK_EVENT_BUFFER 4096
|
#define STK_EVENT_BUFFER 4096
|
||||||
#endif
|
#endif
|
||||||
@@ -62,6 +66,8 @@ void stk_set_mod_dir(const char *path);
|
|||||||
void stk_set_tmp_dir_name(const char *name);
|
void stk_set_tmp_dir_name(const char *name);
|
||||||
void stk_set_module_init_fn(const char *name);
|
void stk_set_module_init_fn(const char *name);
|
||||||
void stk_set_module_shutdown_fn(const char *name);
|
void stk_set_module_shutdown_fn(const char *name);
|
||||||
|
void stk_set_logging_enabled(unsigned char enabled);
|
||||||
|
unsigned char stk_is_logging_enabled(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -17,7 +17,7 @@ void **stk_handles = NULL;
|
|||||||
stk_init_mod_func *stk_inits = NULL;
|
stk_init_mod_func *stk_inits = NULL;
|
||||||
stk_shutdown_mod_func *stk_shutdowns = NULL;
|
stk_shutdown_mod_func *stk_shutdowns = NULL;
|
||||||
|
|
||||||
extern unsigned char stk_initialized;
|
extern unsigned char stk_flags;
|
||||||
|
|
||||||
static char stk_mod_init_name[STK_MOD_FUNC_NAME_BUFFER] = "stk_mod_init";
|
static char stk_mod_init_name[STK_MOD_FUNC_NAME_BUFFER] = "stk_mod_init";
|
||||||
static char stk_mod_shutdown_name[STK_MOD_FUNC_NAME_BUFFER] =
|
static char stk_mod_shutdown_name[STK_MOD_FUNC_NAME_BUFFER] =
|
||||||
@@ -253,7 +253,7 @@ void stk_module_unload_all(void)
|
|||||||
|
|
||||||
void stk_set_module_init_fn(const char *name)
|
void stk_set_module_init_fn(const char *name)
|
||||||
{
|
{
|
||||||
if (!name || stk_initialized)
|
if (!name || (stk_flags & STK_FLAG_INITIALIZED))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
strncpy(stk_mod_init_name, name, STK_MOD_FUNC_NAME_BUFFER - 1);
|
strncpy(stk_mod_init_name, name, STK_MOD_FUNC_NAME_BUFFER - 1);
|
||||||
@@ -262,7 +262,7 @@ void stk_set_module_init_fn(const char *name)
|
|||||||
|
|
||||||
void stk_set_module_shutdown_fn(const char *name)
|
void stk_set_module_shutdown_fn(const char *name)
|
||||||
{
|
{
|
||||||
if (!name || stk_initialized)
|
if (!name || (stk_flags & STK_FLAG_INITIALIZED))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
strncpy(stk_mod_shutdown_name, name, STK_MOD_FUNC_NAME_BUFFER - 1);
|
strncpy(stk_mod_shutdown_name, name, STK_MOD_FUNC_NAME_BUFFER - 1);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ extern char (*stk_module_ids)[STK_MOD_ID_BUFFER];
|
|||||||
|
|
||||||
extern size_t module_count;
|
extern size_t module_count;
|
||||||
|
|
||||||
unsigned char stk_initialized = 0;
|
unsigned char stk_flags = STK_FLAG_LOGGING_ENABLED;
|
||||||
|
|
||||||
static char stk_mod_dir[STK_PATH_MAX_OS] = "mods";
|
static char stk_mod_dir[STK_PATH_MAX_OS] = "mods";
|
||||||
static char stk_tmp_name[STK_MOD_ID_BUFFER] = ".tmp";
|
static char stk_tmp_name[STK_MOD_ID_BUFFER] = ".tmp";
|
||||||
@@ -143,7 +143,7 @@ scanned:
|
|||||||
STK_VERSION_STRING, module_count, module_count != 1 ? "s" : "",
|
STK_VERSION_STRING, module_count, module_count != 1 ? "s" : "",
|
||||||
stk_mod_dir);
|
stk_mod_dir);
|
||||||
|
|
||||||
stk_initialized = 1;
|
stk_flags |= STK_FLAG_INITIALIZED;
|
||||||
return STK_INIT_SUCCESS;
|
return STK_INIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ void stk_shutdown(void)
|
|||||||
stk_tmp_dir);
|
stk_tmp_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
stk_initialized = 0;
|
stk_flags &= ~STK_FLAG_INITIALIZED;
|
||||||
stk_log(stdout, "stk shutdown");
|
stk_log(stdout, "stk shutdown");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -380,7 +380,7 @@ finish_poll:
|
|||||||
|
|
||||||
void stk_set_mod_dir(const char *path)
|
void stk_set_mod_dir(const char *path)
|
||||||
{
|
{
|
||||||
if (!path || stk_initialized)
|
if (!path || (stk_flags & STK_FLAG_INITIALIZED))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
strncpy(stk_mod_dir, path, STK_PATH_MAX_OS - 1);
|
strncpy(stk_mod_dir, path, STK_PATH_MAX_OS - 1);
|
||||||
@@ -398,7 +398,7 @@ void stk_set_mod_dir(const char *path)
|
|||||||
|
|
||||||
void stk_set_tmp_dir_name(const char *name)
|
void stk_set_tmp_dir_name(const char *name)
|
||||||
{
|
{
|
||||||
if (!name || stk_initialized)
|
if (!name || (stk_flags & STK_FLAG_INITIALIZED))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
strncpy(stk_tmp_name, name, STK_MOD_ID_BUFFER - 1);
|
strncpy(stk_tmp_name, name, STK_MOD_ID_BUFFER - 1);
|
||||||
@@ -411,3 +411,16 @@ void stk_set_tmp_dir_name(const char *name)
|
|||||||
strncat(stk_tmp_dir, stk_tmp_name,
|
strncat(stk_tmp_dir, stk_tmp_name,
|
||||||
STK_PATH_MAX_OS - strlen(stk_tmp_dir) - 1);
|
STK_PATH_MAX_OS - strlen(stk_tmp_dir) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void stk_set_logging_enabled(unsigned char enabled)
|
||||||
|
{
|
||||||
|
if (enabled)
|
||||||
|
stk_flags |= STK_FLAG_LOGGING_ENABLED;
|
||||||
|
else
|
||||||
|
stk_flags &= ~STK_FLAG_LOGGING_ENABLED;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char stk_is_logging_enabled(void)
|
||||||
|
{
|
||||||
|
return (stk_flags & STK_FLAG_LOGGING_ENABLED) != 0;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user