/*
* call-seq:
* rng.hash => fixnum
*
* Generate a hash value such that two ranges with the same start and
* end points, and the same value for the "exclude end" flag, generate
* the same hash value.
*/
static VALUE
range_hash(VALUE range)
{
long hash = EXCL(range);
VALUE v;
v = rb_hash(RANGE_BEG(range));
hash ^= v << 1;
v = rb_hash(RANGE_END(range));
hash ^= v << 9;
hash ^= EXCL(range) << 24;
return LONG2FIX(hash);
}