54 "value %d is not a valid enum for parameter '%s'",
value, self->
name);
61 struct yac_param *param,
const char *value_str) {
66 "No value provided for enum parameter '%s'", self->
name);
72 "'%s' is not a valid enum name for parameter '%s'",
73 value_str, self->
name);
86 "value for parameter '%s' is undefined, user must set it first",
93 const struct yac_param *param,
char *buf,
size_t buflen) {
98 "value for parameter '%s' is undefined, user must set it first",
104 name,
"value %d is not a valid enum for parameter '%s'",
value, self->
name);
106 int n = snprintf(buf, buflen,
"%s",
name);
108 (n >= 0) && ((
size_t)n < buflen),
109 "buffer too small for value '%s' of parameter '%s'",
name, self->
name);
135 .get_sub_count = NULL,
136 .get_sub_by_name = NULL,
137 .get_sub_by_index = NULL,
143 .set_scalar_dble = NULL,
145 .get_scalar_dble = NULL
149 const char *
name,
int *value_ptr,
int default_value,
151 int has_default,
int is_defined) {
155 YAC_ASSERT(enum_table_size > 0,
"enum_table_size is 0");
159 enum_table, enum_table_size, default_value),
160 "default_value %d is not valid enum of parameter '%s'",
161 default_value,
name);
165 "initial value %d is not valid enum of parameter '%s'",
#define YAC_ASSERT(exp, msg)
int yac_name_type_pair_get_type(struct yac_name_type_pair const *pairs, size_t count, char const *name)
char const * yac_name_type_pair_get_name(struct yac_name_type_pair const *pairs, size_t count, int type)
yac_param_scalar_kind
Scalar parameter storage kind.
@ YAC_PARAM_SCALAR_KIND_INT
Scalar value backed by int storage.
yac_param_type
Parameter type for generic configuration interface.
@ YAC_PARAM_TYPE_SCALAR
Single typed value (e.g., int, double, string, enum)
static int yac_param_enum_get_scalar_kind(const struct yac_param *param, enum yac_param_scalar_kind *scalar_kind)
static int yac_param_enum_set_scalar_int(struct yac_param *param, int value)
static int yac_param_enum_is_default(const struct yac_param *param)
static int yac_param_enum_get_scalar(const struct yac_param *param, char *buf, size_t buflen)
static int yac_param_enum_get_scalar_int(const struct yac_param *param, int *value)
static int yac_param_enum_set_scalar(struct yac_param *param, const char *value_str)
static void yac_param_enum_delete(struct yac_param *param)
static const char * yac_param_enum_get_name(const struct yac_param *param)
struct yac_param * yac_param_enum_new(const char *name, int *value_ptr, int default_value, struct yac_name_type_pair const *enum_table, size_t enum_table_size, int has_default, int is_defined)
Create a new enum parameter for configuration.
static const struct yac_param_vtable yac_param_enum_vtable
static enum yac_param_type yac_param_enum_get_type(const struct yac_param *param)
#define YAC_PARAM_ASSERT(COND,...)
#define YAC_PARAM_CHECK_BASIC()
struct yac_name_type_pair const * enum_table
const struct yac_param_vtable * vtable
enum yac_param_type(* get_type)(const struct yac_param *param)
#define YAC_ASSERT_F(exp, format,...)