3 * @brief Public interface for libyaml.
5 * Include the header file with the code:
7 * #include <yaml/yaml.h>
21 * @defgroup version Version Information
26 * Get the library version as a string.
28 * @returns The function returns the pointer to a static string of the form
29 * @c "X.Y.Z", where @c X is the major version number, @c Y is a minor version
30 * number, and @c Z is the patch version number.
34 yaml_get_version_string(void);
37 * Get the library version numbers.
39 * @param[out] major Major version number.
40 * @param[out] minor Minor version number.
41 * @param[out] patch Patch version number.
45 yaml_get_version(int *major, int *minor, int *patch);
50 * @defgroup basic Basic Types
54 /** The character type. */
55 typedef unsigned char yaml_char_t;
57 /** The stream encoding. */
61 YAML_UTF16LE_ENCODING,
83 YAML_ANY_SCALAR_STYLE,
84 YAML_PLAIN_SCALAR_STYLE,
85 YAML_SINGLE_QUOTED_SCALAR_STYLE,
86 YAML_DOUBLE_QUOTED_SCALAR_STYLE,
87 YAML_LITERAL_SCALAR_STYLE,
88 YAML_FOLDED_SCALAR_STYLE
89 } yaml_scalar_style_t;
92 YAML_ANY_SEQUENCE_STYLE,
93 YAML_BLOCK_SEQUENCE_STYLE,
94 YAML_FLOW_SEQUENCE_STYLE
95 } yaml_sequence_style_t;
98 YAML_ANY_MAPPING_STYLE,
99 YAML_BLOCK_MAPPING_STYLE,
100 YAML_FLOW_MAPPING_STYLE
101 } yaml_mapping_style_t;
104 YAML_STREAM_START_TOKEN,
105 YAML_STREAM_END_TOKEN,
107 YAML_VERSION_DIRECTIVE_TOKEN,
108 YAML_TAG_DIRECTIVE_TOKEN,
109 YAML_DOCUMENT_START_TOKEN,
110 YAML_DOCUMENT_END_TOKEN,
112 YAML_BLOCK_SEQUENCE_START_TOKEN,
113 YAML_BLOCK_MAPPING_START_TOKEN,
114 YAML_BLOCK_END_TOKEN,
116 YAML_FLOW_SEQUENCE_START_TOKEN,
117 YAML_FLOW_SEQUENCE_END_TOKEN,
118 YAML_FLOW_MAPPING_START_TOKEN,
119 YAML_FLOW_MAPPING_END_TOKEN,
121 YAML_BLOCK_ENTRY_TOKEN,
122 YAML_FLOW_ENTRY_TOKEN,
133 YAML_STREAM_START_EVENT,
134 YAML_STREAM_END_EVENT,
136 YAML_DOCUMENT_START_EVENT,
137 YAML_DOCUMENT_END_EVENT,
142 YAML_SEQUENCE_START_EVENT,
143 YAML_SEQUENCE_END_EVENT,
145 YAML_MAPPING_START_EVENT,
146 YAML_MAPPING_END_EVENT
157 yaml_error_type_t type;
159 yaml_mark_t context_mark;
161 yaml_mark_t problem_mark;
165 yaml_token_type_t type;
167 yaml_encoding_t encoding;
173 yaml_scalar_style_t style;
184 yaml_mark_t start_mark;
185 yaml_mark_t end_mark;
189 yaml_event_type_t type;
192 yaml_encoding_t encoding;
218 yaml_scalar_style_t style;
224 yaml_sequence_style_t style;
230 yaml_mapping_style_t style;
233 yaml_mark_t start_mark;
234 yaml_mark_t end_mark;
241 * @defgroup parser Parser Definitions
246 * The prototype of a read handler.
248 * The read handler is called when the parser needs to read more bytes from the
249 * source. The handler should write not more than @a size bytes to the @a
250 * buffer. The number of written bytes should be set to the @a length variable.
252 * @param[in] ext A pointer to an application data specified by
253 * @c yaml_parser_set_read_handler.
254 * @param[out] buffer The buffer to write the data from the source.
255 * @param[in] size The size of the buffer.
256 * @param[out] length The actual number of bytes read from the source.
258 * @returns On success, the handler should return @c 1. If the handler failed,
259 * the returned value should be @c 0. On EOF, the handler should set the
260 * @a length to @c 0 and return @c 1.
262 typedef int yaml_read_handler_t(void *ext, yaml_char_t *buffer, size_t size,
267 * The parser structure.
269 * All members are internal. Manage the structure using the @c yaml_parser_
270 * family of functions.
281 yaml_read_handler_t *reader;
283 /** A pointer for passing to the read handler. */
289 /** The pointer to the beginning of the working buffer. */
292 /** The pointer to the current character in the working buffer. */
293 yaml_char_t *pointer;
295 /** The remaining undecoded characters. */
296 unsigned char *raw_buffer;
298 /** The size of the raw buffer. */
299 size_t raw_buffer_size;
301 /** The input encoding. */
302 yaml_encoding_t encoding;
311 * Create a new parser.
313 * This function creates a new parser object. An application is responsible
314 * for destroying the object using the @c yaml_parser_delete function.
316 * @returns A new parser object; @c NULL on error.
320 yaml_parser_new(void);
325 * @param[in] parser A parser object.
329 yaml_parser_delete(yaml_parser_t *parser);
342 #endif /* #ifndef YAML_H */