619 #define CYAML_VALUE_INT( \
622 .flags = (enum cyaml_flag)(_flags), \
623 .data_size = sizeof(_type)
635 #define CYAML_FIELD_INT( \
636 _key, _flags, _structure, _member) \
639 .data_offset = offsetof(_structure, _member), \
641 CYAML_VALUE_INT(((_flags) & (~CYAML_FLAG_POINTER)), \
642 (((_structure *)NULL)->_member)), \
656 #define CYAML_FIELD_INT_PTR( \
657 _key, _flags, _structure, _member) \
660 .data_offset = offsetof(_structure, _member), \
662 CYAML_VALUE_INT(((_flags) | CYAML_FLAG_POINTER), \
663 (*(((_structure *)NULL)->_member))), \
673 #define CYAML_VALUE_UINT( \
675 .type = CYAML_UINT, \
676 .flags = (enum cyaml_flag)(_flags), \
677 .data_size = sizeof(_type)
689 #define CYAML_FIELD_UINT( \
690 _key, _flags, _structure, _member) \
693 .data_offset = offsetof(_structure, _member), \
695 CYAML_VALUE_UINT(((_flags) & (~CYAML_FLAG_POINTER)), \
696 (((_structure *)NULL)->_member)), \
710 #define CYAML_FIELD_UINT_PTR( \
711 _key, _flags, _structure, _member) \
714 .data_offset = offsetof(_structure, _member), \
716 CYAML_VALUE_UINT(((_flags) | CYAML_FLAG_POINTER), \
717 (*(((_structure *)NULL)->_member))), \
727 #define CYAML_VALUE_BOOL( \
729 .type = CYAML_BOOL, \
730 .flags = (enum cyaml_flag)(_flags), \
731 .data_size = sizeof(_type)
743 #define CYAML_FIELD_BOOL( \
744 _key, _flags, _structure, _member) \
747 .data_offset = offsetof(_structure, _member), \
749 CYAML_VALUE_BOOL(((_flags) & (~CYAML_FLAG_POINTER)), \
750 (((_structure *)NULL)->_member)), \
764 #define CYAML_FIELD_BOOL_PTR( \
765 _key, _flags, _structure, _member) \
768 .data_offset = offsetof(_structure, _member), \
770 CYAML_VALUE_BOOL(((_flags) | CYAML_FLAG_POINTER), \
771 (*(((_structure *)NULL)->_member))), \
783 #define CYAML_VALUE_ENUM( \
784 _flags, _type, _strings, _strings_count) \
785 .type = CYAML_ENUM, \
786 .flags = (enum cyaml_flag)(_flags), \
787 .data_size = sizeof(_type), \
789 .strings = _strings, \
790 .count = _strings_count, \
805 #define CYAML_FIELD_ENUM( \
806 _key, _flags, _structure, _member, _strings, _strings_count) \
809 .data_offset = offsetof(_structure, _member), \
811 CYAML_VALUE_ENUM(((_flags) & (~CYAML_FLAG_POINTER)), \
812 (((_structure *)NULL)->_member), \
813 _strings, _strings_count), \
829 #define CYAML_FIELD_ENUM_PTR( \
830 _key, _flags, _structure, _member, _strings, _strings_count) \
833 .data_offset = offsetof(_structure, _member), \
835 CYAML_VALUE_ENUM(((_flags) | CYAML_FLAG_POINTER), \
836 (*(((_structure *)NULL)->_member)), \
837 _strings, _strings_count), \
849 #define CYAML_VALUE_FLAGS( \
850 _flags, _type, _strings, _strings_count) \
851 .type = CYAML_FLAGS, \
852 .flags = (enum cyaml_flag)(_flags), \
853 .data_size = sizeof(_type), \
855 .strings = _strings, \
856 .count = _strings_count, \
871 #define CYAML_FIELD_FLAGS( \
872 _key, _flags, _structure, _member, _strings, _strings_count) \
875 .data_offset = offsetof(_structure, _member), \
877 CYAML_VALUE_FLAGS(((_flags) & (~CYAML_FLAG_POINTER)), \
878 (((_structure *)NULL)->_member), \
879 _strings, _strings_count), \
895 #define CYAML_FIELD_FLAGS_PTR( \
896 _key, _flags, _structure, _member, _strings, _strings_count) \
899 .data_offset = offsetof(_structure, _member), \
901 CYAML_VALUE_FLAGS(((_flags) | CYAML_FLAG_POINTER), \
902 (*(((_structure *)NULL)->_member)), \
903 _strings, _strings_count), \
915 #define CYAML_VALUE_BITFIELD( \
916 _flags, _type, _bitvals, _bitvals_count) \
917 .type = CYAML_BITFIELD, \
918 .flags = (enum cyaml_flag)(_flags), \
919 .data_size = sizeof(_type), \
921 .bitdefs = _bitvals, \
922 .count = _bitvals_count, \
937 #define CYAML_FIELD_BITFIELD( \
938 _key, _flags, _structure, _member, _bitvals, _bitvals_count) \
941 .data_offset = offsetof(_structure, _member), \
943 CYAML_VALUE_BITFIELD(((_flags) & (~CYAML_FLAG_POINTER)), \
944 (((_structure *)NULL)->_member), \
945 _bitvals, _bitvals_count), \
961 #define CYAML_FIELD_BITFIELD_PTR( \
962 _key, _flags, _structure, _member, _bitvals, _bitvals_count) \
965 .data_offset = offsetof(_structure, _member), \
967 CYAML_VALUE_BITFIELD(((_flags) | CYAML_FLAG_POINTER), \
968 (*(((_structure *)NULL)->_member)), \
969 _bitvals, _bitvals_count), \
979 #define CYAML_VALUE_FLOAT( \
981 .type = CYAML_FLOAT, \
982 .flags = (enum cyaml_flag)(_flags), \
983 .data_size = sizeof(_type)
995 #define CYAML_FIELD_FLOAT( \
996 _key, _flags, _structure, _member) \
999 .data_offset = offsetof(_structure, _member), \
1001 CYAML_VALUE_FLOAT(((_flags) & (~CYAML_FLAG_POINTER)), \
1002 (((_structure *)NULL)->_member)), \
1016 #define CYAML_FIELD_FLOAT_PTR( \
1017 _key, _flags, _structure, _member) \
1020 .data_offset = offsetof(_structure, _member), \
1022 CYAML_VALUE_FLOAT(((_flags) | CYAML_FLAG_POINTER), \
1023 (*(((_structure *)NULL)->_member))), \
1044 #define CYAML_VALUE_STRING( \
1045 _flags, _type, _min, _max) \
1046 .type = CYAML_STRING, \
1047 .flags = (enum cyaml_flag)(_flags), \
1048 .data_size = sizeof(_type), \
1066 #define CYAML_FIELD_STRING( \
1067 _key, _flags, _structure, _member, _min) \
1070 .data_offset = offsetof(_structure, _member), \
1072 CYAML_VALUE_STRING(((_flags) & (~CYAML_FLAG_POINTER)), \
1073 (((_structure *)NULL)->_member), _min, \
1074 sizeof(((_structure *)NULL)->_member) - 1), \
1094 #define CYAML_FIELD_STRING_PTR( \
1095 _key, _flags, _structure, _member, _min, _max) \
1098 .data_offset = offsetof(_structure, _member), \
1100 CYAML_VALUE_STRING(((_flags) | CYAML_FLAG_POINTER), \
1101 (((_structure *)NULL)->_member), \
1113 #define CYAML_VALUE_MAPPING( \
1114 _flags, _type, _fields) \
1115 .type = CYAML_MAPPING, \
1116 .flags = (enum cyaml_flag)(_flags), \
1117 .data_size = sizeof(_type), \
1119 .fields = _fields, \
1133 #define CYAML_FIELD_MAPPING( \
1134 _key, _flags, _structure, _member, _fields) \
1137 .data_offset = offsetof(_structure, _member), \
1139 CYAML_VALUE_MAPPING(((_flags) & (~CYAML_FLAG_POINTER)), \
1140 (((_structure *)NULL)->_member), _fields), \
1155 #define CYAML_FIELD_MAPPING_PTR( \
1156 _key, _flags, _structure, _member, _fields) \
1159 .data_offset = offsetof(_structure, _member), \
1161 CYAML_VALUE_MAPPING(((_flags) | CYAML_FLAG_POINTER), \
1162 (*(((_structure *)NULL)->_member)), _fields), \
1175 #define CYAML_VALUE_SEQUENCE( \
1176 _flags, _type, _entry, _min, _max) \
1177 .type = CYAML_SEQUENCE, \
1178 .flags = (enum cyaml_flag)(_flags), \
1179 .data_size = sizeof(_type), \
1219 #define CYAML_FIELD_SEQUENCE( \
1220 _key, _flags, _structure, _member, _entry, _min, _max) \
1223 .data_offset = offsetof(_structure, _member), \
1224 .count_offset = offsetof(_structure, _member ## _count), \
1225 .count_size = sizeof(((_structure *)NULL)->_member ## _count), \
1227 CYAML_VALUE_SEQUENCE((_flags), \
1228 (*(((_structure *)NULL)->_member)), \
1229 _entry, _min, _max), \
1267 #define CYAML_FIELD_SEQUENCE_COUNT( \
1268 _key, _flags, _structure, _member, _count, _entry, _min, _max) \
1271 .data_offset = offsetof(_structure, _member), \
1272 .count_offset = offsetof(_structure, _count), \
1273 .count_size = sizeof(((_structure *)NULL)->_count), \
1275 CYAML_VALUE_SEQUENCE((_flags), \
1276 (*(((_structure *)NULL)->_member)), \
1277 _entry, _min, _max), \
1289 #define CYAML_VALUE_SEQUENCE_FIXED( \
1290 _flags, _type, _entry, _count) \
1291 .type = CYAML_SEQUENCE_FIXED, \
1292 .flags = (enum cyaml_flag)(_flags), \
1293 .data_size = sizeof(_type), \
1310 #define CYAML_FIELD_SEQUENCE_FIXED( \
1311 _key, _flags, _structure, _member, _entry, _count) \
1314 .data_offset = offsetof(_structure, _member), \
1316 CYAML_VALUE_SEQUENCE_FIXED((_flags), \
1317 (*(((_structure *)NULL)->_member)), \
1328 #define CYAML_FIELD_IGNORE( \
1333 .type = CYAML_IGNORE, \
1334 .flags = (_flags), \
1344 #define CYAML_FIELD_END { .key = NULL }
1350 #define CYAML_UNLIMITED 0xffffffff
1360 #define CYAML_ARRAY_LEN(_a) ((sizeof(_a)) / (sizeof(_a[0])))
1408 typedef void * (*cyaml_mem_fn_t)(
1547 unsigned *seq_count_out);
1569 const uint8_t *input,
1574 unsigned *seq_count_out);
1592 unsigned seq_count);
1636 unsigned seq_count);
1660 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:1375
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:2686
struct cyaml_schema_field cyaml_schema_field_t
enum cyaml_err cyaml_err_t
void cyaml_data_t
Definition: cyaml.h:1366
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:2644
void * cyaml_mem(void *ctx, void *ptr, size_t size)
Definition: mem.c:22
void(* cyaml_log_fn_t)(cyaml_log_t level, void *ctx, const char *fmt, va_list args)
Definition: cyaml.h:1388
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:575
@ CYAML_ERR_BAD_PARAM_NULL_SCHEMA
Definition: cyaml.h:601
@ CYAML_ERR_LIBYAML_PARSER_INIT
Definition: cyaml.h:603
@ CYAML_ERR_BAD_PARAM_NULL_CONFIG
Definition: cyaml.h:600
@ CYAML_ERR_BAD_PARAM_NULL_DATA
Definition: cyaml.h:592
@ CYAML_ERR_BAD_BITVAL_IN_SCHEMA
Definition: cyaml.h:593
@ CYAML_ERR_LIBYAML_EMITTER
Definition: cyaml.h:605
@ CYAML_ERR_FILE_OPEN
Definition: cyaml.h:579
@ CYAML_ERR_TOP_LEVEL_NON_PTR
Definition: cyaml.h:588
@ CYAML_ERR_BAD_CONFIG_NULL_MEMFN
Definition: cyaml.h:599
@ CYAML_ERR_STRING_LENGTH_MAX
Definition: cyaml.h:586
@ CYAML_ERR_INVALID_DATA_SIZE
Definition: cyaml.h:587
@ CYAML_ERR_BAD_TYPE_IN_SCHEMA
Definition: cyaml.h:589
@ CYAML_ERR_SEQUENCE_ENTRIES_MAX
Definition: cyaml.h:595
@ CYAML_ERR_STRING_LENGTH_MIN
Definition: cyaml.h:585
@ CYAML_ERR_BAD_MIN_MAX_SCHEMA
Definition: cyaml.h:590
@ CYAML_ERR_MAPPING_FIELD_MISSING
Definition: cyaml.h:598
@ CYAML_ERR_UNEXPECTED_EVENT
Definition: cyaml.h:584
@ CYAML_ERR_INVALID_VALUE
Definition: cyaml.h:581
@ CYAML_ERR_OOM
Definition: cyaml.h:577
@ CYAML_ERR_INVALID_ALIAS
Definition: cyaml.h:582
@ CYAML_ERR_INVALID_KEY
Definition: cyaml.h:580
@ CYAML_ERR_INTERNAL_ERROR
Definition: cyaml.h:583
@ CYAML_ERR_SEQUENCE_ENTRIES_MIN
Definition: cyaml.h:594
@ CYAML_ERR_LIBYAML_EVENT_INIT
Definition: cyaml.h:604
@ CYAML_ERR_SEQUENCE_IN_SEQUENCE
Definition: cyaml.h:597
@ CYAML_OK
Definition: cyaml.h:576
@ CYAML_ERR_LIBYAML_PARSER
Definition: cyaml.h:606
@ CYAML_ERR_BAD_PARAM_SEQ_COUNT
Definition: cyaml.h:591
@ CYAML_ERR__COUNT
Definition: cyaml.h:607
@ CYAML_ERR_SEQUENCE_FIXED_COUNT
Definition: cyaml.h:596
@ CYAML_ERR_LIBYAML_EMITTER_INIT
Definition: cyaml.h:602
@ CYAML_ERR_ALIAS
Definition: cyaml.h:578
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:1473
void *(* cyaml_mem_fn_t)(void *ctx, void *ptr, size_t size)
Definition: cyaml.h:1408
cyaml_type
Definition: cyaml.h:53
@ CYAML_INT
Definition: cyaml.h:54
@ CYAML_UINT
Definition: cyaml.h:55
@ CYAML__TYPE_COUNT
Definition: cyaml.h:124
@ CYAML_SEQUENCE_FIXED
Definition: cyaml.h:113
@ CYAML_IGNORE
Definition: cyaml.h:119
@ 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
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:132
@ CYAML_FLAG_SCALAR_LITERAL
Definition: cyaml.h:304
@ CYAML_FLAG_SCALAR_QUOTE_SINGLE
Definition: cyaml.h:311
@ CYAML_FLAG_STRICT
Definition: cyaml.h:191
@ CYAML_FLAG_POINTER_NULL_STR
Definition: cyaml.h:175
@ CYAML_FLAG_POINTER
Definition: cyaml.h:142
@ CYAML_FLAG_SCALAR_QUOTE_DOUBLE
Definition: cyaml.h:318
@ CYAML_FLAG_SCALAR_PLAIN
Definition: cyaml.h:278
@ CYAML_FLAG_DEFAULT
Definition: cyaml.h:133
@ CYAML_FLAG_BLOCK
Definition: cyaml.h:208
@ CYAML_FLAG_FLOW
Definition: cyaml.h:225
@ CYAML_FLAG_OPTIONAL
Definition: cyaml.h:134
@ CYAML_FLAG_SCALAR_FOLDED
Definition: cyaml.h:291
@ CYAML_FLAG_CASE_SENSITIVE
Definition: cyaml.h:243
@ CYAML_FLAG_POINTER_NULL
Definition: cyaml.h:152
@ CYAML_FLAG_CASE_INSENSITIVE
Definition: cyaml.h:261
cyaml_cfg_flags
Definition: cyaml.h:503
@ CYAML_CFG_IGNORE_UNKNOWN_KEYS
Definition: cyaml.h:513
@ CYAML_CFG_DEFAULT
Definition: cyaml.h:507
@ CYAML_CFG_CASE_INSENSITIVE
Definition: cyaml.h:554
@ CYAML_CFG_DOCUMENT_DELIM
Definition: cyaml.h:548
@ CYAML_CFG_NO_ALIAS
Definition: cyaml.h:566
@ CYAML_CFG_STYLE_FLOW
Definition: cyaml.h:541
@ CYAML_CFG_STYLE_BLOCK
Definition: cyaml.h:527
enum cyaml_type cyaml_type_e
const char * cyaml_strerror(cyaml_err_t err)
Definition: util.c:81
void cyaml_log(cyaml_log_t level, void *ctx, const char *fmt, va_list args)
Definition: util.c:60
cyaml_log_e
Definition: cyaml.h:1369
@ CYAML_LOG_NOTICE
Definition: cyaml.h:1372
@ CYAML_LOG_DEBUG
Definition: cyaml.h:1370
@ CYAML_LOG_ERROR
Definition: cyaml.h:1374
@ CYAML_LOG_WARNING
Definition: cyaml.h:1373
@ CYAML_LOG_INFO
Definition: cyaml.h:1371
uint8_t bits
Definition: cyaml.h:339
const char * name
Definition: cyaml.h:337
uint8_t offset
Definition: cyaml.h:338
cyaml_log_fn_t log_fn
Definition: cyaml.h:1434
cyaml_cfg_flags_t flags
Definition: cyaml.h:1474
void * log_ctx
Definition: cyaml.h:1444
cyaml_log_t log_level
Definition: cyaml.h:1472
void * mem_ctx
Definition: cyaml.h:1465
cyaml_mem_fn_t mem_fn
Definition: cyaml.h:1455
uint32_t data_offset
Definition: cyaml.h:481
uint32_t count_offset
Definition: cyaml.h:486
uint8_t count_size
Definition: cyaml.h:491
const char * key
Definition: cyaml.h:476
struct cyaml_schema_value value
Definition: cyaml.h:495
enum cyaml_type type
Definition: cyaml.h:366
uint32_t max
Definition: cyaml.h:394
struct cyaml_schema_value::@0::@2 string
uint32_t count
Definition: cyaml.h:412
struct cyaml_schema_value::@0::@3 mapping
const struct cyaml_schema_field * fields
Definition: cyaml.h:405
uint32_t data_size
Definition: cyaml.h:376
struct cyaml_schema_value::@0::@6 enumeration
enum cyaml_flag flags
Definition: cyaml.h:368
uint32_t min
Definition: cyaml.h:386
const cyaml_strval_t * strings
Definition: cyaml.h:451
struct cyaml_schema_value::@0::@5 sequence
struct cyaml_schema_value::@0::@4 bitfield
const struct cyaml_schema_value * entry
Definition: cyaml.h:429
const struct cyaml_bitdef * bitdefs
Definition: cyaml.h:410
const char * str
Definition: cyaml.h:327
int64_t val
Definition: cyaml.h:328