source: trunk/sandbox/emit-it/emit-it.c @ 17

Revision 17, 1.5 KB checked in by xi, 9 years ago (diff)

Add _syck.Emitter (finally closes #19).

Line 
1
2#include <stdlib.h>
3#include <stdio.h>
4#include <stdarg.h>
5#include <error.h>
6#include <string.h>
7
8#include <syck.h>
9
10void output_handler(SyckEmitter *e, char *str, long len)
11{
12    fwrite(str, 1, len, stdout);
13}
14
15void emitter_handler(SyckEmitter *e, st_data_t id)
16{
17    switch (id) {
18        case 1:
19            syck_emit_seq(e, "tag:domainmyseq.tld,2002:zz", seq_none);
20            syck_emit_item(e, 2);
21            syck_emit_item(e, 3);
22            syck_emit_item(e, 4);
23/*            syck_emit_item(e, 2);
24            syck_emit_item(e, 1);*/
25            syck_emit_end(e);
26            break;
27        case 2:
28            syck_emit_scalar(e, "tag:yaml.org,2002:str", scalar_none, 0, 0, 0, "Mark McGwire ", strlen("Mark McGwire "));
29            break;
30        case 3:
31            syck_emit_scalar(e, "tag:python.yaml.org,2002:object", scalar_none, 0, 0, 0, "Sammy Sosa", strlen("Sammy Sosa"));
32            break;
33        case 4:
34            syck_emit_scalar(e, "x-private:myowntype", scalar_none, 0, 0, 0, "Ken Griffey", strlen("Ken Griffey"));
35            break;
36    }
37}
38
39int main(int argc, char *argv[])
40{
41    SyckEmitter *e;
42
43    e = syck_new_emitter();
44    syck_emitter_handler(e, emitter_handler);
45    syck_output_handler(e, output_handler);
46    syck_emitter_mark_node(e, 1);
47    syck_emitter_mark_node(e, 2);
48    syck_emitter_mark_node(e, 3);
49    syck_emitter_mark_node(e, 4);
50/*    syck_emitter_mark_node(e, 2);
51    syck_emitter_mark_node(e, 1);*/
52    syck_emit(e, 1);
53    syck_emitter_flush(e, 0);
54    syck_free_emitter(e);
55}
56
Note: See TracBrowser for help on using the repository browser.