* ext/syck/rubyext.c (id_hash_new): new function to create a hash
which key is compared by object id. (syck_parser_load): use id_hash_new for bonus->data. (syck_parser_load_documents): ditto. (syck_emitter_reset): ditto. * lib/yaml.rb (YAML.quick_emit): give the object itself to eimitter. don't use object_id and hash. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0570b9969b
commit
dfc3fccef3
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
|||||||
|
Sat Aug 22 13:46:15 2009 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
|
* ext/syck/rubyext.c (id_hash_new): new function to create a hash
|
||||||
|
which key is compared by object id.
|
||||||
|
(syck_parser_load): use id_hash_new for bonus->data.
|
||||||
|
(syck_parser_load_documents): ditto.
|
||||||
|
(syck_emitter_reset): ditto.
|
||||||
|
|
||||||
|
* lib/yaml.rb (YAML.quick_emit): give the object itself to eimitter.
|
||||||
|
don't use object_id and hash.
|
||||||
|
|
||||||
Sat Aug 22 13:05:22 2009 NARUSE, Yui <naruse@ruby-lang.org>
|
Sat Aug 22 13:05:22 2009 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
* Makefile.in: use CP and MV macros.
|
* Makefile.in: use CP and MV macros.
|
||||||
|
@ -837,6 +837,15 @@ syck_parser_bufsize_get(VALUE self)
|
|||||||
return INT2FIX( parser->bufsize );
|
return INT2FIX( parser->bufsize );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
id_hash_new(void)
|
||||||
|
{
|
||||||
|
VALUE hash;
|
||||||
|
hash = rb_hash_new();
|
||||||
|
rb_funcall(hash, rb_intern("compare_by_identity"), 0);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* YAML::Syck::Parser.load( IO or String )
|
* YAML::Syck::Parser.load( IO or String )
|
||||||
*/
|
*/
|
||||||
@ -856,7 +865,7 @@ syck_parser_load(int argc, VALUE *argv, VALUE self)
|
|||||||
|
|
||||||
bonus = (struct parser_xtra *)parser->bonus;
|
bonus = (struct parser_xtra *)parser->bonus;
|
||||||
bonus->taint = syck_parser_assign_io(parser, &port);
|
bonus->taint = syck_parser_assign_io(parser, &port);
|
||||||
bonus->data = rb_hash_new();
|
bonus->data = id_hash_new();
|
||||||
bonus->resolver = rb_attr_get( self, s_resolver );
|
bonus->resolver = rb_attr_get( self, s_resolver );
|
||||||
if ( NIL_P( proc ) ) bonus->proc = 0;
|
if ( NIL_P( proc ) ) bonus->proc = 0;
|
||||||
else bonus->proc = proc;
|
else bonus->proc = proc;
|
||||||
@ -889,7 +898,7 @@ syck_parser_load_documents(int argc, VALUE *argv, VALUE self)
|
|||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
/* Reset hash for tracking nodes */
|
/* Reset hash for tracking nodes */
|
||||||
bonus->data = rb_hash_new();
|
bonus->data = id_hash_new();
|
||||||
|
|
||||||
/* Parse a document */
|
/* Parse a document */
|
||||||
v = syck_parse( parser );
|
v = syck_parse( parser );
|
||||||
@ -1953,7 +1962,7 @@ syck_emitter_reset(int argc, VALUE *argv, VALUE self)
|
|||||||
|
|
||||||
bonus->oid = Qnil;
|
bonus->oid = Qnil;
|
||||||
bonus->port = rb_str_new2( "" );
|
bonus->port = rb_str_new2( "" );
|
||||||
bonus->data = rb_hash_new();
|
bonus->data = id_hash_new();
|
||||||
|
|
||||||
if (rb_scan_args(argc, argv, "01", &options) == 0)
|
if (rb_scan_args(argc, argv, "01", &options) == 0)
|
||||||
{
|
{
|
||||||
|
@ -384,10 +384,6 @@ module YAML
|
|||||||
else
|
else
|
||||||
emitter.reset( opts )
|
emitter.reset( opts )
|
||||||
end
|
end
|
||||||
oid =
|
|
||||||
case oid when Fixnum, NilClass; oid
|
|
||||||
else oid = "#{oid.object_id}-#{oid.hash}"
|
|
||||||
end
|
|
||||||
out.emit( oid, &e )
|
out.emit( oid, &e )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user