49 const struct yac_param *param,
size_t *count) {
68 "idx out of bounds for oneof parameter");
74 err == 0,
"failed to create default oneof subparameter");
95 "oneof parameter '%s' already set to '%s', cannot set to '%s'",
107 "dynamic subparam with name '%s' creation failed for "
108 "paramter name '%s'",
name, self->
name);
138 .get_scalar_kind = NULL,
139 .set_scalar_int = NULL,
140 .set_scalar_dble = NULL,
141 .get_scalar_int = NULL,
142 .get_scalar_dble = NULL
148 void **value_ptr,
struct yac_param *subparam,
149 int subparam_is_default) {
152 YAC_ASSERT(default_factory,
"default_factory is NULL");
154 ((*value_ptr == NULL) && (subparam == NULL)) ||
155 ((*value_ptr != NULL) && (subparam != NULL)),
156 "subparam must be NULL if and only if *out_obj is NULL");
162 self->
obj = value_ptr;
164 self->
is_default = (*value_ptr != NULL) ? subparam_is_default : 0;
#define YAC_ASSERT(exp, msg)
void yac_param_delete(struct yac_param *param)
int yac_param_is_default(const struct yac_param *param)
Check whether a parameter is at its default value.
const char * yac_param_get_name(const struct yac_param *param)
Get the name of the current parameter.
yac_param_type
Parameter type for generic configuration interface.
@ YAC_PARAM_TYPE_STRUCT
Named, fixed set of subparameters.
#define YAC_PARAM_ASSERT(COND,...)
#define YAC_PARAM_CHECK_BASIC()
static void yac_param_oneof_delete(struct yac_param *param)
static int yac_param_oneof_get_sub_count(const struct yac_param *param, size_t *count)
static int yac_param_oneof_get_sub_by_name(const struct yac_param *param, const char *name, struct yac_param **sub_param)
static int yac_param_oneof_get_sub_by_index(struct yac_param *param, size_t idx, struct yac_param **sub_param)
static const char * yac_param_oneof_get_name(const struct yac_param *param)
struct yac_param * yac_param_oneof_new(const char *name, yac_param_oneof_factory_ptr default_factory, void **value_ptr, struct yac_param *subparam, int subparam_is_default)
Create a new one-of struct parameter with a given name and a default_factory.
static enum yac_param_type yac_param_oneof_get_type(const struct yac_param *param)
static int yac_param_oneof_is_default(const struct yac_param *param)
static const struct yac_param_vtable yac_param_oneof_vtable
int(* yac_param_oneof_factory_ptr)(const char *name, void **obj, struct yac_param **param, int *is_default)
Function pointer type for creating a default subparameter and associated object for a oneof parameter...
struct yac_param * subparam
const struct yac_param_vtable * vtable
yac_param_oneof_factory_ptr default_factory
enum yac_param_type(* get_type)(const struct yac_param *param)