19 #define RANGE_BEG(r) (RSTRUCT(r)->as.ary[0])
20 #define RANGE_END(r) (RSTRUCT(r)->as.ary[1])
21 #define RANGE_EXCL(r) (RSTRUCT(r)->as.ary[2])
23 #define EXCL(r) RTEST(RANGE_EXCL(r))
24 #define SET_EXCL(r,v) (RSTRUCT(r)->as.ary[2] = (v) ? Qtrue : Qfalse)
56 RSTRUCT(range)->as.ary[0] = beg;
92 #define range_initialize_copy rb_struct_init_copy
110 if (recur)
return Qtrue;
179 if (recur)
return Qtrue;
381 if (i + unit < i)
break;
490 for (i =
FIX2LONG(beg); i < lim; i++) {
631 if (c > 0 || (c == 0 &&
EXCL(range)))
667 if (c == 0)
return Qnil;
707 long beg,
end, origbeg, origend;
722 if (err == 0 || err == 2) {
743 origbeg, excl ?
"." :
"", origend);
856 if (
r_le(beg, val)) {
880 if (b <= v && v < e)
return Qtrue;
881 if (!
EXCL(range) && v == e)
return Qtrue;
911 if (
r_le(beg, val)) {
1016 #define rb_intern(str) rb_intern_const(str)
1026 "begin",
"end",
"excl",
NULL);
#define RSTRING_LEN(string)
static long NUM2LONG(VALUE x)
VALUE rb_range_new(VALUE, VALUE, int)
static VALUE range_max(VALUE range)
VALUE rb_exec_recursive_outer(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE)
static VALUE range_dumper(VALUE range)
VALUE rb_str_cat(VALUE, const char *, long)
static VALUE range_include(VALUE range, VALUE val)
SSL_METHOD *(* func)(void)
st_index_t rb_hash_end(st_index_t)
#define rb_block_call(arg1, arg2, arg3, arg4, arg5, arg6)
static VALUE range_loader(VALUE range, VALUE obj)
VALUE rb_ary_last(int argc, VALUE *argv, VALUE ary)
VALUE rb_struct_alloc_noinit(VALUE)
int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp)
VALUE rb_ary_push(VALUE ary, VALUE item)
static VALUE inspect_range(VALUE range, VALUE dummy, int recur)
static VALUE INT2NUM(int v)
#define RSTRING_PTR(string)
void rb_raise(VALUE exc, const char *fmt,...)
VALUE rb_ivar_get(VALUE, ID)
VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE)
VALUE rb_obj_is_kind_of(VALUE, VALUE)
void rb_include_module(VALUE klass, VALUE module)
static VALUE sym_step_i(VALUE i, void *arg)
VALUE rb_range_beg_len(VALUE, long *, long *, long, int)
static VALUE range_to_s(VALUE range)
VALUE rb_check_to_integer(VALUE, const char *)
static VALUE recursive_hash(VALUE range, VALUE dummy, int recur)
#define range_initialize_copy
int rb_cmpint(VALUE val, VALUE a, VALUE b)
const char * rb_obj_classname(VALUE)
void rb_name_error(ID id, const char *fmt,...)
static VALUE recursive_eql(VALUE range, VALUE obj, int recur)
return rb_str_append(rb_str_new2(cmd_id_head), id_num)
static VALUE range_eql(VALUE range, VALUE obj)
VALUE rb_rescue(VALUE(*b_proc)(ANYARGS), VALUE data1, VALUE(*r_proc)(ANYARGS), VALUE data2)
static VALUE range_step(int argc, VALUE *argv, VALUE range)
static VALUE step_i(VALUE i, void *arg)
int rb_block_given_p(void)
RUBY_EXTERN VALUE rb_cObject
VALUE rb_exec_recursive_paired(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE, VALUE)
VALUE rb_obj_as_string(VALUE)
RUBY_EXTERN VALUE rb_cRange
int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl)
static VALUE first_i(VALUE i, VALUE *ary)
static VALUE range_initialize(int argc, VALUE *argv, VALUE range)
#define NEWOBJ(obj, type)
#define range(low, item, hi)
static VALUE sym_each_i(VALUE v, void *arg)
VALUE rb_obj_alloc(VALUE)
static VALUE range_first(int argc, VALUE *argv, VALUE range)
static void range_each_func(VALUE range, VALUE(*func)(VALUE, void *), void *arg)
static VALUE range_check(VALUE *args)
static VALUE range_min(VALUE range)
static VALUE range_hash(VALUE range)
static void range_init(VALUE range, VALUE beg, VALUE end, int exclude_end)
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
static VALUE range_exclude_end_p(VALUE range)
static int discrete_object_p(VALUE obj)
RUBY_EXTERN VALUE rb_cInteger
register unsigned int len
VALUE rb_call_super(int, const VALUE *)
RUBY_EXTERN VALUE rb_cNumeric
int rb_respond_to(VALUE, ID)
static VALUE recursive_equal(VALUE range, VALUE obj, int recur)
VALUE rb_equal(VALUE, VALUE)
static VALUE range_end(VALUE range)
static VALUE range_inspect(VALUE range)
static int r_lt(VALUE a, VALUE b)
static VALUE range_begin(VALUE range)
static VALUE range_last(int argc, VALUE *argv, VALUE range)
rb_ivar_set(einfo, ID_at_interp, interp)
VALUE rb_check_string_type(VALUE)
void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE(*dumper)(VALUE), VALUE(*loader)(VALUE, VALUE))
st_index_t rb_hash_uint(st_index_t, st_index_t)
static VALUE range_alloc(VALUE klass)
#define RETURN_ENUMERATOR(obj, argc, argv)
static VALUE each_i(VALUE v, void *arg)
VALUE rb_ary_new2(long capa)
static VALUE range_each(VALUE range)
return rb_funcall(q->proc, ID_call, 0)
VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t,...)
VALUE rb_str_intern(VALUE)
static VALUE range_eqq(VALUE range, VALUE val)
static VALUE range_eq(VALUE range, VALUE obj)
RUBY_EXTERN VALUE rb_cTime
#define OBJSETUP(obj, c, t)
static int r_le(VALUE a, VALUE b)
static VALUE range_cover(VALUE range, VALUE val)
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
VALUE rb_str_new2(const char *)
static VALUE range_failed(void)
st_index_t rb_hash_start(st_index_t)