xref: /freebsd/contrib/libyaml/tests/example-deconstructor.c (revision 0f5c86ddb0257f4b7620f1d8e898289be30b19bf)
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