00001 #ifdef RUBY_EXTCONF_H
00002 #include RUBY_EXTCONF_H
00003 #endif
00004
00005 #if HAVE_CONFIG_H
00006 #include <config.h>
00007 #endif
00008
00009 #include <yaml.h>
00010
00011 #include <assert.h>
00012 #include <limits.h>
00013 #include <stddef.h>
00014
00015 #ifndef _MSC_VER
00016 #include <stdint.h>
00017 #else
00018 #ifdef _WIN64
00019 #define PTRDIFF_MAX _I64_MAX
00020 #else
00021 #define PTRDIFF_MAX INT_MAX
00022 #endif
00023 #endif
00024
00025
00026
00027
00028
00029 YAML_DECLARE(void *)
00030 yaml_malloc(size_t size);
00031
00032 YAML_DECLARE(void *)
00033 yaml_realloc(void *ptr, size_t size);
00034
00035 YAML_DECLARE(void)
00036 yaml_free(void *ptr);
00037
00038 YAML_DECLARE(yaml_char_t *)
00039 yaml_strdup(const yaml_char_t *);
00040
00041
00042
00043
00044
00045 YAML_DECLARE(int)
00046 yaml_parser_update_buffer(yaml_parser_t *parser, size_t length);
00047
00048
00049
00050
00051
00052 YAML_DECLARE(int)
00053 yaml_parser_fetch_more_tokens(yaml_parser_t *parser);
00054
00055
00056
00057
00058
00059 #define INPUT_RAW_BUFFER_SIZE 16384
00060
00061
00062
00063
00064
00065
00066
00067 #define INPUT_BUFFER_SIZE (INPUT_RAW_BUFFER_SIZE*3)
00068
00069
00070
00071
00072
00073 #define OUTPUT_BUFFER_SIZE 16384
00074
00075
00076
00077
00078
00079
00080
00081 #define OUTPUT_RAW_BUFFER_SIZE (OUTPUT_BUFFER_SIZE*2+2)
00082
00083
00084
00085
00086
00087 #define INITIAL_STACK_SIZE 16
00088 #define INITIAL_QUEUE_SIZE 16
00089 #define INITIAL_STRING_SIZE 16
00090
00091
00092
00093
00094
00095 #define BUFFER_INIT(context,buffer,size) \
00096 (((buffer).start = yaml_malloc(size)) ? \
00097 ((buffer).last = (buffer).pointer = (buffer).start, \
00098 (buffer).end = (buffer).start+(size), \
00099 1) : \
00100 ((context)->error = YAML_MEMORY_ERROR, \
00101 0))
00102
00103 #define BUFFER_DEL(context,buffer) \
00104 (yaml_free((buffer).start), \
00105 (buffer).start = (buffer).pointer = (buffer).end = 0)
00106
00107
00108
00109
00110
00111 typedef struct {
00112 yaml_char_t *start;
00113 yaml_char_t *end;
00114 yaml_char_t *pointer;
00115 } yaml_string_t;
00116
00117 YAML_DECLARE(int)
00118 yaml_string_extend(yaml_char_t **start,
00119 yaml_char_t **pointer, yaml_char_t **end);
00120
00121 YAML_DECLARE(int)
00122 yaml_string_join(
00123 yaml_char_t **a_start, yaml_char_t **a_pointer, yaml_char_t **a_end,
00124 yaml_char_t **b_start, yaml_char_t **b_pointer, yaml_char_t **b_end);
00125
00126 #define NULL_STRING { NULL, NULL, NULL }
00127
00128 #define STRING(string,length) { (string), (string)+(length), (string) }
00129
00130 #define STRING_ASSIGN(value,string,length) \
00131 ((value).start = (string), \
00132 (value).end = (string)+(length), \
00133 (value).pointer = (string))
00134
00135 #define STRING_INIT(context,string,size) \
00136 (((string).start = yaml_malloc(size)) ? \
00137 ((string).pointer = (string).start, \
00138 (string).end = (string).start+(size), \
00139 memset((string).start, 0, (size)), \
00140 1) : \
00141 ((context)->error = YAML_MEMORY_ERROR, \
00142 0))
00143
00144 #define STRING_DEL(context,string) \
00145 (yaml_free((string).start), \
00146 (string).start = (string).pointer = (string).end = 0)
00147
00148 #define STRING_EXTEND(context,string) \
00149 ((((string).pointer+5 < (string).end) \
00150 || yaml_string_extend(&(string).start, \
00151 &(string).pointer, &(string).end)) ? \
00152 1 : \
00153 ((context)->error = YAML_MEMORY_ERROR, \
00154 0))
00155
00156 #define CLEAR(context,string) \
00157 ((string).pointer = (string).start, \
00158 memset((string).start, 0, (string).end-(string).start))
00159
00160 #define JOIN(context,string_a,string_b) \
00161 ((yaml_string_join(&(string_a).start, &(string_a).pointer, \
00162 &(string_a).end, &(string_b).start, \
00163 &(string_b).pointer, &(string_b).end)) ? \
00164 ((string_b).pointer = (string_b).start, \
00165 1) : \
00166 ((context)->error = YAML_MEMORY_ERROR, \
00167 0))
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177 #define CHECK_AT(string,octet,offset) \
00178 ((string).pointer[offset] == (yaml_char_t)(octet))
00179
00180
00181
00182
00183
00184 #define CHECK(string,octet) CHECK_AT((string),(octet),0)
00185
00186
00187
00188
00189
00190
00191 #define IS_ALPHA_AT(string,offset) \
00192 (((string).pointer[offset] >= (yaml_char_t) '0' && \
00193 (string).pointer[offset] <= (yaml_char_t) '9') || \
00194 ((string).pointer[offset] >= (yaml_char_t) 'A' && \
00195 (string).pointer[offset] <= (yaml_char_t) 'Z') || \
00196 ((string).pointer[offset] >= (yaml_char_t) 'a' && \
00197 (string).pointer[offset] <= (yaml_char_t) 'z') || \
00198 (string).pointer[offset] == '_' || \
00199 (string).pointer[offset] == '-')
00200
00201 #define IS_ALPHA(string) IS_ALPHA_AT((string),0)
00202
00203
00204
00205
00206
00207 #define IS_DIGIT_AT(string,offset) \
00208 (((string).pointer[offset] >= (yaml_char_t) '0' && \
00209 (string).pointer[offset] <= (yaml_char_t) '9'))
00210
00211 #define IS_DIGIT(string) IS_DIGIT_AT((string),0)
00212
00213
00214
00215
00216
00217 #define AS_DIGIT_AT(string,offset) \
00218 ((string).pointer[offset] - (yaml_char_t) '0')
00219
00220 #define AS_DIGIT(string) AS_DIGIT_AT((string),0)
00221
00222
00223
00224
00225
00226 #define IS_HEX_AT(string,offset) \
00227 (((string).pointer[offset] >= (yaml_char_t) '0' && \
00228 (string).pointer[offset] <= (yaml_char_t) '9') || \
00229 ((string).pointer[offset] >= (yaml_char_t) 'A' && \
00230 (string).pointer[offset] <= (yaml_char_t) 'F') || \
00231 ((string).pointer[offset] >= (yaml_char_t) 'a' && \
00232 (string).pointer[offset] <= (yaml_char_t) 'f'))
00233
00234 #define IS_HEX(string) IS_HEX_AT((string),0)
00235
00236
00237
00238
00239
00240 #define AS_HEX_AT(string,offset) \
00241 (((string).pointer[offset] >= (yaml_char_t) 'A' && \
00242 (string).pointer[offset] <= (yaml_char_t) 'F') ? \
00243 ((string).pointer[offset] - (yaml_char_t) 'A' + 10) : \
00244 ((string).pointer[offset] >= (yaml_char_t) 'a' && \
00245 (string).pointer[offset] <= (yaml_char_t) 'f') ? \
00246 ((string).pointer[offset] - (yaml_char_t) 'a' + 10) : \
00247 ((string).pointer[offset] - (yaml_char_t) '0'))
00248
00249 #define AS_HEX(string) AS_HEX_AT((string),0)
00250
00251
00252
00253
00254
00255 #define IS_ASCII_AT(string,offset) \
00256 ((string).pointer[offset] <= (yaml_char_t) '\x7F')
00257
00258 #define IS_ASCII(string) IS_ASCII_AT((string),0)
00259
00260
00261
00262
00263
00264 #define IS_PRINTABLE_AT(string,offset) \
00265 (((string).pointer[offset] == 0x0A) \
00266 || ((string).pointer[offset] >= 0x20 \
00267 && (string).pointer[offset] <= 0x7E) \
00268 || ((string).pointer[offset] == 0xC2 \
00269 && (string).pointer[offset+1] >= 0xA0) \
00270 || ((string).pointer[offset] > 0xC2 \
00271 && (string).pointer[offset] < 0xED) \
00272 || ((string).pointer[offset] == 0xED \
00273 && (string).pointer[offset+1] < 0xA0) \
00274 || ((string).pointer[offset] == 0xEE) \
00275 || ((string).pointer[offset] == 0xEF \
00276 && !((string).pointer[offset+1] == 0xBB \
00277 && (string).pointer[offset+2] == 0xBF) \
00278 && !((string).pointer[offset+1] == 0xBF \
00279 && ((string).pointer[offset+2] == 0xBE \
00280 || (string).pointer[offset+2] == 0xBF))))
00281
00282 #define IS_PRINTABLE(string) IS_PRINTABLE_AT((string),0)
00283
00284
00285
00286
00287
00288 #define IS_Z_AT(string,offset) CHECK_AT((string),'\0',(offset))
00289
00290 #define IS_Z(string) IS_Z_AT((string),0)
00291
00292
00293
00294
00295
00296 #define IS_BOM_AT(string,offset) \
00297 (CHECK_AT((string),'\xEF',(offset)) \
00298 && CHECK_AT((string),'\xBB',(offset)+1) \
00299 && CHECK_AT((string),'\xBF',(offset)+2))
00300
00301 #define IS_BOM(string) IS_BOM_AT(string,0)
00302
00303
00304
00305
00306
00307 #define IS_SPACE_AT(string,offset) CHECK_AT((string),' ',(offset))
00308
00309 #define IS_SPACE(string) IS_SPACE_AT((string),0)
00310
00311
00312
00313
00314
00315 #define IS_TAB_AT(string,offset) CHECK_AT((string),'\t',(offset))
00316
00317 #define IS_TAB(string) IS_TAB_AT((string),0)
00318
00319
00320
00321
00322
00323 #define IS_BLANK_AT(string,offset) \
00324 (IS_SPACE_AT((string),(offset)) || IS_TAB_AT((string),(offset)))
00325
00326 #define IS_BLANK(string) IS_BLANK_AT((string),0)
00327
00328
00329
00330
00331
00332 #define IS_BREAK_AT(string,offset) \
00333 (CHECK_AT((string),'\r',(offset)) \
00334 || CHECK_AT((string),'\n',(offset)) \
00335 || (CHECK_AT((string),'\xC2',(offset)) \
00336 && CHECK_AT((string),'\x85',(offset)+1)) \
00337 || (CHECK_AT((string),'\xE2',(offset)) \
00338 && CHECK_AT((string),'\x80',(offset)+1) \
00339 && CHECK_AT((string),'\xA8',(offset)+2)) \
00340 || (CHECK_AT((string),'\xE2',(offset)) \
00341 && CHECK_AT((string),'\x80',(offset)+1) \
00342 && CHECK_AT((string),'\xA9',(offset)+2)))
00343
00344 #define IS_BREAK(string) IS_BREAK_AT((string),0)
00345
00346 #define IS_CRLF_AT(string,offset) \
00347 (CHECK_AT((string),'\r',(offset)) && CHECK_AT((string),'\n',(offset)+1))
00348
00349 #define IS_CRLF(string) IS_CRLF_AT((string),0)
00350
00351
00352
00353
00354
00355 #define IS_BREAKZ_AT(string,offset) \
00356 (IS_BREAK_AT((string),(offset)) || IS_Z_AT((string),(offset)))
00357
00358 #define IS_BREAKZ(string) IS_BREAKZ_AT((string),0)
00359
00360
00361
00362
00363
00364 #define IS_SPACEZ_AT(string,offset) \
00365 (IS_SPACE_AT((string),(offset)) || IS_BREAKZ_AT((string),(offset)))
00366
00367 #define IS_SPACEZ(string) IS_SPACEZ_AT((string),0)
00368
00369
00370
00371
00372
00373 #define IS_BLANKZ_AT(string,offset) \
00374 (IS_BLANK_AT((string),(offset)) || IS_BREAKZ_AT((string),(offset)))
00375
00376 #define IS_BLANKZ(string) IS_BLANKZ_AT((string),0)
00377
00378
00379
00380
00381
00382 #define WIDTH_AT(string,offset) \
00383 (((string).pointer[offset] & 0x80) == 0x00 ? 1 : \
00384 ((string).pointer[offset] & 0xE0) == 0xC0 ? 2 : \
00385 ((string).pointer[offset] & 0xF0) == 0xE0 ? 3 : \
00386 ((string).pointer[offset] & 0xF8) == 0xF0 ? 4 : 0)
00387
00388 #define WIDTH(string) WIDTH_AT((string),0)
00389
00390
00391
00392
00393
00394 #define MOVE(string) ((string).pointer += WIDTH((string)))
00395
00396
00397
00398
00399
00400 #define COPY(string_a,string_b) \
00401 ((*(string_b).pointer & 0x80) == 0x00 ? \
00402 (*((string_a).pointer++) = *((string_b).pointer++)) : \
00403 (*(string_b).pointer & 0xE0) == 0xC0 ? \
00404 (*((string_a).pointer++) = *((string_b).pointer++), \
00405 *((string_a).pointer++) = *((string_b).pointer++)) : \
00406 (*(string_b).pointer & 0xF0) == 0xE0 ? \
00407 (*((string_a).pointer++) = *((string_b).pointer++), \
00408 *((string_a).pointer++) = *((string_b).pointer++), \
00409 *((string_a).pointer++) = *((string_b).pointer++)) : \
00410 (*(string_b).pointer & 0xF8) == 0xF0 ? \
00411 (*((string_a).pointer++) = *((string_b).pointer++), \
00412 *((string_a).pointer++) = *((string_b).pointer++), \
00413 *((string_a).pointer++) = *((string_b).pointer++), \
00414 *((string_a).pointer++) = *((string_b).pointer++)) : 0)
00415
00416
00417
00418
00419
00420 YAML_DECLARE(int)
00421 yaml_stack_extend(void **start, void **top, void **end);
00422
00423 YAML_DECLARE(int)
00424 yaml_queue_extend(void **start, void **head, void **tail, void **end);
00425
00426 #define STACK_INIT(context,stack,size) \
00427 (((stack).start = yaml_malloc((size)*sizeof(*(stack).start))) ? \
00428 ((stack).top = (stack).start, \
00429 (stack).end = (stack).start+(size), \
00430 1) : \
00431 ((context)->error = YAML_MEMORY_ERROR, \
00432 0))
00433
00434 #define STACK_DEL(context,stack) \
00435 (yaml_free((stack).start), \
00436 (stack).start = (stack).top = (stack).end = 0)
00437
00438 #define STACK_EMPTY(context,stack) \
00439 ((void)(context), \
00440 ((stack).start == (stack).top))
00441
00442 #define STACK_LIMIT(context,stack,size) \
00443 ((stack).top - (stack).start < (size) ? \
00444 1 : \
00445 ((context)->error = YAML_MEMORY_ERROR, \
00446 0))
00447
00448 #define PUSH(context,stack,value) \
00449 (((stack).top != (stack).end \
00450 || yaml_stack_extend((void **)&(stack).start, \
00451 (void **)&(stack).top, (void **)&(stack).end)) ? \
00452 (*((stack).top++) = value, \
00453 1) : \
00454 ((context)->error = YAML_MEMORY_ERROR, \
00455 0))
00456
00457 #define POP(context,stack) \
00458 (*(--(stack).top))
00459
00460 #define QUEUE_INIT(context,queue,size) \
00461 (((queue).start = yaml_malloc((size)*sizeof(*(queue).start))) ? \
00462 ((queue).head = (queue).tail = (queue).start, \
00463 (queue).end = (queue).start+(size), \
00464 1) : \
00465 ((context)->error = YAML_MEMORY_ERROR, \
00466 0))
00467
00468 #define QUEUE_DEL(context,queue) \
00469 (yaml_free((queue).start), \
00470 (queue).start = (queue).head = (queue).tail = (queue).end = 0)
00471
00472 #define QUEUE_EMPTY(context,queue) \
00473 ((queue).head == (queue).tail)
00474
00475 #define ENQUEUE(context,queue,value) \
00476 (((queue).tail != (queue).end \
00477 || yaml_queue_extend((void **)&(queue).start, (void **)&(queue).head, \
00478 (void **)&(queue).tail, (void **)&(queue).end)) ? \
00479 (*((queue).tail++) = value, \
00480 1) : \
00481 ((context)->error = YAML_MEMORY_ERROR, \
00482 0))
00483
00484 #define DEQUEUE(context,queue) \
00485 (*((queue).head++))
00486
00487 #define QUEUE_INSERT(context,queue,index,value) \
00488 (((queue).tail != (queue).end \
00489 || yaml_queue_extend((void **)&(queue).start, (void **)&(queue).head, \
00490 (void **)&(queue).tail, (void **)&(queue).end)) ? \
00491 (memmove((queue).head+(index)+1,(queue).head+(index), \
00492 ((queue).tail-(queue).head-(index))*sizeof(*(queue).start)), \
00493 *((queue).head+(index)) = value, \
00494 (queue).tail++, \
00495 1) : \
00496 ((context)->error = YAML_MEMORY_ERROR, \
00497 0))
00498
00499
00500
00501
00502
00503 #define TOKEN_INIT(token,token_type,token_start_mark,token_end_mark) \
00504 (memset(&(token), 0, sizeof(yaml_token_t)), \
00505 (token).type = (token_type), \
00506 (token).start_mark = (token_start_mark), \
00507 (token).end_mark = (token_end_mark))
00508
00509 #define STREAM_START_TOKEN_INIT(token,token_encoding,start_mark,end_mark) \
00510 (TOKEN_INIT((token),YAML_STREAM_START_TOKEN,(start_mark),(end_mark)), \
00511 (token).data.stream_start.encoding = (token_encoding))
00512
00513 #define STREAM_END_TOKEN_INIT(token,start_mark,end_mark) \
00514 (TOKEN_INIT((token),YAML_STREAM_END_TOKEN,(start_mark),(end_mark)))
00515
00516 #define ALIAS_TOKEN_INIT(token,token_value,start_mark,end_mark) \
00517 (TOKEN_INIT((token),YAML_ALIAS_TOKEN,(start_mark),(end_mark)), \
00518 (token).data.alias.value = (token_value))
00519
00520 #define ANCHOR_TOKEN_INIT(token,token_value,start_mark,end_mark) \
00521 (TOKEN_INIT((token),YAML_ANCHOR_TOKEN,(start_mark),(end_mark)), \
00522 (token).data.anchor.value = (token_value))
00523
00524 #define TAG_TOKEN_INIT(token,token_handle,token_suffix,start_mark,end_mark) \
00525 (TOKEN_INIT((token),YAML_TAG_TOKEN,(start_mark),(end_mark)), \
00526 (token).data.tag.handle = (token_handle), \
00527 (token).data.tag.suffix = (token_suffix))
00528
00529 #define SCALAR_TOKEN_INIT(token,token_value,token_length,token_style,start_mark,end_mark) \
00530 (TOKEN_INIT((token),YAML_SCALAR_TOKEN,(start_mark),(end_mark)), \
00531 (token).data.scalar.value = (token_value), \
00532 (token).data.scalar.length = (token_length), \
00533 (token).data.scalar.style = (token_style))
00534
00535 #define VERSION_DIRECTIVE_TOKEN_INIT(token,token_major,token_minor,start_mark,end_mark) \
00536 (TOKEN_INIT((token),YAML_VERSION_DIRECTIVE_TOKEN,(start_mark),(end_mark)), \
00537 (token).data.version_directive.major = (token_major), \
00538 (token).data.version_directive.minor = (token_minor))
00539
00540 #define TAG_DIRECTIVE_TOKEN_INIT(token,token_handle,token_prefix,start_mark,end_mark) \
00541 (TOKEN_INIT((token),YAML_TAG_DIRECTIVE_TOKEN,(start_mark),(end_mark)), \
00542 (token).data.tag_directive.handle = (token_handle), \
00543 (token).data.tag_directive.prefix = (token_prefix))
00544
00545
00546
00547
00548
00549 #define EVENT_INIT(event,event_type,event_start_mark,event_end_mark) \
00550 (memset(&(event), 0, sizeof(yaml_event_t)), \
00551 (event).type = (event_type), \
00552 (event).start_mark = (event_start_mark), \
00553 (event).end_mark = (event_end_mark))
00554
00555 #define STREAM_START_EVENT_INIT(event,event_encoding,start_mark,end_mark) \
00556 (EVENT_INIT((event),YAML_STREAM_START_EVENT,(start_mark),(end_mark)), \
00557 (event).data.stream_start.encoding = (event_encoding))
00558
00559 #define STREAM_END_EVENT_INIT(event,start_mark,end_mark) \
00560 (EVENT_INIT((event),YAML_STREAM_END_EVENT,(start_mark),(end_mark)))
00561
00562 #define DOCUMENT_START_EVENT_INIT(event,event_version_directive, \
00563 event_tag_directives_start,event_tag_directives_end,event_implicit,start_mark,end_mark) \
00564 (EVENT_INIT((event),YAML_DOCUMENT_START_EVENT,(start_mark),(end_mark)), \
00565 (event).data.document_start.version_directive = (event_version_directive), \
00566 (event).data.document_start.tag_directives.start = (event_tag_directives_start), \
00567 (event).data.document_start.tag_directives.end = (event_tag_directives_end), \
00568 (event).data.document_start.implicit = (event_implicit))
00569
00570 #define DOCUMENT_END_EVENT_INIT(event,event_implicit,start_mark,end_mark) \
00571 (EVENT_INIT((event),YAML_DOCUMENT_END_EVENT,(start_mark),(end_mark)), \
00572 (event).data.document_end.implicit = (event_implicit))
00573
00574 #define ALIAS_EVENT_INIT(event,event_anchor,start_mark,end_mark) \
00575 (EVENT_INIT((event),YAML_ALIAS_EVENT,(start_mark),(end_mark)), \
00576 (event).data.alias.anchor = (event_anchor))
00577
00578 #define SCALAR_EVENT_INIT(event,event_anchor,event_tag,event_value,event_length, \
00579 event_plain_implicit, event_quoted_implicit,event_style,start_mark,end_mark) \
00580 (EVENT_INIT((event),YAML_SCALAR_EVENT,(start_mark),(end_mark)), \
00581 (event).data.scalar.anchor = (event_anchor), \
00582 (event).data.scalar.tag = (event_tag), \
00583 (event).data.scalar.value = (event_value), \
00584 (event).data.scalar.length = (event_length), \
00585 (event).data.scalar.plain_implicit = (event_plain_implicit), \
00586 (event).data.scalar.quoted_implicit = (event_quoted_implicit), \
00587 (event).data.scalar.style = (event_style))
00588
00589 #define SEQUENCE_START_EVENT_INIT(event,event_anchor,event_tag, \
00590 event_implicit,event_style,start_mark,end_mark) \
00591 (EVENT_INIT((event),YAML_SEQUENCE_START_EVENT,(start_mark),(end_mark)), \
00592 (event).data.sequence_start.anchor = (event_anchor), \
00593 (event).data.sequence_start.tag = (event_tag), \
00594 (event).data.sequence_start.implicit = (event_implicit), \
00595 (event).data.sequence_start.style = (event_style))
00596
00597 #define SEQUENCE_END_EVENT_INIT(event,start_mark,end_mark) \
00598 (EVENT_INIT((event),YAML_SEQUENCE_END_EVENT,(start_mark),(end_mark)))
00599
00600 #define MAPPING_START_EVENT_INIT(event,event_anchor,event_tag, \
00601 event_implicit,event_style,start_mark,end_mark) \
00602 (EVENT_INIT((event),YAML_MAPPING_START_EVENT,(start_mark),(end_mark)), \
00603 (event).data.mapping_start.anchor = (event_anchor), \
00604 (event).data.mapping_start.tag = (event_tag), \
00605 (event).data.mapping_start.implicit = (event_implicit), \
00606 (event).data.mapping_start.style = (event_style))
00607
00608 #define MAPPING_END_EVENT_INIT(event,start_mark,end_mark) \
00609 (EVENT_INIT((event),YAML_MAPPING_END_EVENT,(start_mark),(end_mark)))
00610
00611
00612
00613
00614
00615 #define DOCUMENT_INIT(document,document_nodes_start,document_nodes_end, \
00616 document_version_directive,document_tag_directives_start, \
00617 document_tag_directives_end,document_start_implicit, \
00618 document_end_implicit,document_start_mark,document_end_mark) \
00619 (memset(&(document), 0, sizeof(yaml_document_t)), \
00620 (document).nodes.start = (document_nodes_start), \
00621 (document).nodes.end = (document_nodes_end), \
00622 (document).nodes.top = (document_nodes_start), \
00623 (document).version_directive = (document_version_directive), \
00624 (document).tag_directives.start = (document_tag_directives_start), \
00625 (document).tag_directives.end = (document_tag_directives_end), \
00626 (document).start_implicit = (document_start_implicit), \
00627 (document).end_implicit = (document_end_implicit), \
00628 (document).start_mark = (document_start_mark), \
00629 (document).end_mark = (document_end_mark))
00630
00631
00632
00633
00634
00635 #define NODE_INIT(node,node_type,node_tag,node_start_mark,node_end_mark) \
00636 (memset(&(node), 0, sizeof(yaml_node_t)), \
00637 (node).type = (node_type), \
00638 (node).tag = (node_tag), \
00639 (node).start_mark = (node_start_mark), \
00640 (node).end_mark = (node_end_mark))
00641
00642 #define SCALAR_NODE_INIT(node,node_tag,node_value,node_length, \
00643 node_style,start_mark,end_mark) \
00644 (NODE_INIT((node),YAML_SCALAR_NODE,(node_tag),(start_mark),(end_mark)), \
00645 (node).data.scalar.value = (node_value), \
00646 (node).data.scalar.length = (node_length), \
00647 (node).data.scalar.style = (node_style))
00648
00649 #define SEQUENCE_NODE_INIT(node,node_tag,node_items_start,node_items_end, \
00650 node_style,start_mark,end_mark) \
00651 (NODE_INIT((node),YAML_SEQUENCE_NODE,(node_tag),(start_mark),(end_mark)), \
00652 (node).data.sequence.items.start = (node_items_start), \
00653 (node).data.sequence.items.end = (node_items_end), \
00654 (node).data.sequence.items.top = (node_items_start), \
00655 (node).data.sequence.style = (node_style))
00656
00657 #define MAPPING_NODE_INIT(node,node_tag,node_pairs_start,node_pairs_end, \
00658 node_style,start_mark,end_mark) \
00659 (NODE_INIT((node),YAML_MAPPING_NODE,(node_tag),(start_mark),(end_mark)), \
00660 (node).data.mapping.pairs.start = (node_pairs_start), \
00661 (node).data.mapping.pairs.end = (node_pairs_end), \
00662 (node).data.mapping.pairs.top = (node_pairs_start), \
00663 (node).data.mapping.style = (node_style))
00664
00665