mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* file.c (path_check_1): forgot to initialize 'p'.
* mkconfig.rb: use String#dump to generate Ruby string literal. * range.c (range_eql): should override 'eql?' * array.c (rb_ary_hash): should override 'hash' too. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
dc98adf839
commit
cf4451e8c2
6 changed files with 83 additions and 47 deletions
34
range.c
34
range.c
|
@ -200,6 +200,38 @@ range_eqq(range, obj)
|
|||
return Qfalse;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
range_eql(range, obj)
|
||||
VALUE range, obj;
|
||||
{
|
||||
if (range == obj) return Qtrue;
|
||||
if (!rb_obj_is_kind_of(obj, rb_cRange)) return Qfalse;
|
||||
|
||||
if (!rb_eql(rb_ivar_get(range, id_beg), rb_ivar_get(obj, id_beg)))
|
||||
return Qfalse;
|
||||
if (!rb_eql(rb_ivar_get(range, id_end), rb_ivar_get(obj, id_end)))
|
||||
return Qfalse;
|
||||
|
||||
if (EXCL(range) != EXCL(obj)) return Qfalse;
|
||||
|
||||
return Qtrue;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
range_hash(range, obj)
|
||||
VALUE range, obj;
|
||||
{
|
||||
long hash = EXCL(range);
|
||||
VALUE v;
|
||||
|
||||
v = rb_hash(rb_ivar_get(range, id_beg));
|
||||
hash ^= v << 1;
|
||||
v = rb_hash(rb_ivar_get(range, id_end));
|
||||
hash ^= v << 9;
|
||||
|
||||
return INT2FIX(hash);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
range_each(range)
|
||||
VALUE range;
|
||||
|
@ -524,6 +556,8 @@ Init_Range()
|
|||
rb_define_method(rb_cRange, "initialize", range_initialize, -1);
|
||||
rb_define_method(rb_cRange, "==", range_eq, 1);
|
||||
rb_define_method(rb_cRange, "===", range_eqq, 1);
|
||||
rb_define_method(rb_cRange, "eql?", range_eql, 1);
|
||||
rb_define_method(rb_cRange, "hash", range_hash, 0);
|
||||
rb_define_method(rb_cRange, "each", range_each, 0);
|
||||
rb_define_method(rb_cRange, "step", range_step, -1);
|
||||
rb_define_method(rb_cRange, "first", range_first, 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue