65 struct yac_param *param,
const char *value_str) {
87 const struct yac_param *param,
char *buf,
size_t buflen) {
94 buf, buflen,
value,
"angle value",
119 (fmod(dval, 1.0) == 0.0) &&
120 (dval >= (
double)INT_MIN) && (dval <= (
double)INT_MAX),
121 "angle value %g cannot be converted to integer without loss "
122 "for parameter '%s'",
135 .get_sub_count = NULL,
136 .get_sub_by_name = NULL,
137 .get_sub_by_index = NULL,
149 const char *
name,
double *value_ptr,
double default_value,
150 double value_min,
double value_max,
int has_default,
int is_defined) {
154 is_defined || (!isnan(*value_ptr) && !isinf(*value_ptr)),
155 "initial value (%g) is not finite for parameter '%s'",
158 !isnan(value_min) && isfinite(value_min),
159 "value_min (%g) is not finite for parameter '%s'",
162 !isnan(value_max) && isfinite(value_max),
163 "value_max (%g) is not finite for parameter '%s'",
166 !has_default || (!isnan(default_value) && !isinf(default_value)),
167 "default_value (%g) is not finite for parameter '%s' (has_default is true)",
168 default_value,
name);
170 value_min <= value_max,
171 "value_min (%g) is greater than value_max (%g) for parameter '%s'",
172 value_min, value_max,
name);
182 name, value_ptr, default_value, value_min, value_max, 0, 0, has_default,
int yac_param_parse_dble_with_unit(const char *value_str, const char *param_name, double *value, enum yac_param_angle_unit *unit)
int yac_param_get_scalar_dble(const struct yac_param *param, double *value)
Get the value of a scalar parameter as a double.
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.
double yac_deg_to_rad(double deg, char const *param_name)
double yac_wrap_rad(double value, char const *param_name)
int yac_param_get_scalar_kind(const struct yac_param *param, enum yac_param_scalar_kind *scalar_kind)
Get the storage kind of a scalar parameter.
double yac_rad_to_deg(double rad, char const *param_name)
int yac_param_format_scalar_dble(char *buf, size_t buflen, double value, const char *value_desc, const char *param_name)
int yac_param_set_scalar_dble(struct yac_param *param, double value)
Set the value of a scalar parameter as a double.
const char * yac_param_get_name(const struct yac_param *param)
Get the name of the current parameter.
yac_param_scalar_kind
Scalar parameter storage kind.
yac_param_type
Parameter type for generic configuration interface.
@ YAC_PARAM_TYPE_SCALAR
Single typed value (e.g., int, double, string, enum)
struct yac_param * yac_param_angle_new(const char *name, double *value_ptr, double default_value, double value_min, double value_max, int has_default, int is_defined)
Create an angle parameter (stored in radians)
static void yac_param_angle_delete(struct yac_param *param)
static enum yac_param_type yac_param_angle_get_type(const struct yac_param *param)
static int yac_param_angle_get_scalar_dble(const struct yac_param *param, double *value)
static int yac_param_angle_set_scalar_dble(struct yac_param *param, double value)
static int yac_param_angle_set_scalar_int(struct yac_param *param, int value)
static int yac_param_angle_is_default(const struct yac_param *param)
static int yac_param_angle_get_scalar_int(const struct yac_param *param, int *value)
static const struct yac_param_vtable yac_param_angle_vtable
static const char * yac_param_angle_get_name(const struct yac_param *param)
static int yac_param_angle_get_scalar_kind(const struct yac_param *param, enum yac_param_scalar_kind *scalar_kind)
static int yac_param_angle_get_scalar(const struct yac_param *param, char *buf, size_t buflen)
static int yac_param_angle_set_scalar(struct yac_param *param, const char *value_str)
struct yac_param * yac_param_dble_new(const char *name, double *value_ptr, double default_value, double value_min, double value_max, int allow_nan, int allow_inf, int has_default, int is_defined)
Create a double parameter.
@ YAC_PARAM_ANGLE_UNIT_DEG
#define YAC_PARAM_ASSERT(COND,...)
#define YAC_PARAM_CHECK_BASIC()
struct yac_param * dble_param
const struct yac_param_vtable * vtable
enum yac_param_type(* get_type)(const struct yac_param *param)
#define YAC_ASSERT_F(exp, format,...)