123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954 |
- /*
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- package candiedyaml
- import (
- "fmt"
- "io"
- )
- /** The version directive data. */
- type yaml_version_directive_t struct {
- major int // The major version number
- minor int // The minor version number
- }
- /** The tag directive data. */
- type yaml_tag_directive_t struct {
- handle []byte // The tag handle
- prefix []byte // The tag prefix
- }
- /** The stream encoding. */
- type yaml_encoding_t int
- const (
- /** Let the parser choose the encoding. */
- yaml_ANY_ENCODING yaml_encoding_t = iota
- /** The defau lt UTF-8 encoding. */
- yaml_UTF8_ENCODING
- /** The UTF-16-LE encoding with BOM. */
- yaml_UTF16LE_ENCODING
- /** The UTF-16-BE encoding with BOM. */
- yaml_UTF16BE_ENCODING
- )
- /** Line break types. */
- type yaml_break_t int
- const (
- yaml_ANY_BREAK yaml_break_t = iota /** Let the parser choose the break type. */
- yaml_CR_BREAK /** Use CR for line breaks (Mac style). */
- yaml_LN_BREAK /** Use LN for line breaks (Unix style). */
- yaml_CRLN_BREAK /** Use CR LN for line breaks (DOS style). */
- )
- /** Many bad things could happen with the parser and emitter. */
- type YAML_error_type_t int
- const (
- /** No error is produced. */
- yaml_NO_ERROR YAML_error_type_t = iota
- /** Cannot allocate or reallocate a block of memory. */
- yaml_MEMORY_ERROR
- /** Cannot read or decode the input stream. */
- yaml_READER_ERROR
- /** Cannot scan the input stream. */
- yaml_SCANNER_ERROR
- /** Cannot parse the input stream. */
- yaml_PARSER_ERROR
- /** Cannot compose a YAML document. */
- yaml_COMPOSER_ERROR
- /** Cannot write to the output stream. */
- yaml_WRITER_ERROR
- /** Cannot emit a YAML stream. */
- yaml_EMITTER_ERROR
- )
- /** The pointer position. */
- type YAML_mark_t struct {
- /** The position index. */
- index int
- /** The position line. */
- line int
- /** The position column. */
- column int
- }
- func (m YAML_mark_t) String() string {
- return fmt.Sprintf("line %d, column %d", m.line, m.column)
- }
- /** @} */
- /**
- * @defgroup styles Node Styles
- * @{
- */
- type yaml_style_t int
- /** Scalar styles. */
- type yaml_scalar_style_t yaml_style_t
- const (
- /** Let the emitter choose the style. */
- yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota
- /** The plain scalar style. */
- yaml_PLAIN_SCALAR_STYLE
- /** The single-quoted scalar style. */
- yaml_SINGLE_QUOTED_SCALAR_STYLE
- /** The double-quoted scalar style. */
- yaml_DOUBLE_QUOTED_SCALAR_STYLE
- /** The literal scalar style. */
- yaml_LITERAL_SCALAR_STYLE
- /** The folded scalar style. */
- yaml_FOLDED_SCALAR_STYLE
- )
- /** Sequence styles. */
- type yaml_sequence_style_t yaml_style_t
- const (
- /** Let the emitter choose the style. */
- yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota
- /** The block sequence style. */
- yaml_BLOCK_SEQUENCE_STYLE
- /** The flow sequence style. */
- yaml_FLOW_SEQUENCE_STYLE
- )
- /** Mapping styles. */
- type yaml_mapping_style_t yaml_style_t
- const (
- /** Let the emitter choose the style. */
- yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota
- /** The block mapping style. */
- yaml_BLOCK_MAPPING_STYLE
- /** The flow mapping style. */
- yaml_FLOW_MAPPING_STYLE
- /* yaml_FLOW_SET_MAPPING_STYLE */
- )
- /** @} */
- /**
- * @defgroup tokens Tokens
- * @{
- */
- /** Token types. */
- type yaml_token_type_t int
- const (
- /** An empty token. */
- yaml_NO_TOKEN yaml_token_type_t = iota
- /** A STREAM-START token. */
- yaml_STREAM_START_TOKEN
- /** A STREAM-END token. */
- yaml_STREAM_END_TOKEN
- /** A VERSION-DIRECTIVE token. */
- yaml_VERSION_DIRECTIVE_TOKEN
- /** A TAG-DIRECTIVE token. */
- yaml_TAG_DIRECTIVE_TOKEN
- /** A DOCUMENT-START token. */
- yaml_DOCUMENT_START_TOKEN
- /** A DOCUMENT-END token. */
- yaml_DOCUMENT_END_TOKEN
- /** A BLOCK-SEQUENCE-START token. */
- yaml_BLOCK_SEQUENCE_START_TOKEN
- /** A BLOCK-SEQUENCE-END token. */
- yaml_BLOCK_MAPPING_START_TOKEN
- /** A BLOCK-END token. */
- yaml_BLOCK_END_TOKEN
- /** A FLOW-SEQUENCE-START token. */
- yaml_FLOW_SEQUENCE_START_TOKEN
- /** A FLOW-SEQUENCE-END token. */
- yaml_FLOW_SEQUENCE_END_TOKEN
- /** A FLOW-MAPPING-START token. */
- yaml_FLOW_MAPPING_START_TOKEN
- /** A FLOW-MAPPING-END token. */
- yaml_FLOW_MAPPING_END_TOKEN
- /** A BLOCK-ENTRY token. */
- yaml_BLOCK_ENTRY_TOKEN
- /** A FLOW-ENTRY token. */
- yaml_FLOW_ENTRY_TOKEN
- /** A KEY token. */
- yaml_KEY_TOKEN
- /** A VALUE token. */
- yaml_VALUE_TOKEN
- /** An ALIAS token. */
- yaml_ALIAS_TOKEN
- /** An ANCHOR token. */
- yaml_ANCHOR_TOKEN
- /** A TAG token. */
- yaml_TAG_TOKEN
- /** A SCALAR token. */
- yaml_SCALAR_TOKEN
- )
- /** The token structure. */
- type yaml_token_t struct {
- /** The token type. */
- token_type yaml_token_type_t
- /** The token data. */
- /** The stream start (for @c yaml_STREAM_START_TOKEN). */
- encoding yaml_encoding_t
- /** The alias (for @c yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN,yaml_TAG_TOKEN ). */
- /** The anchor (for @c ). */
- /** The scalar value (for @c ). */
- value []byte
- /** The tag suffix. */
- suffix []byte
- /** The scalar value (for @c yaml_SCALAR_TOKEN). */
- /** The scalar style. */
- style yaml_scalar_style_t
- /** The version directive (for @c yaml_VERSION_DIRECTIVE_TOKEN). */
- version_directive yaml_version_directive_t
- /** The tag directive (for @c yaml_TAG_DIRECTIVE_TOKEN). */
- prefix []byte
- /** The beginning of the token. */
- start_mark YAML_mark_t
- /** The end of the token. */
- end_mark YAML_mark_t
- major, minor int
- }
- /**
- * @defgroup events Events
- * @{
- */
- /** Event types. */
- type yaml_event_type_t int
- const (
- /** An empty event. */
- yaml_NO_EVENT yaml_event_type_t = iota
- /** A STREAM-START event. */
- yaml_STREAM_START_EVENT
- /** A STREAM-END event. */
- yaml_STREAM_END_EVENT
- /** A DOCUMENT-START event. */
- yaml_DOCUMENT_START_EVENT
- /** A DOCUMENT-END event. */
- yaml_DOCUMENT_END_EVENT
- /** An ALIAS event. */
- yaml_ALIAS_EVENT
- /** A SCALAR event. */
- yaml_SCALAR_EVENT
- /** A SEQUENCE-START event. */
- yaml_SEQUENCE_START_EVENT
- /** A SEQUENCE-END event. */
- yaml_SEQUENCE_END_EVENT
- /** A MAPPING-START event. */
- yaml_MAPPING_START_EVENT
- /** A MAPPING-END event. */
- yaml_MAPPING_END_EVENT
- )
- /** The event structure. */
- type yaml_event_t struct {
- /** The event type. */
- event_type yaml_event_type_t
- /** The stream parameters (for @c yaml_STREAM_START_EVENT). */
- encoding yaml_encoding_t
- /** The document parameters (for @c yaml_DOCUMENT_START_EVENT). */
- version_directive *yaml_version_directive_t
- /** The beginning and end of the tag directives list. */
- tag_directives []yaml_tag_directive_t
- /** The document parameters (for @c yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT,yaml_MAPPING_START_EVENT). */
- /** Is the document indicator implicit? */
- implicit bool
- /** The alias parameters (for @c yaml_ALIAS_EVENT,yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). */
- /** The anchor. */
- anchor []byte
- /** The scalar parameters (for @c yaml_SCALAR_EVENT,yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). */
- /** The tag. */
- tag []byte
- /** The scalar value. */
- value []byte
- /** Is the tag optional for the plain style? */
- plain_implicit bool
- /** Is the tag optional for any non-plain style? */
- quoted_implicit bool
- /** The sequence parameters (for @c yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). */
- /** The sequence style. */
- /** The scalar style. */
- style yaml_style_t
- /** The beginning of the event. */
- start_mark, end_mark YAML_mark_t
- }
- /**
- * @defgroup nodes Nodes
- * @{
- */
- const (
- /** The tag @c !!null with the only possible value: @c null. */
- yaml_NULL_TAG = "tag:yaml.org,2002:null"
- /** The tag @c !!bool with the values: @c true and @c falce. */
- yaml_BOOL_TAG = "tag:yaml.org,2002:bool"
- /** The tag @c !!str for string values. */
- yaml_STR_TAG = "tag:yaml.org,2002:str"
- /** The tag @c !!int for integer values. */
- yaml_INT_TAG = "tag:yaml.org,2002:int"
- /** The tag @c !!float for float values. */
- yaml_FLOAT_TAG = "tag:yaml.org,2002:float"
- /** The tag @c !!timestamp for date and time values. */
- yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp"
- /** The tag @c !!seq is used to denote sequences. */
- yaml_SEQ_TAG = "tag:yaml.org,2002:seq"
- /** The tag @c !!map is used to denote mapping. */
- yaml_MAP_TAG = "tag:yaml.org,2002:map"
- /** The default scalar tag is @c !!str. */
- yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG
- /** The default sequence tag is @c !!seq. */
- yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG
- /** The default mapping tag is @c !!map. */
- yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG
- yaml_BINARY_TAG = "tag:yaml.org,2002:binary"
- )
- /** Node types. */
- type yaml_node_type_t int
- const (
- /** An empty node. */
- yaml_NO_NODE yaml_node_type_t = iota
- /** A scalar node. */
- yaml_SCALAR_NODE
- /** A sequence node. */
- yaml_SEQUENCE_NODE
- /** A mapping node. */
- yaml_MAPPING_NODE
- )
- /** An element of a sequence node. */
- type yaml_node_item_t int
- /** An element of a mapping node. */
- type yaml_node_pair_t struct {
- /** The key of the element. */
- key int
- /** The value of the element. */
- value int
- }
- /** The node structure. */
- type yaml_node_t struct {
- /** The node type. */
- node_type yaml_node_type_t
- /** The node tag. */
- tag []byte
- /** The scalar parameters (for @c yaml_SCALAR_NODE). */
- scalar struct {
- /** The scalar value. */
- value []byte
- /** The scalar style. */
- style yaml_scalar_style_t
- }
- /** The sequence parameters (for @c yaml_SEQUENCE_NODE). */
- sequence struct {
- /** The stack of sequence items. */
- items []yaml_node_item_t
- /** The sequence style. */
- style yaml_sequence_style_t
- }
- /** The mapping parameters (for @c yaml_MAPPING_NODE). */
- mapping struct {
- /** The stack of mapping pairs (key, value). */
- pairs []yaml_node_pair_t
- /** The mapping style. */
- style yaml_mapping_style_t
- }
- /** The beginning of the node. */
- start_mark YAML_mark_t
- /** The end of the node. */
- end_mark YAML_mark_t
- }
- /** The document structure. */
- type yaml_document_t struct {
- /** The document nodes. */
- nodes []yaml_node_t
- /** The version directive. */
- version_directive *yaml_version_directive_t
- /** The list of tag directives. */
- tags []yaml_tag_directive_t
- /** Is the document start indicator implicit? */
- start_implicit bool
- /** Is the document end indicator implicit? */
- end_implicit bool
- /** The beginning of the document. */
- start_mark YAML_mark_t
- /** The end of the document. */
- end_mark YAML_mark_t
- }
- /**
- * The prototype of a read handler.
- *
- * The read handler is called when the parser needs to read more bytes from the
- * source. The handler should write not more than @a size bytes to the @a
- * buffer. The number of written bytes should be set to the @a length variable.
- *
- * @param[in,out] data A pointer to an application data specified by
- * yaml_parser_set_input().
- * @param[out] buffer The buffer to write the data from the source.
- * @param[in] size The size of the buffer.
- * @param[out] size_read The actual number of bytes read from the source.
- *
- * @returns On success, the handler should return @c 1. If the handler failed,
- * the returned value should be @c 0. On EOF, the handler should set the
- * @a size_read to @c 0 and return @c 1.
- */
- type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)
- /**
- * This structure holds information about a potential simple key.
- */
- type yaml_simple_key_t struct {
- /** Is a simple key possible? */
- possible bool
- /** Is a simple key required? */
- required bool
- /** The number of the token. */
- token_number int
- /** The position mark. */
- mark YAML_mark_t
- }
- /**
- * The states of the parser.
- */
- type yaml_parser_state_t int
- const (
- /** Expect STREAM-START. */
- yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota
- /** Expect the beginning of an implicit document. */
- yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE
- /** Expect DOCUMENT-START. */
- yaml_PARSE_DOCUMENT_START_STATE
- /** Expect the content of a document. */
- yaml_PARSE_DOCUMENT_CONTENT_STATE
- /** Expect DOCUMENT-END. */
- yaml_PARSE_DOCUMENT_END_STATE
- /** Expect a block node. */
- yaml_PARSE_BLOCK_NODE_STATE
- /** Expect a block node or indentless sequence. */
- yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE
- /** Expect a flow node. */
- yaml_PARSE_FLOW_NODE_STATE
- /** Expect the first entry of a block sequence. */
- yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE
- /** Expect an entry of a block sequence. */
- yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE
- /** Expect an entry of an indentless sequence. */
- yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE
- /** Expect the first key of a block mapping. */
- yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE
- /** Expect a block mapping key. */
- yaml_PARSE_BLOCK_MAPPING_KEY_STATE
- /** Expect a block mapping value. */
- yaml_PARSE_BLOCK_MAPPING_VALUE_STATE
- /** Expect the first entry of a flow sequence. */
- yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE
- /** Expect an entry of a flow sequence. */
- yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE
- /** Expect a key of an ordered mapping. */
- yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE
- /** Expect a value of an ordered mapping. */
- yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE
- /** Expect the and of an ordered mapping entry. */
- yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE
- /** Expect the first key of a flow mapping. */
- yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE
- /** Expect a key of a flow mapping. */
- yaml_PARSE_FLOW_MAPPING_KEY_STATE
- /** Expect a value of a flow mapping. */
- yaml_PARSE_FLOW_MAPPING_VALUE_STATE
- /** Expect an empty value of a flow mapping. */
- yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE
- /** Expect nothing. */
- yaml_PARSE_END_STATE
- )
- /**
- * This structure holds aliases data.
- */
- type yaml_alias_data_t struct {
- /** The anchor. */
- anchor []byte
- /** The node id. */
- index int
- /** The anchor mark. */
- mark YAML_mark_t
- }
- /**
- * The parser structure.
- *
- * All members are internal. Manage the structure using the @c yaml_parser_
- * family of functions.
- */
- type yaml_parser_t struct {
- /**
- * @name Error handling
- * @{
- */
- /** Error type. */
- error YAML_error_type_t
- /** Error description. */
- problem string
- /** The byte about which the problem occured. */
- problem_offset int
- /** The problematic value (@c -1 is none). */
- problem_value int
- /** The problem position. */
- problem_mark YAML_mark_t
- /** The error context. */
- context string
- /** The context position. */
- context_mark YAML_mark_t
- /**
- * @}
- */
- /**
- * @name Reader stuff
- * @{
- */
- /** Read handler. */
- read_handler yaml_read_handler_t
- /** Reader input data. */
- input_reader io.Reader
- input []byte
- input_pos int
- /** EOF flag */
- eof bool
- /** The working buffer. */
- buffer []byte
- buffer_pos int
- /* The number of unread characters in the buffer. */
- unread int
- /** The raw buffer. */
- raw_buffer []byte
- raw_buffer_pos int
- /** The input encoding. */
- encoding yaml_encoding_t
- /** The offset of the current position (in bytes). */
- offset int
- /** The mark of the current position. */
- mark YAML_mark_t
- /**
- * @}
- */
- /**
- * @name Scanner stuff
- * @{
- */
- /** Have we started to scan the input stream? */
- stream_start_produced bool
- /** Have we reached the end of the input stream? */
- stream_end_produced bool
- /** The number of unclosed '[' and '{' indicators. */
- flow_level int
- /** The tokens queue. */
- tokens []yaml_token_t
- tokens_head int
- /** The number of tokens fetched from the queue. */
- tokens_parsed int
- /* Does the tokens queue contain a token ready for dequeueing. */
- token_available bool
- /** The indentation levels stack. */
- indents []int
- /** The current indentation level. */
- indent int
- /** May a simple key occur at the current position? */
- simple_key_allowed bool
- /** The stack of simple keys. */
- simple_keys []yaml_simple_key_t
- /**
- * @}
- */
- /**
- * @name Parser stuff
- * @{
- */
- /** The parser states stack. */
- states []yaml_parser_state_t
- /** The current parser state. */
- state yaml_parser_state_t
- /** The stack of marks. */
- marks []YAML_mark_t
- /** The list of TAG directives. */
- tag_directives []yaml_tag_directive_t
- /**
- * @}
- */
- /**
- * @name Dumper stuff
- * @{
- */
- /** The alias data. */
- aliases []yaml_alias_data_t
- /** The currently parsed document. */
- document *yaml_document_t
- /**
- * @}
- */
- }
- /**
- * The prototype of a write handler.
- *
- * The write handler is called when the emitter needs to flush the accumulated
- * characters to the output. The handler should write @a size bytes of the
- * @a buffer to the output.
- *
- * @param[in,out] data A pointer to an application data specified by
- * yaml_emitter_set_output().
- * @param[in] buffer The buffer with bytes to be written.
- * @param[in] size The size of the buffer.
- *
- * @returns On success, the handler should return @c 1. If the handler failed,
- * the returned value should be @c 0.
- */
- type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error
- /** The emitter states. */
- type yaml_emitter_state_t int
- const (
- /** Expect STREAM-START. */
- yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota
- /** Expect the first DOCUMENT-START or STREAM-END. */
- yaml_EMIT_FIRST_DOCUMENT_START_STATE
- /** Expect DOCUMENT-START or STREAM-END. */
- yaml_EMIT_DOCUMENT_START_STATE
- /** Expect the content of a document. */
- yaml_EMIT_DOCUMENT_CONTENT_STATE
- /** Expect DOCUMENT-END. */
- yaml_EMIT_DOCUMENT_END_STATE
- /** Expect the first item of a flow sequence. */
- yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE
- /** Expect an item of a flow sequence. */
- yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE
- /** Expect the first key of a flow mapping. */
- yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE
- /** Expect a key of a flow mapping. */
- yaml_EMIT_FLOW_MAPPING_KEY_STATE
- /** Expect a value for a simple key of a flow mapping. */
- yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE
- /** Expect a value of a flow mapping. */
- yaml_EMIT_FLOW_MAPPING_VALUE_STATE
- /** Expect the first item of a block sequence. */
- yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE
- /** Expect an item of a block sequence. */
- yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE
- /** Expect the first key of a block mapping. */
- yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE
- /** Expect the key of a block mapping. */
- yaml_EMIT_BLOCK_MAPPING_KEY_STATE
- /** Expect a value for a simple key of a block mapping. */
- yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE
- /** Expect a value of a block mapping. */
- yaml_EMIT_BLOCK_MAPPING_VALUE_STATE
- /** Expect nothing. */
- yaml_EMIT_END_STATE
- )
- /**
- * The emitter structure.
- *
- * All members are internal. Manage the structure using the @c yaml_emitter_
- * family of functions.
- */
- type yaml_emitter_t struct {
- /**
- * @name Error handling
- * @{
- */
- /** Error type. */
- error YAML_error_type_t
- /** Error description. */
- problem string
- /**
- * @}
- */
- /**
- * @name Writer stuff
- * @{
- */
- /** Write handler. */
- write_handler yaml_write_handler_t
- /** Standard (string or file) output data. */
- output_buffer *[]byte
- output_writer io.Writer
- /** The working buffer. */
- buffer []byte
- buffer_pos int
- /** The raw buffer. */
- raw_buffer []byte
- raw_buffer_pos int
- /** The stream encoding. */
- encoding yaml_encoding_t
- /**
- * @}
- */
- /**
- * @name Emitter stuff
- * @{
- */
- /** If the output is in the canonical style? */
- canonical bool
- /** The number of indentation spaces. */
- best_indent int
- /** The preferred width of the output lines. */
- best_width int
- /** Allow unescaped non-ASCII characters? */
- unicode bool
- /** The preferred line break. */
- line_break yaml_break_t
- /** The stack of states. */
- states []yaml_emitter_state_t
- /** The current emitter state. */
- state yaml_emitter_state_t
- /** The event queue. */
- events []yaml_event_t
- events_head int
- /** The stack of indentation levels. */
- indents []int
- /** The list of tag directives. */
- tag_directives []yaml_tag_directive_t
- /** The current indentation level. */
- indent int
- /** The current flow level. */
- flow_level int
- /** Is it the document root context? */
- root_context bool
- /** Is it a sequence context? */
- sequence_context bool
- /** Is it a mapping context? */
- mapping_context bool
- /** Is it a simple mapping key context? */
- simple_key_context bool
- /** The current line. */
- line int
- /** The current column. */
- column int
- /** If the last character was a whitespace? */
- whitespace bool
- /** If the last character was an indentation character (' ', '-', '?', ':')? */
- indention bool
- /** If an explicit document end is required? */
- open_ended bool
- /** Anchor analysis. */
- anchor_data struct {
- /** The anchor value. */
- anchor []byte
- /** Is it an alias? */
- alias bool
- }
- /** Tag analysis. */
- tag_data struct {
- /** The tag handle. */
- handle []byte
- /** The tag suffix. */
- suffix []byte
- }
- /** Scalar analysis. */
- scalar_data struct {
- /** The scalar value. */
- value []byte
- /** Does the scalar contain line breaks? */
- multiline bool
- /** Can the scalar be expessed in the flow plain style? */
- flow_plain_allowed bool
- /** Can the scalar be expressed in the block plain style? */
- block_plain_allowed bool
- /** Can the scalar be expressed in the single quoted style? */
- single_quoted_allowed bool
- /** Can the scalar be expressed in the literal or folded styles? */
- block_allowed bool
- /** The output style. */
- style yaml_scalar_style_t
- }
- /**
- * @}
- */
- /**
- * @name Dumper stuff
- * @{
- */
- /** If the stream was already opened? */
- opened bool
- /** If the stream was already closed? */
- closed bool
- /** The information associated with the document nodes. */
- anchors *struct {
- /** The number of references. */
- references int
- /** The anchor id. */
- anchor int
- /** If the node has been emitted? */
- serialized bool
- }
- /** The last assigned anchor id. */
- last_anchor_id int
- /** The currently emitted document. */
- document *yaml_document_t
- /**
- * @}
- */
- }
|