8void RegisterCvars(
void(
string name,
string def,
string desc,
bool archive,
string file) f) {}
13 if (
strstrofs(s,
"\"", 0) >= 0)
return false;
14 if (
strstrofs(s,
"\\", 0) >= 0)
return false;
15 if (
strstrofs(s,
";", 0) >= 0)
return false;
16 if (
strstrofs(s,
"$", 0) >= 0)
return false;
17 if (
strstrofs(s,
"\r", 0) >= 0)
return false;
18 if (
strstrofs(s,
"\n", 0) >= 0)
return false;
26 input = strreplace(
"\n",
"", input);
27 input = strreplace(
"\\",
"\\\\", input);
28 input = strreplace(
"$",
"$$", input);
29 input = strreplace(
"\"",
"\\\"", input);
58 bool expr_fail =
false;
70 #define BINOP(op, len, expr) \
71 if ((o = strstrofs(s, op, 0)) >= 0) \
73 k = substring(s, 0, o); \
74 v = substring(s, o + len, -1); \
94 X(
boolean((
ftos(f) == k) ? f :
cvar(k)) == b);
139#define repr_cvar_bool(x) ((x) ? "1" : "0")
140#define repr_cvar_int(x) (itos(x))
141#define repr_cvar_float(x) (ftos(x))
142#define repr_cvar_string(x) (x)
143#define repr_cvar_vector(x) (sprintf("%v", x))
151#define __AUTOCVAR(file, archive, var, type, desc, default) \
152 ACCUMULATE void RegisterCvars(void(string, string, string, bool, string) f) \
154 f( #var, repr_cvar_##type(default), desc, archive, file); \
156 type autocvar_##var = default
157#define AUTOCVAR_5(file, archive, var, type, desc) \
158 __AUTOCVAR(file, archive, var, type, desc, default_##type)
159#define AUTOCVAR_6(file, archive, var, type, default, desc) \
160 __AUTOCVAR(file, archive, var, type, desc, default)
161#define _AUTOCVAR(...) EVAL__AUTOCVAR(OVERLOAD(AUTOCVAR, __FILE__, __VA_ARGS__))
162#define EVAL__AUTOCVAR(...) __VA_ARGS__
163#define AUTOCVAR_SAVE(...) _AUTOCVAR(true, __VA_ARGS__)
164#define AUTOCVAR(...) _AUTOCVAR(false, __VA_ARGS__)
const noref string default_string
ERASEABLE void RegisterCvars_Save(string name, string def, string desc, bool archive, string file)
#define BINOP(op, len, expr)
const noref vector default_vector
const noref int default_int
ERASEABLE bool expr_evaluate(string s)
Evaluate an expression of the form: [+ | -]?
ERASEABLE void RegisterCvars_Set(string name, string def, string desc, bool archive, string file)
ERASEABLE void RegisterCvars(void(string name, string def, string desc, bool archive, string file) f)
int RegisterCvars_Save_fd
const noref float default_float
ERASEABLE string MakeConsoleSafe(string input)
Escape the string to make it safe for consoles.
const noref bool default_bool
ERASEABLE bool cvar_value_issafe(string s)
#define STATIC_INIT_LATE(func)
directly after STATIC_INIT