From bad0560661b04dc11178732666efa647b4ec9e57 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 15 May 2015 09:05:57 +0000 Subject: range.c: r_cover_p * range.c (r_cover_p): extract from range_cover and share with range_include. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- range.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'range.c') diff --git a/range.c b/range.c index 54c7d88301..42d361cdcd 100644 --- a/range.c +++ b/range.c @@ -22,6 +22,8 @@ static ID id_beg, id_end, id_excl, id_integer_p, id_div; #define id_cmp idCmp #define id_succ idSucc +static VALUE r_cover_p(VALUE, VALUE, VALUE, VALUE); + #define RANGE_BEG(r) (RSTRUCT(r)->as.ary[0]) #define RANGE_END(r) (RSTRUCT(r)->as.ary[1]) #define RANGE_EXCL(r) (RSTRUCT(r)->as.ary[2]) @@ -1176,17 +1178,7 @@ range_include(VALUE range, VALUE val) if (nv || !NIL_P(rb_check_to_integer(beg, "to_int")) || !NIL_P(rb_check_to_integer(end, "to_int"))) { - if (r_le(beg, val)) { - if (EXCL(range)) { - if (r_lt(val, end)) - return Qtrue; - } - else { - if (r_le(val, end)) - return Qtrue; - } - } - return Qfalse; + return r_cover_p(range, beg, end, val); } else if (RB_TYPE_P(beg, T_STRING) && RB_TYPE_P(end, T_STRING) && RSTRING_LEN(beg) == 1 && RSTRING_LEN(end) == 1) { @@ -1234,6 +1226,12 @@ range_cover(VALUE range, VALUE val) beg = RANGE_BEG(range); end = RANGE_END(range); + return r_cover_p(range, beg, end, val); +} + +static VALUE +r_cover_p(VALUE range, VALUE beg, VALUE end, VALUE val) +{ if (r_le(beg, val)) { if (EXCL(range)) { if (r_lt(val, end)) -- cgit v1.2.3