11 * Allocate a dynamic memory block.
15 yaml_malloc(size_t size)
17 return malloc(size ? size : 1);
21 * Reallocate a dynamic memory block.
25 yaml_realloc(void *ptr, size_t size)
27 return ptr ? realloc(ptr, size ? size : 1) : malloc(size ? size : 1);
31 * Free a dynamic memory block.
41 * Create a new parser object.
47 yaml_parser_t *parser;
49 parser = yaml_malloc(sizeof(yaml_parser_t));
50 if (!parser) return NULL;
52 memset(parser, 0, sizeof(yaml_parser_t));
58 * Destroy a parser object.
62 yaml_parser_delete(yaml_parser_t *parser)
64 assert(parser); /* Non-NULL parser object expected. */
66 yaml_free(parser->buffer);
67 if (!parser->raw_buffer_foreign)
68 yaml_free(parser->raw_buffer);
70 memset(parser, 0, sizeof(yaml_parser_t));
76 * String read handler (always returns error).
80 yaml_string_read_handler(void *data, unsigned char *buffer, size_t size,
92 yaml_file_read_handler(void *data, unsigned char *buffer, size_t size,
95 *size_read = fread(buffer, 1, size, (FILE *)ext);
96 return !ferror((FILE *)ext);
100 * Set a string input.
104 yaml_parser_set_input_string(yaml_parser_t *parser,
105 unsigned char *input, size_t size)
107 assert(parser); /* Non-NULL parser object expected. */
108 assert(!parser->reader); /* You can set the source only once. */
109 assert(input); /* Non-NULL input string expected. */
111 parser->read_handler = yaml_string_read_handler;
112 parser->read_handler_data = NULL;
114 /* We use the input string as a raw (undecoded) buffer. */
115 parser->raw_buffer = input;
116 parser->raw_buffer_size = size;
117 parser->raw_buffer_foreign = 1;
125 yaml_parser_set_input_file(yaml_parser_t *parser, FILE *file)
127 assert(parser); /* Non-NULL parser object expected. */
128 assert(!parser->reader); /* You can set the source only once. */
129 assert(file); /* Non-NULL file object expected. */
131 parser->read_handler = yaml_file_read_handler;
132 parser->read_handler_data = file;
136 * Set a generic input.
140 yaml_parser_set_input(yaml_parser_t *parser,
141 yaml_read_handler_t *handler, void *data)
143 assert(parser); /* Non-NULL parser object expected. */
144 assert(!parser->reader); /* You can set the source only once. */
145 assert(handler); /* Non-NULL read handler expected. */
147 parser->read_handler = handler;
148 parser->read_handler_data = data
152 * Set the source encoding.
156 yaml_parser_set_encoding(yaml_parser_t *parser, yaml_encoding_t encoding)
158 assert(parser); /* Non-NULL parser object expected. */
159 assert(!parser->encoding); /* Encoding is already set or detected. */
161 parser->encoding = encoding;