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

Revision 11, 1.3 KB checked in by xi, 9 years ago (diff)

Experimenting with Emitter.

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, NULL, seq_none);
20            syck_emit_item(e, 2);
21            syck_emit_item(e, 3);
22            syck_emit_item(e, 4);
23            syck_emit_end(e);
24            break;
25        case 2:
26            syck_emit_scalar(e, NULL, scalar_none, 0, 0, 0, "Mark McGwire", strlen("Mark McGwire"));
27            break;
28        case 3:
29            syck_emit_scalar(e, NULL, scalar_none, 0, 0, 0, "Sammy Sosa", strlen("Sammy Sosa"));
30            break;
31        case 4:
32            syck_emit_scalar(e, NULL, scalar_none, 0, 0, 0, "Ken Griffey", strlen("Ken Griffey"));
33            break;
34    }
35}
36
37int main(int argc, char *argv[])
38{
39    SyckEmitter *e;
40
41    e = syck_new_emitter();
42    syck_emitter_handler(e, emitter_handler);
43    syck_output_handler(e, output_handler);
44    syck_emitter_mark_node(e, 1);
45    syck_emitter_mark_node(e, 2);
46    syck_emitter_mark_node(e, 3);
47    syck_emitter_mark_node(e, 4);
48    syck_emit(e, 1);
49    syck_emitter_flush(e, 0);
50    syck_free_emitter(e);
51}
52
Note: See TracBrowser for help on using the repository browser.