/* This implements a sort of variable repository. One could also think of it * as cheap version of an associative array. In each one of these * datastructures you can store name/value pairs. * * All functions (should) follow the Shit-In-Shit-Out (SISO) principle, i.e., * you can pass them NULL pointers and the like and they will return something * appropriate. */ #ifndef VARIABLES_H #define VARIABLES_H #include #define VALID_VARIABLE_CHARS "abcdefghijklmnopqrstuvwxyz0123456789_" struct _variable { char * name; char * value; struct _variable * next; }; typedef struct _variable * VariableSpace; VariableSpace CreateVariableSpace(void); const char * GetVariable(VariableSpace space, const char * name); bool GetVariableBool(VariableSpace space, const char * name); bool SetVariable(VariableSpace space, const char * name, const char * value); bool DeleteVariable(VariableSpace space, const char * name); void DestroyVariableSpace(VariableSpace space); #endif /* VARIABLES_H */