From 1ba2a61687b9bc4f1fe7645c629511d0d986cca2 Mon Sep 17 00:00:00 2001 From: why Date: Sat, 3 Apr 2004 08:13:22 +0000 Subject: * ext/syck/syck.h: version 0.43. * ext/syck/lib/gram.c: allow root-level inline collections. [ruby-talk:94922] * lib/yaml/rubytypes.rb (Symbol#to_yaml): emit symbols as implicits. [ruby-talk:94930] * ext/syck/bytecode.c: turn off default implicit typing. * ext/syck/implicit.c: detect base60 integers. * ext/syck/rubyext.c: handle base60, as well as hex and octal with commas. implicit typing of ruby symbols. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/syck/rubyext.c | 403 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 230 insertions(+), 173 deletions(-) (limited to 'ext/syck/rubyext.c') diff --git a/ext/syck/rubyext.c b/ext/syck/rubyext.c index 012d727ce7..7e6d0e637e 100644 --- a/ext/syck/rubyext.c +++ b/ext/syck/rubyext.c @@ -1,3 +1,4 @@ +/* -*- indent-tabs-mode: nil -*- /* * rubyext.c * @@ -15,23 +16,23 @@ typedef struct RVALUE { union { #if 0 - struct { - unsigned long flags; /* always 0 for freed obj */ - struct RVALUE *next; - } free; + struct { + unsigned long flags; /* always 0 for freed obj */ + struct RVALUE *next; + } free; #endif - struct RBasic basic; - struct RObject object; - struct RClass klass; - /*struct RFloat flonum;*/ - /*struct RString string;*/ - struct RArray array; - /*struct RRegexp regexp;*/ - struct RHash hash; - /*struct RData data;*/ - struct RStruct rstruct; - /*struct RBignum bignum;*/ - /*struct RFile file;*/ + struct RBasic basic; + struct RObject object; + struct RClass klass; + /*struct RFloat flonum;*/ + /*struct RString string;*/ + struct RArray array; + /*struct RRegexp regexp;*/ + struct RHash hash; + /*struct RData data;*/ + struct RStruct rstruct; + /*struct RBignum bignum;*/ + /*struct RFile file;*/ } as; } RVALUE; @@ -49,6 +50,7 @@ typedef struct { * symbols and constants */ static ID s_new, s_utc, s_at, s_to_f, s_to_i, s_read, s_binmode, s_call, s_transfer, s_update, s_dup, s_match, s_keys, s_to_str, s_unpack, s_tr_bang, s_anchors, s_default_set; +static ID s_anchors, s_domain, s_families, s_kind, s_name, s_options, s_private_types, s_type_id, s_value; static VALUE sym_model, sym_generic, sym_input, sym_bytecode; static VALUE sym_scalar, sym_seq, sym_map; VALUE cDate, cParser, cLoader, cNode, cPrivateType, cDomainType, cBadAlias, cDefaultKey, cMergeKey, cEmitter; @@ -85,7 +87,7 @@ struct parser_xtra { */ VALUE rb_syck_compile(self, port) - VALUE self, port; + VALUE self, port; { SYMID oid; int taint; @@ -94,7 +96,7 @@ rb_syck_compile(self, port) bytestring_t *sav; SyckParser *parser = syck_new_parser(); - taint = syck_parser_assign_io(parser, port); + taint = syck_parser_assign_io(parser, port); syck_parser_handler( parser, syck_yaml2byte_handler ); syck_parser_error_handler( parser, NULL ); syck_parser_implicit_typing( parser, 0 ); @@ -151,14 +153,14 @@ rb_syck_io_str_read( char *buf, SyckIoStr *str, long max_size, long skip ) */ int syck_parser_assign_io(parser, port) - SyckParser *parser; - VALUE port; + SyckParser *parser; + VALUE port; { int taint = Qtrue; if (rb_respond_to(port, s_to_str)) { - taint = OBJ_TAINTED(port); /* original taintedness */ - StringValue(port); /* possible conversion */ - syck_parser_str( parser, RSTRING(port)->ptr, RSTRING(port)->len, NULL ); + taint = OBJ_TAINTED(port); /* original taintedness */ + StringValue(port); /* possible conversion */ + syck_parser_str( parser, RSTRING(port)->ptr, RSTRING(port)->len, NULL ); } else if (rb_respond_to(port, s_read)) { if (rb_respond_to(port, s_binmode)) { @@ -197,7 +199,8 @@ rb_syck_mktime(str) { VALUE time; char *ptr = str; - VALUE year, mon, day, hour, min, sec, usec; + VALUE year, mon, day, hour, min, sec; + long usec; /* Year*/ ptr[4] = '\0'; @@ -232,23 +235,23 @@ rb_syck_mktime(str) ptr += 2; if ( *ptr == '.' ) { - usec = INT2FIX( strtod( ptr, NULL ) * 1000000 ); + char *padded = syck_strndup( "000000", 6 ); + char *end = ptr + 1; + while ( isdigit( *end ) ) end++; + MEMCPY(padded, ptr + 1, char, end - (ptr + 1)); + usec = strtol(padded, NULL, 10); } else { - usec = INT2FIX( 0 ); + usec = 0; } - /* Make UTC time*/ - time = rb_funcall(rb_cTime, s_utc, 7, year, mon, day, hour, min, sec, usec); - /* Time Zone*/ while ( *ptr != 'Z' && *ptr != '+' && *ptr != '-' && *ptr != '\0' ) ptr++; if ( *ptr == '-' || *ptr == '+' ) { - double tz_offset = 0; - double utc_time = 0; - tz_offset += strtod(ptr, NULL) * 3600; + time_t tz_offset = strtol(ptr, NULL, 10) * 3600; + time_t tmp; while ( *ptr != ':' && *ptr != '\0' ) ptr++; if ( *ptr == ':' ) @@ -256,21 +259,25 @@ rb_syck_mktime(str) ptr += 1; if ( tz_offset < 0 ) { - tz_offset -= strtod(ptr, NULL) * 60; + tz_offset -= strtol(ptr, NULL, 10) * 60; } else { - tz_offset += strtod(ptr, NULL) * 60; + tz_offset += strtol(ptr, NULL, 10) * 60; } } /* Make TZ time*/ - utc_time = NUM2DBL(rb_funcall(time, s_to_f, 0)); - utc_time -= tz_offset; - time = rb_funcall(rb_cTime, s_at, 1, rb_float_new(utc_time)); - } + time = rb_funcall(rb_cTime, s_utc, 6, year, mon, day, hour, min, sec); + tmp = NUM2LONG(rb_funcall(time, s_to_i, 0)) - tz_offset; + return rb_funcall(rb_cTime, s_at, 2, LONG2NUM(tmp), LONG2NUM(usec)); + } + else + { + /* Make UTC time*/ + return rb_funcall(rb_cTime, s_utc, 7, year, mon, day, hour, min, sec, LONG2NUM(usec)); - return time; + } } /* @@ -290,18 +297,18 @@ rb_syck_parse_handler(p, n) if ( n->type_id != NULL ) { t = rb_str_new2(n->type_id); - rb_iv_set(obj, "@type_id", t); + rb_ivar_set(obj, s_type_id, t); } switch (n->kind) { case syck_str_kind: - rb_iv_set(obj, "@kind", sym_scalar); + rb_ivar_set(obj, s_kind, sym_scalar); v = rb_str_new( n->data.str->ptr, n->data.str->len ); break; case syck_seq_kind: - rb_iv_set(obj, "@kind", sym_seq); + rb_ivar_set(obj, s_kind, sym_seq); v = rb_ary_new2( n->data.list->idx ); for ( i = 0; i < n->data.list->idx; i++ ) { @@ -310,7 +317,7 @@ rb_syck_parse_handler(p, n) break; case syck_map_kind: - rb_iv_set(obj, "@kind", sym_map); + rb_ivar_set(obj, s_kind, sym_map); v = rb_hash_new(); for ( i = 0; i < n->data.pairs->idx; i++ ) { @@ -326,9 +333,9 @@ rb_syck_parse_handler(p, n) bonus = (struct parser_xtra *)p->bonus; if ( bonus->taint) OBJ_TAINT( obj ); - if ( bonus->proc != 0 ) rb_funcall(bonus->proc, s_call, 1, v); + if ( bonus->proc != 0 ) rb_funcall(bonus->proc, s_call, 1, v); - rb_iv_set(obj, "@value", v); + rb_ivar_set(obj, s_value, v); rb_hash_aset(bonus->data, INT2FIX(RHASH(bonus->data)->tbl->num_entries), obj); return obj; } @@ -341,10 +348,10 @@ VALUE syck_merge_i( entry, hsh ) VALUE entry, hsh; { - if ( rb_obj_is_kind_of( entry, rb_cHash ) ) - { - rb_funcall( hsh, s_update, 1, entry ); - } + if ( rb_obj_is_kind_of( entry, rb_cHash ) ) + { + rb_funcall( hsh, s_update, 1, entry ); + } return Qnil; } @@ -360,12 +367,12 @@ rb_new_syck_node( obj, type_id ) if (rb_respond_to(obj, s_to_str)) { - StringValue(obj); /* possible conversion */ + StringValue(obj); /* possible conversion */ n = syck_alloc_str(); n->data.str->ptr = RSTRING(obj)->ptr; n->data.str->len = RSTRING(obj)->len; } - else if ( rb_obj_is_kind_of( obj, rb_cArray ) ) + else if ( rb_obj_is_kind_of( obj, rb_cArray ) ) { n = syck_alloc_seq(); for ( i = 0; i < RARRAY(obj)->len; i++ ) @@ -411,7 +418,7 @@ yaml_org_handler( n, ref ) { case syck_str_kind: transferred = 1; - if ( type_id == NULL || strcmp( type_id, "str" ) == 0 ) + if ( type_id == NULL ) { obj = rb_str_new( n->data.str->ptr, n->data.str->len ); } @@ -437,12 +444,39 @@ yaml_org_handler( n, ref ) } else if ( strcmp( type_id, "int#hex" ) == 0 ) { + syck_str_blow_away_commas( n ); obj = rb_cstr2inum( n->data.str->ptr, 16 ); } else if ( strcmp( type_id, "int#oct" ) == 0 ) { + syck_str_blow_away_commas( n ); obj = rb_cstr2inum( n->data.str->ptr, 8 ); } + else if ( strcmp( type_id, "int#base60" ) == 0 ) + { + char *ptr, *end; + long sixty = 1; + long total = 0; + syck_str_blow_away_commas( n ); + ptr = n->data.str->ptr; + end = n->data.str->ptr + n->data.str->len; + while ( end > ptr ) + { + long bnum = 0; + char *colon = end - 1; + while ( colon >= ptr && *colon != ':' ) + { + colon--; + } + if ( *colon == ':' ) *colon = '\0'; + + bnum = strtol( colon + 1, NULL, 10 ); + total += bnum * sixty; + sixty *= 60; + end = colon; + } + obj = INT2FIX(total); + } else if ( strncmp( type_id, "int", 3 ) == 0 ) { syck_str_blow_away_commas( n ); @@ -493,6 +527,14 @@ yaml_org_handler( n, ref ) ptr += 2; while ( !ISDIGIT( *ptr ) ) ptr++; day = INT2FIX(strtol(ptr, NULL, 10)); + + if ( !cDate ) { + /* + * Load Date module + */ + rb_require( "date" ); + cDate = rb_const_get( rb_cObject, rb_intern("Date") ); + } obj = rb_funcall( cDate, s_new, 3, year, mon, day ); } @@ -508,6 +550,17 @@ yaml_org_handler( n, ref ) { obj = rb_funcall( cDefaultKey, s_new, 0 ); } + else if ( strncmp( n->data.str->ptr, ":", 1 ) == 0 ) + { + char *tmp; + tmp = syck_strndup( n->data.str->ptr + 1, n->data.str->len - 1 ); + obj = ID2SYM( rb_intern( tmp ) ); + free( tmp ); + } + else if ( strcmp( type_id, "str" ) == 0 ) + { + obj = rb_str_new( n->data.str->ptr, n->data.str->len ); + } else { transferred = 0; @@ -616,7 +669,7 @@ rb_syck_load_handler(p, n) bonus = (struct parser_xtra *)p->bonus; if ( bonus->taint) OBJ_TAINT( obj ); - if ( bonus->proc != 0 ) rb_funcall(bonus->proc, s_call, 1, obj); + if ( bonus->proc != 0 ) rb_funcall(bonus->proc, s_call, 1, obj); rb_hash_aset(bonus->data, INT2FIX(RHASH(bonus->data)->tbl->num_entries), obj); return obj; @@ -662,21 +715,21 @@ rb_syck_bad_anchor_handler(p, a) */ void syck_set_model( parser, input, model ) - SyckParser *parser; - VALUE input, model; + SyckParser *parser; + VALUE input, model; { - if ( model == sym_generic ) - { - syck_parser_handler( parser, rb_syck_parse_handler ); - syck_parser_implicit_typing( parser, 1 ); - syck_parser_taguri_expansion( parser, 1 ); - } - else - { - syck_parser_handler( parser, rb_syck_load_handler ); - syck_parser_implicit_typing( parser, 1 ); - syck_parser_taguri_expansion( parser, 0 ); - } + if ( model == sym_generic ) + { + syck_parser_handler( parser, rb_syck_parse_handler ); + syck_parser_implicit_typing( parser, 1 ); + syck_parser_taguri_expansion( parser, 1 ); + } + else + { + syck_parser_handler( parser, rb_syck_load_handler ); + syck_parser_implicit_typing( parser, 1 ); + syck_parser_taguri_expansion( parser, 0 ); + } if ( input == sym_bytecode ) { syck_parser_set_input_type( parser, syck_bytecode_utf8 ); @@ -703,13 +756,13 @@ VALUE syck_parser_new(argc, argv, class) int argc; VALUE *argv; - VALUE class; + VALUE class; { - VALUE pobj, options, init_argv[1]; + VALUE pobj, options, init_argv[1]; SyckParser *parser = syck_new_parser(); rb_scan_args(argc, argv, "01", &options); - pobj = Data_Wrap_Struct( class, syck_mark_parser, syck_free_parser, parser ); + pobj = Data_Wrap_Struct( class, syck_mark_parser, syck_free_parser, parser ); syck_parser_set_root_on_error( parser, Qnil ); @@ -717,9 +770,9 @@ syck_parser_new(argc, argv, class) { options = rb_hash_new(); } - init_argv[0] = options; - rb_obj_call_init(pobj, 1, init_argv); - return pobj; + init_argv[0] = options; + rb_obj_call_init(pobj, 1, init_argv); + return pobj; } /* @@ -729,8 +782,8 @@ static VALUE syck_parser_initialize( self, options ) VALUE self, options; { - rb_iv_set(self, "@options", options); - return self; + rb_ivar_set(self, s_options, options); + return self; } /* @@ -740,13 +793,13 @@ static VALUE syck_parser_bufsize_set( self, size ) VALUE self, size; { - SyckParser *parser; + SyckParser *parser; - Data_Get_Struct(self, SyckParser, parser); + Data_Get_Struct(self, SyckParser, parser); if ( rb_respond_to( size, s_to_i ) ) { parser->bufsize = NUM2INT(rb_funcall(size, s_to_i, 0)); } - return self; + return self; } /* @@ -756,10 +809,10 @@ static VALUE syck_parser_bufsize_get( self ) VALUE self; { - SyckParser *parser; + SyckParser *parser; - Data_Get_Struct(self, SyckParser, parser); - return INT2FIX( parser->bufsize ); + Data_Get_Struct(self, SyckParser, parser); + return INT2FIX( parser->bufsize ); } /* @@ -769,26 +822,26 @@ VALUE syck_parser_load(argc, argv, self) int argc; VALUE *argv; - VALUE self; + VALUE self; { VALUE port, proc, model, input; - SyckParser *parser; + SyckParser *parser; struct parser_xtra bonus; volatile VALUE hash; /* protect from GC */ rb_scan_args(argc, argv, "11", &port, &proc); - Data_Get_Struct(self, SyckParser, parser); + Data_Get_Struct(self, SyckParser, parser); - input = rb_hash_aref( rb_iv_get( self, "@options" ), sym_input ); - model = rb_hash_aref( rb_iv_get( self, "@options" ), sym_model ); - syck_set_model( parser, input, model ); + input = rb_hash_aref( rb_attr_get( self, s_options ), sym_input ); + model = rb_hash_aref( rb_attr_get( self, s_options ), sym_model ); + syck_set_model( parser, input, model ); - bonus.taint = syck_parser_assign_io(parser, port); + bonus.taint = syck_parser_assign_io(parser, port); bonus.data = hash = rb_hash_new(); - if ( NIL_P( proc ) ) bonus.proc = 0; + if ( NIL_P( proc ) ) bonus.proc = 0; else bonus.proc = proc; - - parser->bonus = (void *)&bonus; + + parser->bonus = (void *)&bonus; return syck_parse( parser ); } @@ -800,38 +853,38 @@ VALUE syck_parser_load_documents(argc, argv, self) int argc; VALUE *argv; - VALUE self; + VALUE self; { VALUE port, proc, v, input, model; - SyckParser *parser; + SyckParser *parser; struct parser_xtra bonus; volatile VALUE hash; rb_scan_args(argc, argv, "1&", &port, &proc); - Data_Get_Struct(self, SyckParser, parser); + Data_Get_Struct(self, SyckParser, parser); - input = rb_hash_aref( rb_iv_get( self, "@options" ), sym_input ); - model = rb_hash_aref( rb_iv_get( self, "@options" ), sym_model ); - syck_set_model( parser, input, model ); + input = rb_hash_aref( rb_attr_get( self, s_options ), sym_input ); + model = rb_hash_aref( rb_attr_get( self, s_options ), sym_model ); + syck_set_model( parser, input, model ); - bonus.taint = syck_parser_assign_io(parser, port); + bonus.taint = syck_parser_assign_io(parser, port); while ( 1 ) - { + { /* Reset hash for tracking nodes */ bonus.data = hash = rb_hash_new(); bonus.proc = 0; parser->bonus = (void *)&bonus; /* Parse a document */ - v = syck_parse( parser ); + v = syck_parse( parser ); if ( parser->eof == 1 ) { break; } /* Pass document to block */ - rb_funcall( proc, s_call, 1, v ); - } + rb_funcall( proc, s_call, 1, v ); + } return Qnil; } @@ -845,15 +898,15 @@ syck_loader_initialize( self ) { VALUE families; - rb_iv_set(self, "@families", rb_hash_new() ); - rb_iv_set(self, "@private_types", rb_hash_new() ); - rb_iv_set(self, "@anchors", rb_hash_new() ); - families = rb_iv_get(self, "@families"); + families = rb_hash_new(); + rb_ivar_set(self, s_families, families); + rb_ivar_set(self, s_private_types, rb_hash_new()); + rb_ivar_set(self, s_anchors, rb_hash_new()); rb_hash_aset(families, rb_str_new2( YAML_DOMAIN ), rb_hash_new()); rb_hash_aset(families, rb_str_new2( RUBY_DOMAIN ), rb_hash_new()); - return self; + return self; } /* @@ -865,7 +918,7 @@ syck_loader_add_type_family( self, domain, type_re, proc ) { VALUE families, domain_types; - families = rb_iv_get(self, "@families"); + families = rb_attr_get(self, s_families); domain_types = syck_get_hash_aref(families, domain); rb_hash_aset( domain_types, type_re, proc ); return Qnil; @@ -933,7 +986,7 @@ syck_loader_add_private_type( argc, argv, self ) rb_scan_args(argc, argv, "1&", &type_re, &proc); - priv_types = rb_iv_get(self, "@private_types"); + priv_types = rb_attr_get(self, s_private_types); rb_hash_aset( priv_types, type_re, proc ); return Qnil; } @@ -965,15 +1018,15 @@ transfer_find_i(entry, col) { VALUE key = rb_ary_entry( entry, 0 ); VALUE tid = rb_ary_entry( col, 0 ); - if ( rb_respond_to( key, s_match ) ) - { - VALUE match = rb_funcall( key, rb_intern("match"), 1, tid ); - if ( ! NIL_P( match ) ) - { - rb_ary_push( col, rb_ary_entry( entry, 1 ) ); - rb_iter_break(); - } - } + if ( rb_respond_to( key, s_match ) ) + { + VALUE match = rb_funcall( key, rb_intern("match"), 1, tid ); + if ( ! NIL_P( match ) ) + { + rb_ary_push( col, rb_ary_entry( entry, 1 ) ); + rb_iter_break(); + } + } return Qnil; } @@ -1018,13 +1071,13 @@ syck_loader_transfer( self, type, val ) if ( rb_str_cmp( scheme, str_xprivate ) == 0 ) { name = rb_ary_join( parts, rb_str_new2( ":" ) ); - type_hash = rb_iv_get(self, "@private_types"); + type_hash = rb_attr_get(self, s_private_types); } else if ( rb_str_cmp( scheme, str_taguri ) == 0 ) { domain = rb_ary_shift( parts ); name = rb_ary_join( parts, rb_str_new2( ":" ) ); - type_hash = rb_iv_get(self, "@families"); + type_hash = rb_attr_get(self, s_families); type_hash = rb_hash_aref(type_hash, domain); /* @@ -1089,7 +1142,7 @@ VALUE syck_badalias_initialize( self, val ) VALUE self, val; { - rb_iv_set( self, "@name", val ); + rb_ivar_set( self, s_name, val ); return self; } @@ -1100,9 +1153,9 @@ VALUE syck_domaintype_initialize( self, domain, type_id, val ) VALUE self, type_id, val; { - rb_iv_set( self, "@domain", domain ); - rb_iv_set( self, "@type_id", type_id ); - rb_iv_set( self, "@value", val ); + rb_ivar_set( self, s_domain, domain ); + rb_ivar_set( self, s_type_id, type_id ); + rb_ivar_set( self, s_value, val ); return self; } @@ -1113,8 +1166,8 @@ VALUE syck_privatetype_initialize( self, type_id, val ) VALUE self, type_id, val; { - rb_iv_set( self, "@type_id", type_id ); - rb_iv_set( self, "@value", val ); + rb_ivar_set( self, s_type_id, type_id ); + rb_ivar_set( self, s_value, val ); return self; } @@ -1125,8 +1178,8 @@ VALUE syck_node_initialize( self, type_id, val ) VALUE self, type_id, val; { - rb_iv_set( self, "@type_id", type_id ); - rb_iv_set( self, "@value", val ); + rb_ivar_set( self, s_type_id, type_id ); + rb_ivar_set( self, s_value, val ); return self; } @@ -1158,8 +1211,8 @@ syck_node_transform( self ) VALUE self; { VALUE t = Qnil; - VALUE type_id = rb_iv_get( self, "@type_id" ); - VALUE val = rb_iv_get( self, "@value" ); + VALUE type_id = rb_attr_get( self, s_type_id ); + VALUE val = rb_attr_get( self, s_value ); if ( rb_obj_is_instance_of( val, rb_cHash ) ) { t = rb_hash_new(); @@ -1215,9 +1268,9 @@ VALUE syck_emitter_new(argc, argv, class) int argc; VALUE *argv; - VALUE class; + VALUE class; { - VALUE pobj, options, init_argv[1]; + VALUE pobj, options, init_argv[1]; SyckEmitter *emitter = syck_new_emitter(); syck_emitter_ignore_id( emitter, Qnil ); syck_emitter_handler( emitter, rb_syck_output_handler ); @@ -1225,15 +1278,15 @@ syck_emitter_new(argc, argv, class) emitter->bonus = (void *)rb_str_new2( "" ); rb_scan_args(argc, argv, "01", &options); - pobj = Data_Wrap_Struct( class, syck_mark_emitter, syck_free_emitter, emitter ); + pobj = Data_Wrap_Struct( class, syck_mark_emitter, syck_free_emitter, emitter ); if ( ! rb_obj_is_instance_of( options, rb_cHash ) ) { options = rb_hash_new(); } - init_argv[0] = options; - rb_obj_call_init(pobj, 1, init_argv); - return pobj; + init_argv[0] = options; + rb_obj_call_init(pobj, 1, init_argv); + return pobj; } /* @@ -1243,8 +1296,8 @@ static VALUE syck_emitter_initialize( self, options ) VALUE self, options; { - rb_iv_set(self, "@options", options); - return self; + rb_ivar_set(self, s_options, options); + return self; } /* @@ -1256,7 +1309,7 @@ syck_emitter_level_m( self ) { SyckEmitter *emitter; - Data_Get_Struct(self, SyckEmitter, emitter); + Data_Get_Struct(self, SyckEmitter, emitter); return LONG2NUM( emitter->level ); } @@ -1269,7 +1322,7 @@ syck_emitter_flush_m( self ) { SyckEmitter *emitter; - Data_Get_Struct(self, SyckEmitter, emitter); + Data_Get_Struct(self, SyckEmitter, emitter); syck_emitter_flush( emitter, 0 ); return self; } @@ -1283,7 +1336,7 @@ syck_emitter_write_m( self, str ) { SyckEmitter *emitter; - Data_Get_Struct(self, SyckEmitter, emitter); + Data_Get_Struct(self, SyckEmitter, emitter); syck_emitter_write( emitter, RSTRING(str)->ptr, RSTRING(str)->len ); return self; } @@ -1297,7 +1350,7 @@ syck_emitter_simple_write( self, str ) { SyckEmitter *emitter; - Data_Get_Struct(self, SyckEmitter, emitter); + Data_Get_Struct(self, SyckEmitter, emitter); syck_emitter_simple( emitter, RSTRING(str)->ptr, RSTRING(str)->len ); return self; } @@ -1312,7 +1365,7 @@ syck_emitter_start_object( self, oid ) char *anchor_name; SyckEmitter *emitter; - Data_Get_Struct(self, SyckEmitter, emitter); + Data_Get_Struct(self, SyckEmitter, emitter); anchor_name = syck_emitter_start_obj( emitter, oid ); if ( anchor_name == NULL ) @@ -1332,7 +1385,7 @@ syck_emitter_end_object( self ) { SyckEmitter *emitter; - Data_Get_Struct(self, SyckEmitter, emitter); + Data_Get_Struct(self, SyckEmitter, emitter); syck_emitter_end_obj( emitter ); if ( emitter->level < 0 ) @@ -1353,9 +1406,9 @@ Init_syck() rb_define_const( rb_syck, "VERSION", rb_str_new2( SYCK_VERSION ) ); rb_define_module_function( rb_syck, "compile", rb_syck_compile, 1 ); - /* - * Global symbols - */ + /* + * Global symbols + */ s_new = rb_intern("new"); s_utc = rb_intern("utc"); s_at = rb_intern("at"); @@ -1366,29 +1419,33 @@ Init_syck() s_binmode = rb_intern("binmode"); s_transfer = rb_intern("transfer"); s_call = rb_intern("call"); - s_update = rb_intern("update"); - s_dup = rb_intern("dup"); + s_update = rb_intern("update"); + s_dup = rb_intern("dup"); s_default_set = rb_intern("default="); - s_match = rb_intern("match"); - s_keys = rb_intern("keys"); - s_to_str = rb_intern("to_str"); - s_tr_bang = rb_intern("tr!"); + s_match = rb_intern("match"); + s_keys = rb_intern("keys"); + s_to_str = rb_intern("to_str"); + s_tr_bang = rb_intern("tr!"); s_unpack = rb_intern("unpack"); - sym_model = ID2SYM(rb_intern("Model")); - sym_generic = ID2SYM(rb_intern("Generic")); - sym_input = ID2SYM(rb_intern("Input")); - sym_bytecode = ID2SYM(rb_intern("Bytecode")); + s_anchors = rb_intern("@anchors"); + s_domain = rb_intern("@domain"); + s_families = rb_intern("@families"); + s_kind = rb_intern("@kind"); + s_name = rb_intern("@name"); + s_options = rb_intern("@options"); + s_private_types = rb_intern("@private_types"); + s_type_id = rb_intern("@type_id"); + s_value = rb_intern("@value"); + + sym_model = ID2SYM(rb_intern("Model")); + sym_generic = ID2SYM(rb_intern("Generic")); + sym_input = ID2SYM(rb_intern("Input")); + sym_bytecode = ID2SYM(rb_intern("Bytecode")); sym_map = ID2SYM(rb_intern("map")); sym_scalar = ID2SYM(rb_intern("scalar")); sym_seq = ID2SYM(rb_intern("seq")); - /* - * Load Date module - */ - rb_require( "date" ); - cDate = rb_funcall( rb_cObject, rb_intern("const_get"), 1, rb_str_new2("Date") ); - /* * Define YAML::Syck::Loader class */ @@ -1414,7 +1471,7 @@ Init_syck() */ cParser = rb_define_class_under( rb_syck, "Parser", rb_cObject ); rb_define_attr( cParser, "options", 1, 1 ); - rb_define_singleton_method( cParser, "new", syck_parser_new, -1 ); + rb_define_singleton_method( cParser, "new", syck_parser_new, -1 ); rb_define_method(cParser, "initialize", syck_parser_initialize, 1); rb_define_method(cParser, "load", syck_parser_load, -1); rb_define_method(cParser, "load_documents", syck_parser_load_documents, -1); @@ -1454,21 +1511,21 @@ Init_syck() rb_define_attr( cBadAlias, "name", 1, 1 ); rb_define_method( cBadAlias, "initialize", syck_badalias_initialize, 1); - /* - * Define YAML::Syck::MergeKey class - */ - cMergeKey = rb_define_class_under( rb_syck, "MergeKey", rb_cObject ); + /* + * Define YAML::Syck::MergeKey class + */ + cMergeKey = rb_define_class_under( rb_syck, "MergeKey", rb_cObject ); - /* - * Define YAML::Syck::DefaultKey class - */ - cDefaultKey = rb_define_class_under( rb_syck, "DefaultKey", rb_cObject ); + /* + * Define YAML::Syck::DefaultKey class + */ + cDefaultKey = rb_define_class_under( rb_syck, "DefaultKey", rb_cObject ); /* * Define YAML::Syck::Emitter class */ cEmitter = rb_define_class_under( rb_syck, "Emitter", rb_cObject ); - rb_define_singleton_method( cEmitter, "new", syck_emitter_new, -1 ); + rb_define_singleton_method( cEmitter, "new", syck_emitter_new, -1 ); rb_define_method( cEmitter, "initialize", syck_emitter_initialize, 1 ); rb_define_method( cEmitter, "level", syck_emitter_level_m, 0 ); rb_define_method( cEmitter, "write", syck_emitter_write_m, 1 ); -- cgit v1.2.3