Nodes

## Data Structures

struct | yaml_node_pair_s
| An element of a mapping node. More...
struct | yaml_node_s
| The node structure. More...
struct | yaml_document_s
| The document structure. More...

## Macros

#define | YAML_NULL_TAG "tag:yaml.org,2002:null"
| The tag `!`
#define | YAML_BOOL_TAG "tag:yaml.org,2002:bool"
| The tag `!`
#define | YAML_STR_TAG "tag:yaml.org,2002:str"
| The tag `!`
#define | YAML_INT_TAG "tag:yaml.org,2002:int"
| The tag `!`
#define | YAML_FLOAT_TAG "tag:yaml.org,2002:float"
| The tag `!`
#define | YAML_TIMESTAMP_TAG "tag:yaml.org,2002:timestamp"
| The tag `!`
#define | YAML_SEQ_TAG "tag:yaml.org,2002:seq"
| The tag `!`
#define | YAML_MAP_TAG "tag:yaml.org,2002:map"
| The tag `!`
#define | YAML_DEFAULT_SCALAR_TAG YAML_STR_TAG
| The default scalar tag is `!`
#define | YAML_DEFAULT_SEQUENCE_TAG YAML_SEQ_TAG
| The default sequence tag is `!`
#define | YAML_DEFAULT_MAPPING_TAG YAML_MAP_TAG
| The default mapping tag is `!`

## Typedefs

typedef enum yaml_node_type_e | yaml_node_type_t
| Node types.
typedef struct yaml_node_s | yaml_node_t
| The forward definition of a document node structure.
typedef int | yaml_node_item_t
| An element of a sequence node.
typedef struct yaml_node_pair_s | yaml_node_pair_t
| An element of a mapping node.
typedef struct yaml_document_s | yaml_document_t
| The document structure.

## Enumerations

enum | yaml_node_type_e { YAML_NO_NODE , YAML_SCALAR_NODE , YAML_SEQUENCE_NODE , YAML_MAPPING_NODE }
| Node types. More...

## Functions

int | yaml_document_initialize (yaml_document_t *document, yaml_version_directive_t *version_directive, yaml_tag_directive_t *tag_directives_start, yaml_tag_directive_t *tag_directives_end, int start_implicit, int end_implicit)
| Create a YAML document.
void | yaml_document_delete (yaml_document_t *document)
| Delete a YAML document and all its nodes.
yaml_node_t * | yaml_document_get_node (yaml_document_t *document, int index)
| Get a node of a YAML document.
yaml_node_t * | yaml_document_get_root_node (yaml_document_t *document)
| Get the root of a YAML document node.
int | yaml_document_add_scalar (yaml_document_t *document, const yaml_char_t *tag, const yaml_char_t *value, int length, yaml_scalar_style_t style)
| Create a SCALAR node and attach it to the document.
int | yaml_document_add_sequence (yaml_document_t *document, const yaml_char_t *tag, yaml_sequence_style_t style)
| Create a SEQUENCE node and attach it to the document.
int | yaml_document_add_mapping (yaml_document_t *document, const yaml_char_t *tag, yaml_mapping_style_t style)
| Create a MAPPING node and attach it to the document.
int | yaml_document_append_sequence_item (yaml_document_t *document, int sequence, int item)
| Add an item to a SEQUENCE node.
int | yaml_document_append_mapping_pair (yaml_document_t *document, int mapping, int key, int value)
| Add a pair of a key and a value to a MAPPING node.

## Detailed Description

## Macro Definition Documentation

## YAML_NULL_TAG

#define YAML_NULL_TAG "tag:yaml.org,2002:null"

The tag `!`

!null with the only possible value: `null`.

## YAML_BOOL_TAG

#define YAML_BOOL_TAG "tag:yaml.org,2002:bool"

The tag `!`

!bool with the values: `true` and `false`.

## YAML_STR_TAG

#define YAML_STR_TAG "tag:yaml.org,2002:str"

The tag `!`

!str for string values.

## YAML_INT_TAG

#define YAML_INT_TAG "tag:yaml.org,2002:int"

The tag `!`

!int for integer values.

## YAML_FLOAT_TAG

#define YAML_FLOAT_TAG "tag:yaml.org,2002:float"

The tag `!`

!float for float values.

## YAML_TIMESTAMP_TAG

#define YAML_TIMESTAMP_TAG "tag:yaml.org,2002:timestamp"

The tag `!`

!timestamp for date and time values.

## YAML_SEQ_TAG

#define YAML_SEQ_TAG "tag:yaml.org,2002:seq"

The tag `!`

!seq is used to denote sequences.

## YAML_MAP_TAG

#define YAML_MAP_TAG "tag:yaml.org,2002:map"

The tag `!`

!map is used to denote mapping.

## YAML_DEFAULT_SCALAR_TAG

#define YAML_DEFAULT_SCALAR_TAG YAML_STR_TAG

The default scalar tag is `!`

!str.

## YAML_DEFAULT_SEQUENCE_TAG

#define YAML_DEFAULT_SEQUENCE_TAG YAML_SEQ_TAG

The default sequence tag is `!`

!seq.

## YAML_DEFAULT_MAPPING_TAG

#define YAML_DEFAULT_MAPPING_TAG YAML_MAP_TAG

The default mapping tag is `!`

!map.

## Enumeration Type Documentation

## yaml_node_type_e

enum yaml_node_type_e

Node types.

Enumerator
YAML_NO_NODE | An empty node.
YAML_SCALAR_NODE | A scalar node.
YAML_SEQUENCE_NODE | A sequence node.
YAML_MAPPING_NODE | A mapping node.

## Function Documentation

## yaml_document_initialize()

int yaml_document_initialize | ( | yaml_document_t * | document,
|  | yaml_version_directive_t * | version_directive,
|  | yaml_tag_directive_t * | tag_directives_start,
|  | yaml_tag_directive_t * | tag_directives_end,
|  | int | start_implicit,
|  | int | end_implicit )

Create a YAML document.

Parameters

  [out] | document | An empty document object.
  [in] | version_directive | The YAML directive value or `NULL`.
  [in] | tag_directives_start | The beginning of the TAG directives list.
  [in] | tag_directives_end | The end of the TAG directives list.
  [in] | start_implicit | If the document start indicator is implicit.
  [in] | end_implicit | If the document end indicator is implicit.

Returns
  `1` if the function succeeded, `0` on error.

## yaml_document_delete()

void yaml_document_delete | ( | yaml_document_t * | document | ) |

Delete a YAML document and all its nodes.

Parameters

  [in,out] | document | A document object.

## yaml_document_get_node()

yaml_node_t * yaml_document_get_node | ( | yaml_document_t * | document,
|  | int | index )

Get a node of a YAML document.

The pointer returned by this function is valid until any of the functions modifying the documents are called.

Parameters

  [in] | document | A document object.
  [in] | index | The node id.

Returns
  the node objct or `NULL` if `node_id` is out of range.

## yaml_document_get_root_node()

yaml_node_t * yaml_document_get_root_node | ( | yaml_document_t * | document | ) |

Get the root of a YAML document node.

The root object is the first object added to the document.

The pointer returned by this function is valid until any of the functions modifying the documents are called.

An empty document produced by the parser signifies the end of a YAML stream.

Parameters

  [in] | document | A document object.

Returns
  the node object or `NULL` if the document is empty.

## yaml_document_add_scalar()

int yaml_document_add_scalar | ( | yaml_document_t * | document,
|  | const yaml_char_t * | tag,
|  | const yaml_char_t * | value,
|  | int | length,
|  | yaml_scalar_style_t | style )

Create a SCALAR node and attach it to the document.

The style argument may be ignored by the emitter.

Parameters

  [in,out] | document | A document object.
  [in] | tag | The scalar tag.
  [in] | value | The scalar value.
  [in] | length | The length of the scalar value.
  [in] | style | The scalar style.

Returns
  the node id or `0` on error.

## yaml_document_add_sequence()

int yaml_document_add_sequence | ( | yaml_document_t * | document,
|  | const yaml_char_t * | tag,
|  | yaml_sequence_style_t | style )

Create a SEQUENCE node and attach it to the document.

The style argument may be ignored by the emitter.

Parameters

  [in,out] | document | A document object.
  [in] | tag | The sequence tag.
  [in] | style | The sequence style.

Returns
  the node id or `0` on error.

## yaml_document_add_mapping()

int yaml_document_add_mapping | ( | yaml_document_t * | document,
|  | const yaml_char_t * | tag,
|  | yaml_mapping_style_t | style )

Create a MAPPING node and attach it to the document.

The style argument may be ignored by the emitter.

Parameters

  [in,out] | document | A document object.
  [in] | tag | The sequence tag.
  [in] | style | The sequence style.

Returns
  the node id or `0` on error.

## yaml_document_append_sequence_item()

int yaml_document_append_sequence_item | ( | yaml_document_t * | document,
|  | int | sequence,
|  | int | item )

Add an item to a SEQUENCE node.

Parameters

  [in,out] | document | A document object.
  [in] | sequence | The sequence node id.
  [in] | item | The item node id.

Returns
  `1` if the function succeeded, `0` on error.

## yaml_document_append_mapping_pair()

int yaml_document_append_mapping_pair | ( | yaml_document_t * | document,
|  | int | mapping,
|  | int | key,
|  | int | value )

Add a pair of a key and a value to a MAPPING node.

Parameters

  [in,out] | document | A document object.
  [in] | mapping | The mapping node id.
  [in] | key | The key node id.
  [in] | value | The value node id.

Returns
  `1` if the function succeeded, `0` on error.