| 20 | | #include "yaml_version.h" |
|---|
| 21 | | #include "yaml_error.h" |
|---|
| 22 | | |
|---|
| 23 | | typedef enum { |
|---|
| 24 | | YAML_DETECT_ENCODING, |
|---|
| | 20 | /** |
|---|
| | 21 | * @defgroup version Version Information |
|---|
| | 22 | * @{ |
|---|
| | 23 | */ |
|---|
| | 24 | |
|---|
| | 25 | /** |
|---|
| | 26 | * Get the library version as a string. |
|---|
| | 27 | * |
|---|
| | 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. |
|---|
| | 31 | */ |
|---|
| | 32 | |
|---|
| | 33 | const char * |
|---|
| | 34 | yaml_get_version_string(void); |
|---|
| | 35 | |
|---|
| | 36 | /** |
|---|
| | 37 | * Get the library version numbers. |
|---|
| | 38 | * |
|---|
| | 39 | * @param[out] major Major version number. |
|---|
| | 40 | * @param[out] minor Minor version number. |
|---|
| | 41 | * @param[out] patch Patch version number. |
|---|
| | 42 | */ |
|---|
| | 43 | |
|---|
| | 44 | void |
|---|
| | 45 | yaml_get_version(int *major, int *minor, int *patch); |
|---|
| | 46 | |
|---|
| | 47 | /** @} */ |
|---|
| | 48 | |
|---|
| | 49 | /** |
|---|
| | 50 | * @defgroup basic Basic Types |
|---|
| | 51 | * @{ |
|---|
| | 52 | */ |
|---|
| | 53 | |
|---|
| | 54 | /** The character type. */ |
|---|
| | 55 | typedef unsigned char yaml_char_t; |
|---|
| | 56 | |
|---|
| | 57 | /** The stream encoding. */ |
|---|
| | 58 | typedef enum { |
|---|
| | 59 | YAML_ANY_ENCODING, |
|---|
| | 237 | */ |
|---|
| | 238 | |
|---|
| | 239 | |
|---|
| | 240 | /** |
|---|
| | 241 | * @defgroup parser Parser Definitions |
|---|
| | 242 | * @{ |
|---|
| | 243 | */ |
|---|
| | 244 | |
|---|
| | 245 | /** |
|---|
| | 246 | * The prototype of a read handler. |
|---|
| | 247 | * |
|---|
| | 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. |
|---|
| | 251 | * |
|---|
| | 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. |
|---|
| | 257 | * |
|---|
| | 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. |
|---|
| | 261 | */ |
|---|
| | 262 | typedef int yaml_read_handler_t(void *ext, yaml_char_t *buffer, size_t size, |
|---|
| | 263 | size_t *length); |
|---|
| | 264 | |
|---|
| | 265 | |
|---|
| | 266 | /** |
|---|
| | 267 | * The parser structure. |
|---|
| | 268 | * |
|---|
| | 269 | * All members are internal. Manage the structure using the @c yaml_parser_ |
|---|
| | 270 | * family of functions. |
|---|
| | 271 | */ |
|---|
| | 272 | |
|---|
| | 273 | typedef struct { |
|---|
| | 274 | |
|---|
| | 275 | /** |
|---|
| | 276 | * @name Reader stuff |
|---|
| | 277 | * @{ |
|---|
| | 278 | */ |
|---|
| | 279 | |
|---|
| | 280 | /** Read handler */ |
|---|
| | 281 | yaml_read_handler_t *reader; |
|---|
| | 282 | |
|---|
| | 283 | /** A pointer for passing to the read handler. */ |
|---|
| | 284 | void *reader_ext; |
|---|
| | 285 | |
|---|
| | 286 | /** EOF flag */ |
|---|
| | 287 | int eof; |
|---|
| | 288 | |
|---|
| | 289 | /** The pointer to the beginning of the working buffer. */ |
|---|
| | 290 | yaml_char_t *buffer; |
|---|
| | 291 | |
|---|
| | 292 | /** The pointer to the current character in the working buffer. */ |
|---|
| | 293 | yaml_char_t *pointer; |
|---|
| | 294 | |
|---|
| | 295 | /** The remaining undecoded characters. */ |
|---|
| | 296 | unsigned char *raw_buffer; |
|---|
| | 297 | |
|---|
| | 298 | /** The size of the raw buffer. */ |
|---|
| | 299 | size_t raw_buffer_size; |
|---|
| | 300 | |
|---|
| | 301 | /** The input encoding. */ |
|---|
| | 302 | yaml_encoding_t encoding; |
|---|
| | 303 | |
|---|
| | 304 | /** |
|---|
| | 305 | * @} |
|---|
| | 306 | */ |
|---|
| | 307 | |
|---|
| | 308 | } yaml_parser_t; |
|---|
| | 309 | |
|---|
| | 310 | /** |
|---|
| | 311 | * Create a new parser. |
|---|
| | 312 | * |
|---|
| | 313 | * This function creates a new parser object. An application is responsible |
|---|
| | 314 | * for destroying the object using the @c yaml_parser_delete function. |
|---|
| | 315 | * |
|---|
| | 316 | * @returns A new parser object; @c NULL on error. |
|---|
| | 317 | */ |
|---|
| | 318 | |
|---|
| | 319 | yaml_parser_t * |
|---|
| | 320 | yaml_parser_new(void); |
|---|
| | 321 | |
|---|
| | 322 | /** |
|---|
| | 323 | * Destroy a parser. |
|---|
| | 324 | * |
|---|
| | 325 | * @param[in] parser A parser object. |
|---|
| | 326 | */ |
|---|
| | 327 | |
|---|
| | 328 | void |
|---|
| | 329 | yaml_parser_delete(yaml_parser_t *parser); |
|---|
| | 330 | |
|---|
| | 331 | /** @} */ |
|---|
| | 332 | |
|---|