10#ifndef __UTILS_YAML_H__
11#define __UTILS_YAML_H__
15#include <cyaml/cyaml.h>
26#define YAML_FIELD_IGNORE_OPT(key) \
27 CYAML_FIELD_IGNORE (key, CYAML_FLAG_OPTIONAL)
32#define YAML_FIELD_MAPPING_EMBEDDED(owner, member, schema) \
33 CYAML_FIELD_MAPPING ( \
34 #member, CYAML_FLAG_DEFAULT, owner, member, schema)
39#define YAML_FIELD_MAPPING_PTR(owner, member, schema) \
40 CYAML_FIELD_MAPPING_PTR ( \
41 #member, CYAML_FLAG_POINTER, owner, member, schema)
46#define YAML_FIELD_MAPPING_PTR_OPTIONAL( \
47 owner, member, schema) \
48 CYAML_FIELD_MAPPING_PTR ( \
49 #member, CYAML_FLAG_POINTER | CYAML_FLAG_OPTIONAL, \
50 owner, member, schema)
60#define YAML_FIELD_FIXED_SIZE_PTR_ARRAY_VAR_COUNT( \
61 owner, member, schema) \
62 CYAML_FIELD_SEQUENCE_COUNT ( \
63 #member, CYAML_FLAG_DEFAULT, owner, member, \
64 num_##member, &schema, 0, CYAML_UNLIMITED)
73#define YAML_FIELD_FIXED_SIZE_PTR_ARRAY( \
74 owner, member, schema, size) \
75 CYAML_FIELD_SEQUENCE_FIXED ( \
76 #member, CYAML_FLAG_DEFAULT, owner, member, &schema, \
89#define YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT( \
90 owner, member, schema) \
91 CYAML_FIELD_SEQUENCE_COUNT ( \
92 #member, CYAML_FLAG_POINTER, owner, member, \
93 num_##member, &schema, 0, CYAML_UNLIMITED)
103#define YAML_FIELD_DYN_FIXED_SIZE_PTR_ARRAY( \
104 owner, member, schema, fixed_size) \
105 CYAML_FIELD_SEQUENCE_FIXED ( \
106 #member, CYAML_FLAG_POINTER, owner, member, &schema, \
123#define YAML_FIELD_DYN_ARRAY_VAR_COUNT(owner, member, schema) \
124 CYAML_FIELD_SEQUENCE_COUNT ( \
125 #member, CYAML_FLAG_POINTER | CYAML_FLAG_OPTIONAL, \
126 owner, member, num_##member, &schema, 0, CYAML_UNLIMITED)
138#define YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT_OPT( \
139 owner, member, schema) \
140 YAML_FIELD_DYN_ARRAY_VAR_COUNT (owner, member, schema)
150#define YAML_FIELD_DYN_FIXED_SIZE_PTR_ARRAY_OPT( \
151 owner, member, schema, fixed_size) \
152 CYAML_FIELD_SEQUENCE_FIXED ( \
153 #member, CYAML_FLAG_POINTER | CYAML_FLAG_OPTIONAL, \
154 owner, member, &schema, fixed_size)
170#define YAML_FIELD_DYN_ARRAY_VAR_COUNT_PRIMITIVES( \
171 owner, member, schema) \
172 YAML_FIELD_DYN_ARRAY_VAR_COUNT (owner, member, schema)
177#define YAML_FIELD_SEQUENCE_FIXED( \
178 owner, member, schema, size) \
179 CYAML_FIELD_SEQUENCE_FIXED ( \
180 #member, CYAML_FLAG_DEFAULT, owner, member, &schema, \
183#define YAML_FIELD_INT(owner, member) \
184 CYAML_FIELD_INT (#member, CYAML_FLAG_DEFAULT, owner, member)
186#define YAML_FIELD_INT_OPT(owner, member) \
188 #member, CYAML_FLAG_OPTIONAL, owner, member)
190#define YAML_FIELD_UINT(owner, member) \
192 #member, CYAML_FLAG_DEFAULT, owner, member)
194#define YAML_FIELD_FLOAT(owner, member) \
195 CYAML_FIELD_FLOAT ( \
196 #member, CYAML_FLAG_DEFAULT, owner, member)
198#define YAML_FIELD_STRING_PTR(owner, member) \
199 CYAML_FIELD_STRING_PTR ( \
200 #member, CYAML_FLAG_POINTER, owner, member, 0, \
203#define YAML_FIELD_STRING_PTR_OPTIONAL(owner, member) \
204 CYAML_FIELD_STRING_PTR ( \
205 #member, CYAML_FLAG_POINTER | CYAML_FLAG_OPTIONAL, \
206 owner, member, 0, CYAML_UNLIMITED)
208#define YAML_FIELD_ENUM(owner, member, strings) \
210 #member, CYAML_FLAG_DEFAULT, owner, member, strings, \
211 CYAML_ARRAY_LEN (strings))
213#define YAML_FIELD_BITFIELD(owner, member, bitvals) \
214 CYAML_FIELD_BITFIELD ( \
215 #member, CYAML_FLAG_DEFAULT, owner, member, bitvals, \
216 CYAML_ARRAY_LEN (bitvals))
221#define YAML_VALUE_PTR(cc, fields_schema) \
222 CYAML_VALUE_MAPPING (CYAML_FLAG_POINTER, cc, fields_schema)
228#define YAML_VALUE_PTR_NULLABLE(cc, fields_schema) \
229 CYAML_VALUE_MAPPING ( \
230 CYAML_FLAG_POINTER_NULL_STR, cc, fields_schema)
238#define YAML_VALUE_DEFAULT(cc, fields_schema) \
239 CYAML_VALUE_MAPPING (CYAML_FLAG_DEFAULT, cc, fields_schema)
241#define YAML_BITVAL(_name, _offset) \
243 .name = _name, .offset = _offset, .bits = 1 \
255 const cyaml_schema_value_t * schema,
259void * yaml_deserialize (
261 const cyaml_schema_value_t * schema,
265yaml_print (
void * data, const cyaml_schema_value_t * schema);
278yaml_set_log_level (cyaml_log_t level);
281yaml_get_cyaml_config (cyaml_config_t * cyaml_config);
283static const cyaml_schema_value_t int_schema = {
284 CYAML_VALUE_INT (CYAML_FLAG_DEFAULT,
int),
287static const cyaml_schema_value_t unsigned_int_schema = {
288 CYAML_VALUE_UINT (CYAML_FLAG_DEFAULT,
unsigned int),
291static const cyaml_schema_value_t uint8_t_schema = {
292 CYAML_VALUE_UINT (CYAML_FLAG_DEFAULT, typeof (uint8_t)),
295static const cyaml_schema_value_t float_schema = {
296 CYAML_VALUE_FLOAT (CYAML_FLAG_DEFAULT, typeof (
float)),
299static const cyaml_schema_field_t gdk_rgba_fields_schema[] = {
300 CYAML_FIELD_FLOAT (
"red", CYAML_FLAG_DEFAULT, GdkRGBA, red),
301 CYAML_FIELD_FLOAT (
"green", CYAML_FLAG_DEFAULT, GdkRGBA, green),
302 CYAML_FIELD_FLOAT (
"blue", CYAML_FLAG_DEFAULT, GdkRGBA, blue),
303 CYAML_FIELD_FLOAT (
"alpha", CYAML_FLAG_DEFAULT, GdkRGBA, alpha),
308static const cyaml_schema_value_t gdk_rgba_schema_default = {
312static const cyaml_schema_value_t gdk_rgba_schema = {
316typedef enum YamlDummyEnum
COLD NONNULL_ARGS(1) void automation_track_init_loaded(AutomationTrack *self
Inits a loaded AutomationTracklist.
#define YAML_VALUE_DEFAULT(cc, fields_schema)
Schema to be used for arrays of structs directly (not as pointers).
char * yaml_serialize(void *data, const cyaml_schema_value_t *schema, GError **error)
Serializes to YAML.
#define YAML_VALUE_PTR(cc, fields_schema)
Schema to be used as a pointer.
void yaml_cyaml_log_func(cyaml_log_t level, void *ctxt, const char *format, va_list args)
Custom logging function for libcyaml.