Ignore:
Timestamp:
07/23/06 07:57:36 (8 years ago)
Author:
xi
Message:

Add Emitter definitions and implement the Writer.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libyaml/trunk/src/yaml_private.h

    r208 r211  
    3939 
    4040/* 
    41  * The size of the raw buffer. 
    42  */ 
    43  
    44 #define RAW_BUFFER_SIZE 16384 
    45  
    46 /* 
    47  * The size of the buffer. 
     41 * The size of the input raw buffer. 
     42 */ 
     43 
     44#define INPUT_RAW_BUFFER_SIZE  16384 
     45 
     46/* 
     47 * The size of the input buffer. 
    4848 * 
    4949 * It should be possible to decode the whole raw buffer. 
    5050 */ 
    5151 
    52 #define BUFFER_SIZE     (RAW_BUFFER_SIZE*3) 
     52#define INPUT_BUFFER_SIZE       (INPUT_RAW_BUFFER_SIZE*3) 
     53 
     54/* 
     55 * The size of the output buffer. 
     56 */ 
     57 
     58#define OUTPUT_BUFFER_SIZE      16384 
     59 
     60/* 
     61 * The size of the output raw buffer. 
     62 * 
     63 * It should be possible to encode the whole output buffer. 
     64 */ 
     65 
     66#define OUTPUT_RAW_BUFFER_SIZE  (OUTPUT_BUFFER_SIZE*2+2) 
    5367 
    5468/* 
     
    204218         0)) 
    205219 
     220/* 
     221 * Token initializers. 
     222 */ 
     223 
     224#define TOKEN_INIT(token,token_type,token_start_mark,token_end_mark)            \ 
     225    (memset(&(token), 0, sizeof(yaml_token_t)),                                 \ 
     226     (token).type = (token_type),                                               \ 
     227     (token).start_mark = (token_start_mark),                                   \ 
     228     (token).end_mark = (token_end_mark)) 
     229 
     230#define STREAM_START_TOKEN_INIT(token,token_encoding,start_mark,end_mark)       \ 
     231    (TOKEN_INIT((token),YAML_STREAM_START_TOKEN,(start_mark),(end_mark)),       \ 
     232     (token).data.stream_start.encoding = (token_encoding)) 
     233 
     234#define STREAM_END_TOKEN_INIT(token,start_mark,end_mark)                        \ 
     235    (TOKEN_INIT((token),YAML_STREAM_END_TOKEN,(start_mark),(end_mark))) 
     236 
     237#define ALIAS_TOKEN_INIT(token,token_value,start_mark,end_mark)                 \ 
     238    (TOKEN_INIT((token),YAML_ALIAS_TOKEN,(start_mark),(end_mark)),              \ 
     239     (token).data.alias.value = (token_value)) 
     240 
     241#define ANCHOR_TOKEN_INIT(token,token_value,start_mark,end_mark)                \ 
     242    (TOKEN_INIT((token),YAML_ANCHOR_TOKEN,(start_mark),(end_mark)),             \ 
     243     (token).data.anchor.value = (token_value)) 
     244 
     245#define TAG_TOKEN_INIT(token,token_handle,token_suffix,start_mark,end_mark)     \ 
     246    (TOKEN_INIT((token),YAML_TAG_TOKEN,(start_mark),(end_mark)),                \ 
     247     (token).data.tag.handle = (token_handle),                                  \ 
     248     (token).data.tag.suffix = (token_suffix)) 
     249 
     250#define SCALAR_TOKEN_INIT(token,token_value,token_length,token_style,start_mark,end_mark)   \ 
     251    (TOKEN_INIT((token),YAML_SCALAR_TOKEN,(start_mark),(end_mark)),             \ 
     252     (token).data.scalar.value = (token_value),                                 \ 
     253     (token).data.scalar.length = (token_length),                               \ 
     254     (token).data.scalar.style = (token_style)) 
     255 
     256#define VERSION_DIRECTIVE_TOKEN_INIT(token,token_major,token_minor,start_mark,end_mark)     \ 
     257    (TOKEN_INIT((token),YAML_VERSION_DIRECTIVE_TOKEN,(start_mark),(end_mark)),  \ 
     258     (token).data.version_directive.major = (token_major),                      \ 
     259     (token).data.version_directive.minor = (token_minor)) 
     260 
     261#define TAG_DIRECTIVE_TOKEN_INIT(token,token_handle,token_prefix,start_mark,end_mark)       \ 
     262    (TOKEN_INIT((token),YAML_TAG_DIRECTIVE_TOKEN,(start_mark),(end_mark)),      \ 
     263     (token).data.tag_directive.handle = (token_handle),                        \ 
     264     (token).data.tag_directive.prefix = (token_prefix)) 
     265 
     266/* 
     267 * Event initializers. 
     268 */ 
     269 
     270#define EVENT_INIT(event,event_type,event_start_mark,event_end_mark)            \ 
     271    (memset(&(event), 0, sizeof(yaml_event_t)),                                 \ 
     272     (event).type = (event_type),                                               \ 
     273     (event).start_mark = (event_start_mark),                                   \ 
     274     (event).end_mark = (event_end_mark)) 
     275 
     276#define STREAM_START_EVENT_INIT(event,event_encoding,start_mark,end_mark)       \ 
     277    (EVENT_INIT((event),YAML_STREAM_START_EVENT,(start_mark),(end_mark)),       \ 
     278     (event).data.stream_start.encoding = (event_encoding)) 
     279 
     280#define STREAM_END_EVENT_INIT(event,start_mark,end_mark)                        \ 
     281    (EVENT_INIT((event),YAML_STREAM_END_EVENT,(start_mark),(end_mark))) 
     282 
     283#define DOCUMENT_START_EVENT_INIT(event,event_version_directive,                \ 
     284        event_tag_directives_start,event_tag_directives_end,event_implicit,start_mark,end_mark) \ 
     285    (EVENT_INIT((event),YAML_DOCUMENT_START_EVENT,(start_mark),(end_mark)),     \ 
     286     (event).data.document_start.version_directive = (event_version_directive), \ 
     287     (event).data.document_start.tag_directives.start = (event_tag_directives_start),   \ 
     288     (event).data.document_start.tag_directives.end = (event_tag_directives_end),   \ 
     289     (event).data.document_start.implicit = (event_implicit)) 
     290 
     291#define DOCUMENT_END_EVENT_INIT(event,event_implicit,start_mark,end_mark)       \ 
     292    (EVENT_INIT((event),YAML_DOCUMENT_END_EVENT,(start_mark),(end_mark)),       \ 
     293     (event).data.document_end.implicit = (event_implicit)) 
     294 
     295#define ALIAS_EVENT_INIT(event,event_anchor,start_mark,end_mark)                \ 
     296    (EVENT_INIT((event),YAML_ALIAS_EVENT,(start_mark),(end_mark)),              \ 
     297     (event).data.alias.anchor = (event_anchor)) 
     298 
     299#define SCALAR_EVENT_INIT(event,event_anchor,event_tag,event_value,event_length,    \ 
     300        event_plain_implicit, event_quoted_implicit,event_style,start_mark,end_mark)    \ 
     301    (EVENT_INIT((event),YAML_SCALAR_EVENT,(start_mark),(end_mark)),             \ 
     302     (event).data.scalar.anchor = (event_anchor),                               \ 
     303     (event).data.scalar.tag = (event_tag),                                     \ 
     304     (event).data.scalar.value = (event_value),                                 \ 
     305     (event).data.scalar.length = (event_length),                               \ 
     306     (event).data.scalar.plain_implicit = (event_plain_implicit),               \ 
     307     (event).data.scalar.quoted_implicit = (event_quoted_implicit),             \ 
     308     (event).data.scalar.style = (event_style)) 
     309 
     310#define SEQUENCE_START_EVENT_INIT(event,event_anchor,event_tag,                 \ 
     311        event_implicit,event_style,start_mark,end_mark)                         \ 
     312    (EVENT_INIT((event),YAML_SEQUENCE_START_EVENT,(start_mark),(end_mark)),     \ 
     313     (event).data.sequence_start.anchor = (event_anchor),                       \ 
     314     (event).data.sequence_start.tag = (event_tag),                             \ 
     315     (event).data.sequence_start.implicit = (event_implicit),                   \ 
     316     (event).data.sequence_start.style = (event_style)) 
     317 
     318#define SEQUENCE_END_EVENT_INIT(event,start_mark,end_mark)                      \ 
     319    (EVENT_INIT((event),YAML_SEQUENCE_END_EVENT,(start_mark),(end_mark))) 
     320 
     321#define MAPPING_START_EVENT_INIT(event,event_anchor,event_tag,                  \ 
     322        event_implicit,event_style,start_mark,end_mark)                         \ 
     323    (EVENT_INIT((event),YAML_MAPPING_START_EVENT,(start_mark),(end_mark)),      \ 
     324     (event).data.mapping_start.anchor = (event_anchor),                        \ 
     325     (event).data.mapping_start.tag = (event_tag),                              \ 
     326     (event).data.mapping_start.implicit = (event_implicit),                    \ 
     327     (event).data.mapping_start.style = (event_style)) 
     328 
     329#define MAPPING_END_EVENT_INIT(event,start_mark,end_mark)                       \ 
     330    (EVENT_INIT((event),YAML_MAPPING_END_EVENT,(start_mark),(end_mark))) 
     331 
Note: See TracChangeset for help on using the changeset viewer.