52 Idf_Overridden = 1<<4,
77 void setfloat(
float val);
78 void setnumber(
double val);
79 void setstr(
char *val);
81 void setcode(
const uint *val);
82 void setmacro(
const uint *val);
83 void setcstr(
const char *val);
84 void setident(
ident *val);
86 const char *getstr()
const;
88 float getfloat()
const;
89 double getnumber()
const;
91 void getval(
tagval &r)
const;
103typedef void (__cdecl *identfun)(
ident *id);
171 ident(
int t,
const char *n,
int m,
int x,
int *s,
void *f =
nullptr,
int flags = 0)
172 :
type(t), flags(flags | (m > x ? Idf_ReadOnly : 0)), name(n),
minval(m),
maxval(x),
fun((identfun)f)
178 ident(
int t,
const char *n,
float m,
float x,
float *s,
void *f =
nullptr,
int flags = 0)
179 :
type(t), flags(flags | (m > x ? Idf_ReadOnly : 0)), name(n),
minvalf(m),
maxvalf(x),
fun((identfun)f)
185 ident(
int t,
const char *n,
char **s,
void *f =
nullptr,
int flags = 0)
186 :
type(t), flags(flags), name(n),
fun((identfun)f)
190 ident(
int t,
const char *n,
char *a,
int flags)
191 :
type(t),
valtype(Value_String), flags(flags), name(n), code(nullptr), stack(nullptr)
194 ident(
int t,
const char *n,
int a,
int flags)
195 :
type(t),
valtype(Value_Integer), flags(flags), name(n), code(nullptr), stack(nullptr)
198 ident(
int t,
const char *n,
float a,
int flags)
199 :
type(t),
valtype(Value_Float), flags(flags), name(n), code(nullptr), stack(nullptr)
202 ident(
int t,
const char *n,
int flags)
203 :
type(t),
valtype(Value_Null), flags(flags), name(n), code(nullptr), stack(nullptr)
205 ident(
int t,
const char *n,
const tagval &v,
int flags)
206 :
type(t),
valtype(v.
type), flags(flags), name(n), code(nullptr), stack(nullptr)
212 ident(
int t,
const char *n,
const char *args, uint argmask,
int numargs,
void *f =
nullptr,
int flags = 0)
296 const char *getstr()
const;
297 void getval(
tagval &r)
const;
298 void getcstr(
tagval &v)
const;
299 void getcval(
tagval &v)
const;
312extern const char *floatstr(
float v);
356 return static_cast<int>(std::strtoul(s,
nullptr, 0));
372extern int variable(
const char *name,
int min,
int cur,
int max,
int *storage, identfun fun,
int flags);
390extern float fvariable(
const char *name,
float min,
float cur,
float max,
float *storage, identfun fun,
int flags);
403extern char *
svariable(
const char *name,
const char *cur,
char **storage, identfun fun,
int flags);
413extern void setvar(
const char *name,
int i,
bool dofunc =
true,
bool doclamp =
true);
423extern void setfvar(
const char *name,
float f,
bool dofunc =
true,
bool doclamp =
true);
432extern void setsvar(
const char *name,
const char *str,
bool dofunc =
true);
445extern bool addcommand(
const char *name, identfun fun,
const char *narg =
"",
int type = Id_Command);
457extern int execute(
const uint *code);
468extern int execute(
const char *p);
480extern int execident(
const char *name,
int noid = 0,
bool lookup =
false);
481extern bool executebool(
const uint *code);
492extern bool execfile(
const char *cfgfile,
bool msg =
true);
530extern int clampvar(
bool hex, std::string name,
int i,
int minval,
int maxval);
554extern void writecfg(
const char *savedconfig,
const char *autoexec =
nullptr,
const char *defaultconfig =
nullptr,
const char *name =
nullptr);
627#define VAR_(name, global, min, cur, max, persist) int global = variable(#name, min, cur, max, &global, nullptr, persist)
628#define VARN(name, global, min, cur, max) VAR_(name, global, min, cur, max, 0)
629#define VARNP(name, global, min, cur, max) VAR_(name, global, min, cur, max, Idf_Persist)
630#define VARNR(name, global, min, cur, max) VAR_(name, global, min, cur, max, Idf_Override)
631#define VAR(name, min, cur, max) VAR_(name, name, min, cur, max, 0)
632#define VARP(name, min, cur, max) VAR_(name, name, min, cur, max, Idf_Persist)
633#define VARR(name, min, cur, max) VAR_(name, name, min, cur, max, Idf_Override)
636#define VARF_(name, global, min, cur, max, body, persist) \
637 int global = variable(#name, min, cur, max, &global, [] (ident *) { body; }, persist);
639#define VARFN(name, global, min, cur, max, body) VARF_(name, global, min, cur, max, body, 0)
640#define VARF(name, min, cur, max, body) VARF_(name, name, min, cur, max, body, 0)
641#define VARFP(name, min, cur, max, body) VARF_(name, name, min, cur, max, body, Idf_Persist)
642#define VARFR(name, min, cur, max, body) VARF_(name, name, min, cur, max, body, Idf_Override)
643#define VARFNP(name, global, min, cur, max, body) VARF_(name, global, min, cur, max, body, Idf_Persist)
646#define HVAR_(name, global, min, cur, max, persist) int global = variable(#name, min, cur, max, &global, nullptr, persist | Idf_Hex)
647#define HVARP(name, min, cur, max) HVAR_(name, name, min, cur, max, Idf_Persist)
651#define HVARF_(name, global, min, cur, max, body, persist) \
652 int global = variable(#name, min, cur, max, &global, [] (ident *) { body; }, persist | Idf_Hex);
655#define CVAR_(name, cur, init, body, persist) bvec name = bvec::hexcolor(cur); HVARF_(name, _##name, 0, cur, 0xFFFFFF, { init; name = bvec::hexcolor(_##name); body; }, persist)
656#define CVARP(name, cur) CVAR_(name, cur, , , Idf_Persist)
657#define CVARR(name, cur) CVAR_(name, cur, , , Idf_Override)
658#define CVARFP(name, cur, body) CVAR_(name, cur, , body, Idf_Persist)
659#define CVAR0_(name, cur, body, persist) CVAR_(name, cur, { if(!_##name) _##name = cur; }, body, persist)
660#define CVAR0R(name, cur) CVAR0_(name, cur, , Idf_Override)
661#define CVAR1_(name, cur, body, persist) CVAR_(name, cur, { if(_##name <= 255) _##name |= (_##name<<8) | (_##name<<16); }, body, persist)
662#define CVAR1R(name, cur) CVAR1_(name, cur, , Idf_Override)
663#define CVAR1FR(name, cur, body) CVAR1_(name, cur, body, Idf_Override)
666#define FVAR_(name, global, min, cur, max, persist) float global = fvariable(#name, min, cur, max, &global, nullptr, persist)
667#define FVARNP(name, global, min, cur, max) FVAR_(name, global, min, cur, max, Idf_Persist)
668#define FVAR(name, min, cur, max) FVAR_(name, name, min, cur, max, 0)
669#define FVARP(name, min, cur, max) FVAR_(name, name, min, cur, max, Idf_Persist)
670#define FVARR(name, min, cur, max) FVAR_(name, name, min, cur, max, Idf_Override)
673#define FVARF_(name, global, min, cur, max, body, persist) \
674 float global = fvariable(#name, min, cur, max, &global, [] (ident *) { body; }, persist); \
676#define FVARF(name, min, cur, max, body) FVARF_(name, name, min, cur, max, body, 0)
677#define FVARFP(name, min, cur, max, body) FVARF_(name, name, min, cur, max, body, Idf_Persist)
678#define FVARFR(name, min, cur, max, body) FVARF_(name, name, min, cur, max, body, Idf_Override)
681#define SVAR_(name, global, cur, persist) char *global = svariable(#name, cur, &global, nullptr, persist)
682#define SVAR(name, cur) SVAR_(name, name, cur, 0)
683#define SVARP(name, cur) SVAR_(name, name, cur, Idf_Persist)
684#define SVARR(name, cur) SVAR_(name, name, cur, Idf_Override)
687#define SVARF_(name, global, cur, body, persist) \
688 char *global = svariable(#name, cur, &global, [] (ident *) { body; }, persist);
690#define SVARF(name, cur, body) SVARF_(name, name, cur, body, 0)
691#define SVARFR(name, cur, body) SVARF_(name, name, cur, body, Idf_Override)
void stringret(char *s)
Returns a string value from a Cubescript command.
void result(const char *s)
Returns an alias' name from a Cubescript command.
const char * escapestring(const char *s)
Replaces C style excape characters with Cubescript ones.
void intret(int v)
Returns an integer value from a Cubescript command.
int variable(const char *name, int min, int cur, int max, int *storage, identfun fun, int flags)
Registers an int variable in the Cubescript ident table.
const char * escapeid(const char *s)
Escapes a string unless it is null.
void floatret(float v)
Returns a float value from a Cubescript command.
void setfvar(const char *name, float f, bool dofunc=true, bool doclamp=true)
Sets a Cubescript float value to the given value.
void setsvar(const char *name, const char *str, bool dofunc=true)
Sets a Cubescript string value to the given value.
void setvar(const char *name, int i, bool dofunc=true, bool doclamp=true)
Sets a Cubescript integer value to the given value.
bool execfile(const char *cfgfile, bool msg=true)
Executes the contents of the referenced file.
int parseint(const char *s)
Returns the string passed as an integer.
Definition command.h:354
bool initidents()
Initializes the CubeScript preset argument idents.
bool addcommand(const char *name, identfun fun, const char *narg="", int type=Id_Command)
Registers a command in the Cubescript ident table.
int clampvar(bool hex, std::string name, int i, int minval, int maxval)
Modifies the value passed to fall within the boundaries passed.
int execident(const char *name, int noid=0, bool lookup=false)
Executes the contents of an ident, searched by name.
void printvar(const ident *id, int i)
Prints out the formatted variable.
void writecfg(const char *savedconfig, const char *autoexec=nullptr, const char *defaultconfig=nullptr, const char *name=nullptr)
Writes out the state of the CubeScript idents to a file.
void clear_command()
Clears all aliases from the ident map.
char * svariable(const char *name, const char *cur, char **storage, identfun fun, int flags)
Registers a C string variable in the Cubescript ident table.
float fvariable(const char *name, float min, float cur, float max, float *storage, identfun fun, int flags)
Registers a float variable in the Cubescript ident table.
ident * getident(const char *name)
Returns the pointer to the ident object with the given CS alias.
void checksleep(int millis)
Processes the cubescript sleep queue.
std::queue< ident * > triggerqueue
An object representing all Cubescript objects.
Definition command.h:114
double getnumber() const
Returns the saved value of the ident as a double.
ident(int t, const char *n, char **s, void *f=nullptr, int flags=0)
Constructor for an ident for a string variable.
Definition command.h:185
void forcenull()
Sets the value type of this ident to null.
Definition command.h:263
void changed()
Calls a change effect for this ident, if one exists.
Definition command.h:222
int minval
Definition command.h:141
void setval(const identstack &v)
Sets the value and type of value of this ident given an identstack.
Definition command.h:252
float getfloat() const
Returns the saved value of the ident as a float.
uchar valtype
Definition command.h:127
uchar numargs
Definition command.h:128
ident(int t, const char *n, int m, int x, int *s, void *f=nullptr, int flags=0)
Constructor for an ident for an int variable.
Definition command.h:171
int getint() const
Returns the saved value of the ident as an integer.
int maxval
Definition command.h:142
uchar type
Definition command.h:124
ident(int t, const char *n, const char *args, uint argmask, int numargs, void *f=nullptr, int flags=0)
Constructor for an ident for a C++ bound command.
Definition command.h:212
identfun fun
Definition command.h:165
float maxvalf
Definition command.h:147
void setval(const tagval &v)
Sets the value and type of value of this ident given a tagval.
Definition command.h:238
ident(int t, const char *n, float m, float x, float *s, void *f=nullptr, int flags=0)
Constructor for an ident for a float variable.
Definition command.h:178
float minvalf
Definition command.h:146
char ** s
Definition command.h:121
int * i
Definition command.h:119
float * f
Definition command.h:120
void * p
Definition command.h:118