Ruby 1.9.2p136(2010-12-25revision30365)

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

Defines | Functions | Variables

# range.c File Reference

`#include "ruby/ruby.h"`
`#include "ruby/encoding.h"`
Include dependency graph for range.c:

Go to the source code of this file.

## Defines
#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])
#define | EXCL(r) RTEST(RANGE_EXCL(r))
#define | SET_EXCL(r, v) (RSTRUCT(r)->as.ary[2] = (v) ? Qtrue : Qfalse)
#define | range_initialize_copy rb_struct_init_copy
#define | rb_intern(str) rb_intern_const(str)
## Functions
VALUE | rb_struct_init_copy (VALUE copy, VALUE s)
static VALUE | range_failed (void)
static VALUE | range_check (VALUE *args)
static void | range_init (VALUE range, VALUE beg, VALUE end, int exclude_end)
VALUE | rb_range_new (VALUE beg, VALUE end, int exclude_end)
static VALUE | range_initialize (int argc, VALUE *argv, VALUE range)
static VALUE | range_exclude_end_p (VALUE range)
static VALUE | recursive_equal (VALUE range, VALUE obj, int recur)
static VALUE | range_eq (VALUE range, VALUE obj)
static int | r_lt (VALUE a, VALUE b)
static int | r_le (VALUE a, VALUE b)
static VALUE | recursive_eql (VALUE range, VALUE obj, int recur)
static VALUE | range_eql (VALUE range, VALUE obj)
static VALUE | recursive_hash (VALUE range, VALUE dummy, int recur)
static VALUE | range_hash (VALUE range)
static void | range_each_func (VALUE range, VALUE(*func)(VALUE, void *), void *arg)
static VALUE | sym_step_i (VALUE i, void *arg)
static VALUE | step_i (VALUE i, void *arg)
int | ruby_float_step (VALUE from, VALUE to, VALUE step, int excl)
static int | discrete_object_p (VALUE obj)
static VALUE | range_step (int argc, VALUE *argv, VALUE range)
static VALUE | each_i (VALUE v, void *arg)
static VALUE | sym_each_i (VALUE v, void *arg)
static VALUE | range_each (VALUE range)
static VALUE | range_begin (VALUE range)
static VALUE | range_end (VALUE range)
static VALUE | first_i (VALUE i, VALUE *ary)
static VALUE | range_first (int argc, VALUE *argv, VALUE range)
static VALUE | range_last (int argc, VALUE *argv, VALUE range)
static VALUE | range_min (VALUE range)
static VALUE | range_max (VALUE range)
int | rb_range_values (VALUE range, VALUE *begp, VALUE *endp, int *exclp)
VALUE | rb_range_beg_len (VALUE range, long *begp, long *lenp, long len, int err)
static VALUE | range_to_s (VALUE range)
static VALUE | inspect_range (VALUE range, VALUE dummy, int recur)
static VALUE | range_inspect (VALUE range)
static VALUE | range_eqq (VALUE range, VALUE val)
static VALUE | range_include (VALUE range, VALUE val)
static VALUE | range_cover (VALUE range, VALUE val)
static VALUE | range_dumper (VALUE range)
static VALUE | range_loader (VALUE range, VALUE obj)
static VALUE | range_alloc (VALUE klass)
void | Init_Range (void)
## Variables
VALUE | rb_cRange
static ID | id_cmp
static ID | id_succ
static ID | id_beg
static ID | id_end
static ID | id_excl

## Define Documentation

#define EXCL | ( |  | r | ) | RTEST(RANGE_EXCL(r))

Definition at line 24 of file range.c.

Referenced by inspect_range(), range_cover(), range_each(), range_each_func(), range_exclude_end_p(), range_include(), range_max(), range_min(), range_step(), range_to_s(), rb_range_values(), recursive_eql(), recursive_equal(), and recursive_hash().

#define RANGE_BEG | ( |  | r | ) | (RSTRUCT(r)->as.ary[0])

Definition at line 20 of file range.c.

Referenced by inspect_range(), range_begin(), range_cover(), range_dumper(), range_each(), range_each_func(), range_first(), range_include(), range_max(), range_min(), range_step(), range_to_s(), rb_range_values(), recursive_eql(), recursive_equal(), and recursive_hash().

#define RANGE_END | ( |  | r | ) | (RSTRUCT(r)->as.ary[1])

Definition at line 21 of file range.c.

Referenced by inspect_range(), range_cover(), range_dumper(), range_each(), range_each_func(), range_end(), range_include(), range_last(), range_max(), range_min(), range_step(), range_to_s(), rb_range_values(), recursive_eql(), recursive_equal(), and recursive_hash().

#define RANGE_EXCL | ( |  | r | ) | (RSTRUCT(r)->as.ary[2])

Definition at line 22 of file range.c.

Referenced by range_dumper(), and range_initialize().

#define range_initialize_copy rb_struct_init_copy

Definition at line 93 of file range.c.

Referenced by Init_Range().

#define rb_intern | ( |  | str | ) | rb_intern_const(str)

#define SET_EXCL | ( |  | r,
|  |  | v
| ) |  | (RSTRUCT(r)->as.ary[2] = (v) ? Qtrue : Qfalse)

Definition at line 25 of file range.c.

Referenced by range_init().

## Function Documentation

static int discrete_object_p | ( | VALUE | obj | ) | `[static]`

Definition at line 312 of file range.c.

References FALSE, id_succ, rb_cTime, rb_obj_is_kind_of(), and rb_respond_to().

Referenced by range_each(), and range_step().

static VALUE each_i | ( | VALUE | v,
|  | void * | arg
| ) |  | `[static]`

Definition at line 443 of file range.c.

References Qnil, and rb_yield().

Referenced by range_each().

static VALUE first_i | ( | VALUE | i,
|  | VALUE * | ary
| ) |  | `[static]`

Definition at line 558 of file range.c.

References INT2NUM(), NUM2LONG(), Qnil, rb_ary_push(), and rb_iter_break().

Referenced by range_first().

void Init_Range | ( | void |  | ) |

Definition at line 1015 of file range.c.

References id_beg, id_cmp, id_end, id_excl, id_succ, NULL, range_alloc(), range_begin(), range_cover(), range_dumper(), range_each(), range_end(), range_eq(), range_eql(), range_eqq(), range_exclude_end_p(), range_first(), range_hash(), range_include(), range_initialize(), range_initialize_copy, range_inspect(), range_last(), range_loader(), range_max(), range_min(), range_step(), range_to_s(), rb_cObject, rb_cRange, rb_define_method(), rb_include_module(), rb_intern, rb_marshal_define_compat(), rb_mEnumerable, and rb_struct_define_without_accessor().

static VALUE inspect_range | ( | VALUE | range,
|  | VALUE | dummy,
|  | int | recur
| ) |  | `[static]`

Definition at line 773 of file range.c.

References EXCL, OBJ_INFECT, RANGE_BEG, RANGE_END, rb_inspect(), rb_str_append(), rb_str_cat(), rb_str_dup(), and rb_str_new2().

Referenced by range_inspect().

static int r_le | ( | VALUE | a,
|  | VALUE | b
| ) |  | `[static]`

Definition at line 161 of file range.c.

References id_cmp, INT2FIX, NIL_P, Qfalse, Qtrue, rb_cmpint(), and rb_funcall().

Referenced by range_cover(), range_each_func(), and range_include().

static int r_lt | ( | VALUE | a,
|  | VALUE | b
| ) |  | `[static]`

Definition at line 149 of file range.c.

References id_cmp, NIL_P, Qfalse, Qtrue, rb_cmpint(), and rb_funcall().

Referenced by range_cover(), range_each_func(), and range_include().

static VALUE range_alloc | ( | VALUE | klass | ) | `[static]`

Definition at line 955 of file range.c.

References rb_struct_alloc_noinit().

Referenced by Init_Range().

static VALUE range_begin | ( | VALUE | range | ) | `[static]`

Definition at line 533 of file range.c.

References RANGE_BEG.

Referenced by Init_Range().

static VALUE range_check | ( | VALUE * | args | ) | `[static]`

Definition at line 35 of file range.c.

References id_cmp, and rb_funcall().

Referenced by range_init().

static VALUE range_cover | ( | VALUE | range,
|  | VALUE | val
| ) |  | `[static]`

Definition at line 907 of file range.c.

References EXCL, Qfalse, Qtrue, r_le(), r_lt(), RANGE_BEG, and RANGE_END.

Referenced by Init_Range().

static VALUE range_dumper | ( | VALUE | range | ) | `[static]`

Definition at line 927 of file range.c.

References id_beg, id_end, id_excl, NEWOBJ, OBJSETUP, RANGE_BEG, RANGE_END, RANGE_EXCL, rb_cObject, rb_ivar_set(), and T_OBJECT.

Referenced by Init_Range().

static VALUE range_each | ( | VALUE | range | ) | `[static]`

Definition at line 478 of file range.c.

References discrete_object_p(), each_i(), EXCL, FIX2LONG, FIXNUM_P, LONG2FIX, NIL_P, NULL, Qfalse, Qtrue, RANGE_BEG, range_each_func(), RANGE_END, rb_block_call, rb_check_string_type(), rb_eTypeError, rb_intern, rb_obj_classname(), rb_raise(), rb_sym_to_s(), rb_yield(), RETURN_ENUMERATOR, sym_each_i(), and SYMBOL_P.

Referenced by Init_Range().

static void range_each_func | ( | VALUE | range,
|  | VALUE(*)(VALUE, void *) | func,
|  | void * | arg
| ) |  | `[static]`

Definition at line 250 of file range.c.

References EXCL, id_succ, INT2FIX, Qfalse, r_le(), r_lt(), RANGE_BEG, RANGE_END, and rb_funcall().

Referenced by range_each(), and range_step().

static VALUE range_end | ( | VALUE | range | ) | `[static]`

Definition at line 551 of file range.c.

References RANGE_END.

Referenced by Init_Range().

static VALUE range_eq | ( | VALUE | range,
|  | VALUE | obj
| ) |  | `[static]`

Definition at line 138 of file range.c.

References Qfalse, Qtrue, rb_cRange, rb_exec_recursive_paired(), rb_obj_is_kind_of(), and recursive_equal().

Referenced by Init_Range().

static VALUE range_eql | ( | VALUE | range,
|  | VALUE | obj
| ) |  | `[static]`

Definition at line 206 of file range.c.

References Qfalse, Qtrue, rb_cRange, rb_exec_recursive_paired(), rb_obj_is_kind_of(), and recursive_eql().

Referenced by Init_Range().

static VALUE range_eqq | ( | VALUE | range,
|  | VALUE | val
| ) |  | `[static]`

Definition at line 827 of file range.c.

References rb_funcall(), and rb_intern.

Referenced by Init_Range().

static VALUE range_exclude_end_p | ( | VALUE | range | ) | `[static]`

Definition at line 103 of file range.c.

References EXCL, Qfalse, and Qtrue.

Referenced by Init_Range().

static VALUE range_failed | ( | void |  | ) | `[static]`

Definition at line 28 of file range.c.

References Qnil, rb_eArgError, and rb_raise().

Referenced by range_init().

static VALUE range_first | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | range
| ) |  | `[static]`

Definition at line 580 of file range.c.

References first_i(), NUM2LONG(), RANGE_BEG, rb_ary_new2(), rb_block_call, rb_intern, and rb_scan_args().

Referenced by Init_Range().

static VALUE range_hash | ( | VALUE | range | ) | `[static]`

Definition at line 244 of file range.c.

References rb_exec_recursive_outer(), and recursive_hash().

Referenced by Init_Range().

static VALUE range_include | ( | VALUE | range,
|  | VALUE | val
| ) |  | `[static]`

Definition at line 847 of file range.c.

References EXCL, FIXNUM_P, ISASCII, NIL_P, Qfalse, Qtrue, r_le(), r_lt(), RANGE_BEG, RANGE_END, rb_call_super(), rb_check_to_integer(), rb_cNumeric, rb_obj_is_kind_of(), RSTRING_LEN, RSTRING_PTR, T_STRING, and TYPE.

Referenced by Init_Range().

static void range_init | ( | VALUE | range,
|  | VALUE | beg,
|  | VALUE | end,
|  | int | exclude_end
| ) |  | `[static]`

Definition at line 41 of file range.c.

References FIXNUM_P, NIL_P, range_check(), range_failed(), rb_rescue(), RSTRUCT, and SET_EXCL.

Referenced by range_initialize(), and rb_range_new().

static VALUE range_initialize | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | range
| ) |  | `[static]`

Definition at line 80 of file range.c.

References Qnil, RANGE_EXCL, range_init(), rb_intern, rb_name_error(), rb_scan_args(), and RTEST.

Referenced by Init_Range().

static VALUE range_inspect | ( | VALUE | range | ) | `[static]`

Definition at line 801 of file range.c.

References inspect_range(), and rb_exec_recursive().

Referenced by Init_Range().

static VALUE range_last | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | range
| ) |  | `[static]`

Definition at line 604 of file range.c.

References RANGE_END, rb_Array(), and rb_ary_last().

Referenced by Init_Range().

static VALUE range_loader | ( | VALUE | range,
|  | VALUE | obj
| ) |  | `[static]`

Definition at line 942 of file range.c.

References id_beg, id_end, id_excl, rb_cObject, rb_eTypeError, rb_ivar_get(), rb_raise(), RBASIC, RSTRUCT, T_OBJECT, and TYPE.

Referenced by Init_Range().

static VALUE range_max | ( | VALUE | range | ) | `[static]`

Definition at line 654 of file range.c.

References EXCL, FIX2LONG, FIXNUM_P, id_cmp, INT2FIX, LONG2NUM, Qnil, RANGE_BEG, RANGE_END, rb_block_given_p(), rb_call_super(), rb_cInteger, rb_cmpint(), rb_cNumeric, rb_eTypeError, rb_funcall(), rb_obj_is_kind_of(), and rb_raise().

Referenced by Init_Range().

static VALUE range_min | ( | VALUE | range | ) | `[static]`

Definition at line 626 of file range.c.

References EXCL, id_cmp, Qnil, RANGE_BEG, RANGE_END, rb_block_given_p(), rb_call_super(), rb_cmpint(), and rb_funcall().

Referenced by Init_Range().

static VALUE range_step | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | range
| ) |  | `[static]`

Definition at line 351 of file range.c.

References discrete_object_p(), EXCL, FIX2LONG, FIXNUM_P, INT2FIX, INT2NUM(), LONG2NUM, NIL_P, Qfalse, Qtrue, RANGE_BEG, range_each_func(), RANGE_END, rb_block_call, rb_check_string_type(), rb_check_to_integer(), rb_cNumeric, rb_eArgError, rb_eTypeError, rb_funcall(), rb_intern, rb_obj_classname(), rb_obj_is_kind_of(), rb_raise(), rb_scan_args(), rb_sym_to_s(), rb_to_int(), rb_yield(), RETURN_ENUMERATOR, RTEST, ruby_float_step(), step_i(), sym_step_i(), and SYMBOL_P.

Referenced by Init_Range().

static VALUE range_to_s | ( | VALUE | range | ) | `[static]`

Definition at line 758 of file range.c.

References EXCL, OBJ_INFECT, RANGE_BEG, RANGE_END, rb_obj_as_string(), rb_str_append(), rb_str_cat(), and rb_str_dup().

Referenced by Init_Range().

VALUE rb_range_beg_len | ( | VALUE | range,
|  | long * | begp,
|  | long * | lenp,
|  | long | len,
|  | int | err
| ) |  |

Definition at line 707 of file range.c.

References len, NUM2LONG(), Qfalse, Qnil, Qtrue, rb_eRangeError, rb_raise(), and rb_range_values().

Referenced by iconv_iconv(), rb_ary_aref(), rb_ary_aset(), rb_ary_fill(), rb_ary_slice_bang(), rb_get_values_at(), rb_str_aref(), and rb_str_aset().

VALUE rb_range_new | ( | VALUE | beg,
|  | VALUE | end,
|  | int | exclude_end
| ) |  |

Definition at line 62 of file range.c.

References range, range_init(), rb_cRange, and rb_obj_alloc().

Referenced by fixup_nodes().

int rb_range_values | ( | VALUE | range,
|  | VALUE * | begp,
|  | VALUE * | endp,
|  | int * | exclp
| ) |  |

Definition at line 683 of file range.c.

References EXCL, id_beg, id_end, Qfalse, Qtrue, RANGE_BEG, RANGE_END, rb_cRange, rb_funcall(), rb_intern, rb_obj_is_kind_of(), rb_respond_to(), and RTEST.

Referenced by range_values(), and rb_range_beg_len().

VALUE rb_struct_init_copy | ( | VALUE | copy,
|  | VALUE | s
| ) |  |

Definition at line 591 of file struct.c.

References MEMCPY, rb_check_frozen(), rb_eTypeError, rb_obj_class(), rb_obj_is_instance_of(), rb_raise(), RSTRUCT_LEN, and RSTRUCT_PTR.

Referenced by Init_Struct().

static VALUE recursive_eql | ( | VALUE | range,
|  | VALUE | obj,
|  | int | recur
| ) |  | `[static]`

Definition at line 178 of file range.c.

References EXCL, Qfalse, Qtrue, RANGE_BEG, RANGE_END, and rb_eql().

Referenced by range_eql().

static VALUE recursive_equal | ( | VALUE | range,
|  | VALUE | obj,
|  | int | recur
| ) |  | `[static]`

Definition at line 109 of file range.c.

References EXCL, Qfalse, Qtrue, RANGE_BEG, RANGE_END, and rb_equal().

Referenced by range_eq().

static VALUE recursive_hash | ( | VALUE | range,
|  | VALUE | dummy,
|  | int | recur
| ) |  | `[static]`

Definition at line 216 of file range.c.

References EXCL, hash(), LONG2FIX, NUM2LONG(), RANGE_BEG, RANGE_END, rb_hash(), rb_hash_end(), rb_hash_start(), and rb_hash_uint().

Referenced by range_hash().

int ruby_float_step | ( | VALUE | from,
|  | VALUE | to,
|  | VALUE | step,
|  | int | excl
| ) |  |

Definition at line 1567 of file numeric.c.

References DBL2NUM, DBL_EPSILON, err, FALSE, isinf(), NUM2DBL, rb_yield(), T_FLOAT, TRUE, and TYPE.

Referenced by num_step(), and range_step().

static VALUE step_i | ( | VALUE | i,
|  | void * | arg
| ) |  | `[static]`

Definition at line 292 of file range.c.

References FIXNUM_FLAG, FIXNUM_P, INT2FIX, Qnil, rb_funcall(), and rb_yield().

Referenced by range_step().

static VALUE sym_each_i | ( | VALUE | v,
|  | void * | arg
| ) |  | `[static]`

Definition at line 450 of file range.c.

References Qnil, rb_str_intern(), and rb_yield().

Referenced by range_each().

static VALUE sym_step_i | ( | VALUE | i,
|  | void * | arg
| ) |  | `[static]`

Definition at line 274 of file range.c.

References FIXNUM_FLAG, FIXNUM_P, INT2FIX, Qnil, rb_funcall(), rb_str_intern(), and rb_yield().

Referenced by range_step().

## Variable Documentation

ID id_beg

Definition at line 16 of file range.c.

Referenced by Init_Range(), range_dumper(), range_loader(), and rb_range_values().

ID id_cmp`[static]`

Definition at line 16 of file range.c.

ID id_end

Definition at line 16 of file range.c.

Referenced by Init_Range(), range_dumper(), range_loader(), and rb_range_values().

ID id_excl

Definition at line 16 of file range.c.

Referenced by Init_Range(), range_dumper(), and range_loader().

ID id_succ

Definition at line 16 of file range.c.

Referenced by discrete_object_p(), Init_Range(), and range_each_func().

VALUE rb_cRange

Definition at line 15 of file range.c.