psych 3.1.0-java → 3.3.2-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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).
@@ -273,7 +273,7 @@
273
273
  * The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation
274
274
  * increase that precedes a block collection (cf. the INDENT token in Python).
275
275
  * The token BLOCK-END denote indentation decrease that ends a block collection
276
- * (cf. the DEDENT token in Python). However YAML has some syntax pecularities
276
+ * (cf. the DEDENT token in Python). However YAML has some syntax peculiarities
277
277
  * that makes detections of these tokens more complex.
278
278
  *
279
279
  * The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators
@@ -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.
@@ -3278,7 +3287,7 @@ yaml_parser_scan_flow_scalar(yaml_parser_t *parser, yaml_token_t *token,
3278
3287
 
3279
3288
  /* Check if we are at the end of the scalar. */
3280
3289
 
3281
- /* Fix for crash unitialized value crash
3290
+ /* Fix for crash uninitialized value crash
3282
3291
  * Credit for the bug and input is to OSS Fuzz
3283
3292
  * Credit for the fix to Alex Gaynor
3284
3293
  */
@@ -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
 
@@ -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,
@@ -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"
@@ -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,
@@ -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. */
@@ -1329,7 +1335,7 @@ yaml_parser_delete(yaml_parser_t *parser);
1329
1335
  * Set a string input.
1330
1336
  *
1331
1337
  * Note that the @a input pointer must be valid while the @a parser object
1332
- * exists. The application is responsible for destroing @a input after
1338
+ * exists. The application is responsible for destroying @a input after
1333
1339
  * destroying the @a parser.
1334
1340
  *
1335
1341
  * @param[in,out] parser A parser object.
@@ -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. */
@@ -1713,7 +1734,7 @@ typedef struct yaml_emitter_s {
1713
1734
  size_t length;
1714
1735
  /** Does the scalar contain line breaks? */
1715
1736
  int multiline;
1716
- /** Can the scalar be expessed in the flow plain style? */
1737
+ /** Can the scalar be expressed in the flow plain style? */
1717
1738
  int flow_plain_allowed;
1718
1739
  /** Can the scalar be expressed in the block plain style? */
1719
1740
  int block_plain_allowed;
@@ -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;
@@ -1936,10 +1950,10 @@ yaml_emitter_close(yaml_emitter_t *emitter);
1936
1950
  /**
1937
1951
  * Emit a YAML document.
1938
1952
  *
1939
- * The documen object may be generated using the yaml_parser_load() function
1953
+ * The document 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.