source: libyaml/trunk/include/yaml/yaml.h @ 172

Revision 172, 3.9 KB checked in by xi, 9 years ago (diff)

Add doxygen support.

RevLine 
[172]1/**
2 * @file yaml.h
3 * @brief Public interface for libyaml.
4 *
5 * Include the header file with
6 * @code
7 * #include <yaml/yaml.h>
8 * @endcode
9 */
[162]10
[169]11#ifndef YAML_H
12#define YAML_H
[162]13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
[169]18#include <stdlib.h>
[162]19
[169]20#include "yaml_version.h"
21#include "yaml_error.h"
22
[162]23typedef enum {
[169]24    YAML_DETECT_ENCODING,
[162]25    YAML_UTF8_ENCODING,
26    YAML_UTF16LE_ENCODING,
27    YAML_UTF16BE_ENCODING
28} yaml_encoding_t;
29
30typedef enum {
[169]31    YAML_ANY_SCALAR_STYLE,
[162]32    YAML_PLAIN_SCALAR_STYLE,
33    YAML_SINGLE_QUOTED_SCALAR_STYLE,
34    YAML_DOUBLE_QUOTED_SCALAR_STYLE,
35    YAML_LITERAL_SCALAR_STYLE,
36    YAML_FOLDED_SCALAR_STYLE
37} yaml_scalar_style_t;
38
39typedef enum {
[169]40    YAML_ANY_SEQUENCE_STYLE,
[162]41    YAML_BLOCK_SEQUENCE_STYLE,
42    YAML_FLOW_SEQUENCE_STYLE
43} yaml_sequence_style_t;
44
45typedef enum {
[169]46    YAML_ANY_MAPPING_STYLE,
[162]47    YAML_BLOCK_MAPPING_STYLE,
48    YAML_FLOW_MAPPING_STYLE
49} yaml_mapping_style_t;
50
51typedef enum {
52    YAML_STREAM_START_TOKEN,
53    YAML_STREAM_END_TOKEN,
[169]54
[162]55    YAML_VERSION_DIRECTIVE_TOKEN,
56    YAML_TAG_DIRECTIVE_TOKEN,
57    YAML_DOCUMENT_START_TOKEN,
58    YAML_DOCUMENT_END_TOKEN,
[169]59
[162]60    YAML_BLOCK_SEQUENCE_START_TOKEN,
61    YAML_BLOCK_MAPPING_START_TOKEN,
62    YAML_BLOCK_END_TOKEN,
[169]63
[162]64    YAML_FLOW_SEQUENCE_START_TOKEN,
65    YAML_FLOW_SEQUENCE_END_TOKEN,
66    YAML_FLOW_MAPPING_START_TOKEN,
67    YAML_FLOW_MAPPING_END_TOKEN,
[169]68
[162]69    YAML_BLOCK_ENTRY_TOKEN,
70    YAML_FLOW_ENTRY_TOKEN,
71    YAML_KEY_TOKEN,
72    YAML_VALUE_TOKEN,
[169]73
[162]74    YAML_ALIAS_TOKEN,
75    YAML_ANCHOR_TOKEN,
76    YAML_TAG_TOKEN,
77    YAML_SCALAR_TOKEN
78} yaml_token_type_t;
79
80typedef enum {
81    YAML_STREAM_START_EVENT,
82    YAML_STREAM_END_EVENT,
[169]83
[162]84    YAML_DOCUMENT_START_EVENT,
85    YAML_DOCUMENT_END_EVENT,
[169]86
[162]87    YAML_ALIAS_EVENT,
[169]88    YAML_SCALAR_EVENT,
89
[162]90    YAML_SEQUENCE_START_EVENT,
91    YAML_SEQUENCE_END_EVENT,
[169]92
[162]93    YAML_MAPPING_START_EVENT,
[169]94    YAML_MAPPING_END_EVENT
[162]95} yaml_event_type_t;
96
97typedef struct {
[169]98    size_t offset;
[162]99    size_t index;
100    size_t line;
101    size_t column;
102} yaml_mark_t;
103
104typedef struct {
105    yaml_error_type_t type;
106    char *context;
107    yaml_mark_t context_mark;
108    char *problem;
109    yaml_mark_t problem_mark;
110} yaml_error_t;
111
112typedef struct {
113    yaml_token_type_t type;
114    union {
115        yaml_encoding_t encoding;
[169]116        char *anchor;
117        char *tag;
[162]118        struct {
[169]119            char *value;
120            size_t length;
[162]121            yaml_scalar_style_t style;
122        } scalar;
123        struct {
124            int major;
125            int minor;
126        } version;
127        struct {
[169]128          char *handle;
129          char *prefix;
[162]130        } tag_pair;
131    } data;
132    yaml_mark_t start_mark;
133    yaml_mark_t end_mark;
134} yaml_token_t;
135
136typedef struct {
137    yaml_event_type_t type;
138    union {
139        struct {
140            yaml_encoding_t encoding;
141        } stream_start;
142        struct {
143            struct {
144                int major;
145                int minor;
146            } version;
147            struct {
[169]148                char *handle;
149                char *prefix;
[162]150            } **tag_pairs;
151            int implicit;
152        } document_start;
153        struct {
154            int implicit;
155        } document_end;
156        struct {
[169]157            char *anchor;
[162]158        } alias;
159        struct {
[169]160            char *anchor;
161            char *tag;
162            char *value;
163            size_t length;
[162]164            int plain_implicit;
165            int quoted_implicit;
166            yaml_scalar_style_t style;
167        } scalar;
168        struct {
[169]169            char *anchor;
170            char *tag;
[162]171            int implicit;
172            yaml_sequence_style_t style;
173        } sequence_start;
174        struct {
[169]175            char *anchor;
176            char *tag;
[162]177            int implicit;
178            yaml_mapping_style_t style;
179        } mapping_start;
180    } data;
181    yaml_mark_t start_mark;
182    yaml_mark_t end_mark;
183} yaml_event_t;
184
[169]185/*
[162]186typedef struct {
187} yaml_parser_t;
188
189typedef struct {
190} yaml_emitter_t;
[169]191*/
[162]192
193#ifdef __cplusplus
194}
195#endif
196
[169]197#endif /* #ifndef YAML_H */
[162]198
Note: See TracBrowser for help on using the repository browser.