Ruby
2.0.0p247(2013-06-27revision41674)
|
00001 00011 #ifndef YAML_H 00012 #define YAML_H 00013 00014 #ifdef __cplusplus 00015 extern "C" { 00016 #endif 00017 00018 #include <stdlib.h> 00019 #include <stdio.h> 00020 #include <string.h> 00021 00029 #ifdef _WIN32 00030 # if defined(YAML_DECLARE_STATIC) 00031 # define YAML_DECLARE(type) type 00032 # elif defined(YAML_DECLARE_EXPORT) 00033 # define YAML_DECLARE(type) __declspec(dllexport) type 00034 # else 00035 # define YAML_DECLARE(type) __declspec(dllimport) type 00036 # endif 00037 #else 00038 # define YAML_DECLARE(type) type 00039 #endif 00040 00056 YAML_DECLARE(const char *) 00057 yaml_get_version_string(void); 00058 00067 YAML_DECLARE(void) 00068 yaml_get_version(int *major, int *minor, int *patch); 00069 00078 typedef unsigned char yaml_char_t; 00079 00081 typedef struct yaml_version_directive_s { 00083 int major; 00085 int minor; 00086 } yaml_version_directive_t; 00087 00089 typedef struct yaml_tag_directive_s { 00091 yaml_char_t *handle; 00093 yaml_char_t *prefix; 00094 } yaml_tag_directive_t; 00095 00097 typedef enum yaml_encoding_e { 00099 YAML_ANY_ENCODING, 00101 YAML_UTF8_ENCODING, 00103 YAML_UTF16LE_ENCODING, 00105 YAML_UTF16BE_ENCODING 00106 } yaml_encoding_t; 00107 00110 typedef enum yaml_break_e { 00112 YAML_ANY_BREAK, 00114 YAML_CR_BREAK, 00116 YAML_LN_BREAK, 00118 YAML_CRLN_BREAK 00119 } yaml_break_t; 00120 00122 typedef enum yaml_error_type_e { 00124 YAML_NO_ERROR, 00125 00127 YAML_MEMORY_ERROR, 00128 00130 YAML_READER_ERROR, 00132 YAML_SCANNER_ERROR, 00134 YAML_PARSER_ERROR, 00136 YAML_COMPOSER_ERROR, 00137 00139 YAML_WRITER_ERROR, 00141 YAML_EMITTER_ERROR 00142 } yaml_error_type_t; 00143 00145 typedef struct yaml_mark_s { 00147 size_t index; 00148 00150 size_t line; 00151 00153 size_t column; 00154 } yaml_mark_t; 00155 00164 typedef enum yaml_scalar_style_e { 00166 YAML_ANY_SCALAR_STYLE, 00167 00169 YAML_PLAIN_SCALAR_STYLE, 00170 00172 YAML_SINGLE_QUOTED_SCALAR_STYLE, 00174 YAML_DOUBLE_QUOTED_SCALAR_STYLE, 00175 00177 YAML_LITERAL_SCALAR_STYLE, 00179 YAML_FOLDED_SCALAR_STYLE 00180 } yaml_scalar_style_t; 00181 00183 typedef enum yaml_sequence_style_e { 00185 YAML_ANY_SEQUENCE_STYLE, 00186 00188 YAML_BLOCK_SEQUENCE_STYLE, 00190 YAML_FLOW_SEQUENCE_STYLE 00191 } yaml_sequence_style_t; 00192 00194 typedef enum yaml_mapping_style_e { 00196 YAML_ANY_MAPPING_STYLE, 00197 00199 YAML_BLOCK_MAPPING_STYLE, 00201 YAML_FLOW_MAPPING_STYLE 00202 /* YAML_FLOW_SET_MAPPING_STYLE */ 00203 } yaml_mapping_style_t; 00204 00213 typedef enum yaml_token_type_e { 00215 YAML_NO_TOKEN, 00216 00218 YAML_STREAM_START_TOKEN, 00220 YAML_STREAM_END_TOKEN, 00221 00223 YAML_VERSION_DIRECTIVE_TOKEN, 00225 YAML_TAG_DIRECTIVE_TOKEN, 00227 YAML_DOCUMENT_START_TOKEN, 00229 YAML_DOCUMENT_END_TOKEN, 00230 00232 YAML_BLOCK_SEQUENCE_START_TOKEN, 00234 YAML_BLOCK_MAPPING_START_TOKEN, 00236 YAML_BLOCK_END_TOKEN, 00237 00239 YAML_FLOW_SEQUENCE_START_TOKEN, 00241 YAML_FLOW_SEQUENCE_END_TOKEN, 00243 YAML_FLOW_MAPPING_START_TOKEN, 00245 YAML_FLOW_MAPPING_END_TOKEN, 00246 00248 YAML_BLOCK_ENTRY_TOKEN, 00250 YAML_FLOW_ENTRY_TOKEN, 00252 YAML_KEY_TOKEN, 00254 YAML_VALUE_TOKEN, 00255 00257 YAML_ALIAS_TOKEN, 00259 YAML_ANCHOR_TOKEN, 00261 YAML_TAG_TOKEN, 00263 YAML_SCALAR_TOKEN 00264 } yaml_token_type_t; 00265 00267 typedef struct yaml_token_s { 00268 00270 yaml_token_type_t type; 00271 00273 union { 00274 00276 struct { 00278 yaml_encoding_t encoding; 00279 } stream_start; 00280 00282 struct { 00284 yaml_char_t *value; 00285 } alias; 00286 00288 struct { 00290 yaml_char_t *value; 00291 } anchor; 00292 00294 struct { 00296 yaml_char_t *handle; 00298 yaml_char_t *suffix; 00299 } tag; 00300 00302 struct { 00304 yaml_char_t *value; 00306 size_t length; 00308 yaml_scalar_style_t style; 00309 } scalar; 00310 00312 struct { 00314 int major; 00316 int minor; 00317 } version_directive; 00318 00320 struct { 00322 yaml_char_t *handle; 00324 yaml_char_t *prefix; 00325 } tag_directive; 00326 00327 } data; 00328 00330 yaml_mark_t start_mark; 00332 yaml_mark_t end_mark; 00333 00334 } yaml_token_t; 00335 00342 YAML_DECLARE(void) 00343 yaml_token_delete(yaml_token_t *token); 00344 00353 typedef enum yaml_event_type_e { 00355 YAML_NO_EVENT, 00356 00358 YAML_STREAM_START_EVENT, 00360 YAML_STREAM_END_EVENT, 00361 00363 YAML_DOCUMENT_START_EVENT, 00365 YAML_DOCUMENT_END_EVENT, 00366 00368 YAML_ALIAS_EVENT, 00370 YAML_SCALAR_EVENT, 00371 00373 YAML_SEQUENCE_START_EVENT, 00375 YAML_SEQUENCE_END_EVENT, 00376 00378 YAML_MAPPING_START_EVENT, 00380 YAML_MAPPING_END_EVENT 00381 } yaml_event_type_t; 00382 00384 typedef struct yaml_event_s { 00385 00387 yaml_event_type_t type; 00388 00390 union { 00391 00393 struct { 00395 yaml_encoding_t encoding; 00396 } stream_start; 00397 00399 struct { 00401 yaml_version_directive_t *version_directive; 00402 00404 struct { 00406 yaml_tag_directive_t *start; 00408 yaml_tag_directive_t *end; 00409 } tag_directives; 00410 00412 int implicit; 00413 } document_start; 00414 00416 struct { 00418 int implicit; 00419 } document_end; 00420 00422 struct { 00424 yaml_char_t *anchor; 00425 } alias; 00426 00428 struct { 00430 yaml_char_t *anchor; 00432 yaml_char_t *tag; 00434 yaml_char_t *value; 00436 size_t length; 00438 int plain_implicit; 00440 int quoted_implicit; 00442 yaml_scalar_style_t style; 00443 } scalar; 00444 00446 struct { 00448 yaml_char_t *anchor; 00450 yaml_char_t *tag; 00452 int implicit; 00454 yaml_sequence_style_t style; 00455 } sequence_start; 00456 00458 struct { 00460 yaml_char_t *anchor; 00462 yaml_char_t *tag; 00464 int implicit; 00466 yaml_mapping_style_t style; 00467 } mapping_start; 00468 00469 } data; 00470 00472 yaml_mark_t start_mark; 00474 yaml_mark_t end_mark; 00475 00476 } yaml_event_t; 00477 00487 YAML_DECLARE(int) 00488 yaml_stream_start_event_initialize(yaml_event_t *event, 00489 yaml_encoding_t encoding); 00490 00499 YAML_DECLARE(int) 00500 yaml_stream_end_event_initialize(yaml_event_t *event); 00501 00521 YAML_DECLARE(int) 00522 yaml_document_start_event_initialize(yaml_event_t *event, 00523 yaml_version_directive_t *version_directive, 00524 yaml_tag_directive_t *tag_directives_start, 00525 yaml_tag_directive_t *tag_directives_end, 00526 int implicit); 00527 00540 YAML_DECLARE(int) 00541 yaml_document_end_event_initialize(yaml_event_t *event, int implicit); 00542 00552 YAML_DECLARE(int) 00553 yaml_alias_event_initialize(yaml_event_t *event, yaml_char_t *anchor); 00554 00577 YAML_DECLARE(int) 00578 yaml_scalar_event_initialize(yaml_event_t *event, 00579 yaml_char_t *anchor, yaml_char_t *tag, 00580 yaml_char_t *value, int length, 00581 int plain_implicit, int quoted_implicit, 00582 yaml_scalar_style_t style); 00583 00600 YAML_DECLARE(int) 00601 yaml_sequence_start_event_initialize(yaml_event_t *event, 00602 yaml_char_t *anchor, yaml_char_t *tag, int implicit, 00603 yaml_sequence_style_t style); 00604 00613 YAML_DECLARE(int) 00614 yaml_sequence_end_event_initialize(yaml_event_t *event); 00615 00632 YAML_DECLARE(int) 00633 yaml_mapping_start_event_initialize(yaml_event_t *event, 00634 yaml_char_t *anchor, yaml_char_t *tag, int implicit, 00635 yaml_mapping_style_t style); 00636 00645 YAML_DECLARE(int) 00646 yaml_mapping_end_event_initialize(yaml_event_t *event); 00647 00654 YAML_DECLARE(void) 00655 yaml_event_delete(yaml_event_t *event); 00656 00665 #define YAML_NULL_TAG "tag:yaml.org,2002:null" 00666 00667 #define YAML_BOOL_TAG "tag:yaml.org,2002:bool" 00668 00669 #define YAML_STR_TAG "tag:yaml.org,2002:str" 00670 00671 #define YAML_INT_TAG "tag:yaml.org,2002:int" 00672 00673 #define YAML_FLOAT_TAG "tag:yaml.org,2002:float" 00674 00675 #define YAML_TIMESTAMP_TAG "tag:yaml.org,2002:timestamp" 00676 00678 #define YAML_SEQ_TAG "tag:yaml.org,2002:seq" 00679 00680 #define YAML_MAP_TAG "tag:yaml.org,2002:map" 00681 00683 #define YAML_DEFAULT_SCALAR_TAG YAML_STR_TAG 00684 00685 #define YAML_DEFAULT_SEQUENCE_TAG YAML_SEQ_TAG 00686 00687 #define YAML_DEFAULT_MAPPING_TAG YAML_MAP_TAG 00688 00690 typedef enum yaml_node_type_e { 00692 YAML_NO_NODE, 00693 00695 YAML_SCALAR_NODE, 00697 YAML_SEQUENCE_NODE, 00699 YAML_MAPPING_NODE 00700 } yaml_node_type_t; 00701 00703 typedef struct yaml_node_s yaml_node_t; 00704 00706 typedef int yaml_node_item_t; 00707 00709 typedef struct yaml_node_pair_s { 00711 int key; 00713 int value; 00714 } yaml_node_pair_t; 00715 00717 struct yaml_node_s { 00718 00720 yaml_node_type_t type; 00721 00723 yaml_char_t *tag; 00724 00726 union { 00727 00729 struct { 00731 yaml_char_t *value; 00733 size_t length; 00735 yaml_scalar_style_t style; 00736 } scalar; 00737 00739 struct { 00741 struct { 00743 yaml_node_item_t *start; 00745 yaml_node_item_t *end; 00747 yaml_node_item_t *top; 00748 } items; 00750 yaml_sequence_style_t style; 00751 } sequence; 00752 00754 struct { 00756 struct { 00758 yaml_node_pair_t *start; 00760 yaml_node_pair_t *end; 00762 yaml_node_pair_t *top; 00763 } pairs; 00765 yaml_mapping_style_t style; 00766 } mapping; 00767 00768 } data; 00769 00771 yaml_mark_t start_mark; 00773 yaml_mark_t end_mark; 00774 00775 }; 00776 00778 typedef struct yaml_document_s { 00779 00781 struct { 00783 yaml_node_t *start; 00785 yaml_node_t *end; 00787 yaml_node_t *top; 00788 } nodes; 00789 00791 yaml_version_directive_t *version_directive; 00792 00794 struct { 00796 yaml_tag_directive_t *start; 00798 yaml_tag_directive_t *end; 00799 } tag_directives; 00800 00802 int start_implicit; 00804 int end_implicit; 00805 00807 yaml_mark_t start_mark; 00809 yaml_mark_t end_mark; 00810 00811 } yaml_document_t; 00812 00831 YAML_DECLARE(int) 00832 yaml_document_initialize(yaml_document_t *document, 00833 yaml_version_directive_t *version_directive, 00834 yaml_tag_directive_t *tag_directives_start, 00835 yaml_tag_directive_t *tag_directives_end, 00836 int start_implicit, int end_implicit); 00837 00844 YAML_DECLARE(void) 00845 yaml_document_delete(yaml_document_t *document); 00846 00859 YAML_DECLARE(yaml_node_t *) 00860 yaml_document_get_node(yaml_document_t *document, int index); 00861 00878 YAML_DECLARE(yaml_node_t *) 00879 yaml_document_get_root_node(yaml_document_t *document); 00880 00895 YAML_DECLARE(int) 00896 yaml_document_add_scalar(yaml_document_t *document, 00897 yaml_char_t *tag, yaml_char_t *value, int length, 00898 yaml_scalar_style_t style); 00899 00912 YAML_DECLARE(int) 00913 yaml_document_add_sequence(yaml_document_t *document, 00914 yaml_char_t *tag, yaml_sequence_style_t style); 00915 00928 YAML_DECLARE(int) 00929 yaml_document_add_mapping(yaml_document_t *document, 00930 yaml_char_t *tag, yaml_mapping_style_t style); 00931 00942 YAML_DECLARE(int) 00943 yaml_document_append_sequence_item(yaml_document_t *document, 00944 int sequence, int item); 00945 00957 YAML_DECLARE(int) 00958 yaml_document_append_mapping_pair(yaml_document_t *document, 00959 int mapping, int key, int value); 00960 00986 typedef int yaml_read_handler_t(void *data, unsigned char *buffer, size_t size, 00987 size_t *size_read); 00988 00993 typedef struct yaml_simple_key_s { 00995 int possible; 00996 00998 int required; 00999 01001 size_t token_number; 01002 01004 yaml_mark_t mark; 01005 } yaml_simple_key_t; 01006 01010 typedef enum yaml_parser_state_e { 01012 YAML_PARSE_STREAM_START_STATE, 01014 YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE, 01016 YAML_PARSE_DOCUMENT_START_STATE, 01018 YAML_PARSE_DOCUMENT_CONTENT_STATE, 01020 YAML_PARSE_DOCUMENT_END_STATE, 01022 YAML_PARSE_BLOCK_NODE_STATE, 01024 YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE, 01026 YAML_PARSE_FLOW_NODE_STATE, 01028 YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE, 01030 YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE, 01032 YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE, 01034 YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE, 01036 YAML_PARSE_BLOCK_MAPPING_KEY_STATE, 01038 YAML_PARSE_BLOCK_MAPPING_VALUE_STATE, 01040 YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE, 01042 YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE, 01044 YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE, 01046 YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE, 01048 YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE, 01050 YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE, 01052 YAML_PARSE_FLOW_MAPPING_KEY_STATE, 01054 YAML_PARSE_FLOW_MAPPING_VALUE_STATE, 01056 YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE, 01058 YAML_PARSE_END_STATE 01059 } yaml_parser_state_t; 01060 01065 typedef struct yaml_alias_data_s { 01067 yaml_char_t *anchor; 01069 int index; 01071 yaml_mark_t mark; 01072 } yaml_alias_data_t; 01073 01081 typedef struct yaml_parser_s { 01082 01089 yaml_error_type_t error; 01091 const char *problem; 01093 size_t problem_offset; 01095 int problem_value; 01097 yaml_mark_t problem_mark; 01099 const char *context; 01101 yaml_mark_t context_mark; 01102 01113 yaml_read_handler_t *read_handler; 01114 01116 void *read_handler_data; 01117 01119 union { 01121 struct { 01123 const unsigned char *start; 01125 const unsigned char *end; 01127 const unsigned char *current; 01128 } string; 01129 01131 FILE *file; 01132 } input; 01133 01135 int eof; 01136 01138 struct { 01140 yaml_char_t *start; 01142 yaml_char_t *end; 01144 yaml_char_t *pointer; 01146 yaml_char_t *last; 01147 } buffer; 01148 01149 /* The number of unread characters in the buffer. */ 01150 size_t unread; 01151 01153 struct { 01155 unsigned char *start; 01157 unsigned char *end; 01159 unsigned char *pointer; 01161 unsigned char *last; 01162 } raw_buffer; 01163 01165 yaml_encoding_t encoding; 01166 01168 size_t offset; 01169 01171 yaml_mark_t mark; 01172 01183 int stream_start_produced; 01184 01186 int stream_end_produced; 01187 01189 int flow_level; 01190 01192 struct { 01194 yaml_token_t *start; 01196 yaml_token_t *end; 01198 yaml_token_t *head; 01200 yaml_token_t *tail; 01201 } tokens; 01202 01204 size_t tokens_parsed; 01205 01206 /* Does the tokens queue contain a token ready for dequeueing. */ 01207 int token_available; 01208 01210 struct { 01212 int *start; 01214 int *end; 01216 int *top; 01217 } indents; 01218 01220 int indent; 01221 01223 int simple_key_allowed; 01224 01226 struct { 01228 yaml_simple_key_t *start; 01230 yaml_simple_key_t *end; 01232 yaml_simple_key_t *top; 01233 } simple_keys; 01234 01245 struct { 01247 yaml_parser_state_t *start; 01249 yaml_parser_state_t *end; 01251 yaml_parser_state_t *top; 01252 } states; 01253 01255 yaml_parser_state_t state; 01256 01258 struct { 01260 yaml_mark_t *start; 01262 yaml_mark_t *end; 01264 yaml_mark_t *top; 01265 } marks; 01266 01268 struct { 01270 yaml_tag_directive_t *start; 01272 yaml_tag_directive_t *end; 01274 yaml_tag_directive_t *top; 01275 } tag_directives; 01276 01287 struct { 01289 yaml_alias_data_t *start; 01291 yaml_alias_data_t *end; 01293 yaml_alias_data_t *top; 01294 } aliases; 01295 01297 yaml_document_t *document; 01298 01303 } yaml_parser_t; 01304 01316 YAML_DECLARE(int) 01317 yaml_parser_initialize(yaml_parser_t *parser); 01318 01325 YAML_DECLARE(void) 01326 yaml_parser_delete(yaml_parser_t *parser); 01327 01340 YAML_DECLARE(void) 01341 yaml_parser_set_input_string(yaml_parser_t *parser, 01342 const unsigned char *input, size_t size); 01343 01354 YAML_DECLARE(void) 01355 yaml_parser_set_input_file(yaml_parser_t *parser, FILE *file); 01356 01366 YAML_DECLARE(void) 01367 yaml_parser_set_input(yaml_parser_t *parser, 01368 yaml_read_handler_t *handler, void *data); 01369 01377 YAML_DECLARE(void) 01378 yaml_parser_set_encoding(yaml_parser_t *parser, yaml_encoding_t encoding); 01379 01401 YAML_DECLARE(int) 01402 yaml_parser_scan(yaml_parser_t *parser, yaml_token_t *token); 01403 01425 YAML_DECLARE(int) 01426 yaml_parser_parse(yaml_parser_t *parser, yaml_event_t *event); 01427 01450 YAML_DECLARE(int) 01451 yaml_parser_load(yaml_parser_t *parser, yaml_document_t *document); 01452 01476 typedef int yaml_write_handler_t(void *data, unsigned char *buffer, size_t size); 01477 01479 typedef enum yaml_emitter_state_e { 01481 YAML_EMIT_STREAM_START_STATE, 01483 YAML_EMIT_FIRST_DOCUMENT_START_STATE, 01485 YAML_EMIT_DOCUMENT_START_STATE, 01487 YAML_EMIT_DOCUMENT_CONTENT_STATE, 01489 YAML_EMIT_DOCUMENT_END_STATE, 01491 YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE, 01493 YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE, 01495 YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE, 01497 YAML_EMIT_FLOW_MAPPING_KEY_STATE, 01499 YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE, 01501 YAML_EMIT_FLOW_MAPPING_VALUE_STATE, 01503 YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE, 01505 YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE, 01507 YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE, 01509 YAML_EMIT_BLOCK_MAPPING_KEY_STATE, 01511 YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE, 01513 YAML_EMIT_BLOCK_MAPPING_VALUE_STATE, 01515 YAML_EMIT_END_STATE 01516 } yaml_emitter_state_t; 01517 01525 typedef struct yaml_emitter_s { 01526 01533 yaml_error_type_t error; 01535 const char *problem; 01536 01547 yaml_write_handler_t *write_handler; 01548 01550 void *write_handler_data; 01551 01553 union { 01555 struct { 01557 unsigned char *buffer; 01559 size_t size; 01561 size_t *size_written; 01562 } string; 01563 01565 FILE *file; 01566 } output; 01567 01569 struct { 01571 yaml_char_t *start; 01573 yaml_char_t *end; 01575 yaml_char_t *pointer; 01577 yaml_char_t *last; 01578 } buffer; 01579 01581 struct { 01583 unsigned char *start; 01585 unsigned char *end; 01587 unsigned char *pointer; 01589 unsigned char *last; 01590 } raw_buffer; 01591 01593 yaml_encoding_t encoding; 01594 01605 int canonical; 01607 int best_indent; 01609 int best_width; 01611 int unicode; 01613 yaml_break_t line_break; 01614 01616 struct { 01618 yaml_emitter_state_t *start; 01620 yaml_emitter_state_t *end; 01622 yaml_emitter_state_t *top; 01623 } states; 01624 01626 yaml_emitter_state_t state; 01627 01629 struct { 01631 yaml_event_t *start; 01633 yaml_event_t *end; 01635 yaml_event_t *head; 01637 yaml_event_t *tail; 01638 } events; 01639 01641 struct { 01643 int *start; 01645 int *end; 01647 int *top; 01648 } indents; 01649 01651 struct { 01653 yaml_tag_directive_t *start; 01655 yaml_tag_directive_t *end; 01657 yaml_tag_directive_t *top; 01658 } tag_directives; 01659 01661 int indent; 01662 01664 int flow_level; 01665 01667 int root_context; 01669 int sequence_context; 01671 int mapping_context; 01673 int simple_key_context; 01674 01676 int line; 01678 int column; 01680 int whitespace; 01682 int indention; 01684 int open_ended; 01685 01687 struct { 01689 yaml_char_t *anchor; 01691 size_t anchor_length; 01693 int alias; 01694 } anchor_data; 01695 01697 struct { 01699 yaml_char_t *handle; 01701 size_t handle_length; 01703 yaml_char_t *suffix; 01705 size_t suffix_length; 01706 } tag_data; 01707 01709 struct { 01711 yaml_char_t *value; 01713 size_t length; 01715 int multiline; 01717 int flow_plain_allowed; 01719 int block_plain_allowed; 01721 int single_quoted_allowed; 01723 int block_allowed; 01725 yaml_scalar_style_t style; 01726 } scalar_data; 01727 01738 int opened; 01740 int closed; 01741 01743 struct { 01745 int references; 01747 int anchor; 01749 int serialized; 01750 } *anchors; 01751 01753 int last_anchor_id; 01754 01756 yaml_document_t *document; 01757 01762 } yaml_emitter_t; 01763 01775 YAML_DECLARE(int) 01776 yaml_emitter_initialize(yaml_emitter_t *emitter); 01777 01784 YAML_DECLARE(void) 01785 yaml_emitter_delete(yaml_emitter_t *emitter); 01786 01802 YAML_DECLARE(void) 01803 yaml_emitter_set_output_string(yaml_emitter_t *emitter, 01804 unsigned char *output, size_t size, size_t *size_written); 01805 01816 YAML_DECLARE(void) 01817 yaml_emitter_set_output_file(yaml_emitter_t *emitter, FILE *file); 01818 01828 YAML_DECLARE(void) 01829 yaml_emitter_set_output(yaml_emitter_t *emitter, 01830 yaml_write_handler_t *handler, void *data); 01831 01839 YAML_DECLARE(void) 01840 yaml_emitter_set_encoding(yaml_emitter_t *emitter, yaml_encoding_t encoding); 01841 01850 YAML_DECLARE(void) 01851 yaml_emitter_set_canonical(yaml_emitter_t *emitter, int canonical); 01852 01860 YAML_DECLARE(void) 01861 yaml_emitter_set_indent(yaml_emitter_t *emitter, int indent); 01862 01870 YAML_DECLARE(void) 01871 yaml_emitter_set_width(yaml_emitter_t *emitter, int width); 01872 01880 YAML_DECLARE(void) 01881 yaml_emitter_set_unicode(yaml_emitter_t *emitter, int unicode); 01882 01890 YAML_DECLARE(void) 01891 yaml_emitter_set_break(yaml_emitter_t *emitter, yaml_break_t line_break); 01892 01907 YAML_DECLARE(int) 01908 yaml_emitter_emit(yaml_emitter_t *emitter, yaml_event_t *event); 01909 01920 YAML_DECLARE(int) 01921 yaml_emitter_open(yaml_emitter_t *emitter); 01922 01933 YAML_DECLARE(int) 01934 yaml_emitter_close(yaml_emitter_t *emitter); 01935 01950 YAML_DECLARE(int) 01951 yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document); 01952 01961 YAML_DECLARE(int) 01962 yaml_emitter_flush(yaml_emitter_t *emitter); 01963 01966 #ifdef __cplusplus 01967 } 01968 #endif 01969 01970 #endif /* #ifndef YAML_H */ 01971 01972