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_event_t output_event;
20*0f5c86ddSBaptiste Daroussin
21*0f5c86ddSBaptiste Daroussin /* Clear the objects. */
22*0f5c86ddSBaptiste Daroussin
23*0f5c86ddSBaptiste Daroussin memset(&parser, 0, sizeof(parser));
24*0f5c86ddSBaptiste Daroussin memset(&emitter, 0, sizeof(emitter));
25*0f5c86ddSBaptiste Daroussin memset(&input_event, 0, sizeof(input_event));
26*0f5c86ddSBaptiste Daroussin memset(&output_event, 0, sizeof(output_event));
27*0f5c86ddSBaptiste Daroussin
28*0f5c86ddSBaptiste Daroussin /* Analyze command line options. */
29*0f5c86ddSBaptiste Daroussin
30*0f5c86ddSBaptiste Daroussin for (k = 1; k < argc; k ++)
31*0f5c86ddSBaptiste Daroussin {
32*0f5c86ddSBaptiste Daroussin if (strcmp(argv[k], "-h") == 0
33*0f5c86ddSBaptiste Daroussin || strcmp(argv[k], "--help") == 0) {
34*0f5c86ddSBaptiste Daroussin help = 1;
35*0f5c86ddSBaptiste Daroussin }
36*0f5c86ddSBaptiste Daroussin
37*0f5c86ddSBaptiste Daroussin else if (strcmp(argv[k], "-c") == 0
38*0f5c86ddSBaptiste Daroussin || strcmp(argv[k], "--canonical") == 0) {
39*0f5c86ddSBaptiste Daroussin canonical = 1;
40*0f5c86ddSBaptiste Daroussin }
41*0f5c86ddSBaptiste Daroussin
42*0f5c86ddSBaptiste Daroussin else if (strcmp(argv[k], "-u") == 0
43*0f5c86ddSBaptiste Daroussin || strcmp(argv[k], "--unicode") == 0) {
44*0f5c86ddSBaptiste Daroussin unicode = 1;
45*0f5c86ddSBaptiste Daroussin }
46*0f5c86ddSBaptiste Daroussin
47*0f5c86ddSBaptiste Daroussin else {
48*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Unrecognized option: %s\n"
49*0f5c86ddSBaptiste Daroussin "Try `%s --help` for more information.\n",
50*0f5c86ddSBaptiste Daroussin argv[k], argv[0]);
51*0f5c86ddSBaptiste Daroussin return 1;
52*0f5c86ddSBaptiste Daroussin }
53*0f5c86ddSBaptiste Daroussin }
54*0f5c86ddSBaptiste Daroussin
55*0f5c86ddSBaptiste Daroussin /* Display the help string. */
56*0f5c86ddSBaptiste Daroussin
57*0f5c86ddSBaptiste Daroussin if (help)
58*0f5c86ddSBaptiste Daroussin {
59*0f5c86ddSBaptiste Daroussin printf("%s <input\n"
60*0f5c86ddSBaptiste Daroussin "or\n%s -h | --help\nDeconstruct a YAML stream\n\nOptions:\n"
61*0f5c86ddSBaptiste Daroussin "-h, --help\t\tdisplay this help and exit\n"
62*0f5c86ddSBaptiste Daroussin "-c, --canonical\t\toutput in the canonical YAML format\n"
63*0f5c86ddSBaptiste Daroussin "-u, --unicode\t\toutput unescaped non-ASCII characters\n",
64*0f5c86ddSBaptiste Daroussin argv[0], argv[0]);
65*0f5c86ddSBaptiste Daroussin return 0;
66*0f5c86ddSBaptiste Daroussin }
67*0f5c86ddSBaptiste Daroussin
68*0f5c86ddSBaptiste Daroussin /* Initialize the parser and emitter objects. */
69*0f5c86ddSBaptiste Daroussin
70*0f5c86ddSBaptiste Daroussin if (!yaml_parser_initialize(&parser)) {
71*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Could not initialize the parser object\n");
72*0f5c86ddSBaptiste Daroussin return 1;
73*0f5c86ddSBaptiste Daroussin }
74*0f5c86ddSBaptiste Daroussin
75*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_initialize(&emitter)) {
76*0f5c86ddSBaptiste Daroussin yaml_parser_delete(&parser);
77*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Could not inialize the emitter object\n");
78*0f5c86ddSBaptiste Daroussin return 1;
79*0f5c86ddSBaptiste Daroussin }
80*0f5c86ddSBaptiste Daroussin
81*0f5c86ddSBaptiste Daroussin /* Set the parser parameters. */
82*0f5c86ddSBaptiste Daroussin
83*0f5c86ddSBaptiste Daroussin yaml_parser_set_input_file(&parser, stdin);
84*0f5c86ddSBaptiste Daroussin
85*0f5c86ddSBaptiste Daroussin /* Set the emitter parameters. */
86*0f5c86ddSBaptiste Daroussin
87*0f5c86ddSBaptiste Daroussin yaml_emitter_set_output_file(&emitter, stdout);
88*0f5c86ddSBaptiste Daroussin
89*0f5c86ddSBaptiste Daroussin yaml_emitter_set_canonical(&emitter, canonical);
90*0f5c86ddSBaptiste Daroussin yaml_emitter_set_unicode(&emitter, unicode);
91*0f5c86ddSBaptiste Daroussin
92*0f5c86ddSBaptiste Daroussin /* Create and emit the STREAM-START event. */
93*0f5c86ddSBaptiste Daroussin
94*0f5c86ddSBaptiste Daroussin if (!yaml_stream_start_event_initialize(&output_event, YAML_UTF8_ENCODING))
95*0f5c86ddSBaptiste Daroussin goto event_error;
96*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
97*0f5c86ddSBaptiste Daroussin goto emitter_error;
98*0f5c86ddSBaptiste Daroussin
99*0f5c86ddSBaptiste Daroussin /* Create and emit the DOCUMENT-START event. */
100*0f5c86ddSBaptiste Daroussin
101*0f5c86ddSBaptiste Daroussin if (!yaml_document_start_event_initialize(&output_event,
102*0f5c86ddSBaptiste Daroussin NULL, NULL, NULL, 0))
103*0f5c86ddSBaptiste Daroussin goto event_error;
104*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
105*0f5c86ddSBaptiste Daroussin goto emitter_error;
106*0f5c86ddSBaptiste Daroussin
107*0f5c86ddSBaptiste Daroussin /* Create and emit the SEQUENCE-START event. */
108*0f5c86ddSBaptiste Daroussin
109*0f5c86ddSBaptiste Daroussin if (!yaml_sequence_start_event_initialize(&output_event,
110*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:seq", 1,
111*0f5c86ddSBaptiste Daroussin YAML_BLOCK_SEQUENCE_STYLE))
112*0f5c86ddSBaptiste Daroussin goto event_error;
113*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
114*0f5c86ddSBaptiste Daroussin goto emitter_error;
115*0f5c86ddSBaptiste Daroussin
116*0f5c86ddSBaptiste Daroussin /* Loop through the input events. */
117*0f5c86ddSBaptiste Daroussin
118*0f5c86ddSBaptiste Daroussin while (!done)
119*0f5c86ddSBaptiste Daroussin {
120*0f5c86ddSBaptiste Daroussin /* Get the next event. */
121*0f5c86ddSBaptiste Daroussin
122*0f5c86ddSBaptiste Daroussin if (!yaml_parser_parse(&parser, &input_event))
123*0f5c86ddSBaptiste Daroussin goto parser_error;
124*0f5c86ddSBaptiste Daroussin
125*0f5c86ddSBaptiste Daroussin /* Check if this is the stream end. */
126*0f5c86ddSBaptiste Daroussin
127*0f5c86ddSBaptiste Daroussin if (input_event.type == YAML_STREAM_END_EVENT) {
128*0f5c86ddSBaptiste Daroussin done = 1;
129*0f5c86ddSBaptiste Daroussin }
130*0f5c86ddSBaptiste Daroussin
131*0f5c86ddSBaptiste Daroussin /* Create and emit a MAPPING-START event. */
132*0f5c86ddSBaptiste Daroussin
133*0f5c86ddSBaptiste Daroussin if (!yaml_mapping_start_event_initialize(&output_event,
134*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:map", 1,
135*0f5c86ddSBaptiste Daroussin YAML_BLOCK_MAPPING_STYLE))
136*0f5c86ddSBaptiste Daroussin goto event_error;
137*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
138*0f5c86ddSBaptiste Daroussin goto emitter_error;
139*0f5c86ddSBaptiste Daroussin
140*0f5c86ddSBaptiste Daroussin /* Analyze the event. */
141*0f5c86ddSBaptiste Daroussin
142*0f5c86ddSBaptiste Daroussin switch (input_event.type)
143*0f5c86ddSBaptiste Daroussin {
144*0f5c86ddSBaptiste Daroussin case YAML_STREAM_START_EVENT:
145*0f5c86ddSBaptiste Daroussin
146*0f5c86ddSBaptiste Daroussin /* Write 'type'. */
147*0f5c86ddSBaptiste Daroussin
148*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
149*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"type", -1,
150*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
151*0f5c86ddSBaptiste Daroussin goto event_error;
152*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
153*0f5c86ddSBaptiste Daroussin goto emitter_error;
154*0f5c86ddSBaptiste Daroussin
155*0f5c86ddSBaptiste Daroussin /* Write 'STREAM-START'. */
156*0f5c86ddSBaptiste Daroussin
157*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
158*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"STREAM-START", -1,
159*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
160*0f5c86ddSBaptiste Daroussin goto event_error;
161*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
162*0f5c86ddSBaptiste Daroussin goto emitter_error;
163*0f5c86ddSBaptiste Daroussin
164*0f5c86ddSBaptiste Daroussin /* Display encoding information. */
165*0f5c86ddSBaptiste Daroussin
166*0f5c86ddSBaptiste Daroussin if (input_event.data.stream_start.encoding)
167*0f5c86ddSBaptiste Daroussin {
168*0f5c86ddSBaptiste Daroussin yaml_encoding_t encoding
169*0f5c86ddSBaptiste Daroussin = input_event.data.stream_start.encoding;
170*0f5c86ddSBaptiste Daroussin
171*0f5c86ddSBaptiste Daroussin /* Write 'encoding'. */
172*0f5c86ddSBaptiste Daroussin
173*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
174*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"encoding", -1,
175*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
176*0f5c86ddSBaptiste Daroussin goto event_error;
177*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
178*0f5c86ddSBaptiste Daroussin goto emitter_error;
179*0f5c86ddSBaptiste Daroussin
180*0f5c86ddSBaptiste Daroussin /* Write the stream encoding. */
181*0f5c86ddSBaptiste Daroussin
182*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
183*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
184*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(encoding == YAML_UTF8_ENCODING ? "utf-8" :
185*0f5c86ddSBaptiste Daroussin encoding == YAML_UTF16LE_ENCODING ? "utf-16-le" :
186*0f5c86ddSBaptiste Daroussin encoding == YAML_UTF16BE_ENCODING ? "utf-16-be" :
187*0f5c86ddSBaptiste Daroussin "unknown"), -1,
188*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
189*0f5c86ddSBaptiste Daroussin goto event_error;
190*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
191*0f5c86ddSBaptiste Daroussin goto emitter_error;
192*0f5c86ddSBaptiste Daroussin }
193*0f5c86ddSBaptiste Daroussin
194*0f5c86ddSBaptiste Daroussin break;
195*0f5c86ddSBaptiste Daroussin
196*0f5c86ddSBaptiste Daroussin case YAML_STREAM_END_EVENT:
197*0f5c86ddSBaptiste Daroussin
198*0f5c86ddSBaptiste Daroussin /* Write 'type'. */
199*0f5c86ddSBaptiste Daroussin
200*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
201*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"type", -1,
202*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
203*0f5c86ddSBaptiste Daroussin goto event_error;
204*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
205*0f5c86ddSBaptiste Daroussin goto emitter_error;
206*0f5c86ddSBaptiste Daroussin
207*0f5c86ddSBaptiste Daroussin /* Write 'STREAM-END'. */
208*0f5c86ddSBaptiste Daroussin
209*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
210*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"STREAM-END", -1,
211*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
212*0f5c86ddSBaptiste Daroussin goto event_error;
213*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
214*0f5c86ddSBaptiste Daroussin goto emitter_error;
215*0f5c86ddSBaptiste Daroussin
216*0f5c86ddSBaptiste Daroussin break;
217*0f5c86ddSBaptiste Daroussin
218*0f5c86ddSBaptiste Daroussin case YAML_DOCUMENT_START_EVENT:
219*0f5c86ddSBaptiste Daroussin
220*0f5c86ddSBaptiste Daroussin /* Write 'type'. */
221*0f5c86ddSBaptiste Daroussin
222*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
223*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"type", -1,
224*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
225*0f5c86ddSBaptiste Daroussin goto event_error;
226*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
227*0f5c86ddSBaptiste Daroussin goto emitter_error;
228*0f5c86ddSBaptiste Daroussin
229*0f5c86ddSBaptiste Daroussin /* Write 'DOCUMENT-START'. */
230*0f5c86ddSBaptiste Daroussin
231*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
232*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"DOCUMENT-START", -1,
233*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
234*0f5c86ddSBaptiste Daroussin goto event_error;
235*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
236*0f5c86ddSBaptiste Daroussin goto emitter_error;
237*0f5c86ddSBaptiste Daroussin
238*0f5c86ddSBaptiste Daroussin /* Display the document version numbers. */
239*0f5c86ddSBaptiste Daroussin
240*0f5c86ddSBaptiste Daroussin if (input_event.data.document_start.version_directive)
241*0f5c86ddSBaptiste Daroussin {
242*0f5c86ddSBaptiste Daroussin yaml_version_directive_t *version
243*0f5c86ddSBaptiste Daroussin = input_event.data.document_start.version_directive;
244*0f5c86ddSBaptiste Daroussin char number[64];
245*0f5c86ddSBaptiste Daroussin
246*0f5c86ddSBaptiste Daroussin /* Write 'version'. */
247*0f5c86ddSBaptiste Daroussin
248*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
249*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"version", -1,
250*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
251*0f5c86ddSBaptiste Daroussin goto event_error;
252*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
253*0f5c86ddSBaptiste Daroussin goto emitter_error;
254*0f5c86ddSBaptiste Daroussin
255*0f5c86ddSBaptiste Daroussin /* Write '{'. */
256*0f5c86ddSBaptiste Daroussin
257*0f5c86ddSBaptiste Daroussin if (!yaml_mapping_start_event_initialize(&output_event,
258*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:map", 1,
259*0f5c86ddSBaptiste Daroussin YAML_FLOW_MAPPING_STYLE))
260*0f5c86ddSBaptiste Daroussin goto event_error;
261*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
262*0f5c86ddSBaptiste Daroussin goto emitter_error;
263*0f5c86ddSBaptiste Daroussin
264*0f5c86ddSBaptiste Daroussin /* Write 'major'. */
265*0f5c86ddSBaptiste Daroussin
266*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
267*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"major", -1,
268*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
269*0f5c86ddSBaptiste Daroussin goto event_error;
270*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
271*0f5c86ddSBaptiste Daroussin goto emitter_error;
272*0f5c86ddSBaptiste Daroussin
273*0f5c86ddSBaptiste Daroussin /* Write a number. */
274*0f5c86ddSBaptiste Daroussin
275*0f5c86ddSBaptiste Daroussin sprintf(number, "%d", version->major);
276*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
277*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:int", (yaml_char_t *)number, -1,
278*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
279*0f5c86ddSBaptiste Daroussin goto event_error;
280*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
281*0f5c86ddSBaptiste Daroussin goto emitter_error;
282*0f5c86ddSBaptiste Daroussin
283*0f5c86ddSBaptiste Daroussin /* Write 'minor'. */
284*0f5c86ddSBaptiste Daroussin
285*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
286*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"minor", -1,
287*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
288*0f5c86ddSBaptiste Daroussin goto event_error;
289*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
290*0f5c86ddSBaptiste Daroussin goto emitter_error;
291*0f5c86ddSBaptiste Daroussin
292*0f5c86ddSBaptiste Daroussin /* Write a number. */
293*0f5c86ddSBaptiste Daroussin
294*0f5c86ddSBaptiste Daroussin sprintf(number, "%d", version->minor);
295*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
296*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:int", (yaml_char_t *)number, -1,
297*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
298*0f5c86ddSBaptiste Daroussin goto event_error;
299*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
300*0f5c86ddSBaptiste Daroussin goto emitter_error;
301*0f5c86ddSBaptiste Daroussin
302*0f5c86ddSBaptiste Daroussin /* Write '}'. */
303*0f5c86ddSBaptiste Daroussin
304*0f5c86ddSBaptiste Daroussin if (!yaml_mapping_end_event_initialize(&output_event))
305*0f5c86ddSBaptiste Daroussin goto event_error;
306*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
307*0f5c86ddSBaptiste Daroussin goto emitter_error;
308*0f5c86ddSBaptiste Daroussin }
309*0f5c86ddSBaptiste Daroussin
310*0f5c86ddSBaptiste Daroussin /* Display the document tag directives. */
311*0f5c86ddSBaptiste Daroussin
312*0f5c86ddSBaptiste Daroussin if (input_event.data.document_start.tag_directives.start
313*0f5c86ddSBaptiste Daroussin != input_event.data.document_start.tag_directives.end)
314*0f5c86ddSBaptiste Daroussin {
315*0f5c86ddSBaptiste Daroussin yaml_tag_directive_t *tag;
316*0f5c86ddSBaptiste Daroussin
317*0f5c86ddSBaptiste Daroussin /* Write 'tags'. */
318*0f5c86ddSBaptiste Daroussin
319*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
320*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"tags", -1,
321*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
322*0f5c86ddSBaptiste Daroussin goto event_error;
323*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
324*0f5c86ddSBaptiste Daroussin goto emitter_error;
325*0f5c86ddSBaptiste Daroussin
326*0f5c86ddSBaptiste Daroussin /* Start a block sequence. */
327*0f5c86ddSBaptiste Daroussin
328*0f5c86ddSBaptiste Daroussin if (!yaml_sequence_start_event_initialize(&output_event,
329*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:seq", 1,
330*0f5c86ddSBaptiste Daroussin YAML_BLOCK_SEQUENCE_STYLE))
331*0f5c86ddSBaptiste Daroussin goto event_error;
332*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
333*0f5c86ddSBaptiste Daroussin goto emitter_error;
334*0f5c86ddSBaptiste Daroussin
335*0f5c86ddSBaptiste Daroussin for (tag = input_event.data.document_start.tag_directives.start;
336*0f5c86ddSBaptiste Daroussin tag != input_event.data.document_start.tag_directives.end;
337*0f5c86ddSBaptiste Daroussin tag ++)
338*0f5c86ddSBaptiste Daroussin {
339*0f5c86ddSBaptiste Daroussin /* Write '{'. */
340*0f5c86ddSBaptiste Daroussin
341*0f5c86ddSBaptiste Daroussin if (!yaml_mapping_start_event_initialize(&output_event,
342*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:map", 1,
343*0f5c86ddSBaptiste Daroussin YAML_FLOW_MAPPING_STYLE))
344*0f5c86ddSBaptiste Daroussin goto event_error;
345*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
346*0f5c86ddSBaptiste Daroussin goto emitter_error;
347*0f5c86ddSBaptiste Daroussin
348*0f5c86ddSBaptiste Daroussin /* Write 'handle'. */
349*0f5c86ddSBaptiste Daroussin
350*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
351*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"handle", -1,
352*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
353*0f5c86ddSBaptiste Daroussin goto event_error;
354*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
355*0f5c86ddSBaptiste Daroussin goto emitter_error;
356*0f5c86ddSBaptiste Daroussin
357*0f5c86ddSBaptiste Daroussin /* Write the tag directive handle. */
358*0f5c86ddSBaptiste Daroussin
359*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
360*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
361*0f5c86ddSBaptiste Daroussin tag->handle, -1,
362*0f5c86ddSBaptiste Daroussin 0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
363*0f5c86ddSBaptiste Daroussin goto event_error;
364*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
365*0f5c86ddSBaptiste Daroussin goto emitter_error;
366*0f5c86ddSBaptiste Daroussin
367*0f5c86ddSBaptiste Daroussin /* Write 'prefix'. */
368*0f5c86ddSBaptiste Daroussin
369*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
370*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"prefix", -1,
371*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
372*0f5c86ddSBaptiste Daroussin goto event_error;
373*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
374*0f5c86ddSBaptiste Daroussin goto emitter_error;
375*0f5c86ddSBaptiste Daroussin
376*0f5c86ddSBaptiste Daroussin /* Write the tag directive prefix. */
377*0f5c86ddSBaptiste Daroussin
378*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
379*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
380*0f5c86ddSBaptiste Daroussin tag->prefix, -1,
381*0f5c86ddSBaptiste Daroussin 0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
382*0f5c86ddSBaptiste Daroussin goto event_error;
383*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
384*0f5c86ddSBaptiste Daroussin goto emitter_error;
385*0f5c86ddSBaptiste Daroussin
386*0f5c86ddSBaptiste Daroussin /* Write '}'. */
387*0f5c86ddSBaptiste Daroussin
388*0f5c86ddSBaptiste Daroussin if (!yaml_mapping_end_event_initialize(&output_event))
389*0f5c86ddSBaptiste Daroussin goto event_error;
390*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
391*0f5c86ddSBaptiste Daroussin goto emitter_error;
392*0f5c86ddSBaptiste Daroussin }
393*0f5c86ddSBaptiste Daroussin
394*0f5c86ddSBaptiste Daroussin /* End a block sequence. */
395*0f5c86ddSBaptiste Daroussin
396*0f5c86ddSBaptiste Daroussin if (!yaml_sequence_end_event_initialize(&output_event))
397*0f5c86ddSBaptiste Daroussin goto event_error;
398*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
399*0f5c86ddSBaptiste Daroussin goto emitter_error;
400*0f5c86ddSBaptiste Daroussin }
401*0f5c86ddSBaptiste Daroussin
402*0f5c86ddSBaptiste Daroussin /* Write 'implicit'. */
403*0f5c86ddSBaptiste Daroussin
404*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
405*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"implicit", -1,
406*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
407*0f5c86ddSBaptiste Daroussin goto event_error;
408*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
409*0f5c86ddSBaptiste Daroussin goto emitter_error;
410*0f5c86ddSBaptiste Daroussin
411*0f5c86ddSBaptiste Daroussin /* Write if the document is implicit. */
412*0f5c86ddSBaptiste Daroussin
413*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
414*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
415*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.document_start.implicit ?
416*0f5c86ddSBaptiste Daroussin "true" : "false"), -1,
417*0f5c86ddSBaptiste Daroussin 1, 0, YAML_PLAIN_SCALAR_STYLE))
418*0f5c86ddSBaptiste Daroussin goto event_error;
419*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
420*0f5c86ddSBaptiste Daroussin goto emitter_error;
421*0f5c86ddSBaptiste Daroussin
422*0f5c86ddSBaptiste Daroussin break;
423*0f5c86ddSBaptiste Daroussin
424*0f5c86ddSBaptiste Daroussin case YAML_DOCUMENT_END_EVENT:
425*0f5c86ddSBaptiste Daroussin
426*0f5c86ddSBaptiste Daroussin /* Write 'type'. */
427*0f5c86ddSBaptiste Daroussin
428*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
429*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"type", -1,
430*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
431*0f5c86ddSBaptiste Daroussin goto event_error;
432*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
433*0f5c86ddSBaptiste Daroussin goto emitter_error;
434*0f5c86ddSBaptiste Daroussin
435*0f5c86ddSBaptiste Daroussin /* Write 'DOCUMENT-END'. */
436*0f5c86ddSBaptiste Daroussin
437*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
438*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"DOCUMENT-END", -1,
439*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
440*0f5c86ddSBaptiste Daroussin goto event_error;
441*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
442*0f5c86ddSBaptiste Daroussin goto emitter_error;
443*0f5c86ddSBaptiste Daroussin
444*0f5c86ddSBaptiste Daroussin /* Write 'implicit'. */
445*0f5c86ddSBaptiste Daroussin
446*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
447*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"implicit", -1,
448*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
449*0f5c86ddSBaptiste Daroussin goto event_error;
450*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
451*0f5c86ddSBaptiste Daroussin goto emitter_error;
452*0f5c86ddSBaptiste Daroussin
453*0f5c86ddSBaptiste Daroussin /* Write if the document is implicit. */
454*0f5c86ddSBaptiste Daroussin
455*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
456*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
457*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.document_end.implicit ?
458*0f5c86ddSBaptiste Daroussin "true" : "false"), -1,
459*0f5c86ddSBaptiste Daroussin 1, 0, YAML_PLAIN_SCALAR_STYLE))
460*0f5c86ddSBaptiste Daroussin goto event_error;
461*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
462*0f5c86ddSBaptiste Daroussin goto emitter_error;
463*0f5c86ddSBaptiste Daroussin
464*0f5c86ddSBaptiste Daroussin break;
465*0f5c86ddSBaptiste Daroussin
466*0f5c86ddSBaptiste Daroussin case YAML_ALIAS_EVENT:
467*0f5c86ddSBaptiste Daroussin
468*0f5c86ddSBaptiste Daroussin /* Write 'type'. */
469*0f5c86ddSBaptiste Daroussin
470*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
471*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"type", -1,
472*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
473*0f5c86ddSBaptiste Daroussin goto event_error;
474*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
475*0f5c86ddSBaptiste Daroussin goto emitter_error;
476*0f5c86ddSBaptiste Daroussin
477*0f5c86ddSBaptiste Daroussin /* Write 'ALIAS'. */
478*0f5c86ddSBaptiste Daroussin
479*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
480*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"ALIAS", -1,
481*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
482*0f5c86ddSBaptiste Daroussin goto event_error;
483*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
484*0f5c86ddSBaptiste Daroussin goto emitter_error;
485*0f5c86ddSBaptiste Daroussin
486*0f5c86ddSBaptiste Daroussin /* Write 'anchor'. */
487*0f5c86ddSBaptiste Daroussin
488*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
489*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"anchor", -1,
490*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
491*0f5c86ddSBaptiste Daroussin goto event_error;
492*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
493*0f5c86ddSBaptiste Daroussin goto emitter_error;
494*0f5c86ddSBaptiste Daroussin
495*0f5c86ddSBaptiste Daroussin /* Write the alias anchor. */
496*0f5c86ddSBaptiste Daroussin
497*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
498*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
499*0f5c86ddSBaptiste Daroussin input_event.data.alias.anchor, -1,
500*0f5c86ddSBaptiste Daroussin 0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
501*0f5c86ddSBaptiste Daroussin goto event_error;
502*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
503*0f5c86ddSBaptiste Daroussin goto emitter_error;
504*0f5c86ddSBaptiste Daroussin
505*0f5c86ddSBaptiste Daroussin break;
506*0f5c86ddSBaptiste Daroussin
507*0f5c86ddSBaptiste Daroussin case YAML_SCALAR_EVENT:
508*0f5c86ddSBaptiste Daroussin
509*0f5c86ddSBaptiste Daroussin /* Write 'type'. */
510*0f5c86ddSBaptiste Daroussin
511*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
512*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"type", -1,
513*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
514*0f5c86ddSBaptiste Daroussin goto event_error;
515*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
516*0f5c86ddSBaptiste Daroussin goto emitter_error;
517*0f5c86ddSBaptiste Daroussin
518*0f5c86ddSBaptiste Daroussin /* Write 'SCALAR'. */
519*0f5c86ddSBaptiste Daroussin
520*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
521*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"SCALAR", -1,
522*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
523*0f5c86ddSBaptiste Daroussin goto event_error;
524*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
525*0f5c86ddSBaptiste Daroussin goto emitter_error;
526*0f5c86ddSBaptiste Daroussin
527*0f5c86ddSBaptiste Daroussin /* Display the scalar anchor. */
528*0f5c86ddSBaptiste Daroussin
529*0f5c86ddSBaptiste Daroussin if (input_event.data.scalar.anchor)
530*0f5c86ddSBaptiste Daroussin {
531*0f5c86ddSBaptiste Daroussin /* Write 'anchor'. */
532*0f5c86ddSBaptiste Daroussin
533*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
534*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"anchor", -1,
535*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
536*0f5c86ddSBaptiste Daroussin goto event_error;
537*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
538*0f5c86ddSBaptiste Daroussin goto emitter_error;
539*0f5c86ddSBaptiste Daroussin
540*0f5c86ddSBaptiste Daroussin /* Write the scalar anchor. */
541*0f5c86ddSBaptiste Daroussin
542*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
543*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
544*0f5c86ddSBaptiste Daroussin input_event.data.scalar.anchor, -1,
545*0f5c86ddSBaptiste Daroussin 0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
546*0f5c86ddSBaptiste Daroussin goto event_error;
547*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
548*0f5c86ddSBaptiste Daroussin goto emitter_error;
549*0f5c86ddSBaptiste Daroussin }
550*0f5c86ddSBaptiste Daroussin
551*0f5c86ddSBaptiste Daroussin /* Display the scalar tag. */
552*0f5c86ddSBaptiste Daroussin
553*0f5c86ddSBaptiste Daroussin if (input_event.data.scalar.tag)
554*0f5c86ddSBaptiste Daroussin {
555*0f5c86ddSBaptiste Daroussin /* Write 'tag'. */
556*0f5c86ddSBaptiste Daroussin
557*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
558*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"tag", -1,
559*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
560*0f5c86ddSBaptiste Daroussin goto event_error;
561*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
562*0f5c86ddSBaptiste Daroussin goto emitter_error;
563*0f5c86ddSBaptiste Daroussin
564*0f5c86ddSBaptiste Daroussin /* Write the scalar tag. */
565*0f5c86ddSBaptiste Daroussin
566*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
567*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
568*0f5c86ddSBaptiste Daroussin input_event.data.scalar.tag, -1,
569*0f5c86ddSBaptiste Daroussin 0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
570*0f5c86ddSBaptiste Daroussin goto event_error;
571*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
572*0f5c86ddSBaptiste Daroussin goto emitter_error;
573*0f5c86ddSBaptiste Daroussin }
574*0f5c86ddSBaptiste Daroussin
575*0f5c86ddSBaptiste Daroussin /* Display the scalar value. */
576*0f5c86ddSBaptiste Daroussin
577*0f5c86ddSBaptiste Daroussin /* Write 'value'. */
578*0f5c86ddSBaptiste Daroussin
579*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
580*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"value", -1,
581*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
582*0f5c86ddSBaptiste Daroussin goto event_error;
583*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
584*0f5c86ddSBaptiste Daroussin goto emitter_error;
585*0f5c86ddSBaptiste Daroussin
586*0f5c86ddSBaptiste Daroussin /* Write the scalar value. */
587*0f5c86ddSBaptiste Daroussin
588*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
589*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
590*0f5c86ddSBaptiste Daroussin input_event.data.scalar.value,
591*0f5c86ddSBaptiste Daroussin input_event.data.scalar.length,
592*0f5c86ddSBaptiste Daroussin 0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
593*0f5c86ddSBaptiste Daroussin goto event_error;
594*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
595*0f5c86ddSBaptiste Daroussin goto emitter_error;
596*0f5c86ddSBaptiste Daroussin
597*0f5c86ddSBaptiste Daroussin /* Display if the scalar tag is implicit. */
598*0f5c86ddSBaptiste Daroussin
599*0f5c86ddSBaptiste Daroussin /* Write 'implicit'. */
600*0f5c86ddSBaptiste Daroussin
601*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
602*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"implicit", -1,
603*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
604*0f5c86ddSBaptiste Daroussin goto event_error;
605*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
606*0f5c86ddSBaptiste Daroussin goto emitter_error;
607*0f5c86ddSBaptiste Daroussin
608*0f5c86ddSBaptiste Daroussin /* Write '{'. */
609*0f5c86ddSBaptiste Daroussin
610*0f5c86ddSBaptiste Daroussin if (!yaml_mapping_start_event_initialize(&output_event,
611*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:map", 1,
612*0f5c86ddSBaptiste Daroussin YAML_FLOW_MAPPING_STYLE))
613*0f5c86ddSBaptiste Daroussin goto event_error;
614*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
615*0f5c86ddSBaptiste Daroussin goto emitter_error;
616*0f5c86ddSBaptiste Daroussin
617*0f5c86ddSBaptiste Daroussin /* Write 'plain'. */
618*0f5c86ddSBaptiste Daroussin
619*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
620*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"plain", -1,
621*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
622*0f5c86ddSBaptiste Daroussin goto event_error;
623*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
624*0f5c86ddSBaptiste Daroussin goto emitter_error;
625*0f5c86ddSBaptiste Daroussin
626*0f5c86ddSBaptiste Daroussin /* Write if the scalar is implicit in the plain style. */
627*0f5c86ddSBaptiste Daroussin
628*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
629*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
630*0f5c86ddSBaptiste Daroussin (yaml_char_t * )(input_event.data.scalar.plain_implicit ?
631*0f5c86ddSBaptiste Daroussin "true" : "false"), -1,
632*0f5c86ddSBaptiste Daroussin 1, 0, YAML_PLAIN_SCALAR_STYLE))
633*0f5c86ddSBaptiste Daroussin goto event_error;
634*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
635*0f5c86ddSBaptiste Daroussin goto emitter_error;
636*0f5c86ddSBaptiste Daroussin
637*0f5c86ddSBaptiste Daroussin /* Write 'quoted'. */
638*0f5c86ddSBaptiste Daroussin
639*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
640*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"non-plain", -1,
641*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
642*0f5c86ddSBaptiste Daroussin goto event_error;
643*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
644*0f5c86ddSBaptiste Daroussin goto emitter_error;
645*0f5c86ddSBaptiste Daroussin
646*0f5c86ddSBaptiste Daroussin /* Write if the scalar is implicit in a non-plain style. */
647*0f5c86ddSBaptiste Daroussin
648*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
649*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
650*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.scalar.quoted_implicit ?
651*0f5c86ddSBaptiste Daroussin "true" : "false"), -1,
652*0f5c86ddSBaptiste Daroussin 1, 0, YAML_PLAIN_SCALAR_STYLE))
653*0f5c86ddSBaptiste Daroussin goto event_error;
654*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
655*0f5c86ddSBaptiste Daroussin goto emitter_error;
656*0f5c86ddSBaptiste Daroussin
657*0f5c86ddSBaptiste Daroussin /* Write '}'. */
658*0f5c86ddSBaptiste Daroussin
659*0f5c86ddSBaptiste Daroussin if (!yaml_mapping_end_event_initialize(&output_event))
660*0f5c86ddSBaptiste Daroussin goto event_error;
661*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
662*0f5c86ddSBaptiste Daroussin goto emitter_error;
663*0f5c86ddSBaptiste Daroussin
664*0f5c86ddSBaptiste Daroussin /* Display the style information. */
665*0f5c86ddSBaptiste Daroussin
666*0f5c86ddSBaptiste Daroussin if (input_event.data.scalar.style)
667*0f5c86ddSBaptiste Daroussin {
668*0f5c86ddSBaptiste Daroussin yaml_scalar_style_t style = input_event.data.scalar.style;
669*0f5c86ddSBaptiste Daroussin
670*0f5c86ddSBaptiste Daroussin /* Write 'style'. */
671*0f5c86ddSBaptiste Daroussin
672*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
673*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"style", -1,
674*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
675*0f5c86ddSBaptiste Daroussin goto event_error;
676*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
677*0f5c86ddSBaptiste Daroussin goto emitter_error;
678*0f5c86ddSBaptiste Daroussin
679*0f5c86ddSBaptiste Daroussin /* Write the scalar style. */
680*0f5c86ddSBaptiste Daroussin
681*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
682*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
683*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(style == YAML_PLAIN_SCALAR_STYLE ? "plain" :
684*0f5c86ddSBaptiste Daroussin style == YAML_SINGLE_QUOTED_SCALAR_STYLE ?
685*0f5c86ddSBaptiste Daroussin "single-quoted" :
686*0f5c86ddSBaptiste Daroussin style == YAML_DOUBLE_QUOTED_SCALAR_STYLE ?
687*0f5c86ddSBaptiste Daroussin "double-quoted" :
688*0f5c86ddSBaptiste Daroussin style == YAML_LITERAL_SCALAR_STYLE ? "literal" :
689*0f5c86ddSBaptiste Daroussin style == YAML_FOLDED_SCALAR_STYLE ? "folded" :
690*0f5c86ddSBaptiste Daroussin "unknown"), -1,
691*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
692*0f5c86ddSBaptiste Daroussin goto event_error;
693*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
694*0f5c86ddSBaptiste Daroussin goto emitter_error;
695*0f5c86ddSBaptiste Daroussin }
696*0f5c86ddSBaptiste Daroussin
697*0f5c86ddSBaptiste Daroussin break;
698*0f5c86ddSBaptiste Daroussin
699*0f5c86ddSBaptiste Daroussin case YAML_SEQUENCE_START_EVENT:
700*0f5c86ddSBaptiste Daroussin
701*0f5c86ddSBaptiste Daroussin /* Write 'type'. */
702*0f5c86ddSBaptiste Daroussin
703*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
704*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"type", -1,
705*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
706*0f5c86ddSBaptiste Daroussin goto event_error;
707*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
708*0f5c86ddSBaptiste Daroussin goto emitter_error;
709*0f5c86ddSBaptiste Daroussin
710*0f5c86ddSBaptiste Daroussin /* Write 'SEQUENCE-START'. */
711*0f5c86ddSBaptiste Daroussin
712*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
713*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"SEQUENCE-START", -1,
714*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
715*0f5c86ddSBaptiste Daroussin goto event_error;
716*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
717*0f5c86ddSBaptiste Daroussin goto emitter_error;
718*0f5c86ddSBaptiste Daroussin
719*0f5c86ddSBaptiste Daroussin /* Display the sequence anchor. */
720*0f5c86ddSBaptiste Daroussin
721*0f5c86ddSBaptiste Daroussin if (input_event.data.sequence_start.anchor)
722*0f5c86ddSBaptiste Daroussin {
723*0f5c86ddSBaptiste Daroussin /* Write 'anchor'. */
724*0f5c86ddSBaptiste Daroussin
725*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
726*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"anchor", -1,
727*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
728*0f5c86ddSBaptiste Daroussin goto event_error;
729*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
730*0f5c86ddSBaptiste Daroussin goto emitter_error;
731*0f5c86ddSBaptiste Daroussin
732*0f5c86ddSBaptiste Daroussin /* Write the sequence anchor. */
733*0f5c86ddSBaptiste Daroussin
734*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
735*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
736*0f5c86ddSBaptiste Daroussin input_event.data.sequence_start.anchor, -1,
737*0f5c86ddSBaptiste Daroussin 0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
738*0f5c86ddSBaptiste Daroussin goto event_error;
739*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
740*0f5c86ddSBaptiste Daroussin goto emitter_error;
741*0f5c86ddSBaptiste Daroussin }
742*0f5c86ddSBaptiste Daroussin
743*0f5c86ddSBaptiste Daroussin /* Display the sequence tag. */
744*0f5c86ddSBaptiste Daroussin
745*0f5c86ddSBaptiste Daroussin if (input_event.data.sequence_start.tag)
746*0f5c86ddSBaptiste Daroussin {
747*0f5c86ddSBaptiste Daroussin /* Write 'tag'. */
748*0f5c86ddSBaptiste Daroussin
749*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
750*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"tag", -1,
751*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
752*0f5c86ddSBaptiste Daroussin goto event_error;
753*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
754*0f5c86ddSBaptiste Daroussin goto emitter_error;
755*0f5c86ddSBaptiste Daroussin
756*0f5c86ddSBaptiste Daroussin /* Write the sequence tag. */
757*0f5c86ddSBaptiste Daroussin
758*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
759*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
760*0f5c86ddSBaptiste Daroussin input_event.data.sequence_start.tag, -1,
761*0f5c86ddSBaptiste Daroussin 0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
762*0f5c86ddSBaptiste Daroussin goto event_error;
763*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
764*0f5c86ddSBaptiste Daroussin goto emitter_error;
765*0f5c86ddSBaptiste Daroussin }
766*0f5c86ddSBaptiste Daroussin
767*0f5c86ddSBaptiste Daroussin /* Write 'implicit'. */
768*0f5c86ddSBaptiste Daroussin
769*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
770*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"implicit", -1,
771*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
772*0f5c86ddSBaptiste Daroussin goto event_error;
773*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
774*0f5c86ddSBaptiste Daroussin goto emitter_error;
775*0f5c86ddSBaptiste Daroussin
776*0f5c86ddSBaptiste Daroussin /* Write if the sequence tag is implicit. */
777*0f5c86ddSBaptiste Daroussin
778*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
779*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
780*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.sequence_start.implicit ?
781*0f5c86ddSBaptiste Daroussin "true" : "false"), -1,
782*0f5c86ddSBaptiste Daroussin 1, 0, YAML_PLAIN_SCALAR_STYLE))
783*0f5c86ddSBaptiste Daroussin goto event_error;
784*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
785*0f5c86ddSBaptiste Daroussin goto emitter_error;
786*0f5c86ddSBaptiste Daroussin
787*0f5c86ddSBaptiste Daroussin /* Display the style information. */
788*0f5c86ddSBaptiste Daroussin
789*0f5c86ddSBaptiste Daroussin if (input_event.data.sequence_start.style)
790*0f5c86ddSBaptiste Daroussin {
791*0f5c86ddSBaptiste Daroussin yaml_sequence_style_t style
792*0f5c86ddSBaptiste Daroussin = input_event.data.sequence_start.style;
793*0f5c86ddSBaptiste Daroussin
794*0f5c86ddSBaptiste Daroussin /* Write 'style'. */
795*0f5c86ddSBaptiste Daroussin
796*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
797*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"style", -1,
798*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
799*0f5c86ddSBaptiste Daroussin goto event_error;
800*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
801*0f5c86ddSBaptiste Daroussin goto emitter_error;
802*0f5c86ddSBaptiste Daroussin
803*0f5c86ddSBaptiste Daroussin /* Write the scalar style. */
804*0f5c86ddSBaptiste Daroussin
805*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
806*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
807*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(style == YAML_BLOCK_SEQUENCE_STYLE ? "block" :
808*0f5c86ddSBaptiste Daroussin style == YAML_FLOW_SEQUENCE_STYLE ? "flow" :
809*0f5c86ddSBaptiste Daroussin "unknown"), -1,
810*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
811*0f5c86ddSBaptiste Daroussin goto event_error;
812*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
813*0f5c86ddSBaptiste Daroussin goto emitter_error;
814*0f5c86ddSBaptiste Daroussin }
815*0f5c86ddSBaptiste Daroussin
816*0f5c86ddSBaptiste Daroussin break;
817*0f5c86ddSBaptiste Daroussin
818*0f5c86ddSBaptiste Daroussin case YAML_SEQUENCE_END_EVENT:
819*0f5c86ddSBaptiste Daroussin
820*0f5c86ddSBaptiste Daroussin /* Write 'type'. */
821*0f5c86ddSBaptiste Daroussin
822*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
823*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"type", -1,
824*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
825*0f5c86ddSBaptiste Daroussin goto event_error;
826*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
827*0f5c86ddSBaptiste Daroussin goto emitter_error;
828*0f5c86ddSBaptiste Daroussin
829*0f5c86ddSBaptiste Daroussin /* Write 'SEQUENCE-END'. */
830*0f5c86ddSBaptiste Daroussin
831*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
832*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"SEQUENCE-END", -1,
833*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
834*0f5c86ddSBaptiste Daroussin goto event_error;
835*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
836*0f5c86ddSBaptiste Daroussin goto emitter_error;
837*0f5c86ddSBaptiste Daroussin
838*0f5c86ddSBaptiste Daroussin break;
839*0f5c86ddSBaptiste Daroussin
840*0f5c86ddSBaptiste Daroussin case YAML_MAPPING_START_EVENT:
841*0f5c86ddSBaptiste Daroussin
842*0f5c86ddSBaptiste Daroussin /* Write 'type'. */
843*0f5c86ddSBaptiste Daroussin
844*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
845*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"type", -1,
846*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
847*0f5c86ddSBaptiste Daroussin goto event_error;
848*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
849*0f5c86ddSBaptiste Daroussin goto emitter_error;
850*0f5c86ddSBaptiste Daroussin
851*0f5c86ddSBaptiste Daroussin /* Write 'MAPPING-START'. */
852*0f5c86ddSBaptiste Daroussin
853*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
854*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"MAPPING-START", -1,
855*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
856*0f5c86ddSBaptiste Daroussin goto event_error;
857*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
858*0f5c86ddSBaptiste Daroussin goto emitter_error;
859*0f5c86ddSBaptiste Daroussin
860*0f5c86ddSBaptiste Daroussin /* Display the mapping anchor. */
861*0f5c86ddSBaptiste Daroussin
862*0f5c86ddSBaptiste Daroussin if (input_event.data.mapping_start.anchor)
863*0f5c86ddSBaptiste Daroussin {
864*0f5c86ddSBaptiste Daroussin /* Write 'anchor'. */
865*0f5c86ddSBaptiste Daroussin
866*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
867*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"anchor", -1,
868*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
869*0f5c86ddSBaptiste Daroussin goto event_error;
870*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
871*0f5c86ddSBaptiste Daroussin goto emitter_error;
872*0f5c86ddSBaptiste Daroussin
873*0f5c86ddSBaptiste Daroussin /* Write the mapping anchor. */
874*0f5c86ddSBaptiste Daroussin
875*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
876*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
877*0f5c86ddSBaptiste Daroussin input_event.data.mapping_start.anchor, -1,
878*0f5c86ddSBaptiste Daroussin 0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
879*0f5c86ddSBaptiste Daroussin goto event_error;
880*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
881*0f5c86ddSBaptiste Daroussin goto emitter_error;
882*0f5c86ddSBaptiste Daroussin }
883*0f5c86ddSBaptiste Daroussin
884*0f5c86ddSBaptiste Daroussin /* Display the mapping tag. */
885*0f5c86ddSBaptiste Daroussin
886*0f5c86ddSBaptiste Daroussin if (input_event.data.mapping_start.tag)
887*0f5c86ddSBaptiste Daroussin {
888*0f5c86ddSBaptiste Daroussin /* Write 'tag'. */
889*0f5c86ddSBaptiste Daroussin
890*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
891*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"tag", -1,
892*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
893*0f5c86ddSBaptiste Daroussin goto event_error;
894*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
895*0f5c86ddSBaptiste Daroussin goto emitter_error;
896*0f5c86ddSBaptiste Daroussin
897*0f5c86ddSBaptiste Daroussin /* Write the mapping tag. */
898*0f5c86ddSBaptiste Daroussin
899*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
900*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
901*0f5c86ddSBaptiste Daroussin input_event.data.mapping_start.tag, -1,
902*0f5c86ddSBaptiste Daroussin 0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
903*0f5c86ddSBaptiste Daroussin goto event_error;
904*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
905*0f5c86ddSBaptiste Daroussin goto emitter_error;
906*0f5c86ddSBaptiste Daroussin }
907*0f5c86ddSBaptiste Daroussin
908*0f5c86ddSBaptiste Daroussin /* Write 'implicit'. */
909*0f5c86ddSBaptiste Daroussin
910*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
911*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"implicit", -1,
912*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
913*0f5c86ddSBaptiste Daroussin goto event_error;
914*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
915*0f5c86ddSBaptiste Daroussin goto emitter_error;
916*0f5c86ddSBaptiste Daroussin
917*0f5c86ddSBaptiste Daroussin /* Write if the mapping tag is implicit. */
918*0f5c86ddSBaptiste Daroussin
919*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
920*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:bool",
921*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(input_event.data.mapping_start.implicit ?
922*0f5c86ddSBaptiste Daroussin "true" : "false"), -1,
923*0f5c86ddSBaptiste Daroussin 1, 0, YAML_PLAIN_SCALAR_STYLE))
924*0f5c86ddSBaptiste Daroussin goto event_error;
925*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
926*0f5c86ddSBaptiste Daroussin goto emitter_error;
927*0f5c86ddSBaptiste Daroussin
928*0f5c86ddSBaptiste Daroussin /* Display the style information. */
929*0f5c86ddSBaptiste Daroussin
930*0f5c86ddSBaptiste Daroussin if (input_event.data.mapping_start.style)
931*0f5c86ddSBaptiste Daroussin {
932*0f5c86ddSBaptiste Daroussin yaml_mapping_style_t style
933*0f5c86ddSBaptiste Daroussin = input_event.data.mapping_start.style;
934*0f5c86ddSBaptiste Daroussin
935*0f5c86ddSBaptiste Daroussin /* Write 'style'. */
936*0f5c86ddSBaptiste Daroussin
937*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
938*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"style", -1,
939*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
940*0f5c86ddSBaptiste Daroussin goto event_error;
941*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
942*0f5c86ddSBaptiste Daroussin goto emitter_error;
943*0f5c86ddSBaptiste Daroussin
944*0f5c86ddSBaptiste Daroussin /* Write the scalar style. */
945*0f5c86ddSBaptiste Daroussin
946*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
947*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str",
948*0f5c86ddSBaptiste Daroussin (yaml_char_t *)(style == YAML_BLOCK_MAPPING_STYLE ? "block" :
949*0f5c86ddSBaptiste Daroussin style == YAML_FLOW_MAPPING_STYLE ? "flow" :
950*0f5c86ddSBaptiste Daroussin "unknown"), -1,
951*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
952*0f5c86ddSBaptiste Daroussin goto event_error;
953*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
954*0f5c86ddSBaptiste Daroussin goto emitter_error;
955*0f5c86ddSBaptiste Daroussin }
956*0f5c86ddSBaptiste Daroussin
957*0f5c86ddSBaptiste Daroussin break;
958*0f5c86ddSBaptiste Daroussin
959*0f5c86ddSBaptiste Daroussin case YAML_MAPPING_END_EVENT:
960*0f5c86ddSBaptiste Daroussin
961*0f5c86ddSBaptiste Daroussin /* Write 'type'. */
962*0f5c86ddSBaptiste Daroussin
963*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
964*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"type", -1,
965*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
966*0f5c86ddSBaptiste Daroussin goto event_error;
967*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
968*0f5c86ddSBaptiste Daroussin goto emitter_error;
969*0f5c86ddSBaptiste Daroussin
970*0f5c86ddSBaptiste Daroussin /* Write 'MAPPING-END'. */
971*0f5c86ddSBaptiste Daroussin
972*0f5c86ddSBaptiste Daroussin if (!yaml_scalar_event_initialize(&output_event,
973*0f5c86ddSBaptiste Daroussin NULL, (yaml_char_t *)"tag:yaml.org,2002:str", (yaml_char_t *)"MAPPING-END", -1,
974*0f5c86ddSBaptiste Daroussin 1, 1, YAML_PLAIN_SCALAR_STYLE))
975*0f5c86ddSBaptiste Daroussin goto event_error;
976*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
977*0f5c86ddSBaptiste Daroussin goto emitter_error;
978*0f5c86ddSBaptiste Daroussin
979*0f5c86ddSBaptiste Daroussin break;
980*0f5c86ddSBaptiste Daroussin
981*0f5c86ddSBaptiste Daroussin default:
982*0f5c86ddSBaptiste Daroussin /* It couldn't really happen. */
983*0f5c86ddSBaptiste Daroussin break;
984*0f5c86ddSBaptiste Daroussin }
985*0f5c86ddSBaptiste Daroussin
986*0f5c86ddSBaptiste Daroussin /* Delete the event object. */
987*0f5c86ddSBaptiste Daroussin
988*0f5c86ddSBaptiste Daroussin yaml_event_delete(&input_event);
989*0f5c86ddSBaptiste Daroussin
990*0f5c86ddSBaptiste Daroussin /* Create and emit a MAPPING-END event. */
991*0f5c86ddSBaptiste Daroussin
992*0f5c86ddSBaptiste Daroussin if (!yaml_mapping_end_event_initialize(&output_event))
993*0f5c86ddSBaptiste Daroussin goto event_error;
994*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
995*0f5c86ddSBaptiste Daroussin goto emitter_error;
996*0f5c86ddSBaptiste Daroussin }
997*0f5c86ddSBaptiste Daroussin
998*0f5c86ddSBaptiste Daroussin /* Create and emit the SEQUENCE-END event. */
999*0f5c86ddSBaptiste Daroussin
1000*0f5c86ddSBaptiste Daroussin if (!yaml_sequence_end_event_initialize(&output_event))
1001*0f5c86ddSBaptiste Daroussin goto event_error;
1002*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
1003*0f5c86ddSBaptiste Daroussin goto emitter_error;
1004*0f5c86ddSBaptiste Daroussin
1005*0f5c86ddSBaptiste Daroussin /* Create and emit the DOCUMENT-END event. */
1006*0f5c86ddSBaptiste Daroussin
1007*0f5c86ddSBaptiste Daroussin if (!yaml_document_end_event_initialize(&output_event, 0))
1008*0f5c86ddSBaptiste Daroussin goto event_error;
1009*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
1010*0f5c86ddSBaptiste Daroussin goto emitter_error;
1011*0f5c86ddSBaptiste Daroussin
1012*0f5c86ddSBaptiste Daroussin /* Create and emit the STREAM-END event. */
1013*0f5c86ddSBaptiste Daroussin
1014*0f5c86ddSBaptiste Daroussin if (!yaml_stream_end_event_initialize(&output_event))
1015*0f5c86ddSBaptiste Daroussin goto event_error;
1016*0f5c86ddSBaptiste Daroussin if (!yaml_emitter_emit(&emitter, &output_event))
1017*0f5c86ddSBaptiste Daroussin goto emitter_error;
1018*0f5c86ddSBaptiste Daroussin
1019*0f5c86ddSBaptiste Daroussin yaml_parser_delete(&parser);
1020*0f5c86ddSBaptiste Daroussin yaml_emitter_delete(&emitter);
1021*0f5c86ddSBaptiste Daroussin
1022*0f5c86ddSBaptiste Daroussin return 0;
1023*0f5c86ddSBaptiste Daroussin
1024*0f5c86ddSBaptiste Daroussin parser_error:
1025*0f5c86ddSBaptiste Daroussin
1026*0f5c86ddSBaptiste Daroussin /* Display a parser error message. */
1027*0f5c86ddSBaptiste Daroussin
1028*0f5c86ddSBaptiste Daroussin switch (parser.error)
1029*0f5c86ddSBaptiste Daroussin {
1030*0f5c86ddSBaptiste Daroussin case YAML_MEMORY_ERROR:
1031*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Memory error: Not enough memory for parsing\n");
1032*0f5c86ddSBaptiste Daroussin break;
1033*0f5c86ddSBaptiste Daroussin
1034*0f5c86ddSBaptiste Daroussin case YAML_READER_ERROR:
1035*0f5c86ddSBaptiste Daroussin if (parser.problem_value != -1) {
1036*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Reader error: %s: #%X at %ld\n", parser.problem,
1037*0f5c86ddSBaptiste Daroussin parser.problem_value, (long)parser.problem_offset);
1038*0f5c86ddSBaptiste Daroussin }
1039*0f5c86ddSBaptiste Daroussin else {
1040*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Reader error: %s at %ld\n", parser.problem,
1041*0f5c86ddSBaptiste Daroussin (long)parser.problem_offset);
1042*0f5c86ddSBaptiste Daroussin }
1043*0f5c86ddSBaptiste Daroussin break;
1044*0f5c86ddSBaptiste Daroussin
1045*0f5c86ddSBaptiste Daroussin case YAML_SCANNER_ERROR:
1046*0f5c86ddSBaptiste Daroussin if (parser.context) {
1047*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Scanner error: %s at line %d, column %d\n"
1048*0f5c86ddSBaptiste Daroussin "%s at line %d, column %d\n", parser.context,
1049*0f5c86ddSBaptiste Daroussin (int)parser.context_mark.line+1, (int)parser.context_mark.column+1,
1050*0f5c86ddSBaptiste Daroussin parser.problem, (int)parser.problem_mark.line+1,
1051*0f5c86ddSBaptiste Daroussin (int)parser.problem_mark.column+1);
1052*0f5c86ddSBaptiste Daroussin }
1053*0f5c86ddSBaptiste Daroussin else {
1054*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Scanner error: %s at line %d, column %d\n",
1055*0f5c86ddSBaptiste Daroussin parser.problem, (int)parser.problem_mark.line+1,
1056*0f5c86ddSBaptiste Daroussin (int)parser.problem_mark.column+1);
1057*0f5c86ddSBaptiste Daroussin }
1058*0f5c86ddSBaptiste Daroussin break;
1059*0f5c86ddSBaptiste Daroussin
1060*0f5c86ddSBaptiste Daroussin case YAML_PARSER_ERROR:
1061*0f5c86ddSBaptiste Daroussin if (parser.context) {
1062*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Parser error: %s at line %d, column %d\n"
1063*0f5c86ddSBaptiste Daroussin "%s at line %d, column %d\n", parser.context,
1064*0f5c86ddSBaptiste Daroussin (int)parser.context_mark.line+1, (int)parser.context_mark.column+1,
1065*0f5c86ddSBaptiste Daroussin parser.problem, (int)parser.problem_mark.line+1,
1066*0f5c86ddSBaptiste Daroussin (int)parser.problem_mark.column+1);
1067*0f5c86ddSBaptiste Daroussin }
1068*0f5c86ddSBaptiste Daroussin else {
1069*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Parser error: %s at line %d, column %d\n",
1070*0f5c86ddSBaptiste Daroussin parser.problem, (int)parser.problem_mark.line+1,
1071*0f5c86ddSBaptiste Daroussin (int)parser.problem_mark.column+1);
1072*0f5c86ddSBaptiste Daroussin }
1073*0f5c86ddSBaptiste Daroussin break;
1074*0f5c86ddSBaptiste Daroussin
1075*0f5c86ddSBaptiste Daroussin default:
1076*0f5c86ddSBaptiste Daroussin /* Couldn't happen. */
1077*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Internal error\n");
1078*0f5c86ddSBaptiste Daroussin break;
1079*0f5c86ddSBaptiste Daroussin }
1080*0f5c86ddSBaptiste Daroussin
1081*0f5c86ddSBaptiste Daroussin yaml_event_delete(&input_event);
1082*0f5c86ddSBaptiste Daroussin yaml_parser_delete(&parser);
1083*0f5c86ddSBaptiste Daroussin yaml_emitter_delete(&emitter);
1084*0f5c86ddSBaptiste Daroussin
1085*0f5c86ddSBaptiste Daroussin return 1;
1086*0f5c86ddSBaptiste Daroussin
1087*0f5c86ddSBaptiste Daroussin emitter_error:
1088*0f5c86ddSBaptiste Daroussin
1089*0f5c86ddSBaptiste Daroussin /* Display an emitter error message. */
1090*0f5c86ddSBaptiste Daroussin
1091*0f5c86ddSBaptiste Daroussin switch (emitter.error)
1092*0f5c86ddSBaptiste Daroussin {
1093*0f5c86ddSBaptiste Daroussin case YAML_MEMORY_ERROR:
1094*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Memory error: Not enough memory for emitting\n");
1095*0f5c86ddSBaptiste Daroussin break;
1096*0f5c86ddSBaptiste Daroussin
1097*0f5c86ddSBaptiste Daroussin case YAML_WRITER_ERROR:
1098*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Writer error: %s\n", emitter.problem);
1099*0f5c86ddSBaptiste Daroussin break;
1100*0f5c86ddSBaptiste Daroussin
1101*0f5c86ddSBaptiste Daroussin case YAML_EMITTER_ERROR:
1102*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Emitter error: %s\n", emitter.problem);
1103*0f5c86ddSBaptiste Daroussin break;
1104*0f5c86ddSBaptiste Daroussin
1105*0f5c86ddSBaptiste Daroussin default:
1106*0f5c86ddSBaptiste Daroussin /* Couldn't happen. */
1107*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Internal error\n");
1108*0f5c86ddSBaptiste Daroussin break;
1109*0f5c86ddSBaptiste Daroussin }
1110*0f5c86ddSBaptiste Daroussin
1111*0f5c86ddSBaptiste Daroussin yaml_event_delete(&input_event);
1112*0f5c86ddSBaptiste Daroussin yaml_parser_delete(&parser);
1113*0f5c86ddSBaptiste Daroussin yaml_emitter_delete(&emitter);
1114*0f5c86ddSBaptiste Daroussin
1115*0f5c86ddSBaptiste Daroussin return 1;
1116*0f5c86ddSBaptiste Daroussin
1117*0f5c86ddSBaptiste Daroussin event_error:
1118*0f5c86ddSBaptiste Daroussin
1119*0f5c86ddSBaptiste Daroussin fprintf(stderr, "Memory error: Not enough memory for creating an event\n");
1120*0f5c86ddSBaptiste Daroussin
1121*0f5c86ddSBaptiste Daroussin yaml_event_delete(&input_event);
1122*0f5c86ddSBaptiste Daroussin yaml_parser_delete(&parser);
1123*0f5c86ddSBaptiste Daroussin yaml_emitter_delete(&emitter);
1124*0f5c86ddSBaptiste Daroussin
1125*0f5c86ddSBaptiste Daroussin return 1;
1126*0f5c86ddSBaptiste Daroussin }
1127*0f5c86ddSBaptiste Daroussin
1128