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).

RevLine 
[11]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:
[17]19            syck_emit_seq(e, "tag:domainmyseq.tld,2002:zz", seq_none);
[11]20            syck_emit_item(e, 2);
21            syck_emit_item(e, 3);
22            syck_emit_item(e, 4);
[17]23/*            syck_emit_item(e, 2);
24            syck_emit_item(e, 1);*/
[11]25            syck_emit_end(e);
26            break;
27        case 2:
[17]28            syck_emit_scalar(e, "tag:yaml.org,2002:str", scalar_none, 0, 0, 0, "Mark McGwire ", strlen("Mark McGwire "));
[11]29            break;
30        case 3:
[17]31            syck_emit_scalar(e, "tag:python.yaml.org,2002:object", scalar_none, 0, 0, 0, "Sammy Sosa", strlen("Sammy Sosa"));
[11]32            break;
33        case 4:
[17]34            syck_emit_scalar(e, "x-private:myowntype", scalar_none, 0, 0, 0, "Ken Griffey", strlen("Ken Griffey"));
[11]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);
[17]50/*    syck_emitter_mark_node(e, 2);
51    syck_emitter_mark_node(e, 1);*/
[11]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.