Lines Matching full:emitter

9 yaml_emitter_open(yaml_emitter_t *emitter);
12 yaml_emitter_close(yaml_emitter_t *emitter);
15 yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document);
22 yaml_emitter_delete_document_and_anchors(yaml_emitter_t *emitter);
29 yaml_emitter_anchor_node(yaml_emitter_t *emitter, int index);
32 yaml_emitter_generate_anchor(yaml_emitter_t *emitter, int anchor_id);
40 yaml_emitter_dump_node(yaml_emitter_t *emitter, int index);
43 yaml_emitter_dump_alias(yaml_emitter_t *emitter, yaml_char_t *anchor);
46 yaml_emitter_dump_scalar(yaml_emitter_t *emitter, yaml_node_t *node,
50 yaml_emitter_dump_sequence(yaml_emitter_t *emitter, yaml_node_t *node,
54 yaml_emitter_dump_mapping(yaml_emitter_t *emitter, yaml_node_t *node,
62 yaml_emitter_open(yaml_emitter_t *emitter) in yaml_emitter_open() argument
67 assert(emitter); /* Non-NULL emitter object is required. */ in yaml_emitter_open()
68 assert(!emitter->opened); /* Emitter should not be opened yet. */ in yaml_emitter_open()
72 if (!yaml_emitter_emit(emitter, &event)) { in yaml_emitter_open()
76 emitter->opened = 1; in yaml_emitter_open()
86 yaml_emitter_close(yaml_emitter_t *emitter) in yaml_emitter_close() argument
91 assert(emitter); /* Non-NULL emitter object is required. */ in yaml_emitter_close()
92 assert(emitter->opened); /* Emitter should be opened. */ in yaml_emitter_close()
94 if (emitter->closed) return 1; in yaml_emitter_close()
98 if (!yaml_emitter_emit(emitter, &event)) { in yaml_emitter_close()
102 emitter->closed = 1; in yaml_emitter_close()
112 yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document) in yaml_emitter_dump() argument
117 assert(emitter); /* Non-NULL emitter object is required. */ in yaml_emitter_dump()
118 assert(document); /* Non-NULL emitter object is expected. */ in yaml_emitter_dump()
120 emitter->document = document; in yaml_emitter_dump()
122 if (!emitter->opened) { in yaml_emitter_dump()
123 if (!yaml_emitter_open(emitter)) goto error; in yaml_emitter_dump()
126 if (STACK_EMPTY(emitter, document->nodes)) { in yaml_emitter_dump()
127 if (!yaml_emitter_close(emitter)) goto error; in yaml_emitter_dump()
128 yaml_emitter_delete_document_and_anchors(emitter); in yaml_emitter_dump()
132 assert(emitter->opened); /* Emitter should be opened. */ in yaml_emitter_dump()
134 emitter->anchors = (yaml_anchors_t*)yaml_malloc(sizeof(*(emitter->anchors)) in yaml_emitter_dump()
136 if (!emitter->anchors) goto error; in yaml_emitter_dump()
137 memset(emitter->anchors, 0, sizeof(*(emitter->anchors)) in yaml_emitter_dump()
143 if (!yaml_emitter_emit(emitter, &event)) goto error; in yaml_emitter_dump()
145 yaml_emitter_anchor_node(emitter, 1); in yaml_emitter_dump()
146 if (!yaml_emitter_dump_node(emitter, 1)) goto error; in yaml_emitter_dump()
149 if (!yaml_emitter_emit(emitter, &event)) goto error; in yaml_emitter_dump()
151 yaml_emitter_delete_document_and_anchors(emitter); in yaml_emitter_dump()
157 yaml_emitter_delete_document_and_anchors(emitter); in yaml_emitter_dump()
163 * Clean up the emitter object after a document is dumped.
167 yaml_emitter_delete_document_and_anchors(yaml_emitter_t *emitter) in yaml_emitter_delete_document_and_anchors() argument
171 if (!emitter->anchors) { in yaml_emitter_delete_document_and_anchors()
172 yaml_document_delete(emitter->document); in yaml_emitter_delete_document_and_anchors()
173 emitter->document = NULL; in yaml_emitter_delete_document_and_anchors()
177 for (index = 0; emitter->document->nodes.start + index in yaml_emitter_delete_document_and_anchors()
178 < emitter->document->nodes.top; index ++) { in yaml_emitter_delete_document_and_anchors()
179 yaml_node_t node = emitter->document->nodes.start[index]; in yaml_emitter_delete_document_and_anchors()
180 if (!emitter->anchors[index].serialized) { in yaml_emitter_delete_document_and_anchors()
187 STACK_DEL(emitter, node.data.sequence.items); in yaml_emitter_delete_document_and_anchors()
190 STACK_DEL(emitter, node.data.mapping.pairs); in yaml_emitter_delete_document_and_anchors()
194 STACK_DEL(emitter, emitter->document->nodes); in yaml_emitter_delete_document_and_anchors()
195 yaml_free(emitter->anchors); in yaml_emitter_delete_document_and_anchors()
197 emitter->anchors = NULL; in yaml_emitter_delete_document_and_anchors()
198 emitter->last_anchor_id = 0; in yaml_emitter_delete_document_and_anchors()
199 emitter->document = NULL; in yaml_emitter_delete_document_and_anchors()
207 yaml_emitter_anchor_node(yaml_emitter_t *emitter, int index) in yaml_emitter_anchor_node() argument
209 yaml_node_t *node = emitter->document->nodes.start + index - 1; in yaml_emitter_anchor_node()
213 emitter->anchors[index-1].references ++; in yaml_emitter_anchor_node()
215 if (emitter->anchors[index-1].references == 1) { in yaml_emitter_anchor_node()
220 yaml_emitter_anchor_node(emitter, *item); in yaml_emitter_anchor_node()
226 yaml_emitter_anchor_node(emitter, pair->key); in yaml_emitter_anchor_node()
227 yaml_emitter_anchor_node(emitter, pair->value); in yaml_emitter_anchor_node()
235 else if (emitter->anchors[index-1].references == 2) { in yaml_emitter_anchor_node()
236 emitter->anchors[index-1].anchor = (++ emitter->last_anchor_id); in yaml_emitter_anchor_node()
248 yaml_emitter_generate_anchor(SHIM(yaml_emitter_t *emitter), int anchor_id) in yaml_emitter_generate_anchor() argument
264 yaml_emitter_dump_node(yaml_emitter_t *emitter, int index) in yaml_emitter_dump_node() argument
266 yaml_node_t *node = emitter->document->nodes.start + index - 1; in yaml_emitter_dump_node()
267 int anchor_id = emitter->anchors[index-1].anchor; in yaml_emitter_dump_node()
271 anchor = yaml_emitter_generate_anchor(emitter, anchor_id); in yaml_emitter_dump_node()
275 if (emitter->anchors[index-1].serialized) { in yaml_emitter_dump_node()
276 return yaml_emitter_dump_alias(emitter, anchor); in yaml_emitter_dump_node()
279 emitter->anchors[index-1].serialized = 1; in yaml_emitter_dump_node()
283 return yaml_emitter_dump_scalar(emitter, node, anchor); in yaml_emitter_dump_node()
285 return yaml_emitter_dump_sequence(emitter, node, anchor); in yaml_emitter_dump_node()
287 return yaml_emitter_dump_mapping(emitter, node, anchor); in yaml_emitter_dump_node()
301 yaml_emitter_dump_alias(yaml_emitter_t *emitter, yaml_char_t *anchor) in yaml_emitter_dump_alias() argument
308 return yaml_emitter_emit(emitter, &event); in yaml_emitter_dump_alias()
316 yaml_emitter_dump_scalar(yaml_emitter_t *emitter, yaml_node_t *node, in yaml_emitter_dump_scalar() argument
331 return yaml_emitter_emit(emitter, &event); in yaml_emitter_dump_scalar()
339 yaml_emitter_dump_sequence(yaml_emitter_t *emitter, yaml_node_t *node, in yaml_emitter_dump_sequence() argument
351 if (!yaml_emitter_emit(emitter, &event)) return 0; in yaml_emitter_dump_sequence()
355 if (!yaml_emitter_dump_node(emitter, *item)) return 0; in yaml_emitter_dump_sequence()
359 if (!yaml_emitter_emit(emitter, &event)) return 0; in yaml_emitter_dump_sequence()
369 yaml_emitter_dump_mapping(yaml_emitter_t *emitter, yaml_node_t *node, in yaml_emitter_dump_mapping() argument
381 if (!yaml_emitter_emit(emitter, &event)) return 0; in yaml_emitter_dump_mapping()
385 if (!yaml_emitter_dump_node(emitter, pair->key)) return 0; in yaml_emitter_dump_mapping()
386 if (!yaml_emitter_dump_node(emitter, pair->value)) return 0; in yaml_emitter_dump_mapping()
390 if (!yaml_emitter_emit(emitter, &event)) return 0; in yaml_emitter_dump_mapping()