#ifndef _YAML_H #define _YAML_H #ifdef __cplusplus extern "C" { #endif typedef enum { YAML_READER_ERROR, YAML_SCANNER_ERROR, YAML_PARSER_ERROR, YAML_EMITTER_ERROR } yaml_error_type_t; typedef enum { YAML_UTF8_ENCODING, YAML_UTF16LE_ENCODING, YAML_UTF16BE_ENCODING } yaml_encoding_t; typedef enum { YAML_PLAIN_SCALAR_STYLE, YAML_SINGLE_QUOTED_SCALAR_STYLE, YAML_DOUBLE_QUOTED_SCALAR_STYLE, YAML_LITERAL_SCALAR_STYLE, YAML_FOLDED_SCALAR_STYLE } yaml_scalar_style_t; typedef enum { YAML_BLOCK_SEQUENCE_STYLE, YAML_FLOW_SEQUENCE_STYLE } yaml_sequence_style_t; typedef enum { YAML_BLOCK_MAPPING_STYLE, YAML_FLOW_MAPPING_STYLE } yaml_mapping_style_t; typedef enum { YAML_STREAM_START_TOKEN, YAML_STREAM_END_TOKEN, YAML_VERSION_DIRECTIVE_TOKEN, YAML_TAG_DIRECTIVE_TOKEN, YAML_DOCUMENT_START_TOKEN, YAML_DOCUMENT_END_TOKEN, YAML_BLOCK_SEQUENCE_START_TOKEN, YAML_BLOCK_MAPPING_START_TOKEN, YAML_BLOCK_END_TOKEN, YAML_FLOW_SEQUENCE_START_TOKEN, YAML_FLOW_SEQUENCE_END_TOKEN, YAML_FLOW_MAPPING_START_TOKEN, YAML_FLOW_MAPPING_END_TOKEN, YAML_BLOCK_ENTRY_TOKEN, YAML_FLOW_ENTRY_TOKEN, YAML_KEY_TOKEN, YAML_VALUE_TOKEN, YAML_ALIAS_TOKEN, YAML_ANCHOR_TOKEN, YAML_TAG_TOKEN, YAML_SCALAR_TOKEN } yaml_token_type_t; typedef enum { YAML_STREAM_START_EVENT, YAML_STREAM_END_EVENT, YAML_DOCUMENT_START_EVENT, YAML_DOCUMENT_END_EVENT, YAML_ALIAS_EVENT, YAML_SEQUENCE_START_EVENT, YAML_SEQUENCE_END_EVENT, YAML_MAPPING_START_EVENT, YAML_MAPPING_END_EVENT, YAML_SCALAR_EVENT } yaml_event_type_t; typedef struct { char *value; size_t length; } yaml_string_t; typedef struct { size_t index; size_t line; size_t column; } yaml_mark_t; typedef struct { yaml_error_type_t type; char *context; yaml_mark_t context_mark; char *problem; yaml_mark_t problem_mark; } yaml_error_t; typedef struct { yaml_token_type_t type; union { yaml_encoding_t encoding; yaml_string_t anchor; yaml_string_t tag; struct { yaml_string_t value; yaml_scalar_style_t style; } scalar; struct { int major; int minor; } version; struct { yaml_string_t handle; yaml_string_t prefix; } tag_pair; } data; yaml_mark_t start_mark; yaml_mark_t end_mark; } yaml_token_t; typedef struct { yaml_event_type_t type; union { struct { yaml_encoding_t encoding; } stream_start; struct { struct { int major; int minor; } version; struct { yaml_string_t handle; yaml_string_t prefix; } **tag_pairs; int implicit; } document_start; struct { int implicit; } document_end; struct { yaml_string_t anchor; } alias; struct { yaml_string_t anchor; yaml_string_t tag; int plain_implicit; int quoted_implicit; yaml_scalar_style_t style; } scalar; struct { yaml_string_t anchor; yaml_string_t tag; int implicit; yaml_sequence_style_t style; } sequence_start; struct { yaml_string_t anchor; yaml_string_t tag; int implicit; yaml_mapping_style_t style; } mapping_start; } data; yaml_mark_t start_mark; yaml_mark_t end_mark; } yaml_event_t; typedef struct { } yaml_scanner_t; typedef struct { } yaml_parser_t; typedef struct { } yaml_composer_t; typedef struct { } yaml_emitter_t; typedef struct { } yaml_serializer_t; #ifdef __cplusplus } #endif #endif /* #ifndef _YAML_H */