Zrythm
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
yaml.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2019-2023 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
10#ifndef __UTILS_YAML_H__
11#define __UTILS_YAML_H__
12
13#include <gtk/gtk.h>
14
15#include <cyaml/cyaml.h>
16
26#define YAML_FIELD_IGNORE_OPT(key) \
27 CYAML_FIELD_IGNORE (key, CYAML_FLAG_OPTIONAL)
28
32#define YAML_FIELD_MAPPING_EMBEDDED(owner, member, schema) \
33 CYAML_FIELD_MAPPING ( \
34 #member, CYAML_FLAG_DEFAULT, owner, member, schema)
35
39#define YAML_FIELD_MAPPING_PTR(owner, member, schema) \
40 CYAML_FIELD_MAPPING_PTR ( \
41 #member, CYAML_FLAG_POINTER, owner, member, schema)
42
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)
51
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)
65
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, \
77 size)
78
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)
94
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, \
107 fixed_size)
108
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)
127
138#define YAML_FIELD_DYN_PTR_ARRAY_VAR_COUNT_OPT( \
139 owner, member, schema) \
140 YAML_FIELD_DYN_ARRAY_VAR_COUNT (owner, member, schema)
141
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)
155
170#define YAML_FIELD_DYN_ARRAY_VAR_COUNT_PRIMITIVES( \
171 owner, member, schema) \
172 YAML_FIELD_DYN_ARRAY_VAR_COUNT (owner, member, schema)
173
177#define YAML_FIELD_SEQUENCE_FIXED( \
178 owner, member, schema, size) \
179 CYAML_FIELD_SEQUENCE_FIXED ( \
180 #member, CYAML_FLAG_DEFAULT, owner, member, &schema, \
181 size)
182
183#define YAML_FIELD_INT(owner, member) \
184 CYAML_FIELD_INT (#member, CYAML_FLAG_DEFAULT, owner, member)
185
186#define YAML_FIELD_INT_OPT(owner, member) \
187 CYAML_FIELD_INT ( \
188 #member, CYAML_FLAG_OPTIONAL, owner, member)
189
190#define YAML_FIELD_UINT(owner, member) \
191 CYAML_FIELD_UINT ( \
192 #member, CYAML_FLAG_DEFAULT, owner, member)
193
194#define YAML_FIELD_FLOAT(owner, member) \
195 CYAML_FIELD_FLOAT ( \
196 #member, CYAML_FLAG_DEFAULT, owner, member)
197
198#define YAML_FIELD_STRING_PTR(owner, member) \
199 CYAML_FIELD_STRING_PTR ( \
200 #member, CYAML_FLAG_POINTER, owner, member, 0, \
201 CYAML_UNLIMITED)
202
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)
207
208#define YAML_FIELD_ENUM(owner, member, strings) \
209 CYAML_FIELD_ENUM ( \
210 #member, CYAML_FLAG_DEFAULT, owner, member, strings, \
211 CYAML_ARRAY_LEN (strings))
212
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))
217
221#define YAML_VALUE_PTR(cc, fields_schema) \
222 CYAML_VALUE_MAPPING (CYAML_FLAG_POINTER, cc, fields_schema)
223
228#define YAML_VALUE_PTR_NULLABLE(cc, fields_schema) \
229 CYAML_VALUE_MAPPING ( \
230 CYAML_FLAG_POINTER_NULL_STR, cc, fields_schema)
231
238#define YAML_VALUE_DEFAULT(cc, fields_schema) \
239 CYAML_VALUE_MAPPING (CYAML_FLAG_DEFAULT, cc, fields_schema)
240
241#define YAML_BITVAL(_name, _offset) \
242 { \
243 .name = _name, .offset = _offset, .bits = 1 \
244 }
245
252NONNULL_ARGS (1, 2)
254 void * data,
255 const cyaml_schema_value_t * schema,
256 GError ** error);
257
258NONNULL_ARGS (1, 2)
259void * yaml_deserialize (
260 const char * yaml,
261 const cyaml_schema_value_t * schema,
262 GError ** error);
263
264NONNULL void
265yaml_print (void * data, const cyaml_schema_value_t * schema);
266
270void
272 cyaml_log_t level,
273 void * ctxt,
274 const char * format,
275 va_list args);
276
277void
278yaml_set_log_level (cyaml_log_t level);
279
280void
281yaml_get_cyaml_config (cyaml_config_t * cyaml_config);
282
283static const cyaml_schema_value_t int_schema = {
284 CYAML_VALUE_INT (CYAML_FLAG_DEFAULT, int),
285};
286
287static const cyaml_schema_value_t unsigned_int_schema = {
288 CYAML_VALUE_UINT (CYAML_FLAG_DEFAULT, unsigned int),
289};
290
291static const cyaml_schema_value_t uint8_t_schema = {
292 CYAML_VALUE_UINT (CYAML_FLAG_DEFAULT, typeof (uint8_t)),
293};
294
295static const cyaml_schema_value_t float_schema = {
296 CYAML_VALUE_FLOAT (CYAML_FLAG_DEFAULT, typeof (float)),
297};
298
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),
304
305 CYAML_FIELD_END
306};
307
308static const cyaml_schema_value_t gdk_rgba_schema_default = {
309 YAML_VALUE_DEFAULT (GdkRGBA, gdk_rgba_fields_schema),
310};
311
312static const cyaml_schema_value_t gdk_rgba_schema = {
313 YAML_VALUE_PTR (GdkRGBA, gdk_rgba_fields_schema),
314};
315
316typedef enum YamlDummyEnum
317{
318 YAML_DUMMY_ENUM1,
319} YamlDummyEnum;
320
325#endif
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).
Definition yaml.h:238
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.
Definition yaml.h:221
void yaml_cyaml_log_func(cyaml_log_t level, void *ctxt, const char *format, va_list args)
Custom logging function for libcyaml.