| 194 | */ |
| 195 | |
| 196 | YAML_DECLARE(int) |
| 197 | yaml_parser_initialize(yaml_parser_t *parser) |
| 198 | { |
| 199 | assert(parser); /* Non-NULL parser object expected. */ |
| 200 | |
| 201 | memset(parser, 0, sizeof(yaml_parser_t)); |
| 202 | if (!BUFFER_INIT(parser, parser->raw_buffer, INPUT_RAW_BUFFER_SIZE)) |
| 203 | goto error; |
| 204 | if (!BUFFER_INIT(parser, parser->buffer, INPUT_BUFFER_SIZE)) |
| 205 | goto error; |
| 206 | if (!QUEUE_INIT(parser, parser->tokens, INITIAL_QUEUE_SIZE)) |
| 207 | goto error; |
| 208 | if (!STACK_INIT(parser, parser->indents, INITIAL_STACK_SIZE)) |
| 209 | goto error; |
| 210 | if (!STACK_INIT(parser, parser->simple_keys, INITIAL_STACK_SIZE)) |
| 211 | goto error; |
| 212 | if (!STACK_INIT(parser, parser->states, INITIAL_STACK_SIZE)) |
| 213 | goto error; |
| 214 | if (!STACK_INIT(parser, parser->marks, INITIAL_STACK_SIZE)) |
| 215 | goto error; |
| 216 | if (!STACK_INIT(parser, parser->tag_directives, INITIAL_STACK_SIZE)) |
| 217 | goto error; |
| 218 | |
| 219 | return 1; |
| 220 | |
| 221 | error: |
| 222 | |
| 223 | BUFFER_DEL(parser, parser->raw_buffer); |
| 224 | BUFFER_DEL(parser, parser->buffer); |
| 225 | QUEUE_DEL(parser, parser->tokens); |
| 226 | STACK_DEL(parser, parser->indents); |
| 227 | STACK_DEL(parser, parser->simple_keys); |
| 228 | STACK_DEL(parser, parser->states); |
| 229 | STACK_DEL(parser, parser->marks); |
| 230 | STACK_DEL(parser, parser->tag_directives); |
| 231 | |
| 232 | return 0; |
| 233 | } |
| 234 | |
| 235 | /* |
| 236 | * Destroy a parser object. |