[common] option: implement the ability to set option values

This can then be used to update the options from EGL filters, and then
dumping them to files.
This commit is contained in:
Quantum 2021-08-28 06:08:00 -04:00 committed by Geoffrey McRae
parent f0624ccf89
commit bbd39b8185
2 changed files with 55 additions and 0 deletions

View file

@ -83,6 +83,12 @@ const char * option_get_string(const char * module, const char * name);
bool option_get_bool (const char * module, const char * name);
float option_get_float (const char * module, const char * name);
// update the value of an option
void option_set_int (const char * module, const char * name, int value);
void option_set_string(const char * module, const char * name, const char * value);
void option_set_bool (const char * module, const char * name, bool value);
void option_set_float (const char * module, const char * name, float value);
// called by the main application to parse the command line arguments
bool option_parse(int argc, char * argv[]);

View file

@ -824,3 +824,52 @@ float option_get_float(const char * module, const char * name)
DEBUG_ASSERT(o->type == OPTION_TYPE_FLOAT);
return o->value.x_float;
}
void option_set_int(const char * module, const char * name, int value)
{
struct Option * o = option_get(module, name);
if (!o)
{
DEBUG_ERROR("BUG: Failed to set the value for option %s:%s", module, name);
return;
}
DEBUG_ASSERT(o->type == OPTION_TYPE_INT);
o->value.x_int = value;
}
void option_set_string(const char * module, const char * name, const char * value)
{
struct Option * o = option_get(module, name);
if (!o)
{
DEBUG_ERROR("BUG: Failed to set the value for option %s:%s", module, name);
return;
}
DEBUG_ASSERT(o->type == OPTION_TYPE_STRING);
free(o->value.x_string);
o->value.x_string = strdup(value);
}
void option_set_bool(const char * module, const char * name, bool value)
{
struct Option * o = option_get(module, name);
if (!o)
{
DEBUG_ERROR("BUG: Failed to set the value for option %s:%s", module, name);
return;
}
DEBUG_ASSERT(o->type == OPTION_TYPE_BOOL);
o->value.x_bool = value;
}
void option_set_float(const char * module, const char * name, float value)
{
struct Option * o = option_get(module, name);
if (!o)
{
DEBUG_ERROR("BUG: Failed to set the value for option %s:%s", module, name);
return;
}
DEBUG_ASSERT(o->type == OPTION_TYPE_FLOAT);
o->value.x_float = value;
}