562 #define CYAML_VALUE_INT( \
565 .flags = (enum cyaml_flag)(_flags), \
566 .data_size = sizeof(_type)
578 #define CYAML_FIELD_INT( \
579 _key, _flags, _structure, _member) \
583 CYAML_VALUE_INT(((_flags) & (~CYAML_FLAG_POINTER)), \
584 (((_structure *)NULL)->_member)), \
586 .data_offset = offsetof(_structure, _member) \
599 #define CYAML_FIELD_INT_PTR( \
600 _key, _flags, _structure, _member) \
603 .data_offset = offsetof(_structure, _member), \
605 CYAML_VALUE_INT(((_flags) | CYAML_FLAG_POINTER), \
606 (*(((_structure *)NULL)->_member))), \
616 #define CYAML_VALUE_UINT( \
618 .type = CYAML_UINT, \
619 .flags = (enum cyaml_flag)(_flags), \
620 .data_size = sizeof(_type)
632 #define CYAML_FIELD_UINT( \
633 _key, _flags, _structure, _member) \
636 .data_offset = offsetof(_structure, _member), \
638 CYAML_VALUE_UINT(((_flags) & (~CYAML_FLAG_POINTER)), \
639 (((_structure *)NULL)->_member)), \
653 #define CYAML_FIELD_UINT_PTR( \
654 _key, _flags, _structure, _member) \
657 .data_offset = offsetof(_structure, _member), \
659 CYAML_VALUE_UINT(((_flags) | CYAML_FLAG_POINTER), \
660 (*(((_structure *)NULL)->_member))), \
670 #define CYAML_VALUE_BOOL( \
672 .type = CYAML_BOOL, \
673 .flags = (enum cyaml_flag)(_flags), \
674 .data_size = sizeof(_type)
686 #define CYAML_FIELD_BOOL( \
687 _key, _flags, _structure, _member) \
690 .data_offset = offsetof(_structure, _member), \
692 CYAML_VALUE_BOOL(((_flags) & (~CYAML_FLAG_POINTER)), \
693 (((_structure *)NULL)->_member)), \
707 #define CYAML_FIELD_BOOL_PTR( \
708 _key, _flags, _structure, _member) \
711 .data_offset = offsetof(_structure, _member), \
713 CYAML_VALUE_BOOL(((_flags) | CYAML_FLAG_POINTER), \
714 (*(((_structure *)NULL)->_member))), \
726 #define CYAML_VALUE_ENUM( \
727 _flags, _type, _strings, _strings_count) \
728 .type = CYAML_ENUM, \
729 .flags = (enum cyaml_flag)(_flags), \
730 .data_size = sizeof(_type), \
732 .strings = _strings, \
733 .count = _strings_count, \
748 #define CYAML_FIELD_ENUM( \
749 _key, _flags, _structure, _member, _strings, _strings_count) \
752 .data_offset = offsetof(_structure, _member), \
754 CYAML_VALUE_ENUM(((_flags) & (~CYAML_FLAG_POINTER)), \
755 (((_structure *)NULL)->_member), \
756 _strings, _strings_count), \
772 #define CYAML_FIELD_ENUM_PTR( \
773 _key, _flags, _structure, _member, _strings, _strings_count) \
776 .data_offset = offsetof(_structure, _member), \
778 CYAML_VALUE_ENUM(((_flags) | CYAML_FLAG_POINTER), \
779 (*(((_structure *)NULL)->_member)), \
780 _strings, _strings_count), \
792 #define CYAML_VALUE_FLAGS( \
793 _flags, _type, _strings, _strings_count) \
794 .type = CYAML_FLAGS, \
795 .flags = (enum cyaml_flag)(_flags), \
796 .data_size = sizeof(_type), \
798 .strings = _strings, \
799 .count = _strings_count, \
814 #define CYAML_FIELD_FLAGS( \
815 _key, _flags, _structure, _member, _strings, _strings_count) \
818 .data_offset = offsetof(_structure, _member), \
820 CYAML_VALUE_FLAGS(((_flags) & (~CYAML_FLAG_POINTER)), \
821 (((_structure *)NULL)->_member), \
822 _strings, _strings_count), \
838 #define CYAML_FIELD_FLAGS_PTR( \
839 _key, _flags, _structure, _member, _strings, _strings_count) \
842 .data_offset = offsetof(_structure, _member), \
844 CYAML_VALUE_FLAGS(((_flags) | CYAML_FLAG_POINTER), \
845 (*(((_structure *)NULL)->_member)), \
846 _strings, _strings_count), \
858 #define CYAML_VALUE_BITFIELD( \
859 _flags, _type, _bitvals, _bitvals_count) \
860 .type = CYAML_BITFIELD, \
861 .flags = (enum cyaml_flag)(_flags), \
862 .data_size = sizeof(_type), \
864 .bitdefs = _bitvals, \
865 .count = _bitvals_count, \
880 #define CYAML_FIELD_BITFIELD( \
881 _key, _flags, _structure, _member, _bitvals, _bitvals_count) \
884 .data_offset = offsetof(_structure, _member), \
886 CYAML_VALUE_BITFIELD(((_flags) & (~CYAML_FLAG_POINTER)), \
887 (((_structure *)NULL)->_member), \
888 _bitvals, _bitvals_count), \
904 #define CYAML_FIELD_BITFIELD_PTR( \
905 _key, _flags, _structure, _member, _bitvals, _bitvals_count) \
908 .data_offset = offsetof(_structure, _member), \
910 CYAML_VALUE_BITFIELD(((_flags) | CYAML_FLAG_POINTER), \
911 (*(((_structure *)NULL)->_member)), \
912 _bitvals, _bitvals_count), \
922 #define CYAML_VALUE_FLOAT( \
924 .type = CYAML_FLOAT, \
925 .flags = (enum cyaml_flag)(_flags), \
926 .data_size = sizeof(_type)
938 #define CYAML_FIELD_FLOAT( \
939 _key, _flags, _structure, _member) \
942 .data_offset = offsetof(_structure, _member), \
944 CYAML_VALUE_FLOAT(((_flags) & (~CYAML_FLAG_POINTER)), \
945 (((_structure *)NULL)->_member)), \
959 #define CYAML_FIELD_FLOAT_PTR( \
960 _key, _flags, _structure, _member) \
963 .data_offset = offsetof(_structure, _member), \
965 CYAML_VALUE_FLOAT(((_flags) | CYAML_FLAG_POINTER), \
966 (*(((_structure *)NULL)->_member))), \
987 #define CYAML_VALUE_STRING( \
988 _flags, _type, _min, _max) \
989 .type = CYAML_STRING, \
990 .flags = (enum cyaml_flag)(_flags), \
991 .data_size = sizeof(_type), \
1009 #define CYAML_FIELD_STRING( \
1010 _key, _flags, _structure, _member, _min) \
1013 .data_offset = offsetof(_structure, _member), \
1015 CYAML_VALUE_STRING(((_flags) & (~CYAML_FLAG_POINTER)), \
1016 (((_structure *)NULL)->_member), _min, \
1017 sizeof(((_structure *)NULL)->_member) - 1), \
1037 #define CYAML_FIELD_STRING_PTR( \
1038 _key, _flags, _structure, _member, _min, _max) \
1041 .data_offset = offsetof(_structure, _member), \
1043 CYAML_VALUE_STRING(((_flags) | CYAML_FLAG_POINTER), \
1044 (((_structure *)NULL)->_member), \
1056 #define CYAML_VALUE_MAPPING( \
1057 _flags, _type, _fields) \
1058 .type = CYAML_MAPPING, \
1059 .flags = (enum cyaml_flag)(_flags), \
1060 .data_size = sizeof(_type), \
1062 .fields = _fields, \
1076 #define CYAML_FIELD_MAPPING( \
1077 _key, _flags, _structure, _member, _fields) \
1080 .data_offset = offsetof(_structure, _member), \
1082 CYAML_VALUE_MAPPING(((_flags) & (~CYAML_FLAG_POINTER)), \
1083 (((_structure *)NULL)->_member), _fields), \
1098 #define CYAML_FIELD_MAPPING_PTR( \
1099 _key, _flags, _structure, _member, _fields) \
1103 CYAML_VALUE_MAPPING(((_flags) | CYAML_FLAG_POINTER), \
1104 (*(((_structure *)NULL)->_member)), _fields), \
1106 .data_offset = offsetof(_structure, _member) \
1118 #define CYAML_VALUE_SEQUENCE( \
1119 _flags, _type, _entry, _min, _max) \
1120 .type = CYAML_SEQUENCE, \
1121 .flags = (enum cyaml_flag)(_flags), \
1122 .data_size = sizeof(_type), \
1162 #define CYAML_FIELD_SEQUENCE( \
1163 _key, _flags, _structure, _member, _entry, _min, _max) \
1167 CYAML_VALUE_SEQUENCE((_flags), \
1168 (*(((_structure *)NULL)->_member)), \
1169 _entry, _min, _max), \
1171 .data_offset = offsetof(_structure, _member), \
1172 .count_size = sizeof(((_structure *)NULL)->_member ## _count), \
1173 .count_offset = offsetof(_structure, _member ## _count), \
1210 #define CYAML_FIELD_SEQUENCE_COUNT( \
1211 _key, _flags, _structure, _member, _count, _entry, _min, _max) \
1215 CYAML_VALUE_SEQUENCE((_flags), \
1216 (*(((_structure *)NULL)->_member)), \
1217 _entry, _min, _max), \
1219 .data_offset = offsetof(_structure, _member), \
1220 .count_size = sizeof(((_structure *)NULL)->_count), \
1221 .count_offset = offsetof(_structure, _count), \
1232 #define CYAML_VALUE_SEQUENCE_FIXED( \
1233 _flags, _type, _entry, _count) \
1234 .type = CYAML_SEQUENCE_FIXED, \
1235 .flags = (enum cyaml_flag)(_flags), \
1236 .data_size = sizeof(_type), \
1253 #define CYAML_FIELD_SEQUENCE_FIXED( \
1254 _key, _flags, _structure, _member, _entry, _count) \
1257 .data_offset = offsetof(_structure, _member), \
1259 CYAML_VALUE_SEQUENCE_FIXED((_flags), \
1260 (*(((_structure *)NULL)->_member)), \
1271 #define CYAML_FIELD_IGNORE( \
1276 .type = CYAML_IGNORE, \
1277 .flags = (_flags), \
1287 #define CYAML_FIELD_END { .key = NULL }
1293 #define CYAML_UNLIMITED 0xffffffff
1303 #define CYAML_ARRAY_LEN(_a) ((sizeof(_a)) / (sizeof(_a[0])))
1351 typedef void * (*cyaml_mem_fn_t)(
1490 unsigned *seq_count_out);
1512 const uint8_t *input,
1517 unsigned *seq_count_out);
1535 unsigned seq_count);
1579 unsigned seq_count);
1603 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:1345
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:1309
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:1331
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:518
@ CYAML_ERR_BAD_PARAM_NULL_SCHEMA
Definition: cyaml.h:544
@ CYAML_ERR_LIBYAML_PARSER_INIT
Definition: cyaml.h:546
@ CYAML_ERR_BAD_PARAM_NULL_CONFIG
Definition: cyaml.h:543
@ CYAML_ERR_BAD_PARAM_NULL_DATA
Definition: cyaml.h:535
@ CYAML_ERR_BAD_BITVAL_IN_SCHEMA
Definition: cyaml.h:536
@ CYAML_ERR_LIBYAML_EMITTER
Definition: cyaml.h:548
@ CYAML_ERR_FILE_OPEN
Definition: cyaml.h:522
@ CYAML_ERR_TOP_LEVEL_NON_PTR
Definition: cyaml.h:531
@ CYAML_ERR_BAD_CONFIG_NULL_MEMFN
Definition: cyaml.h:542
@ CYAML_ERR_STRING_LENGTH_MAX
Definition: cyaml.h:529
@ CYAML_ERR_INVALID_DATA_SIZE
Definition: cyaml.h:530
@ CYAML_ERR_BAD_TYPE_IN_SCHEMA
Definition: cyaml.h:532
@ CYAML_ERR_SEQUENCE_ENTRIES_MAX
Definition: cyaml.h:538
@ CYAML_ERR_STRING_LENGTH_MIN
Definition: cyaml.h:528
@ CYAML_ERR_BAD_MIN_MAX_SCHEMA
Definition: cyaml.h:533
@ CYAML_ERR_MAPPING_FIELD_MISSING
Definition: cyaml.h:541
@ CYAML_ERR_UNEXPECTED_EVENT
Definition: cyaml.h:527
@ CYAML_ERR_INVALID_VALUE
Definition: cyaml.h:524
@ CYAML_ERR_OOM
Definition: cyaml.h:520
@ CYAML_ERR_INVALID_ALIAS
Definition: cyaml.h:525
@ CYAML_ERR_INVALID_KEY
Definition: cyaml.h:523
@ CYAML_ERR_INTERNAL_ERROR
Definition: cyaml.h:526
@ CYAML_ERR_SEQUENCE_ENTRIES_MIN
Definition: cyaml.h:537
@ CYAML_ERR_LIBYAML_EVENT_INIT
Definition: cyaml.h:547
@ CYAML_ERR_SEQUENCE_IN_SEQUENCE
Definition: cyaml.h:540
@ CYAML_OK
Definition: cyaml.h:519
@ CYAML_ERR_LIBYAML_PARSER
Definition: cyaml.h:549
@ CYAML_ERR_BAD_PARAM_SEQ_COUNT
Definition: cyaml.h:534
@ CYAML_ERR__COUNT
Definition: cyaml.h:550
@ CYAML_ERR_SEQUENCE_FIXED_COUNT
Definition: cyaml.h:539
@ CYAML_ERR_LIBYAML_EMITTER_INIT
Definition: cyaml.h:545
@ CYAML_ERR_ALIAS
Definition: cyaml.h:521
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:1443
void *(* cyaml_mem_fn_t)(void *ctx, void *ptr, size_t size)
Definition: cyaml.h:1351
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_STRICT
Definition: cyaml.h:191
@ CYAML_FLAG_POINTER_NULL_STR
Definition: cyaml.h:175
@ CYAML_FLAG_POINTER
Definition: cyaml.h:142
@ 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_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:446
@ CYAML_CFG_IGNORE_UNKNOWN_KEYS
Definition: cyaml.h:456
@ CYAML_CFG_DEFAULT
Definition: cyaml.h:450
@ CYAML_CFG_CASE_INSENSITIVE
Definition: cyaml.h:497
@ CYAML_CFG_DOCUMENT_DELIM
Definition: cyaml.h:491
@ CYAML_CFG_NO_ALIAS
Definition: cyaml.h:509
@ CYAML_CFG_STYLE_FLOW
Definition: cyaml.h:484
@ CYAML_CFG_STYLE_BLOCK
Definition: cyaml.h:470
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:1312
@ CYAML_LOG_NOTICE
Definition: cyaml.h:1315
@ CYAML_LOG_DEBUG
Definition: cyaml.h:1313
@ CYAML_LOG_ERROR
Definition: cyaml.h:1317
@ CYAML_LOG_WARNING
Definition: cyaml.h:1316
@ CYAML_LOG_INFO
Definition: cyaml.h:1314
uint8_t bits
Definition: cyaml.h:282
const char * name
Definition: cyaml.h:280
uint8_t offset
Definition: cyaml.h:281
cyaml_log_fn_t log_fn
Definition: cyaml.h:1377
cyaml_cfg_flags_t flags
Definition: cyaml.h:1417
void * log_ctx
Definition: cyaml.h:1387
cyaml_log_t log_level
Definition: cyaml.h:1415
void * mem_ctx
Definition: cyaml.h:1408
cyaml_mem_fn_t mem_fn
Definition: cyaml.h:1398
uint32_t data_offset
Definition: cyaml.h:424
uint32_t count_offset
Definition: cyaml.h:429
uint8_t count_size
Definition: cyaml.h:434
const char * key
Definition: cyaml.h:419
struct cyaml_schema_value value
Definition: cyaml.h:438
enum cyaml_type type
Definition: cyaml.h:309
uint32_t max
Definition: cyaml.h:337
struct cyaml_schema_value::@0::@2 string
uint32_t count
Definition: cyaml.h:355
struct cyaml_schema_value::@0::@3 mapping
const struct cyaml_schema_field * fields
Definition: cyaml.h:348
uint32_t data_size
Definition: cyaml.h:319
struct cyaml_schema_value::@0::@6 enumeration
enum cyaml_flag flags
Definition: cyaml.h:311
uint32_t min
Definition: cyaml.h:329
const cyaml_strval_t * strings
Definition: cyaml.h:394
struct cyaml_schema_value::@0::@5 sequence
struct cyaml_schema_value::@0::@4 bitfield
const struct cyaml_schema_value * entry
Definition: cyaml.h:372
const struct cyaml_bitdef * bitdefs
Definition: cyaml.h:353
const char * str
Definition: cyaml.h:270
int64_t val
Definition: cyaml.h:271