47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
#ifndef RT_CONFIG_H
|
|
#define RT_CONFIG_H
|
|
|
|
#include "runtime.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum {
|
|
RT_CVAR_TYPE_INT,
|
|
RT_CVAR_TYPE_FLOAT,
|
|
RT_CVAR_TYPE_STRING,
|
|
RT_CVAR_TYPE_SIZE,
|
|
} rt_cvar_type;
|
|
|
|
typedef struct {
|
|
const char *name;
|
|
const char *description;
|
|
union {
|
|
int i;
|
|
float f;
|
|
const char *s;
|
|
size_t sz;
|
|
};
|
|
rt_cvar_type type;
|
|
} rt_cvar;
|
|
|
|
/* n variable name, d description string, v default value*/
|
|
#define RT_CVAR_I(n, d, v) \
|
|
rt_cvar n = {.name = #n, .description = d, .i = (v), .type = RT_CVAR_TYPE_INT}
|
|
#define RT_CVAR_F(n, d, v) \
|
|
rt_cvar n = {.name = #n, .description = d, .f = (v), .type = RT_CVAR_TYPE_FLOAT}
|
|
#define RT_CVAR_S(n, d, v) \
|
|
rt_cvar n = {.name = #n, .description = d, .s = (v), .type = RT_CVAR_TYPE_STRING}
|
|
#define RT_CVAR_SZ(n, d, v) \
|
|
rt_cvar n = {.name = #n, .description = d, .sz = (v), .type = RT_CVAR_TYPE_SIZE}
|
|
|
|
RT_DLLEXPORT void rtRegisterCVAR(rt_cvar *cvar);
|
|
|
|
RT_DLLEXPORT rt_cvar *rtGetCVAR(const char *name);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif |