1*0f5c86ddSBaptiste Daroussin
2*0f5c86ddSBaptiste Daroussin #include <yaml.h>
3*0f5c86ddSBaptiste Daroussin
4*0f5c86ddSBaptiste Daroussin #include <stdlib.h>
5*0f5c86ddSBaptiste Daroussin #include <stdio.h>
6*0f5c86ddSBaptiste Daroussin
7*0f5c86ddSBaptiste Daroussin int
main(int argc,char * argv[])8*0f5c86ddSBaptiste Daroussin main(int argc, char *argv[])
9*0f5c86ddSBaptiste Daroussin {
10*0f5c86ddSBaptiste Daroussin int help = 0;
11*0f5c86ddSBaptiste Daroussin int canonical = 0;
12*0f5c86ddSBaptiste Daroussin int unicode = 0;
13*0f5c86ddSBaptiste Daroussin int k;
14*0f5c86ddSBaptiste Daroussin int done = 0;
15*0f5c86ddSBaptiste Daroussin
16*0f5c86ddSBaptiste Daroussin yaml_parser_t parser;
17*0f5c86ddSBaptiste Daroussin yaml_emitter_t emitter;
18*0f5c86ddSBaptiste Daroussin yaml_event_t input_event;
19*0f5c86ddSBaptiste Daroussin yaml_document_t output_document;
20*0f5c86ddSBaptiste Daroussin
21*0f5c86ddSBaptiste Daroussin int root;
22*0f5c86ddSBaptiste Daroussin
23*0f5c86ddSBaptiste Daroussin /* Clear the objects. */
24*0f5c86ddSBaptiste Daroussin
25*0f5c86ddSBaptiste Daroussin memset(&parser, 0, sizeof(parser));
26*0f5c86ddSBaptiste Daroussin memset(&emitter, 0, sizeof(emitter));
27*0f5c86ddSBaptiste Daroussin memset(&input_event, 0, sizeof(input_event));
28*0f5c86ddSBaptiste Daroussin memset(&output_document, 0, sizeof(output_document));
29*0f5c86ddSBaptiste Daroussin
30*0f5c86ddSBaptiste Daroussin /* Analyze command line options. */
31*0f5c86ddSBaptiste Daroussin
32*0f5c86ddSBaptiste Daroussin for (k = 1; k < argc; k ++)
33*0f5c86ddSBaptiste Daroussin {
34*0f5c86ddSBaptiste Daroussin if (strcmp(argv[k], "-h") == 0
35*0f5c86ddSBaptiste Daroussin || strcmp(argv[k], "--help") == 0) {
36*0f5c86ddSBaptiste Daroussin help = 1;
37*0f5c86ddSBaptiste Daroussin }
38*0f5c86ddSBaptiste Daroussin
39*0f5c86ddSBaptiste Daroussin else if (strcmp(argv[k], "-c") == 0
40*0f5c86ddSBaptiste Daroussin || strcmp(argv[k], "--canonical") == 0) {
41*0f5c86ddSBaptiste Daroussin canonical = 1;
42*0f5c86ddSBaptiste Daroussin }
43*0f5c86ddSBaptiste Daroussin
44*0f5c86ddSBaptiste Daroussin else if (strcmp(argv[k], "-u") == 0
45*0f5c86ddSBaptiste Daroussin || strcmp(argv[k], "--unicode") == 0) {
46*0f5c86ddSBaptiste Daroussin unicode = 1;
47*0f5c86ddSBaptiste Daroussin }
48*0f5c86ddSBaptiste Daroussin
49*0f5c86ddSBaptiste Daroussin else {
50*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Unrecognized option: %s\n"
51*0f5c86ddSBaptiste Daroussin "Try `%s --help` for more information.\n",
52*0f5c86ddSBaptiste Daroussin argv[k], argv[0]);
53*0f5c86ddSBaptiste Daroussin return 1;
54*0f5c86ddSBaptiste Daroussin }
55*0f5c86ddSBaptiste Daroussin }
56*0f5c86ddSBaptiste Daroussin
57*0f5c86ddSBaptiste Daroussin /* Display the help string. */
58*0f5c86ddSBaptiste Daroussin
59*0f5c86ddSBaptiste Daroussin if (help)
60*0f5c86ddSBaptiste Daroussin {
61*0f5c86ddSBaptiste Daroussin printf("%s <input\n"
62*0f5c86ddSBaptiste Daroussin "or\n%s -h | --help\nDeconstruct a YAML stream\n\nOptions:\n"
63*0f5c86ddSBaptiste Daroussin "-h, --help\t\tdisplay this help and exit\n"
64*0f5c86ddSBaptiste Daroussin "-c, --canonical\t\toutput in the canonical YAML format\n"
65*0f5c86ddSBaptiste Daroussin "-u, --unicode\t\toutput unescaped non-ASCII characters\n",
66*0f5c86ddSBaptiste Daroussin argv[0], argv[0]);
67*0f5c86ddSBaptiste Daroussin return 0;
68*0f5c86ddSBaptiste Daroussin }
69*0f5c86ddSBaptiste Daroussin
70*0f5c86ddSBaptiste Daroussin /* Initialize the parser and emitter objects. */
71*0f5c86ddSBaptiste Daroussin
72*0f5c86ddSBaptiste Daroussin if (!yaml_parser_initialize(&parser)) {
73*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Could not initialize the parser object\n");
74*0f5c86ddSBaptiste Daroussin return 1;
75*0f5c86ddSBaptiste Daroussin }
76*0f5c86ddSBaptiste Daroussin
77*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_initialize(&emitter)) {
78*0f5c86ddSBaptiste Daroussin yaml_parser_delete(&parser);
79*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Could not inialize the emitter object\n");
80*0f5c86ddSBaptiste Daroussin return 1;
81*0f5c86ddSBaptiste Daroussin }
82*0f5c86ddSBaptiste Daroussin
83*0f5c86ddSBaptiste Daroussin /* Set the parser parameters. */
84*0f5c86ddSBaptiste Daroussin
85*0f5c86ddSBaptiste Daroussin yaml_parser_set_input_file(&parser, stdin);
86*0f5c86ddSBaptiste Daroussin
87*0f5c86ddSBaptiste Daroussin /* Set the emitter parameters. */
88*0f5c86ddSBaptiste Daroussin
89*0f5c86ddSBaptiste Daroussin yaml_emitter_set_output_file(&emitter, stdout);
90*0f5c86ddSBaptiste Daroussin
91*0f5c86ddSBaptiste Daroussin yaml_emitter_set_canonical(&emitter, canonical);
92*0f5c86ddSBaptiste Daroussin yaml_emitter_set_unicode(&emitter, unicode);
93*0f5c86ddSBaptiste Daroussin
94*0f5c86ddSBaptiste Daroussin /* Create and emit the STREAM-START event. */
95*0f5c86ddSBaptiste Daroussin
96*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_open(&emitter))
97*0f5c86ddSBaptiste Daroussin goto emitter_error;
98*0f5c86ddSBaptiste Daroussin
99*0f5c86ddSBaptiste Daroussin /* Create a output_document object. */
100*0f5c86ddSBaptiste Daroussin
101*0f5c86ddSBaptiste Daroussin if (!yaml_document_initialize(&output_document, NULL, NULL, NULL, 0, 0))
102*0f5c86ddSBaptiste Daroussin goto document_error;
103*0f5c86ddSBaptiste Daroussin
104*0f5c86ddSBaptiste Daroussin /* Create the root sequence. */
105*0f5c86ddSBaptiste Daroussin
106*0f5c86ddSBaptiste Daroussin root = yaml_document_add_sequence(&output_document, NULL,
107*0f5c86ddSBaptiste Daroussin YAML_BLOCK_SEQUENCE_STYLE);
108*0f5c86ddSBaptiste Daroussin if (!root) goto document_error;
109*0f5c86ddSBaptiste Daroussin
110*0f5c86ddSBaptiste Daroussin /* Loop through the input events. */
111*0f5c86ddSBaptiste Daroussin
112*0f5c86ddSBaptiste Daroussin while (!done)
113*0f5c86ddSBaptiste Daroussin {
114*0f5c86ddSBaptiste Daroussin int properties, key, value, map, seq;
115*0f5c86ddSBaptiste Daroussin
116*0f5c86ddSBaptiste Daroussin /* Get the next event. */
117*0f5c86ddSBaptiste Daroussin
118*0f5c86ddSBaptiste Daroussin if (!yaml_parser_parse(&parser, &input_event))
119*0f5c86ddSBaptiste Daroussin goto parser_error;
120*0f5c86ddSBaptiste Daroussin
121*0f5c86ddSBaptiste Daroussin /* Check if this is the stream end. */
122*0f5c86ddSBaptiste Daroussin
123*0f5c86ddSBaptiste Daroussin if (input_event.type == YAML_STREAM_END_EVENT) {
124*0f5c86ddSBaptiste Daroussin done = 1;
125*0f5c86ddSBaptiste Daroussin }
126*0f5c86ddSBaptiste Daroussin
127*0f5c86ddSBaptiste Daroussin /* Create a mapping node and attach it to the root sequence. */
128*0f5c86ddSBaptiste Daroussin
129*0f5c86ddSBaptiste Daroussin properties = yaml_document_add_mapping(&output_document, NULL,
130*0f5c86ddSBaptiste Daroussin YAML_BLOCK_MAPPING_STYLE);
131*0f5c86ddSBaptiste Daroussin if (!properties) goto document_error;
132*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_sequence_item(&output_document,
133*0f5c86ddSBaptiste Daroussin root, properties)) goto document_error;
134*0f5c86ddSBaptiste Daroussin
135*0f5c86ddSBaptiste Daroussin /* Analyze the event. */
136*0f5c86ddSBaptiste Daroussin
137*0f5c86ddSBaptiste Daroussin switch (input_event.type)
138*0f5c86ddSBaptiste Daroussin {
139*0f5c86ddSBaptiste Daroussin case YAML_STREAM_START_EVENT:
140*0f5c86ddSBaptiste Daroussin
141*0f5c86ddSBaptiste Daroussin /* Add 'type': 'STREAM-START'. */
142*0f5c86ddSBaptiste Daroussin
143*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
144*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"type", -1, YAML_PLAIN_SCALAR_STYLE);
145*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
146*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
147*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"STREAM-START", -1, YAML_PLAIN_SCALAR_STYLE);
148*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
149*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
150*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
151*0f5c86ddSBaptiste Daroussin
152*0f5c86ddSBaptiste Daroussin /* Add 'encoding': <encoding>. */
153*0f5c86ddSBaptiste Daroussin
154*0f5c86ddSBaptiste Daroussin if (input_event.data.stream_start.encoding)
155*0f5c86ddSBaptiste Daroussin {
156*0f5c86ddSBaptiste Daroussin yaml_encoding_t encoding
157*0f5c86ddSBaptiste Daroussin = input_event.data.stream_start.encoding;
158*0f5c86ddSBaptiste Daroussin
159*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
160*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"encoding", -1, YAML_PLAIN_SCALAR_STYLE);
161*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
162*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
163*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(encoding == YAML_UTF8_ENCODING ? "utf-8" :
164*0f5c86ddSBaptiste Daroussin encoding == YAML_UTF16LE_ENCODING ? "utf-16-le" :
165*0f5c86ddSBaptiste Daroussin encoding == YAML_UTF16BE_ENCODING ? "utf-16-be" :
166*0f5c86ddSBaptiste Daroussin "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
167*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
168*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
169*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
170*0f5c86ddSBaptiste Daroussin }
171*0f5c86ddSBaptiste Daroussin
172*0f5c86ddSBaptiste Daroussin break;
173*0f5c86ddSBaptiste Daroussin
174*0f5c86ddSBaptiste Daroussin case YAML_STREAM_END_EVENT:
175*0f5c86ddSBaptiste Daroussin
176*0f5c86ddSBaptiste Daroussin /* Add 'type': 'STREAM-END'. */
177*0f5c86ddSBaptiste Daroussin
178*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
179*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"type", -1, YAML_PLAIN_SCALAR_STYLE);
180*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
181*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
182*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"STREAM-END", -1, YAML_PLAIN_SCALAR_STYLE);
183*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
184*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
185*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
186*0f5c86ddSBaptiste Daroussin
187*0f5c86ddSBaptiste Daroussin break;
188*0f5c86ddSBaptiste Daroussin
189*0f5c86ddSBaptiste Daroussin case YAML_DOCUMENT_START_EVENT:
190*0f5c86ddSBaptiste Daroussin
191*0f5c86ddSBaptiste Daroussin /* Add 'type': 'DOCUMENT-START'. */
192*0f5c86ddSBaptiste Daroussin
193*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
194*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"type", -1, YAML_PLAIN_SCALAR_STYLE);
195*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
196*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
197*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"DOCUMENT-START", -1, YAML_PLAIN_SCALAR_STYLE);
198*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
199*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
200*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
201*0f5c86ddSBaptiste Daroussin
202*0f5c86ddSBaptiste Daroussin /* Display the output_document version numbers. */
203*0f5c86ddSBaptiste Daroussin
204*0f5c86ddSBaptiste Daroussin if (input_event.data.document_start.version_directive)
205*0f5c86ddSBaptiste Daroussin {
206*0f5c86ddSBaptiste Daroussin yaml_version_directive_t *version
207*0f5c86ddSBaptiste Daroussin = input_event.data.document_start.version_directive;
208*0f5c86ddSBaptiste Daroussin char number[64];
209*0f5c86ddSBaptiste Daroussin
210*0f5c86ddSBaptiste Daroussin /* Add 'version': {}. */
211*0f5c86ddSBaptiste Daroussin
212*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
213*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"version", -1, YAML_PLAIN_SCALAR_STYLE);
214*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
215*0f5c86ddSBaptiste Daroussin map = yaml_document_add_mapping(&output_document, NULL,
216*0f5c86ddSBaptiste Daroussin YAML_FLOW_MAPPING_STYLE);
217*0f5c86ddSBaptiste Daroussin if (!map) goto document_error;
218*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
219*0f5c86ddSBaptiste Daroussin properties, key, map)) goto document_error;
220*0f5c86ddSBaptiste Daroussin
221*0f5c86ddSBaptiste Daroussin /* Add 'major': <number>. */
222*0f5c86ddSBaptiste Daroussin
223*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
224*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"major", -1, YAML_PLAIN_SCALAR_STYLE);
225*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
226*0f5c86ddSBaptiste Daroussin sprintf(number, "%d", version->major);
227*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, (yaml_char_t *)YAML_INT_TAG,
228*0f5c86ddSBaptiste Daroussin (yaml_char_t *)number, -1, YAML_PLAIN_SCALAR_STYLE);
229*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
230*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
231*0f5c86ddSBaptiste Daroussin map, key, value)) goto document_error;
232*0f5c86ddSBaptiste Daroussin
233*0f5c86ddSBaptiste Daroussin /* Add 'minor': <number>. */
234*0f5c86ddSBaptiste Daroussin
235*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
236*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"minor", -1, YAML_PLAIN_SCALAR_STYLE);
237*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
238*0f5c86ddSBaptiste Daroussin sprintf(number, "%d", version->minor);
239*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, (yaml_char_t *)YAML_INT_TAG,
240*0f5c86ddSBaptiste Daroussin (yaml_char_t *)number, -1, YAML_PLAIN_SCALAR_STYLE);
241*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
242*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
243*0f5c86ddSBaptiste Daroussin map, key, value)) goto document_error;
244*0f5c86ddSBaptiste Daroussin }
245*0f5c86ddSBaptiste Daroussin
246*0f5c86ddSBaptiste Daroussin /* Display the output_document tag directives. */
247*0f5c86ddSBaptiste Daroussin
248*0f5c86ddSBaptiste Daroussin if (input_event.data.document_start.tag_directives.start
249*0f5c86ddSBaptiste Daroussin != input_event.data.document_start.tag_directives.end)
250*0f5c86ddSBaptiste Daroussin {
251*0f5c86ddSBaptiste Daroussin yaml_tag_directive_t *tag;
252*0f5c86ddSBaptiste Daroussin
253*0f5c86ddSBaptiste Daroussin /* Add 'tags': []. */
254*0f5c86ddSBaptiste Daroussin
255*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
256*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"tags", -1, YAML_PLAIN_SCALAR_STYLE);
257*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
258*0f5c86ddSBaptiste Daroussin seq = yaml_document_add_sequence(&output_document, NULL,
259*0f5c86ddSBaptiste Daroussin YAML_BLOCK_SEQUENCE_STYLE);
260*0f5c86ddSBaptiste Daroussin if (!seq) goto document_error;
261*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
262*0f5c86ddSBaptiste Daroussin properties, key, seq)) goto document_error;
263*0f5c86ddSBaptiste Daroussin
264*0f5c86ddSBaptiste Daroussin for (tag = input_event.data.document_start.tag_directives.start;
265*0f5c86ddSBaptiste Daroussin tag != input_event.data.document_start.tag_directives.end;
266*0f5c86ddSBaptiste Daroussin tag ++)
267*0f5c86ddSBaptiste Daroussin {
268*0f5c86ddSBaptiste Daroussin /* Add {}. */
269*0f5c86ddSBaptiste Daroussin
270*0f5c86ddSBaptiste Daroussin map = yaml_document_add_mapping(&output_document, NULL,
271*0f5c86ddSBaptiste Daroussin YAML_FLOW_MAPPING_STYLE);
272*0f5c86ddSBaptiste Daroussin if (!map) goto document_error;
273*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_sequence_item(&output_document,
274*0f5c86ddSBaptiste Daroussin seq, map)) goto document_error;
275*0f5c86ddSBaptiste Daroussin
276*0f5c86ddSBaptiste Daroussin /* Add 'handle': <handle>. */
277*0f5c86ddSBaptiste Daroussin
278*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
279*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"handle", -1, YAML_PLAIN_SCALAR_STYLE);
280*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
281*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
282*0f5c86ddSBaptiste Daroussin tag->handle, -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
283*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
284*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
285*0f5c86ddSBaptiste Daroussin map, key, value)) goto document_error;
286*0f5c86ddSBaptiste Daroussin
287*0f5c86ddSBaptiste Daroussin /* Add 'prefix': <prefix>. */
288*0f5c86ddSBaptiste Daroussin
289*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
290*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"prefix", -1, YAML_PLAIN_SCALAR_STYLE);
291*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
292*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
293*0f5c86ddSBaptiste Daroussin tag->prefix, -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
294*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
295*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
296*0f5c86ddSBaptiste Daroussin map, key, value)) goto document_error;
297*0f5c86ddSBaptiste Daroussin }
298*0f5c86ddSBaptiste Daroussin }
299*0f5c86ddSBaptiste Daroussin
300*0f5c86ddSBaptiste Daroussin /* Add 'implicit': <flag>. */
301*0f5c86ddSBaptiste Daroussin
302*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
303*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"implicit", -1, YAML_PLAIN_SCALAR_STYLE);
304*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
305*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, (yaml_char_t *)YAML_BOOL_TAG,
306*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.document_start.implicit ?
307*0f5c86ddSBaptiste Daroussin "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
308*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
309*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
310*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
311*0f5c86ddSBaptiste Daroussin
312*0f5c86ddSBaptiste Daroussin break;
313*0f5c86ddSBaptiste Daroussin
314*0f5c86ddSBaptiste Daroussin case YAML_DOCUMENT_END_EVENT:
315*0f5c86ddSBaptiste Daroussin
316*0f5c86ddSBaptiste Daroussin /* Add 'type': 'DOCUMENT-END'. */
317*0f5c86ddSBaptiste Daroussin
318*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
319*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"type", -1, YAML_PLAIN_SCALAR_STYLE);
320*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
321*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
322*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"DOCUMENT-END", -1, YAML_PLAIN_SCALAR_STYLE);
323*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
324*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
325*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
326*0f5c86ddSBaptiste Daroussin
327*0f5c86ddSBaptiste Daroussin /* Add 'implicit': <flag>. */
328*0f5c86ddSBaptiste Daroussin
329*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
330*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"implicit", -1, YAML_PLAIN_SCALAR_STYLE);
331*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
332*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, (yaml_char_t *)YAML_BOOL_TAG,
333*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.document_end.implicit ?
334*0f5c86ddSBaptiste Daroussin "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
335*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
336*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
337*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
338*0f5c86ddSBaptiste Daroussin
339*0f5c86ddSBaptiste Daroussin break;
340*0f5c86ddSBaptiste Daroussin
341*0f5c86ddSBaptiste Daroussin case YAML_ALIAS_EVENT:
342*0f5c86ddSBaptiste Daroussin
343*0f5c86ddSBaptiste Daroussin /* Add 'type': 'ALIAS'. */
344*0f5c86ddSBaptiste Daroussin
345*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
346*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"type", -1, YAML_PLAIN_SCALAR_STYLE);
347*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
348*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
349*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"ALIAS", -1, YAML_PLAIN_SCALAR_STYLE);
350*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
351*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
352*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
353*0f5c86ddSBaptiste Daroussin
354*0f5c86ddSBaptiste Daroussin /* Add 'anchor': <anchor>. */
355*0f5c86ddSBaptiste Daroussin
356*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
357*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"anchor", -1, YAML_PLAIN_SCALAR_STYLE);
358*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
359*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
360*0f5c86ddSBaptiste Daroussin input_event.data.alias.anchor, -1,
361*0f5c86ddSBaptiste Daroussin YAML_DOUBLE_QUOTED_SCALAR_STYLE);
362*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
363*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
364*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
365*0f5c86ddSBaptiste Daroussin
366*0f5c86ddSBaptiste Daroussin break;
367*0f5c86ddSBaptiste Daroussin
368*0f5c86ddSBaptiste Daroussin case YAML_SCALAR_EVENT:
369*0f5c86ddSBaptiste Daroussin
370*0f5c86ddSBaptiste Daroussin /* Add 'type': 'SCALAR'. */
371*0f5c86ddSBaptiste Daroussin
372*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
373*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"type", -1, YAML_PLAIN_SCALAR_STYLE);
374*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
375*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
376*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"SCALAR", -1, YAML_PLAIN_SCALAR_STYLE);
377*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
378*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
379*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
380*0f5c86ddSBaptiste Daroussin
381*0f5c86ddSBaptiste Daroussin /* Add 'anchor': <anchor>. */
382*0f5c86ddSBaptiste Daroussin
383*0f5c86ddSBaptiste Daroussin if (input_event.data.scalar.anchor)
384*0f5c86ddSBaptiste Daroussin {
385*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
386*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"anchor", -1, YAML_PLAIN_SCALAR_STYLE);
387*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
388*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
389*0f5c86ddSBaptiste Daroussin input_event.data.scalar.anchor, -1,
390*0f5c86ddSBaptiste Daroussin YAML_DOUBLE_QUOTED_SCALAR_STYLE);
391*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
392*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
393*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
394*0f5c86ddSBaptiste Daroussin }
395*0f5c86ddSBaptiste Daroussin
396*0f5c86ddSBaptiste Daroussin /* Add 'tag': <tag>. */
397*0f5c86ddSBaptiste Daroussin
398*0f5c86ddSBaptiste Daroussin if (input_event.data.scalar.tag)
399*0f5c86ddSBaptiste Daroussin {
400*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
401*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"tag", -1, YAML_PLAIN_SCALAR_STYLE);
402*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
403*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
404*0f5c86ddSBaptiste Daroussin input_event.data.scalar.tag, -1,
405*0f5c86ddSBaptiste Daroussin YAML_DOUBLE_QUOTED_SCALAR_STYLE);
406*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
407*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
408*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
409*0f5c86ddSBaptiste Daroussin }
410*0f5c86ddSBaptiste Daroussin
411*0f5c86ddSBaptiste Daroussin /* Add 'value': <value>. */
412*0f5c86ddSBaptiste Daroussin
413*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
414*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"value", -1, YAML_PLAIN_SCALAR_STYLE);
415*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
416*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
417*0f5c86ddSBaptiste Daroussin input_event.data.scalar.value,
418*0f5c86ddSBaptiste Daroussin input_event.data.scalar.length,
419*0f5c86ddSBaptiste Daroussin YAML_DOUBLE_QUOTED_SCALAR_STYLE);
420*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
421*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
422*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
423*0f5c86ddSBaptiste Daroussin
424*0f5c86ddSBaptiste Daroussin /* Display if the scalar tag is implicit. */
425*0f5c86ddSBaptiste Daroussin
426*0f5c86ddSBaptiste Daroussin /* Add 'implicit': {} */
427*0f5c86ddSBaptiste Daroussin
428*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
429*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"version", -1, YAML_PLAIN_SCALAR_STYLE);
430*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
431*0f5c86ddSBaptiste Daroussin map = yaml_document_add_mapping(&output_document, NULL,
432*0f5c86ddSBaptiste Daroussin YAML_FLOW_MAPPING_STYLE);
433*0f5c86ddSBaptiste Daroussin if (!map) goto document_error;
434*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
435*0f5c86ddSBaptiste Daroussin properties, key, map)) goto document_error;
436*0f5c86ddSBaptiste Daroussin
437*0f5c86ddSBaptiste Daroussin /* Add 'plain': <flag>. */
438*0f5c86ddSBaptiste Daroussin
439*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
440*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"plain", -1, YAML_PLAIN_SCALAR_STYLE);
441*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
442*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, (yaml_char_t *)YAML_BOOL_TAG,
443*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.scalar.plain_implicit ?
444*0f5c86ddSBaptiste Daroussin "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
445*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
446*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
447*0f5c86ddSBaptiste Daroussin map, key, value)) goto document_error;
448*0f5c86ddSBaptiste Daroussin
449*0f5c86ddSBaptiste Daroussin /* Add 'quoted': <flag>. */
450*0f5c86ddSBaptiste Daroussin
451*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
452*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"quoted", -1, YAML_PLAIN_SCALAR_STYLE);
453*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
454*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, (yaml_char_t *)YAML_BOOL_TAG,
455*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.scalar.quoted_implicit ?
456*0f5c86ddSBaptiste Daroussin "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
457*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
458*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
459*0f5c86ddSBaptiste Daroussin map, key, value)) goto document_error;
460*0f5c86ddSBaptiste Daroussin
461*0f5c86ddSBaptiste Daroussin /* Display the style information. */
462*0f5c86ddSBaptiste Daroussin
463*0f5c86ddSBaptiste Daroussin if (input_event.data.scalar.style)
464*0f5c86ddSBaptiste Daroussin {
465*0f5c86ddSBaptiste Daroussin yaml_scalar_style_t style = input_event.data.scalar.style;
466*0f5c86ddSBaptiste Daroussin
467*0f5c86ddSBaptiste Daroussin /* Add 'style': <style>. */
468*0f5c86ddSBaptiste Daroussin
469*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
470*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"style", -1, YAML_PLAIN_SCALAR_STYLE);
471*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
472*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
473*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(style == YAML_PLAIN_SCALAR_STYLE ? "plain" :
474*0f5c86ddSBaptiste Daroussin style == YAML_SINGLE_QUOTED_SCALAR_STYLE ?
475*0f5c86ddSBaptiste Daroussin "single-quoted" :
476*0f5c86ddSBaptiste Daroussin style == YAML_DOUBLE_QUOTED_SCALAR_STYLE ?
477*0f5c86ddSBaptiste Daroussin "double-quoted" :
478*0f5c86ddSBaptiste Daroussin style == YAML_LITERAL_SCALAR_STYLE ? "literal" :
479*0f5c86ddSBaptiste Daroussin style == YAML_FOLDED_SCALAR_STYLE ? "folded" :
480*0f5c86ddSBaptiste Daroussin "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
481*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
482*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
483*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
484*0f5c86ddSBaptiste Daroussin }
485*0f5c86ddSBaptiste Daroussin
486*0f5c86ddSBaptiste Daroussin break;
487*0f5c86ddSBaptiste Daroussin
488*0f5c86ddSBaptiste Daroussin case YAML_SEQUENCE_START_EVENT:
489*0f5c86ddSBaptiste Daroussin
490*0f5c86ddSBaptiste Daroussin /* Add 'type': 'SEQUENCE-START'. */
491*0f5c86ddSBaptiste Daroussin
492*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
493*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"type", -1, YAML_PLAIN_SCALAR_STYLE);
494*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
495*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
496*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"SEQUENCE-START", -1, YAML_PLAIN_SCALAR_STYLE);
497*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
498*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
499*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
500*0f5c86ddSBaptiste Daroussin
501*0f5c86ddSBaptiste Daroussin /* Add 'anchor': <anchor>. */
502*0f5c86ddSBaptiste Daroussin
503*0f5c86ddSBaptiste Daroussin if (input_event.data.sequence_start.anchor)
504*0f5c86ddSBaptiste Daroussin {
505*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
506*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"anchor", -1, YAML_PLAIN_SCALAR_STYLE);
507*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
508*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
509*0f5c86ddSBaptiste Daroussin input_event.data.sequence_start.anchor, -1,
510*0f5c86ddSBaptiste Daroussin YAML_DOUBLE_QUOTED_SCALAR_STYLE);
511*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
512*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
513*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
514*0f5c86ddSBaptiste Daroussin }
515*0f5c86ddSBaptiste Daroussin
516*0f5c86ddSBaptiste Daroussin /* Add 'tag': <tag>. */
517*0f5c86ddSBaptiste Daroussin
518*0f5c86ddSBaptiste Daroussin if (input_event.data.sequence_start.tag)
519*0f5c86ddSBaptiste Daroussin {
520*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
521*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"tag", -1, YAML_PLAIN_SCALAR_STYLE);
522*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
523*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
524*0f5c86ddSBaptiste Daroussin input_event.data.sequence_start.tag, -1,
525*0f5c86ddSBaptiste Daroussin YAML_DOUBLE_QUOTED_SCALAR_STYLE);
526*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
527*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
528*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
529*0f5c86ddSBaptiste Daroussin }
530*0f5c86ddSBaptiste Daroussin
531*0f5c86ddSBaptiste Daroussin /* Add 'implicit': <flag>. */
532*0f5c86ddSBaptiste Daroussin
533*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
534*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"implicit", -1, YAML_PLAIN_SCALAR_STYLE);
535*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
536*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, (yaml_char_t *)YAML_BOOL_TAG,
537*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.sequence_start.implicit ?
538*0f5c86ddSBaptiste Daroussin "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
539*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
540*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
541*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
542*0f5c86ddSBaptiste Daroussin
543*0f5c86ddSBaptiste Daroussin /* Display the style information. */
544*0f5c86ddSBaptiste Daroussin
545*0f5c86ddSBaptiste Daroussin if (input_event.data.sequence_start.style)
546*0f5c86ddSBaptiste Daroussin {
547*0f5c86ddSBaptiste Daroussin yaml_sequence_style_t style
548*0f5c86ddSBaptiste Daroussin = input_event.data.sequence_start.style;
549*0f5c86ddSBaptiste Daroussin
550*0f5c86ddSBaptiste Daroussin /* Add 'style': <style>. */
551*0f5c86ddSBaptiste Daroussin
552*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
553*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"style", -1, YAML_PLAIN_SCALAR_STYLE);
554*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
555*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
556*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(style == YAML_BLOCK_SEQUENCE_STYLE ? "block" :
557*0f5c86ddSBaptiste Daroussin style == YAML_FLOW_SEQUENCE_STYLE ? "flow" :
558*0f5c86ddSBaptiste Daroussin "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
559*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
560*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
561*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
562*0f5c86ddSBaptiste Daroussin }
563*0f5c86ddSBaptiste Daroussin
564*0f5c86ddSBaptiste Daroussin break;
565*0f5c86ddSBaptiste Daroussin
566*0f5c86ddSBaptiste Daroussin case YAML_SEQUENCE_END_EVENT:
567*0f5c86ddSBaptiste Daroussin
568*0f5c86ddSBaptiste Daroussin /* Add 'type': 'SEQUENCE-END'. */
569*0f5c86ddSBaptiste Daroussin
570*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
571*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"type", -1, YAML_PLAIN_SCALAR_STYLE);
572*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
573*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
574*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"SEQUENCE-END", -1, YAML_PLAIN_SCALAR_STYLE);
575*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
576*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
577*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
578*0f5c86ddSBaptiste Daroussin
579*0f5c86ddSBaptiste Daroussin break;
580*0f5c86ddSBaptiste Daroussin
581*0f5c86ddSBaptiste Daroussin case YAML_MAPPING_START_EVENT:
582*0f5c86ddSBaptiste Daroussin
583*0f5c86ddSBaptiste Daroussin /* Add 'type': 'MAPPING-START'. */
584*0f5c86ddSBaptiste Daroussin
585*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
586*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"type", -1, YAML_PLAIN_SCALAR_STYLE);
587*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
588*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
589*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"MAPPING-START", -1, YAML_PLAIN_SCALAR_STYLE);
590*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
591*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
592*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
593*0f5c86ddSBaptiste Daroussin
594*0f5c86ddSBaptiste Daroussin /* Add 'anchor': <anchor>. */
595*0f5c86ddSBaptiste Daroussin
596*0f5c86ddSBaptiste Daroussin if (input_event.data.mapping_start.anchor)
597*0f5c86ddSBaptiste Daroussin {
598*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
599*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"anchor", -1, YAML_PLAIN_SCALAR_STYLE);
600*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
601*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
602*0f5c86ddSBaptiste Daroussin input_event.data.mapping_start.anchor, -1,
603*0f5c86ddSBaptiste Daroussin YAML_DOUBLE_QUOTED_SCALAR_STYLE);
604*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
605*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
606*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
607*0f5c86ddSBaptiste Daroussin }
608*0f5c86ddSBaptiste Daroussin
609*0f5c86ddSBaptiste Daroussin /* Add 'tag': <tag>. */
610*0f5c86ddSBaptiste Daroussin
611*0f5c86ddSBaptiste Daroussin if (input_event.data.mapping_start.tag)
612*0f5c86ddSBaptiste Daroussin {
613*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
614*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"tag", -1, YAML_PLAIN_SCALAR_STYLE);
615*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
616*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
617*0f5c86ddSBaptiste Daroussin input_event.data.mapping_start.tag, -1,
618*0f5c86ddSBaptiste Daroussin YAML_DOUBLE_QUOTED_SCALAR_STYLE);
619*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
620*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
621*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
622*0f5c86ddSBaptiste Daroussin }
623*0f5c86ddSBaptiste Daroussin
624*0f5c86ddSBaptiste Daroussin /* Add 'implicit': <flag>. */
625*0f5c86ddSBaptiste Daroussin
626*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
627*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"implicit", -1, YAML_PLAIN_SCALAR_STYLE);
628*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
629*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, (yaml_char_t *)YAML_BOOL_TAG,
630*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.mapping_start.implicit ?
631*0f5c86ddSBaptiste Daroussin "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
632*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
633*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
634*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
635*0f5c86ddSBaptiste Daroussin
636*0f5c86ddSBaptiste Daroussin /* Display the style information. */
637*0f5c86ddSBaptiste Daroussin
638*0f5c86ddSBaptiste Daroussin if (input_event.data.mapping_start.style)
639*0f5c86ddSBaptiste Daroussin {
640*0f5c86ddSBaptiste Daroussin yaml_mapping_style_t style
641*0f5c86ddSBaptiste Daroussin = input_event.data.mapping_start.style;
642*0f5c86ddSBaptiste Daroussin
643*0f5c86ddSBaptiste Daroussin /* Add 'style': <style>. */
644*0f5c86ddSBaptiste Daroussin
645*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
646*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"style", -1, YAML_PLAIN_SCALAR_STYLE);
647*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
648*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
649*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(style == YAML_BLOCK_MAPPING_STYLE ? "block" :
650*0f5c86ddSBaptiste Daroussin style == YAML_FLOW_MAPPING_STYLE ? "flow" :
651*0f5c86ddSBaptiste Daroussin "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
652*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
653*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
654*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
655*0f5c86ddSBaptiste Daroussin }
656*0f5c86ddSBaptiste Daroussin
657*0f5c86ddSBaptiste Daroussin break;
658*0f5c86ddSBaptiste Daroussin
659*0f5c86ddSBaptiste Daroussin case YAML_MAPPING_END_EVENT:
660*0f5c86ddSBaptiste Daroussin
661*0f5c86ddSBaptiste Daroussin /* Add 'type': 'MAPPING-END'. */
662*0f5c86ddSBaptiste Daroussin
663*0f5c86ddSBaptiste Daroussin key = yaml_document_add_scalar(&output_document, NULL,
664*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"type", -1, YAML_PLAIN_SCALAR_STYLE);
665*0f5c86ddSBaptiste Daroussin if (!key) goto document_error;
666*0f5c86ddSBaptiste Daroussin value = yaml_document_add_scalar(&output_document, NULL,
667*0f5c86ddSBaptiste Daroussin (yaml_char_t *)"MAPPING-END", -1, YAML_PLAIN_SCALAR_STYLE);
668*0f5c86ddSBaptiste Daroussin if (!value) goto document_error;
669*0f5c86ddSBaptiste Daroussin if (!yaml_document_append_mapping_pair(&output_document,
670*0f5c86ddSBaptiste Daroussin properties, key, value)) goto document_error;
671*0f5c86ddSBaptiste Daroussin
672*0f5c86ddSBaptiste Daroussin break;
673*0f5c86ddSBaptiste Daroussin
674*0f5c86ddSBaptiste Daroussin default:
675*0f5c86ddSBaptiste Daroussin /* It couldn't really happen. */
676*0f5c86ddSBaptiste Daroussin break;
677*0f5c86ddSBaptiste Daroussin }
678*0f5c86ddSBaptiste Daroussin
679*0f5c86ddSBaptiste Daroussin /* Delete the event object. */
680*0f5c86ddSBaptiste Daroussin
681*0f5c86ddSBaptiste Daroussin yaml_event_delete(&input_event);
682*0f5c86ddSBaptiste Daroussin }
683*0f5c86ddSBaptiste Daroussin
684*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_dump(&emitter, &output_document))
685*0f5c86ddSBaptiste Daroussin goto emitter_error;
686*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_close(&emitter))
687*0f5c86ddSBaptiste Daroussin goto emitter_error;
688*0f5c86ddSBaptiste Daroussin
689*0f5c86ddSBaptiste Daroussin yaml_parser_delete(&parser);
690*0f5c86ddSBaptiste Daroussin yaml_emitter_delete(&emitter);
691*0f5c86ddSBaptiste Daroussin
692*0f5c86ddSBaptiste Daroussin return 0;
693*0f5c86ddSBaptiste Daroussin
694*0f5c86ddSBaptiste Daroussin parser_error:
695*0f5c86ddSBaptiste Daroussin
696*0f5c86ddSBaptiste Daroussin /* Display a parser error message. */
697*0f5c86ddSBaptiste Daroussin
698*0f5c86ddSBaptiste Daroussin switch (parser.error)
699*0f5c86ddSBaptiste Daroussin {
700*0f5c86ddSBaptiste Daroussin case YAML_MEMORY_ERROR:
701*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Memory error: Not enough memory for parsing\n");
702*0f5c86ddSBaptiste Daroussin break;
703*0f5c86ddSBaptiste Daroussin
704*0f5c86ddSBaptiste Daroussin case YAML_READER_ERROR:
705*0f5c86ddSBaptiste Daroussin if (parser.problem_value != -1) {
706*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Reader error: %s: #%X at %zd\n", parser.problem,
707*0f5c86ddSBaptiste Daroussin parser.problem_value, parser.problem_offset);
708*0f5c86ddSBaptiste Daroussin }
709*0f5c86ddSBaptiste Daroussin else {
710*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Reader error: %s at %zd\n", parser.problem,
711*0f5c86ddSBaptiste Daroussin parser.problem_offset);
712*0f5c86ddSBaptiste Daroussin }
713*0f5c86ddSBaptiste Daroussin break;
714*0f5c86ddSBaptiste Daroussin
715*0f5c86ddSBaptiste Daroussin case YAML_SCANNER_ERROR:
716*0f5c86ddSBaptiste Daroussin if (parser.context) {
717*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Scanner error: %s at line %lu, column %lu\n"
718*0f5c86ddSBaptiste Daroussin "%s at line %lu, column %lu\n", parser.context,
719*0f5c86ddSBaptiste Daroussin parser.context_mark.line+1, parser.context_mark.column+1,
720*0f5c86ddSBaptiste Daroussin parser.problem, parser.problem_mark.line+1,
721*0f5c86ddSBaptiste Daroussin parser.problem_mark.column+1);
722*0f5c86ddSBaptiste Daroussin }
723*0f5c86ddSBaptiste Daroussin else {
724*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Scanner error: %s at line %lu, column %lu\n",
725*0f5c86ddSBaptiste Daroussin parser.problem, parser.problem_mark.line+1,
726*0f5c86ddSBaptiste Daroussin parser.problem_mark.column+1);
727*0f5c86ddSBaptiste Daroussin }
728*0f5c86ddSBaptiste Daroussin break;
729*0f5c86ddSBaptiste Daroussin
730*0f5c86ddSBaptiste Daroussin case YAML_PARSER_ERROR:
731*0f5c86ddSBaptiste Daroussin if (parser.context) {
732*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Parser error: %s at line %lu, column %lu\n"
733*0f5c86ddSBaptiste Daroussin "%s at line %lu, column %lu\n", parser.context,
734*0f5c86ddSBaptiste Daroussin parser.context_mark.line+1, parser.context_mark.column+1,
735*0f5c86ddSBaptiste Daroussin parser.problem, parser.problem_mark.line+1,
736*0f5c86ddSBaptiste Daroussin parser.problem_mark.column+1);
737*0f5c86ddSBaptiste Daroussin }
738*0f5c86ddSBaptiste Daroussin else {
739*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Parser error: %s at line %lu, column %lu\n",
740*0f5c86ddSBaptiste Daroussin parser.problem, parser.problem_mark.line+1,
741*0f5c86ddSBaptiste Daroussin parser.problem_mark.column+1);
742*0f5c86ddSBaptiste Daroussin }
743*0f5c86ddSBaptiste Daroussin break;
744*0f5c86ddSBaptiste Daroussin
745*0f5c86ddSBaptiste Daroussin default:
746*0f5c86ddSBaptiste Daroussin /* Couldn't happen. */
747*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Internal error\n");
748*0f5c86ddSBaptiste Daroussin break;
749*0f5c86ddSBaptiste Daroussin }
750*0f5c86ddSBaptiste Daroussin
751*0f5c86ddSBaptiste Daroussin yaml_event_delete(&input_event);
752*0f5c86ddSBaptiste Daroussin yaml_document_delete(&output_document);
753*0f5c86ddSBaptiste Daroussin yaml_parser_delete(&parser);
754*0f5c86ddSBaptiste Daroussin yaml_emitter_delete(&emitter);
755*0f5c86ddSBaptiste Daroussin
756*0f5c86ddSBaptiste Daroussin return 1;
757*0f5c86ddSBaptiste Daroussin
758*0f5c86ddSBaptiste Daroussin emitter_error:
759*0f5c86ddSBaptiste Daroussin
760*0f5c86ddSBaptiste Daroussin /* Display an emitter error message. */
761*0f5c86ddSBaptiste Daroussin
762*0f5c86ddSBaptiste Daroussin switch (emitter.error)
763*0f5c86ddSBaptiste Daroussin {
764*0f5c86ddSBaptiste Daroussin case YAML_MEMORY_ERROR:
765*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Memory error: Not enough memory for emitting\n");
766*0f5c86ddSBaptiste Daroussin break;
767*0f5c86ddSBaptiste Daroussin
768*0f5c86ddSBaptiste Daroussin case YAML_WRITER_ERROR:
769*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Writer error: %s\n", emitter.problem);
770*0f5c86ddSBaptiste Daroussin break;
771*0f5c86ddSBaptiste Daroussin
772*0f5c86ddSBaptiste Daroussin case YAML_EMITTER_ERROR:
773*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Emitter error: %s\n", emitter.problem);
774*0f5c86ddSBaptiste Daroussin break;
775*0f5c86ddSBaptiste Daroussin
776*0f5c86ddSBaptiste Daroussin default:
777*0f5c86ddSBaptiste Daroussin /* Couldn't happen. */
778*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Internal error\n");
779*0f5c86ddSBaptiste Daroussin break;
780*0f5c86ddSBaptiste Daroussin }
781*0f5c86ddSBaptiste Daroussin
782*0f5c86ddSBaptiste Daroussin yaml_event_delete(&input_event);
783*0f5c86ddSBaptiste Daroussin yaml_document_delete(&output_document);
784*0f5c86ddSBaptiste Daroussin yaml_parser_delete(&parser);
785*0f5c86ddSBaptiste Daroussin yaml_emitter_delete(&emitter);
786*0f5c86ddSBaptiste Daroussin
787*0f5c86ddSBaptiste Daroussin return 1;
788*0f5c86ddSBaptiste Daroussin
789*0f5c86ddSBaptiste Daroussin document_error:
790*0f5c86ddSBaptiste Daroussin
791*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Memory error: Not enough memory for creating a document\n");
792*0f5c86ddSBaptiste Daroussin
793*0f5c86ddSBaptiste Daroussin yaml_event_delete(&input_event);
794*0f5c86ddSBaptiste Daroussin yaml_document_delete(&output_document);
795*0f5c86ddSBaptiste Daroussin yaml_parser_delete(&parser);
796*0f5c86ddSBaptiste Daroussin yaml_emitter_delete(&emitter);
797*0f5c86ddSBaptiste Daroussin
798*0f5c86ddSBaptiste Daroussin return 1;
799*0f5c86ddSBaptiste Daroussin }
800*0f5c86ddSBaptiste Daroussin
801