24#ifndef __WLMCFG_DECODE_H__
25#define __WLMCFG_DECODE_H__
49#define WLMCFG_ENUM_SENTINEL() { .name_ptr = NULL }
52#define WLMCFG_ENUM(_name, _value) { .name_ptr = (_name), .value = (_value) }
125 bool (*init)(
void *dest_ptr);
127 void (*fini)(
void *dest_ptr);
156#define WLMCFG_DESC_SENTINEL() { .key_ptr = NULL }
159#define WLMCFG_DESC_UINT64(_key, _required, _base, _field, _default) { \
160 .type = WLMCFG_TYPE_UINT64, \
162 .required = _required, \
163 .field_offset = offsetof(_base, _field), \
164 .v.v_uint64.default_value = _default \
168#define WLMCFG_DESC_INT64(_key, _required, _base, _field, _default) { \
169 .type = WLMCFG_TYPE_INT64, \
171 .required = _required, \
172 .field_offset = offsetof(_base, _field), \
173 .v.v_int64.default_value = _default \
177#define WLMCFG_DESC_DOUBLE(_key, _required, _base, _field, _default) { \
178 .type = WLMCFG_TYPE_DOUBLE, \
180 .required = _required, \
181 .field_offset = offsetof(_base, _field), \
182 .v.v_double.default_value = _default \
186#define WLMCFG_DESC_ARGB32(_key, _required, _base, _field, _default) { \
187 .type = WLMCFG_TYPE_ARGB32, \
189 .required = _required, \
190 .field_offset = offsetof(_base, _field), \
191 .v.v_argb32.default_value = _default \
195#define WLMCFG_DESC_BOOL(_key, _required, _base, _field, _default) { \
196 .type = WLMCFG_TYPE_BOOL, \
198 .required = _required, \
199 .field_offset = offsetof(_base, _field), \
200 .v.v_bool.default_value = _default \
204#define WLMCFG_DESC_ENUM(_key, _required, _base, _field, _default, _desc_ptr) \
206 .type = WLMCFG_TYPE_ENUM, \
208 .required = _required, \
209 .field_offset = offsetof(_base, _field), \
210 .v.v_enum.default_value = _default, \
211 .v.v_enum.desc_ptr = _desc_ptr \
215#define WLMCFG_DESC_STRING(_key, _required, _base, _field, _default) { \
216 .type = WLMCFG_TYPE_STRING, \
218 .required = _required, \
219 .field_offset = offsetof(_base, _field), \
220 .v.v_string.default_value_ptr = _default, \
224#define WLMCFG_DESC_CHARBUF(_key, _required, _base, _field, _len, _default) { \
225 .type = WLMCFG_TYPE_CHARBUF, \
227 .required = _required, \
228 .field_offset = offsetof(_base, _field), \
229 .v.v_charbuf.len = _len, \
230 .v.v_charbuf.default_value_ptr = _default, \
234#define WLMCFG_DESC_DICT(_key, _required, _base, _field, _desc) { \
235 .type = WLMCFG_TYPE_DICT, \
237 .required = _required, \
238 .field_offset = offsetof(_base, _field), \
239 .v.v_dict_desc_ptr = _desc \
243#define WLMCFG_DESC_CUSTOM(_key, _required, _base, _field, _d ,_i, _f) { \
244 .type = WLMCFG_TYPE_CUSTOM, \
246 .required = _required, \
247 .field_offset = offsetof(_base, _field), \
248 .v.v_custom.decode = _d, \
249 .v.v_custom.init = _i, \
250 .v.v_custom.fini = _f, \
288 const char *name_ptr,
303 const char **name_ptr_ptr);
void wlmcfg_decoded_destroy(const wlmcfg_desc_t *desc_ptr, void *dest_ptr)
Definition decode.c:179
const bs_test_case_t wlmcfg_decode_test_cases[]
Definition decode.c:485
bool wlmcfg_enum_name_to_value(const wlmcfg_enum_desc_t *enum_desc_ptr, const char *name_ptr, int *value_ptr)
Definition decode.c:219
wlmcfg_decode_type_t
Definition decode.h:55
bool wlmcfg_decode_dict(wlmcfg_dict_t *dict_ptr, const wlmcfg_desc_t *desc_ptr, void *dest_ptr)
Definition decode.c:81
bool wlmcfg_enum_value_to_name(const wlmcfg_enum_desc_t *enum_desc_ptr, int value, const char **name_ptr_ptr)
Definition decode.c:234
union _wlmcfg_desc_t::@0 v
bool required
Definition decode.h:137
const char * key_ptr
Definition decode.h:135
wlmcfg_decode_type_t type
Definition decode.h:133
size_t field_offset
Definition decode.h:139
uint32_t default_value
Definition decode.h:89
bool default_value
Definition decode.h:95
const char * default_value_ptr
Definition decode.h:117
size_t len
Definition decode.h:115
double default_value
Definition decode.h:83
int default_value
Definition decode.h:101
const wlmcfg_enum_desc_t * desc_ptr
Definition decode.h:103
int64_t default_value
Definition decode.h:71
const char * default_value_ptr
Definition decode.h:109
uint64_t default_value
Definition decode.h:77
const char * name_ptr
Definition decode.h:43
int value
Definition decode.h:45