CYAML Internals
cyaml.h
Go to the documentation of this file.
1 /*
2  * SPDX-License-Identifier: ISC
3  *
4  * Copyright (c) 2017-2019 Michael Drake <tlsa@netsurf-browser.org>
5  */
6 
14 #ifndef CYAML_H
15 #define CYAML_H
16 
17 #ifdef __cplusplus
18 extern "C"
19 {
20 #endif
21 
22 #include <stdarg.h>
23 #include <stdint.h>
24 #include <stddef.h>
25 
29 extern const char *cyaml_version_str;
30 
44 extern const uint32_t cyaml_version;
45 
53 typedef enum cyaml_type {
125 } cyaml_type_e;
126 
132 typedef enum cyaml_flag {
134  CYAML_FLAG_OPTIONAL = (1 << 0),
142  CYAML_FLAG_POINTER = (1 << 1),
188  CYAML_FLAG_STRICT = (1 << 4),
205  CYAML_FLAG_BLOCK = (1 << 5),
222  CYAML_FLAG_FLOW = (1 << 6),
259 } cyaml_flag_e;
260 
266 typedef struct cyaml_strval {
267  const char *str;
268  int64_t val;
270 
276 typedef struct cyaml_bitdef {
277  const char *name;
278  uint8_t offset;
279  uint8_t bits;
281 
302 typedef struct cyaml_schema_value {
316  uint32_t data_size;
318  union {
320  struct {
326  uint32_t min;
334  uint32_t max;
335  } string;
337  struct {
345  const struct cyaml_schema_field *fields;
346  } mapping;
348  struct {
350  const struct cyaml_bitdef *bitdefs;
352  uint32_t count;
353  } bitfield;
358  struct {
369  const struct cyaml_schema_value *entry;
376  uint32_t min;
383  uint32_t max;
384  } sequence;
389  struct {
393  uint32_t count;
394  } enumeration;
395  };
397 
410 typedef struct cyaml_schema_field {
416  const char *key;
421  uint32_t data_offset;
426  uint32_t count_offset;
431  uint8_t count_size;
437 
443 typedef enum cyaml_cfg_flags {
506  CYAML_CFG_NO_ALIAS = (1 << 5),
508 
515 typedef enum cyaml_err {
551 } cyaml_err_t;
552 
559 #define CYAML_VALUE_INT( \
560  _flags, _type) \
561  .type = CYAML_INT, \
562  .flags = (_flags), \
563  .data_size = sizeof(_type)
564 
575 #define CYAML_FIELD_INT( \
576  _key, _flags, _structure, _member) \
577 { \
578  .key = _key, \
579  .value = { \
580  CYAML_VALUE_INT(((_flags) & (~CYAML_FLAG_POINTER)), \
581  (((_structure *)NULL)->_member)), \
582  }, \
583  .data_offset = offsetof(_structure, _member) \
584 }
585 
596 #define CYAML_FIELD_INT_PTR( \
597  _key, _flags, _structure, _member) \
598 { \
599  .key = _key, \
600  .value = { \
601  CYAML_VALUE_INT(((_flags) | CYAML_FLAG_POINTER), \
602  (*(((_structure *)NULL)->_member))), \
603  }, \
604  .data_offset = offsetof(_structure, _member) \
605 }
606 
613 #define CYAML_VALUE_UINT( \
614  _flags, _type) \
615  .type = CYAML_UINT, \
616  .flags = (_flags), \
617  .data_size = sizeof(_type)
618 
629 #define CYAML_FIELD_UINT( \
630  _key, _flags, _structure, _member) \
631 { \
632  .key = _key, \
633  .value = { \
634  CYAML_VALUE_UINT(((_flags) & (~CYAML_FLAG_POINTER)), \
635  (((_structure *)NULL)->_member)), \
636  }, \
637  .data_offset = offsetof(_structure, _member) \
638 }
639 
650 #define CYAML_FIELD_UINT_PTR( \
651  _key, _flags, _structure, _member) \
652 { \
653  .key = _key, \
654  .value = { \
655  CYAML_VALUE_UINT(((_flags) | CYAML_FLAG_POINTER), \
656  (*(((_structure *)NULL)->_member))), \
657  }, \
658  .data_offset = offsetof(_structure, _member) \
659 }
660 
667 #define CYAML_VALUE_BOOL( \
668  _flags, _type) \
669  .type = CYAML_BOOL, \
670  .flags = (_flags), \
671  .data_size = sizeof(_type)
672 
683 #define CYAML_FIELD_BOOL( \
684  _key, _flags, _structure, _member) \
685 { \
686  .key = _key, \
687  .value = { \
688  CYAML_VALUE_BOOL(((_flags) & (~CYAML_FLAG_POINTER)), \
689  (((_structure *)NULL)->_member)), \
690  }, \
691  .data_offset = offsetof(_structure, _member) \
692 }
693 
704 #define CYAML_FIELD_BOOL_PTR( \
705  _key, _flags, _structure, _member) \
706 { \
707  .key = _key, \
708  .value = { \
709  CYAML_VALUE_BOOL(((_flags) | CYAML_FLAG_POINTER), \
710  (*(((_structure *)NULL)->_member))), \
711  }, \
712  .data_offset = offsetof(_structure, _member) \
713 }
714 
723 #define CYAML_VALUE_ENUM( \
724  _flags, _type, _strings, _strings_count) \
725  .type = CYAML_ENUM, \
726  .flags = (_flags), \
727  .data_size = sizeof(_type), \
728  .enumeration = { \
729  .strings = _strings, \
730  .count = _strings_count, \
731  }
732 
745 #define CYAML_FIELD_ENUM( \
746  _key, _flags, _structure, _member, _strings, _strings_count) \
747 { \
748  .key = _key, \
749  .value = { \
750  CYAML_VALUE_ENUM(((_flags) & (~CYAML_FLAG_POINTER)), \
751  (((_structure *)NULL)->_member), \
752  _strings, _strings_count), \
753  }, \
754  .data_offset = offsetof(_structure, _member) \
755 }
756 
769 #define CYAML_FIELD_ENUM_PTR( \
770  _key, _flags, _structure, _member, _strings, _strings_count) \
771 { \
772  .key = _key, \
773  .value = { \
774  CYAML_VALUE_ENUM(((_flags) | CYAML_FLAG_POINTER), \
775  (*(((_structure *)NULL)->_member)), \
776  _strings, _strings_count), \
777  }, \
778  .data_offset = offsetof(_structure, _member) \
779 }
780 
789 #define CYAML_VALUE_FLAGS( \
790  _flags, _type, _strings, _strings_count) \
791  .type = CYAML_FLAGS, \
792  .flags = (_flags), \
793  .data_size = sizeof(_type), \
794  .enumeration = { \
795  .strings = _strings, \
796  .count = _strings_count, \
797  }
798 
811 #define CYAML_FIELD_FLAGS( \
812  _key, _flags, _structure, _member, _strings, _strings_count) \
813 { \
814  .key = _key, \
815  .value = { \
816  CYAML_VALUE_FLAGS(((_flags) & (~CYAML_FLAG_POINTER)), \
817  (((_structure *)NULL)->_member), \
818  _strings, _strings_count), \
819  }, \
820  .data_offset = offsetof(_structure, _member) \
821 }
822 
835 #define CYAML_FIELD_FLAGS_PTR( \
836  _key, _flags, _structure, _member, _strings, _strings_count) \
837 { \
838  .key = _key, \
839  .value = { \
840  CYAML_VALUE_FLAGS(((_flags) | CYAML_FLAG_POINTER), \
841  (*(((_structure *)NULL)->_member)), \
842  _strings, _strings_count), \
843  }, \
844  .data_offset = offsetof(_structure, _member) \
845 }
846 
855 #define CYAML_VALUE_BITFIELD( \
856  _flags, _type, _bitvals, _bitvals_count) \
857  .type = CYAML_BITFIELD, \
858  .flags = (_flags), \
859  .data_size = sizeof(_type), \
860  .bitfield = { \
861  .bitdefs = _bitvals, \
862  .count = _bitvals_count, \
863  }
864 
877 #define CYAML_FIELD_BITFIELD( \
878  _key, _flags, _structure, _member, _bitvals, _bitvals_count) \
879 { \
880  .key = _key, \
881  .value = { \
882  CYAML_VALUE_BITFIELD(((_flags) & (~CYAML_FLAG_POINTER)), \
883  (((_structure *)NULL)->_member), \
884  _bitvals, _bitvals_count), \
885  }, \
886  .data_offset = offsetof(_structure, _member) \
887 }
888 
901 #define CYAML_FIELD_BITFIELD_PTR( \
902  _key, _flags, _structure, _member, _bitvals, _bitvals_count) \
903 { \
904  .key = _key, \
905  .value = { \
906  CYAML_VALUE_BITFIELD(((_flags) | CYAML_FLAG_POINTER), \
907  (*(((_structure *)NULL)->_member)), \
908  _bitvals, _bitvals_count), \
909  }, \
910  .data_offset = offsetof(_structure, _member) \
911 }
912 
919 #define CYAML_VALUE_FLOAT( \
920  _flags, _type) \
921  .type = CYAML_FLOAT, \
922  .flags = (_flags), \
923  .data_size = sizeof(_type)
924 
935 #define CYAML_FIELD_FLOAT( \
936  _key, _flags, _structure, _member) \
937 { \
938  .key = _key, \
939  .value = { \
940  CYAML_VALUE_FLOAT(((_flags) & (~CYAML_FLAG_POINTER)), \
941  (((_structure *)NULL)->_member)), \
942  }, \
943  .data_offset = offsetof(_structure, _member) \
944 }
945 
956 #define CYAML_FIELD_FLOAT_PTR( \
957  _key, _flags, _structure, _member) \
958 { \
959  .key = _key, \
960  .value = { \
961  CYAML_VALUE_FLOAT(((_flags) | CYAML_FLAG_POINTER), \
962  (*(((_structure *)NULL)->_member))), \
963  }, \
964  .data_offset = offsetof(_structure, _member) \
965 }
966 
984 #define CYAML_VALUE_STRING( \
985  _flags, _type, _min, _max) \
986  .type = CYAML_STRING, \
987  .flags = (_flags), \
988  .data_size = sizeof(_type), \
989  .string = { \
990  .min = _min, \
991  .max = _max, \
992  }
993 
1006 #define CYAML_FIELD_STRING( \
1007  _key, _flags, _structure, _member, _min) \
1008 { \
1009  .key = _key, \
1010  .value = { \
1011  CYAML_VALUE_STRING(((_flags) & (~CYAML_FLAG_POINTER)), \
1012  (((_structure *)NULL)->_member), _min, \
1013  sizeof(((_structure *)NULL)->_member) - 1), \
1014  }, \
1015  .data_offset = offsetof(_structure, _member) \
1016 }
1017 
1034 #define CYAML_FIELD_STRING_PTR( \
1035  _key, _flags, _structure, _member, _min, _max) \
1036 { \
1037  .key = _key, \
1038  .value = { \
1039  CYAML_VALUE_STRING(((_flags) | CYAML_FLAG_POINTER), \
1040  (((_structure *)NULL)->_member), \
1041  _min, _max), \
1042  }, \
1043  .data_offset = offsetof(_structure, _member) \
1044 }
1045 
1053 #define CYAML_VALUE_MAPPING( \
1054  _flags, _type, _fields) \
1055  .type = CYAML_MAPPING, \
1056  .flags = (_flags), \
1057  .data_size = sizeof(_type), \
1058  .mapping = { \
1059  .fields = _fields, \
1060  }
1061 
1073 #define CYAML_FIELD_MAPPING( \
1074  _key, _flags, _structure, _member, _fields) \
1075 { \
1076  .key = _key, \
1077  .value = { \
1078  CYAML_VALUE_MAPPING(((_flags) & (~CYAML_FLAG_POINTER)), \
1079  (((_structure *)NULL)->_member), _fields), \
1080  }, \
1081  .data_offset = offsetof(_structure, _member) \
1082 }
1083 
1095 #define CYAML_FIELD_MAPPING_PTR( \
1096  _key, _flags, _structure, _member, _fields) \
1097 { \
1098  .key = _key, \
1099  .value = { \
1100  CYAML_VALUE_MAPPING(((_flags) | CYAML_FLAG_POINTER), \
1101  (*(((_structure *)NULL)->_member)), _fields), \
1102  }, \
1103  .data_offset = offsetof(_structure, _member) \
1104 }
1105 
1115 #define CYAML_VALUE_SEQUENCE( \
1116  _flags, _type, _entry, _min, _max) \
1117  .type = CYAML_SEQUENCE, \
1118  .flags = (_flags), \
1119  .data_size = sizeof(_type), \
1120  .sequence = { \
1121  .entry = _entry, \
1122  .min = _min, \
1123  .max = _max, \
1124  }
1125 
1159 #define CYAML_FIELD_SEQUENCE( \
1160  _key, _flags, _structure, _member, _entry, _min, _max) \
1161 { \
1162  .key = _key, \
1163  .value = { \
1164  CYAML_VALUE_SEQUENCE((_flags), \
1165  (*(((_structure *)NULL)->_member)), \
1166  _entry, _min, _max), \
1167  }, \
1168  .data_offset = offsetof(_structure, _member), \
1169  .count_size = sizeof(((_structure *)NULL)->_member ## _count), \
1170  .count_offset = offsetof(_structure, _member ## _count), \
1171 }
1172 
1207 #define CYAML_FIELD_SEQUENCE_COUNT( \
1208  _key, _flags, _structure, _member, _count, _entry, _min, _max) \
1209 { \
1210  .key = _key, \
1211  .value = { \
1212  CYAML_VALUE_SEQUENCE((_flags), \
1213  (*(((_structure *)NULL)->_member)), \
1214  _entry, _min, _max), \
1215  }, \
1216  .data_offset = offsetof(_structure, _member), \
1217  .count_size = sizeof(((_structure *)NULL)->_count), \
1218  .count_offset = offsetof(_structure, _count), \
1219 }
1220 
1229 #define CYAML_VALUE_SEQUENCE_FIXED( \
1230  _flags, _type, _entry, _count) \
1231  .type = CYAML_SEQUENCE_FIXED, \
1232  .flags = (_flags), \
1233  .data_size = sizeof(_type), \
1234  .sequence = { \
1235  .entry = _entry, \
1236  .min = _count, \
1237  .max = _count, \
1238  }
1239 
1250 #define CYAML_FIELD_SEQUENCE_FIXED( \
1251  _key, _flags, _structure, _member, _entry, _count) \
1252 { \
1253  .key = _key, \
1254  .value = { \
1255  CYAML_VALUE_SEQUENCE_FIXED((_flags), \
1256  (*(((_structure *)NULL)->_member)), \
1257  _entry, _count), \
1258  }, \
1259  .data_offset = offsetof(_structure, _member) \
1260 }
1261 
1268 #define CYAML_FIELD_IGNORE( \
1269  _key, _flags) \
1270 { \
1271  .key = _key, \
1272  .value = { \
1273  .type = CYAML_IGNORE, \
1274  .flags = (_flags), \
1275  }, \
1276 }
1277 
1284 #define CYAML_FIELD_END { .key = NULL }
1285 
1290 #define CYAML_UNLIMITED 0xffffffff
1291 
1300 #define CYAML_ARRAY_LEN(_a) ((sizeof(_a)) / (sizeof(_a[0])))
1301 
1306 typedef void cyaml_data_t;
1307 
1309 typedef enum cyaml_log_e {
1315 } cyaml_log_t;
1316 
1328 typedef void (*cyaml_log_fn_t)(
1329  cyaml_log_t level,
1330  void *ctx,
1331  const char *fmt,
1332  va_list args);
1333 
1348 typedef void * (*cyaml_mem_fn_t)(
1349  void *ctx,
1350  void *ptr,
1351  size_t size);
1352 
1359 typedef struct cyaml_config {
1384  void *log_ctx;
1405  void *mem_ctx;
1415 } cyaml_config_t;
1416 
1436 extern void cyaml_log(
1437  cyaml_log_t level,
1438  void *ctx,
1439  const char *fmt,
1440  va_list args);
1441 
1459 extern void * cyaml_mem(
1460  void *ctx,
1461  void *ptr,
1462  size_t size);
1463 
1483  const char *path,
1484  const cyaml_config_t *config,
1485  const cyaml_schema_value_t *schema,
1486  cyaml_data_t **data_out,
1487  unsigned *seq_count_out);
1488 
1509  const uint8_t *input,
1510  size_t input_len,
1511  const cyaml_config_t *config,
1512  const cyaml_schema_value_t *schema,
1513  cyaml_data_t **data_out,
1514  unsigned *seq_count_out);
1515 
1528  const char *path,
1529  const cyaml_config_t *config,
1530  const cyaml_schema_value_t *schema,
1531  const cyaml_data_t *data,
1532  unsigned seq_count);
1533 
1571  char **output,
1572  size_t *len,
1573  const cyaml_config_t *config,
1574  const cyaml_schema_value_t *schema,
1575  const cyaml_data_t *data,
1576  unsigned seq_count);
1577 
1596 extern cyaml_err_t cyaml_free(
1597  const cyaml_config_t *config,
1598  const cyaml_schema_value_t *schema,
1599  cyaml_data_t *data,
1600  unsigned seq_count);
1601 
1609 extern const char * cyaml_strerror(
1610  cyaml_err_t err);
1611 
1612 #ifdef __cplusplus
1613 }
1614 #endif
1615 
1616 #endif
cyaml_bitdef
Definition: cyaml.h:276
cyaml_schema_value::flags
enum cyaml_flag flags
Definition: cyaml.h:308
CYAML_ERR_LIBYAML_PARSER
@ CYAML_ERR_LIBYAML_PARSER
Definition: cyaml.h:546
CYAML_FLAG_POINTER_NULL
@ CYAML_FLAG_POINTER_NULL
Definition: cyaml.h:152
CYAML_ERR_BAD_PARAM_NULL_SCHEMA
@ CYAML_ERR_BAD_PARAM_NULL_SCHEMA
Definition: cyaml.h:541
CYAML_BOOL
@ CYAML_BOOL
Definition: cyaml.h:56
CYAML_CFG_DOCUMENT_DELIM
@ CYAML_CFG_DOCUMENT_DELIM
Definition: cyaml.h:488
CYAML_FLAGS
@ CYAML_FLAGS
Definition: cyaml.h:72
cyaml_bitdef_t
struct cyaml_bitdef cyaml_bitdef_t
CYAML_ERR_INVALID_KEY
@ CYAML_ERR_INVALID_KEY
Definition: cyaml.h:520
cyaml_log
void cyaml_log(cyaml_log_t level, void *ctx, const char *fmt, va_list args)
Definition: util.c:60
cyaml_schema_value::sequence
struct cyaml_schema_value::@0::@5 sequence
cyaml_cfg_flags
cyaml_cfg_flags
Definition: cyaml.h:443
CYAML_ERR_MAPPING_FIELD_MISSING
@ CYAML_ERR_MAPPING_FIELD_MISSING
Definition: cyaml.h:538
cyaml_config
Definition: cyaml.h:1359
CYAML_IGNORE
@ CYAML_IGNORE
Definition: cyaml.h:119
cyaml_schema_value::strings
const cyaml_strval_t * strings
Definition: cyaml.h:391
cyaml_schema_value::max
uint32_t max
Definition: cyaml.h:334
cyaml_data_t
void cyaml_data_t
Definition: cyaml.h:1306
CYAML_ERR_LIBYAML_EMITTER
@ CYAML_ERR_LIBYAML_EMITTER
Definition: cyaml.h:545
CYAML_CFG_IGNORE_UNKNOWN_KEYS
@ CYAML_CFG_IGNORE_UNKNOWN_KEYS
Definition: cyaml.h:453
CYAML_OK
@ CYAML_OK
Definition: cyaml.h:516
CYAML_ERR_BAD_TYPE_IN_SCHEMA
@ CYAML_ERR_BAD_TYPE_IN_SCHEMA
Definition: cyaml.h:529
CYAML_FLAG_POINTER
@ CYAML_FLAG_POINTER
Definition: cyaml.h:142
cyaml_schema_field::value
struct cyaml_schema_value value
Definition: cyaml.h:435
CYAML_ERR_ALIAS
@ CYAML_ERR_ALIAS
Definition: cyaml.h:518
cyaml_mem
void * cyaml_mem(void *ctx, void *ptr, size_t size)
Definition: mem.c:22
CYAML_ERR__COUNT
@ CYAML_ERR__COUNT
Definition: cyaml.h:547
CYAML_STRING
@ CYAML_STRING
Definition: cyaml.h:74
CYAML_LOG_ERROR
@ CYAML_LOG_ERROR
Definition: cyaml.h:1314
CYAML_ERR_SEQUENCE_FIXED_COUNT
@ CYAML_ERR_SEQUENCE_FIXED_COUNT
Definition: cyaml.h:536
cyaml_schema_field::count_offset
uint32_t count_offset
Definition: cyaml.h:426
CYAML_UINT
@ CYAML_UINT
Definition: cyaml.h:55
CYAML_FLAG_STRICT
@ CYAML_FLAG_STRICT
Definition: cyaml.h:188
cyaml_log_e
cyaml_log_e
Definition: cyaml.h:1309
CYAML_LOG_INFO
@ CYAML_LOG_INFO
Definition: cyaml.h:1311
cyaml_version
const uint32_t cyaml_version
Definition: util.c:49
cyaml_mem_fn_t
void *(* cyaml_mem_fn_t)(void *ctx, void *ptr, size_t size)
Definition: cyaml.h:1348
cyaml_type
cyaml_type
Definition: cyaml.h:53
cyaml_schema_value::count
uint32_t count
Definition: cyaml.h:352
CYAML_ERR_STRING_LENGTH_MIN
@ CYAML_ERR_STRING_LENGTH_MIN
Definition: cyaml.h:525
cyaml_err
cyaml_err
Definition: cyaml.h:515
CYAML_FLOAT
@ CYAML_FLOAT
Definition: cyaml.h:73
cyaml_schema_value::type
enum cyaml_type type
Definition: cyaml.h:306
cyaml_strval::val
int64_t val
Definition: cyaml.h:268
CYAML_FLAG_BLOCK
@ CYAML_FLAG_BLOCK
Definition: cyaml.h:205
cyaml_schema_value::string
struct cyaml_schema_value::@0::@2 string
cyaml_config::log_ctx
void * log_ctx
Definition: cyaml.h:1384
cyaml_strval_t
struct cyaml_strval cyaml_strval_t
cyaml_schema_value::fields
const struct cyaml_schema_field * fields
Definition: cyaml.h:345
CYAML_ERR_INVALID_DATA_SIZE
@ CYAML_ERR_INVALID_DATA_SIZE
Definition: cyaml.h:527
cyaml_type_e
enum cyaml_type cyaml_type_e
cyaml_schema_field::data_offset
uint32_t data_offset
Definition: cyaml.h:421
cyaml_flag_e
enum cyaml_flag cyaml_flag_e
CYAML_ERR_SEQUENCE_ENTRIES_MAX
@ CYAML_ERR_SEQUENCE_ENTRIES_MAX
Definition: cyaml.h:535
cyaml_bitdef::name
const char * name
Definition: cyaml.h:277
cyaml_version_str
const char * cyaml_version_str
Definition: util.c:57
CYAML_ERR_BAD_BITVAL_IN_SCHEMA
@ CYAML_ERR_BAD_BITVAL_IN_SCHEMA
Definition: cyaml.h:533
CYAML_SEQUENCE_FIXED
@ CYAML_SEQUENCE_FIXED
Definition: cyaml.h:113
cyaml_bitdef::offset
uint8_t offset
Definition: cyaml.h:278
CYAML_ERR_INVALID_VALUE
@ CYAML_ERR_INVALID_VALUE
Definition: cyaml.h:521
CYAML_MAPPING
@ CYAML_MAPPING
Definition: cyaml.h:79
CYAML_LOG_NOTICE
@ CYAML_LOG_NOTICE
Definition: cyaml.h:1312
cyaml_schema_value::enumeration
struct cyaml_schema_value::@0::@6 enumeration
CYAML_ERR_LIBYAML_EVENT_INIT
@ CYAML_ERR_LIBYAML_EVENT_INIT
Definition: cyaml.h:544
CYAML_ERR_INVALID_ALIAS
@ CYAML_ERR_INVALID_ALIAS
Definition: cyaml.h:522
CYAML_ERR_BAD_PARAM_NULL_DATA
@ CYAML_ERR_BAD_PARAM_NULL_DATA
Definition: cyaml.h:532
CYAML_ERR_BAD_CONFIG_NULL_MEMFN
@ CYAML_ERR_BAD_CONFIG_NULL_MEMFN
Definition: cyaml.h:539
cyaml_config::log_fn
cyaml_log_fn_t log_fn
Definition: cyaml.h:1374
CYAML_LOG_WARNING
@ CYAML_LOG_WARNING
Definition: cyaml.h:1313
cyaml_strval
Definition: cyaml.h:266
CYAML_CFG_NO_ALIAS
@ CYAML_CFG_NO_ALIAS
Definition: cyaml.h:506
CYAML_ERR_BAD_MIN_MAX_SCHEMA
@ CYAML_ERR_BAD_MIN_MAX_SCHEMA
Definition: cyaml.h:530
cyaml_log_fn_t
void(* cyaml_log_fn_t)(cyaml_log_t level, void *ctx, const char *fmt, va_list args)
Definition: cyaml.h:1328
cyaml_strval::str
const char * str
Definition: cyaml.h:267
CYAML_ERR_BAD_PARAM_NULL_CONFIG
@ CYAML_ERR_BAD_PARAM_NULL_CONFIG
Definition: cyaml.h:540
CYAML_ERR_UNEXPECTED_EVENT
@ CYAML_ERR_UNEXPECTED_EVENT
Definition: cyaml.h:524
CYAML_CFG_STYLE_BLOCK
@ CYAML_CFG_STYLE_BLOCK
Definition: cyaml.h:467
cyaml_strerror
const char * cyaml_strerror(cyaml_err_t err)
Definition: util.c:81
cyaml_schema_field::key
const char * key
Definition: cyaml.h:416
cyaml_config::flags
cyaml_cfg_flags_t flags
Definition: cyaml.h:1414
cyaml_load_file
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:2552
cyaml_config::log_level
cyaml_log_t log_level
Definition: cyaml.h:1412
cyaml_log_t
enum cyaml_log_e cyaml_log_t
cyaml_cfg_flags_t
enum cyaml_cfg_flags cyaml_cfg_flags_t
CYAML_ERR_LIBYAML_EMITTER_INIT
@ CYAML_ERR_LIBYAML_EMITTER_INIT
Definition: cyaml.h:542
CYAML_FLAG_DEFAULT
@ CYAML_FLAG_DEFAULT
Definition: cyaml.h:133
cyaml_schema_value::mapping
struct cyaml_schema_value::@0::@3 mapping
CYAML_ERR_STRING_LENGTH_MAX
@ CYAML_ERR_STRING_LENGTH_MAX
Definition: cyaml.h:526
cyaml_schema_value::data_size
uint32_t data_size
Definition: cyaml.h:316
cyaml_schema_field
Definition: cyaml.h:410
cyaml_config_t
struct cyaml_config cyaml_config_t
cyaml_config::mem_ctx
void * mem_ctx
Definition: cyaml.h:1405
cyaml_load_data
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:2594
cyaml_save_data
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
CYAML_ERR_SEQUENCE_ENTRIES_MIN
@ CYAML_ERR_SEQUENCE_ENTRIES_MIN
Definition: cyaml.h:534
CYAML_ERR_OOM
@ CYAML_ERR_OOM
Definition: cyaml.h:517
CYAML_ERR_INTERNAL_ERROR
@ CYAML_ERR_INTERNAL_ERROR
Definition: cyaml.h:523
CYAML_FLAG_CASE_INSENSITIVE
@ CYAML_FLAG_CASE_INSENSITIVE
Definition: cyaml.h:258
cyaml_schema_value_t
struct cyaml_schema_value cyaml_schema_value_t
CYAML_ENUM
@ CYAML_ENUM
Definition: cyaml.h:62
CYAML_FLAG_OPTIONAL
@ CYAML_FLAG_OPTIONAL
Definition: cyaml.h:134
CYAML_ERR_FILE_OPEN
@ CYAML_ERR_FILE_OPEN
Definition: cyaml.h:519
cyaml_free
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_CFG_DEFAULT
@ CYAML_CFG_DEFAULT
Definition: cyaml.h:447
CYAML_FLAG_FLOW
@ CYAML_FLAG_FLOW
Definition: cyaml.h:222
CYAML_FLAG_POINTER_NULL_STR
@ CYAML_FLAG_POINTER_NULL_STR
Definition: cyaml.h:175
CYAML_CFG_CASE_INSENSITIVE
@ CYAML_CFG_CASE_INSENSITIVE
Definition: cyaml.h:494
cyaml_config::mem_fn
cyaml_mem_fn_t mem_fn
Definition: cyaml.h:1395
cyaml_schema_value
Definition: cyaml.h:302
cyaml_schema_value::entry
const struct cyaml_schema_value * entry
Definition: cyaml.h:369
cyaml_flag
cyaml_flag
Definition: cyaml.h:132
CYAML_LOG_DEBUG
@ CYAML_LOG_DEBUG
Definition: cyaml.h:1310
cyaml_schema_value::bitdefs
const struct cyaml_bitdef * bitdefs
Definition: cyaml.h:350
CYAML_BITFIELD
@ CYAML_BITFIELD
Definition: cyaml.h:89
cyaml_save_file
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
CYAML_ERR_LIBYAML_PARSER_INIT
@ CYAML_ERR_LIBYAML_PARSER_INIT
Definition: cyaml.h:543
CYAML__TYPE_COUNT
@ CYAML__TYPE_COUNT
Definition: cyaml.h:124
CYAML_FLAG_CASE_SENSITIVE
@ CYAML_FLAG_CASE_SENSITIVE
Definition: cyaml.h:240
CYAML_ERR_TOP_LEVEL_NON_PTR
@ CYAML_ERR_TOP_LEVEL_NON_PTR
Definition: cyaml.h:528
CYAML_ERR_SEQUENCE_IN_SEQUENCE
@ CYAML_ERR_SEQUENCE_IN_SEQUENCE
Definition: cyaml.h:537
CYAML_CFG_STYLE_FLOW
@ CYAML_CFG_STYLE_FLOW
Definition: cyaml.h:481
cyaml_err_t
enum cyaml_err cyaml_err_t
cyaml_bitdef::bits
uint8_t bits
Definition: cyaml.h:279
cyaml_schema_value::bitfield
struct cyaml_schema_value::@0::@4 bitfield
CYAML_ERR_BAD_PARAM_SEQ_COUNT
@ CYAML_ERR_BAD_PARAM_SEQ_COUNT
Definition: cyaml.h:531
cyaml_schema_value::min
uint32_t min
Definition: cyaml.h:326
cyaml_schema_field_t
struct cyaml_schema_field cyaml_schema_field_t
CYAML_INT
@ CYAML_INT
Definition: cyaml.h:54
cyaml_schema_field::count_size
uint8_t count_size
Definition: cyaml.h:431
CYAML_SEQUENCE
@ CYAML_SEQUENCE
Definition: cyaml.h:101