annotate vendor/gopkg.in/yaml.v3/apic.go @ 85:64cd79d367b5 draft

とにかく、「aya.PrintVersion」は何か特別なことをするわけではありません Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Tue, 26 Mar 2024 11:56:38 +0000
parents d8727551f403
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
74
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
1 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
2 // Copyright (c) 2011-2019 Canonical Ltd
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
3 // Copyright (c) 2006-2010 Kirill Simonov
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
4 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
5 // Permission is hereby granted, free of charge, to any person obtaining a copy of
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
6 // this software and associated documentation files (the "Software"), to deal in
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
7 // the Software without restriction, including without limitation the rights to
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
8 // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
9 // of the Software, and to permit persons to whom the Software is furnished to do
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
10 // so, subject to the following conditions:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
11 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
12 // The above copyright notice and this permission notice shall be included in all
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
13 // copies or substantial portions of the Software.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
14 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
16 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
17 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
18 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
19 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
21 // SOFTWARE.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
22
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
23 package yaml
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
24
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
25 import (
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
26 "io"
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
27 )
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
28
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
29 func yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
30 //fmt.Println("yaml_insert_token", "pos:", pos, "typ:", token.typ, "head:", parser.tokens_head, "len:", len(parser.tokens))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
31
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
32 // Check if we can move the queue at the beginning of the buffer.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
33 if parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
34 if parser.tokens_head != len(parser.tokens) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
35 copy(parser.tokens, parser.tokens[parser.tokens_head:])
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
36 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
37 parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head]
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
38 parser.tokens_head = 0
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
39 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
40 parser.tokens = append(parser.tokens, *token)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
41 if pos < 0 {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
42 return
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
43 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
44 copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:])
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
45 parser.tokens[parser.tokens_head+pos] = *token
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
46 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
47
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
48 // Create a new parser object.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
49 func yaml_parser_initialize(parser *yaml_parser_t) bool {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
50 *parser = yaml_parser_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
51 raw_buffer: make([]byte, 0, input_raw_buffer_size),
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
52 buffer: make([]byte, 0, input_buffer_size),
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
53 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
54 return true
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
55 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
56
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
57 // Destroy a parser object.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
58 func yaml_parser_delete(parser *yaml_parser_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
59 *parser = yaml_parser_t{}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
60 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
61
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
62 // String read handler.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
63 func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
64 if parser.input_pos == len(parser.input) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
65 return 0, io.EOF
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
66 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
67 n = copy(buffer, parser.input[parser.input_pos:])
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
68 parser.input_pos += n
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
69 return n, nil
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
70 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
71
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
72 // Reader read handler.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
73 func yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
74 return parser.input_reader.Read(buffer)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
75 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
76
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
77 // Set a string input.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
78 func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
79 if parser.read_handler != nil {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
80 panic("must set the input source only once")
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
81 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
82 parser.read_handler = yaml_string_read_handler
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
83 parser.input = input
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
84 parser.input_pos = 0
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
85 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
86
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
87 // Set a file input.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
88 func yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
89 if parser.read_handler != nil {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
90 panic("must set the input source only once")
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
91 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
92 parser.read_handler = yaml_reader_read_handler
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
93 parser.input_reader = r
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
94 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
95
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
96 // Set the source encoding.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
97 func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
98 if parser.encoding != yaml_ANY_ENCODING {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
99 panic("must set the encoding only once")
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
100 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
101 parser.encoding = encoding
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
102 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
103
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
104 // Create a new emitter object.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
105 func yaml_emitter_initialize(emitter *yaml_emitter_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
106 *emitter = yaml_emitter_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
107 buffer: make([]byte, output_buffer_size),
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
108 raw_buffer: make([]byte, 0, output_raw_buffer_size),
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
109 states: make([]yaml_emitter_state_t, 0, initial_stack_size),
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
110 events: make([]yaml_event_t, 0, initial_queue_size),
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
111 best_width: -1,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
112 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
113 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
114
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
115 // Destroy an emitter object.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
116 func yaml_emitter_delete(emitter *yaml_emitter_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
117 *emitter = yaml_emitter_t{}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
118 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
119
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
120 // String write handler.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
121 func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
122 *emitter.output_buffer = append(*emitter.output_buffer, buffer...)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
123 return nil
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
124 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
125
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
126 // yaml_writer_write_handler uses emitter.output_writer to write the
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
127 // emitted text.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
128 func yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
129 _, err := emitter.output_writer.Write(buffer)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
130 return err
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
131 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
132
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
133 // Set a string output.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
134 func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
135 if emitter.write_handler != nil {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
136 panic("must set the output target only once")
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
137 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
138 emitter.write_handler = yaml_string_write_handler
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
139 emitter.output_buffer = output_buffer
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
140 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
141
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
142 // Set a file output.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
143 func yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
144 if emitter.write_handler != nil {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
145 panic("must set the output target only once")
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
146 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
147 emitter.write_handler = yaml_writer_write_handler
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
148 emitter.output_writer = w
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
149 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
150
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
151 // Set the output encoding.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
152 func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
153 if emitter.encoding != yaml_ANY_ENCODING {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
154 panic("must set the output encoding only once")
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
155 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
156 emitter.encoding = encoding
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
157 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
158
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
159 // Set the canonical output style.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
160 func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
161 emitter.canonical = canonical
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
162 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
163
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
164 // Set the indentation increment.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
165 func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
166 if indent < 2 || indent > 9 {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
167 indent = 2
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
168 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
169 emitter.best_indent = indent
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
170 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
171
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
172 // Set the preferred line width.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
173 func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
174 if width < 0 {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
175 width = -1
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
176 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
177 emitter.best_width = width
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
178 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
179
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
180 // Set if unescaped non-ASCII characters are allowed.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
181 func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
182 emitter.unicode = unicode
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
183 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
184
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
185 // Set the preferred line break character.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
186 func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
187 emitter.line_break = line_break
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
188 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
189
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
190 ///*
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
191 // * Destroy a token object.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
192 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
193 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
194 //YAML_DECLARE(void)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
195 //yaml_token_delete(yaml_token_t *token)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
196 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
197 // assert(token); // Non-NULL token object expected.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
198 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
199 // switch (token.type)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
200 // {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
201 // case YAML_TAG_DIRECTIVE_TOKEN:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
202 // yaml_free(token.data.tag_directive.handle);
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
203 // yaml_free(token.data.tag_directive.prefix);
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
204 // break;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
205 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
206 // case YAML_ALIAS_TOKEN:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
207 // yaml_free(token.data.alias.value);
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
208 // break;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
209 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
210 // case YAML_ANCHOR_TOKEN:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
211 // yaml_free(token.data.anchor.value);
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
212 // break;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
213 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
214 // case YAML_TAG_TOKEN:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
215 // yaml_free(token.data.tag.handle);
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
216 // yaml_free(token.data.tag.suffix);
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
217 // break;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
218 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
219 // case YAML_SCALAR_TOKEN:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
220 // yaml_free(token.data.scalar.value);
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
221 // break;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
222 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
223 // default:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
224 // break;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
225 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
226 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
227 // memset(token, 0, sizeof(yaml_token_t));
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
228 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
229 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
230 ///*
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
231 // * Check if a string is a valid UTF-8 sequence.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
232 // *
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
233 // * Check 'reader.c' for more details on UTF-8 encoding.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
234 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
235 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
236 //static int
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
237 //yaml_check_utf8(yaml_char_t *start, size_t length)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
238 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
239 // yaml_char_t *end = start+length;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
240 // yaml_char_t *pointer = start;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
241 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
242 // while (pointer < end) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
243 // unsigned char octet;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
244 // unsigned int width;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
245 // unsigned int value;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
246 // size_t k;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
247 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
248 // octet = pointer[0];
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
249 // width = (octet & 0x80) == 0x00 ? 1 :
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
250 // (octet & 0xE0) == 0xC0 ? 2 :
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
251 // (octet & 0xF0) == 0xE0 ? 3 :
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
252 // (octet & 0xF8) == 0xF0 ? 4 : 0;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
253 // value = (octet & 0x80) == 0x00 ? octet & 0x7F :
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
254 // (octet & 0xE0) == 0xC0 ? octet & 0x1F :
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
255 // (octet & 0xF0) == 0xE0 ? octet & 0x0F :
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
256 // (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
257 // if (!width) return 0;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
258 // if (pointer+width > end) return 0;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
259 // for (k = 1; k < width; k ++) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
260 // octet = pointer[k];
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
261 // if ((octet & 0xC0) != 0x80) return 0;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
262 // value = (value << 6) + (octet & 0x3F);
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
263 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
264 // if (!((width == 1) ||
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
265 // (width == 2 && value >= 0x80) ||
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
266 // (width == 3 && value >= 0x800) ||
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
267 // (width == 4 && value >= 0x10000))) return 0;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
268 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
269 // pointer += width;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
270 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
271 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
272 // return 1;
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
273 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
274 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
275
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
276 // Create STREAM-START.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
277 func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
278 *event = yaml_event_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
279 typ: yaml_STREAM_START_EVENT,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
280 encoding: encoding,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
281 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
282 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
283
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
284 // Create STREAM-END.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
285 func yaml_stream_end_event_initialize(event *yaml_event_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
286 *event = yaml_event_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
287 typ: yaml_STREAM_END_EVENT,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
288 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
289 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
290
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
291 // Create DOCUMENT-START.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
292 func yaml_document_start_event_initialize(
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
293 event *yaml_event_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
294 version_directive *yaml_version_directive_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
295 tag_directives []yaml_tag_directive_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
296 implicit bool,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
297 ) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
298 *event = yaml_event_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
299 typ: yaml_DOCUMENT_START_EVENT,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
300 version_directive: version_directive,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
301 tag_directives: tag_directives,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
302 implicit: implicit,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
303 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
304 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
305
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
306 // Create DOCUMENT-END.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
307 func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
308 *event = yaml_event_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
309 typ: yaml_DOCUMENT_END_EVENT,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
310 implicit: implicit,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
311 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
312 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
313
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
314 // Create ALIAS.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
315 func yaml_alias_event_initialize(event *yaml_event_t, anchor []byte) bool {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
316 *event = yaml_event_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
317 typ: yaml_ALIAS_EVENT,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
318 anchor: anchor,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
319 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
320 return true
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
321 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
322
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
323 // Create SCALAR.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
324 func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
325 *event = yaml_event_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
326 typ: yaml_SCALAR_EVENT,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
327 anchor: anchor,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
328 tag: tag,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
329 value: value,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
330 implicit: plain_implicit,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
331 quoted_implicit: quoted_implicit,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
332 style: yaml_style_t(style),
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
333 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
334 return true
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
335 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
336
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
337 // Create SEQUENCE-START.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
338 func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
339 *event = yaml_event_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
340 typ: yaml_SEQUENCE_START_EVENT,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
341 anchor: anchor,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
342 tag: tag,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
343 implicit: implicit,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
344 style: yaml_style_t(style),
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
345 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
346 return true
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
347 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
348
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
349 // Create SEQUENCE-END.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
350 func yaml_sequence_end_event_initialize(event *yaml_event_t) bool {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
351 *event = yaml_event_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
352 typ: yaml_SEQUENCE_END_EVENT,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
353 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
354 return true
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
355 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
356
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
357 // Create MAPPING-START.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
358 func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
359 *event = yaml_event_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
360 typ: yaml_MAPPING_START_EVENT,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
361 anchor: anchor,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
362 tag: tag,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
363 implicit: implicit,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
364 style: yaml_style_t(style),
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
365 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
366 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
367
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
368 // Create MAPPING-END.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
369 func yaml_mapping_end_event_initialize(event *yaml_event_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
370 *event = yaml_event_t{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
371 typ: yaml_MAPPING_END_EVENT,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
372 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
373 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
374
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
375 // Destroy an event object.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
376 func yaml_event_delete(event *yaml_event_t) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
377 *event = yaml_event_t{}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
378 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
379
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
380 ///*
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
381 // * Create a document object.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
382 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
383 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
384 //YAML_DECLARE(int)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
385 //yaml_document_initialize(document *yaml_document_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
386 // version_directive *yaml_version_directive_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
387 // tag_directives_start *yaml_tag_directive_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
388 // tag_directives_end *yaml_tag_directive_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
389 // start_implicit int, end_implicit int)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
390 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
391 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
392 // error yaml_error_type_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
393 // } context
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
394 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
395 // start *yaml_node_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
396 // end *yaml_node_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
397 // top *yaml_node_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
398 // } nodes = { NULL, NULL, NULL }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
399 // version_directive_copy *yaml_version_directive_t = NULL
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
400 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
401 // start *yaml_tag_directive_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
402 // end *yaml_tag_directive_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
403 // top *yaml_tag_directive_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
404 // } tag_directives_copy = { NULL, NULL, NULL }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
405 // value yaml_tag_directive_t = { NULL, NULL }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
406 // mark yaml_mark_t = { 0, 0, 0 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
407 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
408 // assert(document) // Non-NULL document object is expected.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
409 // assert((tag_directives_start && tag_directives_end) ||
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
410 // (tag_directives_start == tag_directives_end))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
411 // // Valid tag directives are expected.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
412 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
413 // if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
414 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
415 // if (version_directive) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
416 // version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
417 // if (!version_directive_copy) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
418 // version_directive_copy.major = version_directive.major
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
419 // version_directive_copy.minor = version_directive.minor
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
420 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
421 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
422 // if (tag_directives_start != tag_directives_end) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
423 // tag_directive *yaml_tag_directive_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
424 // if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
425 // goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
426 // for (tag_directive = tag_directives_start
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
427 // tag_directive != tag_directives_end; tag_directive ++) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
428 // assert(tag_directive.handle)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
429 // assert(tag_directive.prefix)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
430 // if (!yaml_check_utf8(tag_directive.handle,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
431 // strlen((char *)tag_directive.handle)))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
432 // goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
433 // if (!yaml_check_utf8(tag_directive.prefix,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
434 // strlen((char *)tag_directive.prefix)))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
435 // goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
436 // value.handle = yaml_strdup(tag_directive.handle)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
437 // value.prefix = yaml_strdup(tag_directive.prefix)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
438 // if (!value.handle || !value.prefix) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
439 // if (!PUSH(&context, tag_directives_copy, value))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
440 // goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
441 // value.handle = NULL
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
442 // value.prefix = NULL
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
443 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
444 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
445 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
446 // DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
447 // tag_directives_copy.start, tag_directives_copy.top,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
448 // start_implicit, end_implicit, mark, mark)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
449 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
450 // return 1
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
451 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
452 //error:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
453 // STACK_DEL(&context, nodes)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
454 // yaml_free(version_directive_copy)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
455 // while (!STACK_EMPTY(&context, tag_directives_copy)) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
456 // value yaml_tag_directive_t = POP(&context, tag_directives_copy)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
457 // yaml_free(value.handle)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
458 // yaml_free(value.prefix)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
459 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
460 // STACK_DEL(&context, tag_directives_copy)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
461 // yaml_free(value.handle)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
462 // yaml_free(value.prefix)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
463 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
464 // return 0
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
465 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
466 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
467 ///*
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
468 // * Destroy a document object.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
469 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
470 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
471 //YAML_DECLARE(void)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
472 //yaml_document_delete(document *yaml_document_t)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
473 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
474 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
475 // error yaml_error_type_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
476 // } context
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
477 // tag_directive *yaml_tag_directive_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
478 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
479 // context.error = YAML_NO_ERROR // Eliminate a compiler warning.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
480 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
481 // assert(document) // Non-NULL document object is expected.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
482 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
483 // while (!STACK_EMPTY(&context, document.nodes)) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
484 // node yaml_node_t = POP(&context, document.nodes)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
485 // yaml_free(node.tag)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
486 // switch (node.type) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
487 // case YAML_SCALAR_NODE:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
488 // yaml_free(node.data.scalar.value)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
489 // break
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
490 // case YAML_SEQUENCE_NODE:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
491 // STACK_DEL(&context, node.data.sequence.items)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
492 // break
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
493 // case YAML_MAPPING_NODE:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
494 // STACK_DEL(&context, node.data.mapping.pairs)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
495 // break
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
496 // default:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
497 // assert(0) // Should not happen.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
498 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
499 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
500 // STACK_DEL(&context, document.nodes)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
501 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
502 // yaml_free(document.version_directive)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
503 // for (tag_directive = document.tag_directives.start
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
504 // tag_directive != document.tag_directives.end
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
505 // tag_directive++) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
506 // yaml_free(tag_directive.handle)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
507 // yaml_free(tag_directive.prefix)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
508 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
509 // yaml_free(document.tag_directives.start)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
510 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
511 // memset(document, 0, sizeof(yaml_document_t))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
512 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
513 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
514 ///**
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
515 // * Get a document node.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
516 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
517 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
518 //YAML_DECLARE(yaml_node_t *)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
519 //yaml_document_get_node(document *yaml_document_t, index int)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
520 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
521 // assert(document) // Non-NULL document object is expected.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
522 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
523 // if (index > 0 && document.nodes.start + index <= document.nodes.top) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
524 // return document.nodes.start + index - 1
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
525 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
526 // return NULL
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
527 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
528 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
529 ///**
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
530 // * Get the root object.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
531 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
532 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
533 //YAML_DECLARE(yaml_node_t *)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
534 //yaml_document_get_root_node(document *yaml_document_t)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
535 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
536 // assert(document) // Non-NULL document object is expected.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
537 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
538 // if (document.nodes.top != document.nodes.start) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
539 // return document.nodes.start
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
540 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
541 // return NULL
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
542 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
543 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
544 ///*
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
545 // * Add a scalar node to a document.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
546 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
547 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
548 //YAML_DECLARE(int)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
549 //yaml_document_add_scalar(document *yaml_document_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
550 // tag *yaml_char_t, value *yaml_char_t, length int,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
551 // style yaml_scalar_style_t)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
552 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
553 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
554 // error yaml_error_type_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
555 // } context
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
556 // mark yaml_mark_t = { 0, 0, 0 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
557 // tag_copy *yaml_char_t = NULL
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
558 // value_copy *yaml_char_t = NULL
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
559 // node yaml_node_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
560 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
561 // assert(document) // Non-NULL document object is expected.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
562 // assert(value) // Non-NULL value is expected.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
563 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
564 // if (!tag) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
565 // tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
566 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
567 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
568 // if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
569 // tag_copy = yaml_strdup(tag)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
570 // if (!tag_copy) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
571 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
572 // if (length < 0) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
573 // length = strlen((char *)value)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
574 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
575 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
576 // if (!yaml_check_utf8(value, length)) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
577 // value_copy = yaml_malloc(length+1)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
578 // if (!value_copy) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
579 // memcpy(value_copy, value, length)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
580 // value_copy[length] = '\0'
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
581 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
582 // SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
583 // if (!PUSH(&context, document.nodes, node)) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
584 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
585 // return document.nodes.top - document.nodes.start
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
586 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
587 //error:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
588 // yaml_free(tag_copy)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
589 // yaml_free(value_copy)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
590 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
591 // return 0
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
592 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
593 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
594 ///*
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
595 // * Add a sequence node to a document.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
596 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
597 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
598 //YAML_DECLARE(int)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
599 //yaml_document_add_sequence(document *yaml_document_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
600 // tag *yaml_char_t, style yaml_sequence_style_t)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
601 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
602 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
603 // error yaml_error_type_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
604 // } context
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
605 // mark yaml_mark_t = { 0, 0, 0 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
606 // tag_copy *yaml_char_t = NULL
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
607 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
608 // start *yaml_node_item_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
609 // end *yaml_node_item_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
610 // top *yaml_node_item_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
611 // } items = { NULL, NULL, NULL }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
612 // node yaml_node_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
613 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
614 // assert(document) // Non-NULL document object is expected.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
615 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
616 // if (!tag) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
617 // tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
618 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
619 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
620 // if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
621 // tag_copy = yaml_strdup(tag)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
622 // if (!tag_copy) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
623 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
624 // if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
625 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
626 // SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
627 // style, mark, mark)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
628 // if (!PUSH(&context, document.nodes, node)) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
629 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
630 // return document.nodes.top - document.nodes.start
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
631 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
632 //error:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
633 // STACK_DEL(&context, items)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
634 // yaml_free(tag_copy)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
635 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
636 // return 0
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
637 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
638 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
639 ///*
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
640 // * Add a mapping node to a document.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
641 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
642 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
643 //YAML_DECLARE(int)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
644 //yaml_document_add_mapping(document *yaml_document_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
645 // tag *yaml_char_t, style yaml_mapping_style_t)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
646 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
647 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
648 // error yaml_error_type_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
649 // } context
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
650 // mark yaml_mark_t = { 0, 0, 0 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
651 // tag_copy *yaml_char_t = NULL
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
652 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
653 // start *yaml_node_pair_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
654 // end *yaml_node_pair_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
655 // top *yaml_node_pair_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
656 // } pairs = { NULL, NULL, NULL }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
657 // node yaml_node_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
658 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
659 // assert(document) // Non-NULL document object is expected.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
660 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
661 // if (!tag) {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
662 // tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
663 // }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
664 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
665 // if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
666 // tag_copy = yaml_strdup(tag)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
667 // if (!tag_copy) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
668 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
669 // if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
670 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
671 // MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
672 // style, mark, mark)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
673 // if (!PUSH(&context, document.nodes, node)) goto error
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
674 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
675 // return document.nodes.top - document.nodes.start
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
676 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
677 //error:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
678 // STACK_DEL(&context, pairs)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
679 // yaml_free(tag_copy)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
680 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
681 // return 0
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
682 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
683 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
684 ///*
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
685 // * Append an item to a sequence node.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
686 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
687 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
688 //YAML_DECLARE(int)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
689 //yaml_document_append_sequence_item(document *yaml_document_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
690 // sequence int, item int)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
691 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
692 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
693 // error yaml_error_type_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
694 // } context
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
695 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
696 // assert(document) // Non-NULL document is required.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
697 // assert(sequence > 0
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
698 // && document.nodes.start + sequence <= document.nodes.top)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
699 // // Valid sequence id is required.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
700 // assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
701 // // A sequence node is required.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
702 // assert(item > 0 && document.nodes.start + item <= document.nodes.top)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
703 // // Valid item id is required.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
704 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
705 // if (!PUSH(&context,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
706 // document.nodes.start[sequence-1].data.sequence.items, item))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
707 // return 0
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
708 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
709 // return 1
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
710 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
711 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
712 ///*
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
713 // * Append a pair of a key and a value to a mapping node.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
714 // */
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
715 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
716 //YAML_DECLARE(int)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
717 //yaml_document_append_mapping_pair(document *yaml_document_t,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
718 // mapping int, key int, value int)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
719 //{
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
720 // struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
721 // error yaml_error_type_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
722 // } context
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
723 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
724 // pair yaml_node_pair_t
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
725 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
726 // assert(document) // Non-NULL document is required.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
727 // assert(mapping > 0
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
728 // && document.nodes.start + mapping <= document.nodes.top)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
729 // // Valid mapping id is required.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
730 // assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
731 // // A mapping node is required.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
732 // assert(key > 0 && document.nodes.start + key <= document.nodes.top)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
733 // // Valid key id is required.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
734 // assert(value > 0 && document.nodes.start + value <= document.nodes.top)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
735 // // Valid value id is required.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
736 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
737 // pair.key = key
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
738 // pair.value = value
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
739 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
740 // if (!PUSH(&context,
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
741 // document.nodes.start[mapping-1].data.mapping.pairs, pair))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
742 // return 0
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
743 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
744 // return 1
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
745 //}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
746 //
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
747 //