psych 3.1.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1261,7 +1261,10 @@ yaml_parser_process_directives(yaml_parser_t *parser,
1261
1261
  goto error;
1262
1262
  }
1263
1263
  if (token->data.version_directive.major != 1
1264
- || token->data.version_directive.minor != 1) {
1264
+ || (
1265
+ token->data.version_directive.minor != 1
1266
+ && token->data.version_directive.minor != 2
1267
+ )) {
1265
1268
  yaml_parser_set_parser_error(parser,
1266
1269
  "found incompatible YAML document", token->start_mark);
1267
1270
  goto error;
@@ -1316,6 +1319,8 @@ yaml_parser_process_directives(yaml_parser_t *parser,
1316
1319
  STACK_DEL(parser, tag_directives);
1317
1320
  }
1318
1321
 
1322
+ if (!version_directive_ref)
1323
+ yaml_free(version_directive);
1319
1324
  return 1;
1320
1325
 
1321
1326
  error:
@@ -38,8 +38,8 @@
38
38
  * BLOCK-END # Indentation decrease.
39
39
  * FLOW-SEQUENCE-START # '['
40
40
  * FLOW-SEQUENCE-END # ']'
41
- * BLOCK-SEQUENCE-START # '{'
42
- * BLOCK-SEQUENCE-END # '}'
41
+ * FLOW-MAPPING-START # '{'
42
+ * FLOW-MAPPING-END # '}'
43
43
  * BLOCK-ENTRY # '-'
44
44
  * FLOW-ENTRY # ','
45
45
  * KEY # '?' or nothing (simple keys).
@@ -348,6 +348,7 @@
348
348
  * SCALAR("another value",plain)
349
349
  * KEY
350
350
  * SCALAR("a mapping",plain)
351
+ * VALUE
351
352
  * BLOCK-MAPPING-START
352
353
  * KEY
353
354
  * SCALAR("key 1",plain)
@@ -711,7 +712,7 @@ yaml_parser_scan_tag_handle(yaml_parser_t *parser, int directive,
711
712
  yaml_mark_t start_mark, yaml_char_t **handle);
712
713
 
713
714
  static int
714
- yaml_parser_scan_tag_uri(yaml_parser_t *parser, int directive,
715
+ yaml_parser_scan_tag_uri(yaml_parser_t *parser, int uri_char, int directive,
715
716
  yaml_char_t *head, yaml_mark_t start_mark, yaml_char_t **uri);
716
717
 
717
718
  static int
@@ -1227,7 +1228,7 @@ yaml_parser_roll_indent(yaml_parser_t *parser, ptrdiff_t column,
1227
1228
  return 0;
1228
1229
  }
1229
1230
 
1230
- parser->indent = column;
1231
+ parser->indent = (int)column;
1231
1232
 
1232
1233
  /* Create a token and insert it into the queue. */
1233
1234
 
@@ -2292,7 +2293,7 @@ yaml_parser_scan_tag_directive_value(yaml_parser_t *parser,
2292
2293
 
2293
2294
  /* Scan a prefix. */
2294
2295
 
2295
- if (!yaml_parser_scan_tag_uri(parser, 1, NULL, start_mark, &prefix_value))
2296
+ if (!yaml_parser_scan_tag_uri(parser, 1, 1, NULL, start_mark, &prefix_value))
2296
2297
  goto error;
2297
2298
 
2298
2299
  /* Expect a whitespace or line break. */
@@ -2410,7 +2411,7 @@ yaml_parser_scan_tag(yaml_parser_t *parser, yaml_token_t *token)
2410
2411
 
2411
2412
  /* Consume the tag value. */
2412
2413
 
2413
- if (!yaml_parser_scan_tag_uri(parser, 0, NULL, start_mark, &suffix))
2414
+ if (!yaml_parser_scan_tag_uri(parser, 1, 0, NULL, start_mark, &suffix))
2414
2415
  goto error;
2415
2416
 
2416
2417
  /* Check for '>' and eat it. */
@@ -2438,14 +2439,14 @@ yaml_parser_scan_tag(yaml_parser_t *parser, yaml_token_t *token)
2438
2439
  {
2439
2440
  /* Scan the suffix now. */
2440
2441
 
2441
- if (!yaml_parser_scan_tag_uri(parser, 0, NULL, start_mark, &suffix))
2442
+ if (!yaml_parser_scan_tag_uri(parser, 0, 0, NULL, start_mark, &suffix))
2442
2443
  goto error;
2443
2444
  }
2444
2445
  else
2445
2446
  {
2446
2447
  /* It wasn't a handle after all. Scan the rest of the tag. */
2447
2448
 
2448
- if (!yaml_parser_scan_tag_uri(parser, 0, handle, start_mark, &suffix))
2449
+ if (!yaml_parser_scan_tag_uri(parser, 0, 0, handle, start_mark, &suffix))
2449
2450
  goto error;
2450
2451
 
2451
2452
  /* Set the handle to '!'. */
@@ -2474,9 +2475,11 @@ yaml_parser_scan_tag(yaml_parser_t *parser, yaml_token_t *token)
2474
2475
  if (!CACHE(parser, 1)) goto error;
2475
2476
 
2476
2477
  if (!IS_BLANKZ(parser->buffer)) {
2477
- yaml_parser_set_scanner_error(parser, "while scanning a tag",
2478
- start_mark, "did not find expected whitespace or line break");
2479
- goto error;
2478
+ if (!parser->flow_level || !CHECK(parser->buffer, ',') ) {
2479
+ yaml_parser_set_scanner_error(parser, "while scanning a tag",
2480
+ start_mark, "did not find expected whitespace or line break");
2481
+ goto error;
2482
+ }
2480
2483
  }
2481
2484
 
2482
2485
  end_mark = parser->mark;
@@ -2565,7 +2568,7 @@ error:
2565
2568
  */
2566
2569
 
2567
2570
  static int
2568
- yaml_parser_scan_tag_uri(yaml_parser_t *parser, int directive,
2571
+ yaml_parser_scan_tag_uri(yaml_parser_t *parser, int uri_char, int directive,
2569
2572
  yaml_char_t *head, yaml_mark_t start_mark, yaml_char_t **uri)
2570
2573
  {
2571
2574
  size_t length = head ? strlen((char *)head) : 0;
@@ -2601,8 +2604,11 @@ yaml_parser_scan_tag_uri(yaml_parser_t *parser, int directive,
2601
2604
  * The set of characters that may appear in URI is as follows:
2602
2605
  *
2603
2606
  * '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&',
2604
- * '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']',
2605
- * '%'.
2607
+ * '=', '+', '$', '.', '!', '~', '*', '\'', '(', ')', '%'.
2608
+ *
2609
+ * If we are inside a verbatim tag <...> (parameter uri_char is true)
2610
+ * then also the following flow indicators are allowed:
2611
+ * ',', '[', ']'
2606
2612
  */
2607
2613
 
2608
2614
  while (IS_ALPHA(parser->buffer) || CHECK(parser->buffer, ';')
@@ -2610,12 +2616,15 @@ yaml_parser_scan_tag_uri(yaml_parser_t *parser, int directive,
2610
2616
  || CHECK(parser->buffer, ':') || CHECK(parser->buffer, '@')
2611
2617
  || CHECK(parser->buffer, '&') || CHECK(parser->buffer, '=')
2612
2618
  || CHECK(parser->buffer, '+') || CHECK(parser->buffer, '$')
2613
- || CHECK(parser->buffer, ',') || CHECK(parser->buffer, '.')
2619
+ || CHECK(parser->buffer, '.') || CHECK(parser->buffer, '%')
2614
2620
  || CHECK(parser->buffer, '!') || CHECK(parser->buffer, '~')
2615
2621
  || CHECK(parser->buffer, '*') || CHECK(parser->buffer, '\'')
2616
2622
  || CHECK(parser->buffer, '(') || CHECK(parser->buffer, ')')
2617
- || CHECK(parser->buffer, '[') || CHECK(parser->buffer, ']')
2618
- || CHECK(parser->buffer, '%'))
2623
+ || (uri_char && (
2624
+ CHECK(parser->buffer, ',')
2625
+ || CHECK(parser->buffer, '[') || CHECK(parser->buffer, ']')
2626
+ )
2627
+ ))
2619
2628
  {
2620
2629
  /* Check if it is a URI-escape sequence. */
2621
2630
 
@@ -2860,7 +2869,7 @@ yaml_parser_scan_block_scalar(yaml_parser_t *parser, yaml_token_t *token,
2860
2869
 
2861
2870
  if (!CACHE(parser, 1)) goto error;
2862
2871
 
2863
- while ((int)parser->mark.column == indent && !IS_Z(parser->buffer))
2872
+ while ((int)parser->mark.column == indent && !(IS_Z(parser->buffer)))
2864
2873
  {
2865
2874
  /*
2866
2875
  * We are at the beginning of a non-empty line.
@@ -3430,11 +3439,22 @@ yaml_parser_scan_plain_scalar(yaml_parser_t *parser, yaml_token_t *token)
3430
3439
 
3431
3440
  while (!IS_BLANKZ(parser->buffer))
3432
3441
  {
3433
- /* Check for 'x:x' in the flow context. TODO: Fix the test "spec-08-13". */
3442
+ /* Check for "x:" + one of ',?[]{}' in the flow context. TODO: Fix the test "spec-08-13".
3443
+ * This is not completely according to the spec
3444
+ * See http://yaml.org/spec/1.1/#id907281 9.1.3. Plain
3445
+ */
3434
3446
 
3435
3447
  if (parser->flow_level
3436
3448
  && CHECK(parser->buffer, ':')
3437
- && !IS_BLANKZ_AT(parser->buffer, 1)) {
3449
+ && (
3450
+ CHECK_AT(parser->buffer, ',', 1)
3451
+ || CHECK_AT(parser->buffer, '?', 1)
3452
+ || CHECK_AT(parser->buffer, '[', 1)
3453
+ || CHECK_AT(parser->buffer, ']', 1)
3454
+ || CHECK_AT(parser->buffer, '{', 1)
3455
+ || CHECK_AT(parser->buffer, '}', 1)
3456
+ )
3457
+ ) {
3438
3458
  yaml_parser_set_scanner_error(parser, "while scanning a plain scalar",
3439
3459
  start_mark, "found unexpected ':'");
3440
3460
  goto error;
@@ -3444,8 +3464,8 @@ yaml_parser_scan_plain_scalar(yaml_parser_t *parser, yaml_token_t *token)
3444
3464
 
3445
3465
  if ((CHECK(parser->buffer, ':') && IS_BLANKZ_AT(parser->buffer, 1))
3446
3466
  || (parser->flow_level &&
3447
- (CHECK(parser->buffer, ',') || CHECK(parser->buffer, ':')
3448
- || CHECK(parser->buffer, '?') || CHECK(parser->buffer, '[')
3467
+ (CHECK(parser->buffer, ',')
3468
+ || CHECK(parser->buffer, '[')
3449
3469
  || CHECK(parser->buffer, ']') || CHECK(parser->buffer, '{')
3450
3470
  || CHECK(parser->buffer, '}'))))
3451
3471
  break;
@@ -3512,7 +3532,7 @@ yaml_parser_scan_plain_scalar(yaml_parser_t *parser, yaml_token_t *token)
3512
3532
  if (leading_blanks && (int)parser->mark.column < indent
3513
3533
  && IS_TAB(parser->buffer)) {
3514
3534
  yaml_parser_set_scanner_error(parser, "while scanning a plain scalar",
3515
- start_mark, "found a tab character that violate indentation");
3535
+ start_mark, "found a tab character that violates indentation");
3516
3536
  goto error;
3517
3537
  }
3518
3538
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @file yaml.h
3
3
  * @brief Public interface for libyaml.
4
- *
4
+ *
5
5
  * Include the header file with the code:
6
6
  * @code
7
7
  * #include <yaml.h>
@@ -26,7 +26,9 @@ extern "C" {
26
26
 
27
27
  /** The public API declaration. */
28
28
 
29
- #ifdef _WIN32
29
+ #if defined(__MINGW32__)
30
+ # define YAML_DECLARE(type) type
31
+ #elif defined(_WIN32)
30
32
  # if defined(YAML_DECLARE_STATIC)
31
33
  # define YAML_DECLARE(type) type
32
34
  # elif defined(YAML_DECLARE_EXPORT)
@@ -230,7 +232,7 @@ typedef enum yaml_token_type_e {
230
232
 
231
233
  /** A BLOCK-SEQUENCE-START token. */
232
234
  YAML_BLOCK_SEQUENCE_START_TOKEN,
233
- /** A BLOCK-SEQUENCE-END token. */
235
+ /** A BLOCK-MAPPING-START token. */
234
236
  YAML_BLOCK_MAPPING_START_TOKEN,
235
237
  /** A BLOCK-END token. */
236
238
  YAML_BLOCK_END_TOKEN,
@@ -388,7 +390,7 @@ typedef struct yaml_event_s {
388
390
 
389
391
  /** The event data. */
390
392
  union {
391
-
393
+
392
394
  /** The stream parameters (for @c YAML_STREAM_START_EVENT). */
393
395
  struct {
394
396
  /** The document encoding. */
@@ -550,7 +552,7 @@ yaml_document_end_event_initialize(yaml_event_t *event, int implicit);
550
552
  */
551
553
 
552
554
  YAML_DECLARE(int)
553
- yaml_alias_event_initialize(yaml_event_t *event, yaml_char_t *anchor);
555
+ yaml_alias_event_initialize(yaml_event_t *event, const yaml_char_t *anchor);
554
556
 
555
557
  /**
556
558
  * Create a SCALAR event.
@@ -576,8 +578,8 @@ yaml_alias_event_initialize(yaml_event_t *event, yaml_char_t *anchor);
576
578
 
577
579
  YAML_DECLARE(int)
578
580
  yaml_scalar_event_initialize(yaml_event_t *event,
579
- yaml_char_t *anchor, yaml_char_t *tag,
580
- yaml_char_t *value, int length,
581
+ const yaml_char_t *anchor, const yaml_char_t *tag,
582
+ const yaml_char_t *value, int length,
581
583
  int plain_implicit, int quoted_implicit,
582
584
  yaml_scalar_style_t style);
583
585
 
@@ -599,7 +601,7 @@ yaml_scalar_event_initialize(yaml_event_t *event,
599
601
 
600
602
  YAML_DECLARE(int)
601
603
  yaml_sequence_start_event_initialize(yaml_event_t *event,
602
- yaml_char_t *anchor, yaml_char_t *tag, int implicit,
604
+ const yaml_char_t *anchor, const yaml_char_t *tag, int implicit,
603
605
  yaml_sequence_style_t style);
604
606
 
605
607
  /**
@@ -631,7 +633,7 @@ yaml_sequence_end_event_initialize(yaml_event_t *event);
631
633
 
632
634
  YAML_DECLARE(int)
633
635
  yaml_mapping_start_event_initialize(yaml_event_t *event,
634
- yaml_char_t *anchor, yaml_char_t *tag, int implicit,
636
+ const yaml_char_t *anchor, const yaml_char_t *tag, int implicit,
635
637
  yaml_mapping_style_t style);
636
638
 
637
639
  /**
@@ -663,7 +665,7 @@ yaml_event_delete(yaml_event_t *event);
663
665
 
664
666
  /** The tag @c !!null with the only possible value: @c null. */
665
667
  #define YAML_NULL_TAG "tag:yaml.org,2002:null"
666
- /** The tag @c !!bool with the values: @c true and @c falce. */
668
+ /** The tag @c !!bool with the values: @c true and @c false. */
667
669
  #define YAML_BOOL_TAG "tag:yaml.org,2002:bool"
668
670
  /** The tag @c !!str for string values. */
669
671
  #define YAML_STR_TAG "tag:yaml.org,2002:str"
@@ -724,7 +726,7 @@ struct yaml_node_s {
724
726
 
725
727
  /** The node data. */
726
728
  union {
727
-
729
+
728
730
  /** The scalar parameters (for @c YAML_SCALAR_NODE). */
729
731
  struct {
730
732
  /** The scalar value. */
@@ -894,7 +896,7 @@ yaml_document_get_root_node(yaml_document_t *document);
894
896
 
895
897
  YAML_DECLARE(int)
896
898
  yaml_document_add_scalar(yaml_document_t *document,
897
- yaml_char_t *tag, yaml_char_t *value, int length,
899
+ const yaml_char_t *tag, const yaml_char_t *value, int length,
898
900
  yaml_scalar_style_t style);
899
901
 
900
902
  /**
@@ -911,7 +913,7 @@ yaml_document_add_scalar(yaml_document_t *document,
911
913
 
912
914
  YAML_DECLARE(int)
913
915
  yaml_document_add_sequence(yaml_document_t *document,
914
- yaml_char_t *tag, yaml_sequence_style_t style);
916
+ const yaml_char_t *tag, yaml_sequence_style_t style);
915
917
 
916
918
  /**
917
919
  * Create a MAPPING node and attach it to the document.
@@ -927,7 +929,7 @@ yaml_document_add_sequence(yaml_document_t *document,
927
929
 
928
930
  YAML_DECLARE(int)
929
931
  yaml_document_add_mapping(yaml_document_t *document,
930
- yaml_char_t *tag, yaml_mapping_style_t style);
932
+ const yaml_char_t *tag, yaml_mapping_style_t style);
931
933
 
932
934
  /**
933
935
  * Add an item to a SEQUENCE node.
@@ -935,7 +937,7 @@ yaml_document_add_mapping(yaml_document_t *document,
935
937
  * @param[in,out] document A document object.
936
938
  * @param[in] sequence The sequence node id.
937
939
  * @param[in] item The item node id.
938
- *
940
+ *
939
941
  * @returns @c 1 if the function succeeded, @c 0 on error.
940
942
  */
941
943
 
@@ -950,7 +952,7 @@ yaml_document_append_sequence_item(yaml_document_t *document,
950
952
  * @param[in] mapping The mapping node id.
951
953
  * @param[in] key The key node id.
952
954
  * @param[in] value The value node id.
953
- *
955
+ *
954
956
  * @returns @c 1 if the function succeeded, @c 0 on error.
955
957
  */
956
958
 
@@ -1018,6 +1020,7 @@ typedef enum yaml_parser_state_e {
1018
1020
  YAML_PARSE_DOCUMENT_CONTENT_STATE,
1019
1021
  /** Expect DOCUMENT-END. */
1020
1022
  YAML_PARSE_DOCUMENT_END_STATE,
1023
+
1021
1024
  /** Expect a block node. */
1022
1025
  YAML_PARSE_BLOCK_NODE_STATE,
1023
1026
  /** Expect a block node or indentless sequence. */
@@ -1028,6 +1031,7 @@ typedef enum yaml_parser_state_e {
1028
1031
  YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE,
1029
1032
  /** Expect an entry of a block sequence. */
1030
1033
  YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE,
1034
+
1031
1035
  /** Expect an entry of an indentless sequence. */
1032
1036
  YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE,
1033
1037
  /** Expect the first key of a block mapping. */
@@ -1038,6 +1042,7 @@ typedef enum yaml_parser_state_e {
1038
1042
  YAML_PARSE_BLOCK_MAPPING_VALUE_STATE,
1039
1043
  /** Expect the first entry of a flow sequence. */
1040
1044
  YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE,
1045
+
1041
1046
  /** Expect an entry of a flow sequence. */
1042
1047
  YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE,
1043
1048
  /** Expect a key of an ordered mapping. */
@@ -1049,6 +1054,7 @@ typedef enum yaml_parser_state_e {
1049
1054
  /** Expect the first key of a flow mapping. */
1050
1055
  YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE,
1051
1056
  /** Expect a key of a flow mapping. */
1057
+
1052
1058
  YAML_PARSE_FLOW_MAPPING_KEY_STATE,
1053
1059
  /** Expect a value of a flow mapping. */
1054
1060
  YAML_PARSE_FLOW_MAPPING_VALUE_STATE,
@@ -1089,7 +1095,7 @@ typedef struct yaml_parser_s {
1089
1095
  yaml_error_type_t error;
1090
1096
  /** Error description. */
1091
1097
  const char *problem;
1092
- /** The byte about which the problem occurred. */
1098
+ /** The byte about which the problem occured. */
1093
1099
  size_t problem_offset;
1094
1100
  /** The problematic value (@c -1 is none). */
1095
1101
  int problem_value;
@@ -1203,7 +1209,7 @@ typedef struct yaml_parser_s {
1203
1209
  /** The number of tokens fetched from the queue. */
1204
1210
  size_t tokens_parsed;
1205
1211
 
1206
- /* Does the tokens queue contain a token ready for dequeueing. */
1212
+ /** Does the tokens queue contain a token ready for dequeueing. */
1207
1213
  int token_available;
1208
1214
 
1209
1215
  /** The indentation levels stack. */
@@ -1444,7 +1450,7 @@ yaml_parser_parse(yaml_parser_t *parser, yaml_event_t *event);
1444
1450
  * @param[in,out] parser A parser object.
1445
1451
  * @param[out] document An empty document object.
1446
1452
  *
1447
- * @return @c 1 if the function succeeded, @c 0 on error.
1453
+ * @returns @c 1 if the function succeeded, @c 0 on error.
1448
1454
  */
1449
1455
 
1450
1456
  YAML_DECLARE(int)
@@ -1487,6 +1493,7 @@ typedef enum yaml_emitter_state_e {
1487
1493
  YAML_EMIT_DOCUMENT_CONTENT_STATE,
1488
1494
  /** Expect DOCUMENT-END. */
1489
1495
  YAML_EMIT_DOCUMENT_END_STATE,
1496
+
1490
1497
  /** Expect the first item of a flow sequence. */
1491
1498
  YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE,
1492
1499
  /** Expect an item of a flow sequence. */
@@ -1497,6 +1504,7 @@ typedef enum yaml_emitter_state_e {
1497
1504
  YAML_EMIT_FLOW_MAPPING_KEY_STATE,
1498
1505
  /** Expect a value for a simple key of a flow mapping. */
1499
1506
  YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE,
1507
+
1500
1508
  /** Expect a value of a flow mapping. */
1501
1509
  YAML_EMIT_FLOW_MAPPING_VALUE_STATE,
1502
1510
  /** Expect the first item of a block sequence. */
@@ -1507,6 +1515,7 @@ typedef enum yaml_emitter_state_e {
1507
1515
  YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE,
1508
1516
  /** Expect the key of a block mapping. */
1509
1517
  YAML_EMIT_BLOCK_MAPPING_KEY_STATE,
1518
+
1510
1519
  /** Expect a value for a simple key of a block mapping. */
1511
1520
  YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE,
1512
1521
  /** Expect a value of a block mapping. */
@@ -1515,6 +1524,18 @@ typedef enum yaml_emitter_state_e {
1515
1524
  YAML_EMIT_END_STATE
1516
1525
  } yaml_emitter_state_t;
1517
1526
 
1527
+
1528
+ /* This is needed for C++ */
1529
+
1530
+ typedef struct yaml_anchors_s {
1531
+ /** The number of references. */
1532
+ int references;
1533
+ /** The anchor id. */
1534
+ int anchor;
1535
+ /** If the node has been emitted? */
1536
+ int serialized;
1537
+ } yaml_anchors_t;
1538
+
1518
1539
  /**
1519
1540
  * The emitter structure.
1520
1541
  *
@@ -1546,7 +1567,7 @@ typedef struct yaml_emitter_s {
1546
1567
  /** Write handler. */
1547
1568
  yaml_write_handler_t *write_handler;
1548
1569
 
1549
- /** A pointer for passing to the white handler. */
1570
+ /** A pointer for passing to the write handler. */
1550
1571
  void *write_handler_data;
1551
1572
 
1552
1573
  /** Standard (string or file) output data. */
@@ -1740,14 +1761,7 @@ typedef struct yaml_emitter_s {
1740
1761
  int closed;
1741
1762
 
1742
1763
  /** The information associated with the document nodes. */
1743
- struct {
1744
- /** The number of references. */
1745
- int references;
1746
- /** The anchor id. */
1747
- int anchor;
1748
- /** If the node has been emitted? */
1749
- int serialized;
1750
- } *anchors;
1764
+ yaml_anchors_t *anchors;
1751
1765
 
1752
1766
  /** The last assigned anchor id. */
1753
1767
  int last_anchor_id;
@@ -1938,8 +1952,8 @@ yaml_emitter_close(yaml_emitter_t *emitter);
1938
1952
  *
1939
1953
  * The documen object may be generated using the yaml_parser_load() function
1940
1954
  * or the yaml_document_initialize() function. The emitter takes the
1941
- * responsibility for the document object and destoys its content after
1942
- * it is emitted. The document object is destroyedeven if the function fails.
1955
+ * responsibility for the document object and destroys its content after
1956
+ * it is emitted. The document object is destroyed even if the function fails.
1943
1957
  *
1944
1958
  * @param[in,out] emitter An emitter object.
1945
1959
  * @param[in,out] document A document object.