629#define CYAML_VALUE_INT( \
632 .flags = (enum cyaml_flag)(_flags), \
633 .data_size = sizeof(_type)
645#define CYAML_FIELD_INT( \
646 _key, _flags, _structure, _member) \
649 .data_offset = offsetof(_structure, _member), \
651 CYAML_VALUE_INT(((_flags) & (~CYAML_FLAG_POINTER)), \
652 (((_structure *)NULL)->_member)), \
666#define CYAML_FIELD_INT_PTR( \
667 _key, _flags, _structure, _member) \
670 .data_offset = offsetof(_structure, _member), \
672 CYAML_VALUE_INT(((_flags) | CYAML_FLAG_POINTER), \
673 (*(((_structure *)NULL)->_member))), \
683#define CYAML_VALUE_UINT( \
685 .type = CYAML_UINT, \
686 .flags = (enum cyaml_flag)(_flags), \
687 .data_size = sizeof(_type)
699#define CYAML_FIELD_UINT( \
700 _key, _flags, _structure, _member) \
703 .data_offset = offsetof(_structure, _member), \
705 CYAML_VALUE_UINT(((_flags) & (~CYAML_FLAG_POINTER)), \
706 (((_structure *)NULL)->_member)), \
720#define CYAML_FIELD_UINT_PTR( \
721 _key, _flags, _structure, _member) \
724 .data_offset = offsetof(_structure, _member), \
726 CYAML_VALUE_UINT(((_flags) | CYAML_FLAG_POINTER), \
727 (*(((_structure *)NULL)->_member))), \
737#define CYAML_VALUE_BOOL( \
739 .type = CYAML_BOOL, \
740 .flags = (enum cyaml_flag)(_flags), \
741 .data_size = sizeof(_type)
753#define CYAML_FIELD_BOOL( \
754 _key, _flags, _structure, _member) \
757 .data_offset = offsetof(_structure, _member), \
759 CYAML_VALUE_BOOL(((_flags) & (~CYAML_FLAG_POINTER)), \
760 (((_structure *)NULL)->_member)), \
774#define CYAML_FIELD_BOOL_PTR( \
775 _key, _flags, _structure, _member) \
778 .data_offset = offsetof(_structure, _member), \
780 CYAML_VALUE_BOOL(((_flags) | CYAML_FLAG_POINTER), \
781 (*(((_structure *)NULL)->_member))), \
793#define CYAML_VALUE_ENUM( \
794 _flags, _type, _strings, _strings_count) \
795 .type = CYAML_ENUM, \
796 .flags = (enum cyaml_flag)(_flags), \
797 .data_size = sizeof(_type), \
799 .strings = _strings, \
800 .count = _strings_count, \
815#define CYAML_FIELD_ENUM( \
816 _key, _flags, _structure, _member, _strings, _strings_count) \
819 .data_offset = offsetof(_structure, _member), \
821 CYAML_VALUE_ENUM(((_flags) & (~CYAML_FLAG_POINTER)), \
822 (((_structure *)NULL)->_member), \
823 _strings, _strings_count), \
839#define CYAML_FIELD_ENUM_PTR( \
840 _key, _flags, _structure, _member, _strings, _strings_count) \
843 .data_offset = offsetof(_structure, _member), \
845 CYAML_VALUE_ENUM(((_flags) | CYAML_FLAG_POINTER), \
846 (*(((_structure *)NULL)->_member)), \
847 _strings, _strings_count), \
859#define CYAML_VALUE_FLAGS( \
860 _flags, _type, _strings, _strings_count) \
861 .type = CYAML_FLAGS, \
862 .flags = (enum cyaml_flag)(_flags), \
863 .data_size = sizeof(_type), \
865 .strings = _strings, \
866 .count = _strings_count, \
881#define CYAML_FIELD_FLAGS( \
882 _key, _flags, _structure, _member, _strings, _strings_count) \
885 .data_offset = offsetof(_structure, _member), \
887 CYAML_VALUE_FLAGS(((_flags) & (~CYAML_FLAG_POINTER)), \
888 (((_structure *)NULL)->_member), \
889 _strings, _strings_count), \
905#define CYAML_FIELD_FLAGS_PTR( \
906 _key, _flags, _structure, _member, _strings, _strings_count) \
909 .data_offset = offsetof(_structure, _member), \
911 CYAML_VALUE_FLAGS(((_flags) | CYAML_FLAG_POINTER), \
912 (*(((_structure *)NULL)->_member)), \
913 _strings, _strings_count), \
925#define CYAML_VALUE_BITFIELD( \
926 _flags, _type, _bitvals, _bitvals_count) \
927 .type = CYAML_BITFIELD, \
928 .flags = (enum cyaml_flag)(_flags), \
929 .data_size = sizeof(_type), \
931 .bitdefs = _bitvals, \
932 .count = _bitvals_count, \
947#define CYAML_FIELD_BITFIELD( \
948 _key, _flags, _structure, _member, _bitvals, _bitvals_count) \
951 .data_offset = offsetof(_structure, _member), \
953 CYAML_VALUE_BITFIELD(((_flags) & (~CYAML_FLAG_POINTER)), \
954 (((_structure *)NULL)->_member), \
955 _bitvals, _bitvals_count), \
971#define CYAML_FIELD_BITFIELD_PTR( \
972 _key, _flags, _structure, _member, _bitvals, _bitvals_count) \
975 .data_offset = offsetof(_structure, _member), \
977 CYAML_VALUE_BITFIELD(((_flags) | CYAML_FLAG_POINTER), \
978 (*(((_structure *)NULL)->_member)), \
979 _bitvals, _bitvals_count), \
989#define CYAML_VALUE_FLOAT( \
991 .type = CYAML_FLOAT, \
992 .flags = (enum cyaml_flag)(_flags), \
993 .data_size = sizeof(_type)
1005#define CYAML_FIELD_FLOAT( \
1006 _key, _flags, _structure, _member) \
1009 .data_offset = offsetof(_structure, _member), \
1011 CYAML_VALUE_FLOAT(((_flags) & (~CYAML_FLAG_POINTER)), \
1012 (((_structure *)NULL)->_member)), \
1026#define CYAML_FIELD_FLOAT_PTR( \
1027 _key, _flags, _structure, _member) \
1030 .data_offset = offsetof(_structure, _member), \
1032 CYAML_VALUE_FLOAT(((_flags) | CYAML_FLAG_POINTER), \
1033 (*(((_structure *)NULL)->_member))), \
1054#define CYAML_VALUE_STRING( \
1055 _flags, _type, _min, _max) \
1056 .type = CYAML_STRING, \
1057 .flags = (enum cyaml_flag)(_flags), \
1058 .data_size = sizeof(_type), \
1076#define CYAML_FIELD_STRING( \
1077 _key, _flags, _structure, _member, _min) \
1080 .data_offset = offsetof(_structure, _member), \
1082 CYAML_VALUE_STRING(((_flags) & (~CYAML_FLAG_POINTER)), \
1083 (((_structure *)NULL)->_member), _min, \
1084 sizeof(((_structure *)NULL)->_member) - 1), \
1104#define CYAML_FIELD_STRING_PTR( \
1105 _key, _flags, _structure, _member, _min, _max) \
1108 .data_offset = offsetof(_structure, _member), \
1110 CYAML_VALUE_STRING(((_flags) | CYAML_FLAG_POINTER), \
1111 (((_structure *)NULL)->_member), \
1123#define CYAML_VALUE_MAPPING( \
1124 _flags, _type, _fields) \
1125 .type = CYAML_MAPPING, \
1126 .flags = (enum cyaml_flag)(_flags), \
1127 .data_size = sizeof(_type), \
1129 .fields = _fields, \
1143#define CYAML_FIELD_MAPPING( \
1144 _key, _flags, _structure, _member, _fields) \
1147 .data_offset = offsetof(_structure, _member), \
1149 CYAML_VALUE_MAPPING(((_flags) & (~CYAML_FLAG_POINTER)), \
1150 (((_structure *)NULL)->_member), _fields), \
1165#define CYAML_FIELD_MAPPING_PTR( \
1166 _key, _flags, _structure, _member, _fields) \
1169 .data_offset = offsetof(_structure, _member), \
1171 CYAML_VALUE_MAPPING(((_flags) | CYAML_FLAG_POINTER), \
1172 (*(((_structure *)NULL)->_member)), _fields), \
1185#define CYAML_VALUE_SEQUENCE( \
1186 _flags, _type, _entry, _min, _max) \
1187 .type = CYAML_SEQUENCE, \
1188 .flags = (enum cyaml_flag)(_flags), \
1189 .data_size = sizeof(_type), \
1229#define CYAML_FIELD_SEQUENCE( \
1230 _key, _flags, _structure, _member, _entry, _min, _max) \
1233 .data_offset = offsetof(_structure, _member), \
1234 .count_offset = offsetof(_structure, _member ## _count), \
1235 .count_size = sizeof(((_structure *)NULL)->_member ## _count), \
1237 CYAML_VALUE_SEQUENCE((_flags), \
1238 (*(((_structure *)NULL)->_member)), \
1239 _entry, _min, _max), \
1277#define CYAML_FIELD_SEQUENCE_COUNT( \
1278 _key, _flags, _structure, _member, _count, _entry, _min, _max) \
1281 .data_offset = offsetof(_structure, _member), \
1282 .count_offset = offsetof(_structure, _count), \
1283 .count_size = sizeof(((_structure *)NULL)->_count), \
1285 CYAML_VALUE_SEQUENCE((_flags), \
1286 (*(((_structure *)NULL)->_member)), \
1287 _entry, _min, _max), \
1304#define CYAML_VALUE_SEQUENCE_FIXED( \
1305 _flags, _type, _entry, _count) \
1306 .type = CYAML_SEQUENCE_FIXED, \
1307 .flags = (enum cyaml_flag)(_flags), \
1308 .data_size = sizeof(_type), \
1330#define CYAML_FIELD_SEQUENCE_FIXED( \
1331 _key, _flags, _structure, _member, _entry, _count) \
1334 .data_offset = offsetof(_structure, _member), \
1336 CYAML_VALUE_SEQUENCE_FIXED((_flags), \
1337 (*(((_structure *)NULL)->_member)), \
1348#define CYAML_FIELD_IGNORE( \
1353 .type = CYAML_IGNORE, \
1354 .flags = (_flags), \
1364#define CYAML_FIELD_END { .key = NULL }
1370#define CYAML_UNLIMITED 0xffffffff
1380#define CYAML_ARRAY_LEN(_a) ((sizeof(_a)) / (sizeof(_a[0])))
1428typedef void * (*cyaml_mem_fn_t)(
1567 unsigned *seq_count_out);
1589 const uint8_t *input,
1594 unsigned *seq_count_out);
1612 unsigned seq_count);
1656 unsigned seq_count);
1680 unsigned seq_count);
struct cyaml_schema_value cyaml_schema_value_t
cyaml_err_t cyaml_save_file(const char *path, const cyaml_config_t *config, const cyaml_schema_value_t *schema, const cyaml_data_t *data, unsigned seq_count)
Definition save.c:1377
void *(* cyaml_mem_fn_t)(void *ctx, void *ptr, size_t size)
Definition cyaml.h:1428
const uint32_t cyaml_version
Definition util.c:49
struct cyaml_bitdef cyaml_bitdef_t
cyaml_err_t cyaml_load_data(const uint8_t *input, size_t input_len, const cyaml_config_t *config, const cyaml_schema_value_t *schema, cyaml_data_t **data_out, unsigned *seq_count_out)
Definition load.c:2728
struct cyaml_schema_field cyaml_schema_field_t
enum cyaml_err cyaml_err_t
void cyaml_data_t
Definition cyaml.h:1386
enum cyaml_flag cyaml_flag_e
cyaml_err_t cyaml_load_file(const char *path, const cyaml_config_t *config, const cyaml_schema_value_t *schema, cyaml_data_t **data_out, unsigned *seq_count_out)
Definition load.c:2686
void(* cyaml_log_fn_t)(cyaml_log_t level, void *ctx, const char *fmt, va_list args)
Definition cyaml.h:1408
cyaml_err_t cyaml_free(const cyaml_config_t *config, const cyaml_schema_value_t *schema, cyaml_data_t *data, unsigned seq_count)
Definition free.c:143
cyaml_err
Definition cyaml.h:585
@ CYAML_ERR_BAD_PARAM_NULL_SCHEMA
Definition cyaml.h:611
@ CYAML_ERR_LIBYAML_PARSER_INIT
Definition cyaml.h:613
@ CYAML_ERR_BAD_PARAM_NULL_CONFIG
Definition cyaml.h:610
@ CYAML_ERR_BAD_PARAM_NULL_DATA
Definition cyaml.h:602
@ CYAML_ERR_BAD_BITVAL_IN_SCHEMA
Definition cyaml.h:603
@ CYAML_ERR_LIBYAML_EMITTER
Definition cyaml.h:615
@ CYAML_ERR_FILE_OPEN
Definition cyaml.h:589
@ CYAML_ERR_TOP_LEVEL_NON_PTR
Definition cyaml.h:598
@ CYAML_ERR_BAD_CONFIG_NULL_MEMFN
Definition cyaml.h:609
@ CYAML_ERR_STRING_LENGTH_MAX
Definition cyaml.h:596
@ CYAML_ERR_INVALID_DATA_SIZE
Definition cyaml.h:597
@ CYAML_ERR_BAD_TYPE_IN_SCHEMA
Definition cyaml.h:599
@ CYAML_ERR_SEQUENCE_ENTRIES_MAX
Definition cyaml.h:605
@ CYAML_ERR_STRING_LENGTH_MIN
Definition cyaml.h:595
@ CYAML_ERR_BAD_MIN_MAX_SCHEMA
Definition cyaml.h:600
@ CYAML_ERR_MAPPING_FIELD_MISSING
Definition cyaml.h:608
@ CYAML_ERR_UNEXPECTED_EVENT
Definition cyaml.h:594
@ CYAML_ERR_INVALID_VALUE
Definition cyaml.h:591
@ CYAML_ERR_OOM
Definition cyaml.h:587
@ CYAML_ERR_INVALID_ALIAS
Definition cyaml.h:592
@ CYAML_ERR_INVALID_KEY
Definition cyaml.h:590
@ CYAML_ERR_INTERNAL_ERROR
Definition cyaml.h:593
@ CYAML_ERR_SEQUENCE_ENTRIES_MIN
Definition cyaml.h:604
@ CYAML_ERR_LIBYAML_EVENT_INIT
Definition cyaml.h:614
@ CYAML_ERR_SEQUENCE_IN_SEQUENCE
Definition cyaml.h:607
@ CYAML_OK
Definition cyaml.h:586
@ CYAML_ERR_LIBYAML_PARSER
Definition cyaml.h:616
@ CYAML_ERR_BAD_PARAM_SEQ_COUNT
Definition cyaml.h:601
@ CYAML_ERR__COUNT
Definition cyaml.h:617
@ CYAML_ERR_SEQUENCE_FIXED_COUNT
Definition cyaml.h:606
@ CYAML_ERR_LIBYAML_EMITTER_INIT
Definition cyaml.h:612
@ CYAML_ERR_ALIAS
Definition cyaml.h:588
enum cyaml_cfg_flags cyaml_cfg_flags_t
enum cyaml_log_e cyaml_log_t
cyaml_err_t cyaml_save_data(char **output, size_t *len, const cyaml_config_t *config, const cyaml_schema_value_t *schema, const cyaml_data_t *data, unsigned seq_count)
Definition save.c:1475
cyaml_type
Definition cyaml.h:53
@ CYAML_INT
Definition cyaml.h:54
@ CYAML_UINT
Definition cyaml.h:55
@ CYAML__TYPE_COUNT
Definition cyaml.h:130
@ CYAML_SEQUENCE_FIXED
Definition cyaml.h:119
@ CYAML_IGNORE
Definition cyaml.h:125
@ CYAML_FLOAT
Definition cyaml.h:73
@ CYAML_MAPPING
Definition cyaml.h:79
@ CYAML_BITFIELD
Definition cyaml.h:89
@ CYAML_ENUM
Definition cyaml.h:62
@ CYAML_BOOL
Definition cyaml.h:56
@ CYAML_SEQUENCE
Definition cyaml.h:101
@ CYAML_STRING
Definition cyaml.h:74
@ CYAML_FLAGS
Definition cyaml.h:72
void * cyaml_mem(void *ctx, void *ptr, size_t size)
Definition mem.c:22
const char * cyaml_version_str
Definition util.c:57
struct cyaml_config cyaml_config_t
struct cyaml_strval cyaml_strval_t
cyaml_flag
Definition cyaml.h:138
@ CYAML_FLAG_SCALAR_LITERAL
Definition cyaml.h:310
@ CYAML_FLAG_SCALAR_QUOTE_SINGLE
Definition cyaml.h:317
@ CYAML_FLAG_STRICT
Definition cyaml.h:197
@ CYAML_FLAG_POINTER_NULL_STR
Definition cyaml.h:181
@ CYAML_FLAG_POINTER
Definition cyaml.h:148
@ CYAML_FLAG_SCALAR_QUOTE_DOUBLE
Definition cyaml.h:324
@ CYAML_FLAG_SCALAR_PLAIN
Definition cyaml.h:284
@ CYAML_FLAG_DEFAULT
Definition cyaml.h:139
@ CYAML_FLAG_BLOCK
Definition cyaml.h:214
@ CYAML_FLAG_FLOW
Definition cyaml.h:231
@ CYAML_FLAG_OPTIONAL
Definition cyaml.h:140
@ CYAML_FLAG_SCALAR_FOLDED
Definition cyaml.h:297
@ CYAML_FLAG_CASE_SENSITIVE
Definition cyaml.h:249
@ CYAML_FLAG_POINTER_NULL
Definition cyaml.h:158
@ CYAML_FLAG_CASE_INSENSITIVE
Definition cyaml.h:267
cyaml_cfg_flags
Definition cyaml.h:509
@ CYAML_CFG_IGNORE_UNKNOWN_KEYS
Definition cyaml.h:519
@ CYAML_CFG_IGNORED_KEY_WARNING
Definition cyaml.h:576
@ CYAML_CFG_DEFAULT
Definition cyaml.h:513
@ CYAML_CFG_CASE_INSENSITIVE
Definition cyaml.h:560
@ CYAML_CFG_DOCUMENT_DELIM
Definition cyaml.h:554
@ CYAML_CFG_NO_ALIAS
Definition cyaml.h:572
@ CYAML_CFG_STYLE_FLOW
Definition cyaml.h:547
@ CYAML_CFG_STYLE_BLOCK
Definition cyaml.h:533
enum cyaml_type cyaml_type_e
void cyaml_log(cyaml_log_t level, void *ctx, const char *fmt, va_list args)
Definition util.c:60
const char * cyaml_strerror(cyaml_err_t err)
Definition util.c:81
cyaml_log_e
Definition cyaml.h:1389
@ CYAML_LOG_NOTICE
Definition cyaml.h:1392
@ CYAML_LOG_DEBUG
Definition cyaml.h:1390
@ CYAML_LOG_ERROR
Definition cyaml.h:1394
@ CYAML_LOG_WARNING
Definition cyaml.h:1393
@ CYAML_LOG_INFO
Definition cyaml.h:1391
uint8_t bits
Definition cyaml.h:345
const char * name
Definition cyaml.h:343
uint8_t offset
Definition cyaml.h:344
cyaml_log_fn_t log_fn
Definition cyaml.h:1454
cyaml_cfg_flags_t flags
Definition cyaml.h:1494
void * log_ctx
Definition cyaml.h:1464
cyaml_log_t log_level
Definition cyaml.h:1492
void * mem_ctx
Definition cyaml.h:1485
cyaml_mem_fn_t mem_fn
Definition cyaml.h:1475
uint32_t data_offset
Definition cyaml.h:487
uint32_t count_offset
Definition cyaml.h:492
uint8_t count_size
Definition cyaml.h:497
const char * key
Definition cyaml.h:482
struct cyaml_schema_value value
Definition cyaml.h:501
enum cyaml_type type
Definition cyaml.h:372
uint32_t max
Definition cyaml.h:400
struct cyaml_schema_value::@0::@2 string
uint32_t count
Definition cyaml.h:418
struct cyaml_schema_value::@0::@3 mapping
const struct cyaml_schema_field * fields
Definition cyaml.h:411
uint32_t data_size
Definition cyaml.h:382
struct cyaml_schema_value::@0::@6 enumeration
enum cyaml_flag flags
Definition cyaml.h:374
uint32_t min
Definition cyaml.h:392
const cyaml_strval_t * strings
Definition cyaml.h:457
struct cyaml_schema_value::@0::@5 sequence
struct cyaml_schema_value::@0::@4 bitfield
const struct cyaml_schema_value * entry
Definition cyaml.h:435
const struct cyaml_bitdef * bitdefs
Definition cyaml.h:416
const char * str
Definition cyaml.h:333
int64_t val
Definition cyaml.h:334