22 emitter->problem = problem;
37 assert(emitter->write_handler);
40 emitter->buffer.last = emitter->buffer.pointer;
41 emitter->buffer.pointer = emitter->buffer.start;
45 if (emitter->buffer.start == emitter->buffer.last) {
53 if (emitter->write_handler(emitter->write_handler_data,
54 emitter->buffer.start,
55 emitter->buffer.last - emitter->buffer.start)) {
56 emitter->buffer.last = emitter->buffer.start;
57 emitter->buffer.pointer = emitter->buffer.start;
70 while (emitter->buffer.pointer != emitter->buffer.last)
84 octet = emitter->buffer.pointer[0];
86 width = (octet & 0x80) == 0x00 ? 1 :
87 (octet & 0xE0) == 0xC0 ? 2 :
88 (octet & 0xF0) == 0xE0 ? 3 :
89 (octet & 0xF8) == 0xF0 ? 4 : 0;
91 value = (octet & 0x80) == 0x00 ? octet & 0x7F :
92 (octet & 0xE0) == 0xC0 ? octet & 0x1F :
93 (octet & 0xF0) == 0xE0 ? octet & 0x0F :
94 (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;
96 for (k = 1; k < width; k ++) {
97 octet = emitter->buffer.pointer[k];
98 value = (value << 6) + (octet & 0x3F);
101 emitter->buffer.pointer += width;
107 emitter->raw_buffer.last[high] = value >> 8;
108 emitter->raw_buffer.last[low] = value & 0xFF;
110 emitter->raw_buffer.last += 2;
117 emitter->raw_buffer.last[high] = 0xD8 + (value >> 18);
118 emitter->raw_buffer.last[low] = (value >> 10) & 0xFF;
119 emitter->raw_buffer.last[high+2] = 0xDC + ((value >> 8) & 0xFF);
120 emitter->raw_buffer.last[low+2] = value & 0xFF;
122 emitter->raw_buffer.last += 4;
128 if (emitter->write_handler(emitter->write_handler_data,
129 emitter->raw_buffer.start,
130 emitter->raw_buffer.last - emitter->raw_buffer.start)) {
131 emitter->buffer.last = emitter->buffer.start;
132 emitter->buffer.pointer = emitter->buffer.start;
133 emitter->raw_buffer.last = emitter->raw_buffer.start;
134 emitter->raw_buffer.pointer = emitter->raw_buffer.start;
static int yaml_emitter_set_writer_error(yaml_emitter_t *emitter, const char *problem)
The UTF-16-LE encoding with BOM.
#define YAML_DECLARE(type)
The public API declaration.
yaml_emitter_flush(yaml_emitter_t *emitter)
Flush the accumulated characters to the output.
The default UTF-8 encoding.
Cannot write to the output stream.
#define assert(condition)