Ruby
2.0.0p247(2013-06-27revision41674)
|
#include "ruby/ruby.h"
#include "ruby/encoding.h"
#include "internal.h"
#include "id.h"
#include <math.h>
Go to the source code of this file.
#define BSEARCH | ( | conv | ) |
do { \ RETURN_ENUMERATOR(range, 0, 0); \ if (EXCL(range)) high--; \ org_high = high; \ while (low < high) { \ mid = ((high < 0) == (low < 0)) ? low + ((high - low) / 2) \ : (low < -high) ? -((-1 - low - high)/2 + 1) : (low + high) / 2; \ BSEARCH_CHECK(conv(mid)); \ if (smaller) { \ high = mid; \ } \ else { \ low = mid + 1; \ } \ } \ if (low == org_high) { \ BSEARCH_CHECK(conv(low)); \ if (!smaller) return Qnil; \ } \ if (!satisfied) return Qnil; \ return conv(low); \ } while (0)
Referenced by range_bsearch().
#define BSEARCH_CHECK | ( | val | ) |
do { \ VALUE v = rb_yield(val); \ if (FIXNUM_P(v)) { \ if (FIX2INT(v) == 0) return val; \ smaller = FIX2INT(v) < 0; \ } \ else if (v == Qtrue) { \ satisfied = 1; \ smaller = 1; \ } \ else if (v == Qfalse || v == Qnil) { \ smaller = 0; \ } \ else if (rb_obj_is_kind_of(v, rb_cNumeric)) { \ int cmp = rb_cmpint(rb_funcall(v, id_cmp, 1, INT2FIX(0)), v, INT2FIX(0)); \ if (!cmp) return val; \ smaller = cmp < 0; \ } \ else { \ rb_raise(rb_eTypeError, "wrong argument type %s" \ " (must be numeric, true, false or nil)", \ rb_obj_classname(v)); \ } \ } while (0)
Referenced by range_bsearch().
#define EXCL | ( | r | ) | RTEST(RANGE_EXCL(r)) |
Definition at line 29 of file range.c.
Referenced by inspect_range(), range_bsearch(), range_cover(), range_each(), range_each_func(), range_exclude_end_p(), range_include(), range_max(), range_min(), range_size(), range_step(), range_step_size(), range_to_s(), rb_range_values(), recursive_eql(), recursive_equal(), and recursive_hash().
Definition at line 25 of file range.c.
Referenced by inspect_range(), range_begin(), range_bsearch(), range_cover(), range_dumper(), range_each(), range_each_func(), range_first(), range_include(), range_max(), range_min(), range_size(), range_step(), range_step_size(), range_to_s(), rb_range_values(), recursive_eql(), recursive_equal(), and recursive_hash().
Definition at line 26 of file range.c.
Referenced by inspect_range(), range_bsearch(), range_cover(), range_dumper(), range_each(), range_each_func(), range_end(), range_include(), range_last(), range_max(), range_min(), range_size(), range_step(), range_step_size(), 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 27 of file range.c.
Referenced by range_dumper(), and range_initialize().
#define range_initialize_copy rb_struct_init_copy /* :nodoc: */ |
Definition at line 98 of file range.c.
Referenced by Init_Range().
#define rb_intern | ( | str | ) | rb_intern_const(str) |
Definition at line 30 of file range.c.
Referenced by range_init().
static int discrete_object_p | ( | VALUE | obj | ) | [static] |
Definition at line 318 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().
Definition at line 682 of file range.c.
References Qnil, and rb_yield().
Referenced by range_each().
Definition at line 818 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 1303 of file range.c.
References id_beg, id_cmp, id_div, id_end, id_excl, id_integer_p, id_succ, NULL, range_alloc(), range_begin(), range_bsearch(), 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_size(), 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 1054 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 is_integer_p | ( | VALUE | v | ) | [static] |
Definition at line 504 of file range.c.
References id_integer_p, Qundef, rb_check_funcall(), and RTEST.
Referenced by range_bsearch().
Definition at line 169 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().
Definition at line 157 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 1238 of file range.c.
References rb_struct_alloc_noinit().
Referenced by Init_Range().
static VALUE range_begin | ( | VALUE | range | ) | [static] |
static VALUE range_bsearch | ( | VALUE | range | ) | [static] |
Definition at line 563 of file range.c.
References BSEARCH, BSEARCH_CHECK, EXCL, FIX2LONG, FIXNUM_P, id_cmp, id_div, INT2FIX, is_integer_p(), Qnil, range, RANGE_BEG, RANGE_END, rb_cmpint(), rb_equal(), rb_eTypeError, rb_Float(), rb_funcall(), rb_obj_classname(), rb_raise(), rb_to_int(), RB_TYPE_P, RETURN_ENUMERATOR, RFLOAT_VALUE, and T_FLOAT.
Referenced by Init_Range().
static VALUE range_check | ( | VALUE * | args | ) | [static] |
Definition at line 40 of file range.c.
References id_cmp, and rb_funcall().
Referenced by range_init().
static VALUE range_cover | ( | VALUE | range, |
VALUE | val | ||
) | [static] |
static VALUE range_dumper | ( | VALUE | range | ) | [static] |
Definition at line 1211 of file range.c.
References id_beg, id_end, id_excl, NEWOBJ_OF, 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 736 of file range.c.
References args, discrete_object_p(), each_i(), EXCL, FIX2LONG, FIXNUM_P, LONG2FIX, NIL_P, NULL, Qfalse, Qtrue, range, RANGE_BEG, range_each_func(), RANGE_END, range_size(), rb_block_call(), rb_check_string_type(), rb_eTypeError, rb_intern, rb_obj_classname(), rb_raise(), rb_sym_to_s(), rb_yield(), RETURN_SIZED_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 258 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().
Definition at line 146 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().
Definition at line 214 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().
Definition at line 1107 of file range.c.
References rb_funcall(), and rb_intern.
Referenced by Init_Range().
static VALUE range_exclude_end_p | ( | VALUE | range | ) | [static] |
static VALUE range_failed | ( | void | ) | [static] |
Definition at line 33 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 844 of file range.c.
References first_i(), NUM2LONG, RANGE_BEG, rb_ary_new2(), rb_block_call(), and rb_scan_args().
Referenced by Init_Range().
static VALUE range_hash | ( | VALUE | range | ) | [static] |
Definition at line 252 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 1128 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(), RB_TYPE_P, RSTRING_LEN, RSTRING_PTR, and T_STRING.
Referenced by Init_Range().
static void range_init | ( | VALUE | range, |
VALUE | beg, | ||
VALUE | end, | ||
int | exclude_end | ||
) | [static] |
Definition at line 46 of file range.c.
References args, 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 85 of file range.c.
References Qnil, RANGE_EXCL, range_init(), rb_name_error(), rb_scan_args(), and RTEST.
Referenced by Init_Range().
static VALUE range_inspect | ( | VALUE | range | ) | [static] |
Definition at line 1082 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 877 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 1225 of file range.c.
References id_beg, id_end, id_excl, range, rb_cObject, rb_eTypeError, rb_ivar_get(), rb_raise(), RB_TYPE_P, RBASIC, RSTRUCT, and T_OBJECT.
Referenced by Init_Range().
Definition at line 931 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().
Definition at line 900 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_size | ( | VALUE | range | ) | [static] |
Definition at line 705 of file range.c.
References EXCL, INT2FIX, num_interval_step_size(), Qnil, RANGE_BEG, RANGE_END, rb_cNumeric, and rb_obj_is_kind_of().
Referenced by Init_Range(), and range_each().
static VALUE range_step | ( | int | argc, |
VALUE * | argv, | ||
VALUE | range | ||
) | [static] |
Definition at line 383 of file range.c.
References args, discrete_object_p(), EXCL, FIX2LONG, FIXNUM_P, idLE, INT2FIX, INT2NUM, LONG2NUM, NIL_P, Qfalse, Qtrue, range, RANGE_BEG, range_each_func(), RANGE_END, range_step_size(), 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_SIZED_ENUMERATOR, RTEST, ruby_float_step(), step_i(), sym_step_i(), and SYMBOL_P.
Referenced by Init_Range().
static VALUE range_step_size | ( | VALUE | range, |
VALUE | args | ||
) | [static] |
Definition at line 325 of file range.c.
References EXCL, INT2FIX, num_interval_step_size(), Qnil, RANGE_BEG, RANGE_END, RARRAY_PTR, rb_cNumeric, rb_eArgError, rb_funcall(), rb_obj_is_kind_of(), rb_raise(), and rb_to_int().
Referenced by range_step().
static VALUE range_to_s | ( | VALUE | range | ) | [static] |
Definition at line 1039 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 987 of file range.c.
References NUM2LONG, Qfalse, Qnil, Qtrue, rb_eRangeError, rb_raise(), and rb_range_values().
Referenced by rb_ary_aref(), rb_ary_aset(), rb_ary_fill(), rb_ary_slice_bang(), rb_get_values_at(), rb_str_aref(), rb_str_aset(), str_byte_aref(), and vm_backtrace_to_ary().
VALUE rb_range_new | ( | VALUE | beg, |
VALUE | end, | ||
int | exclude_end | ||
) |
Definition at line 67 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 963 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().
static VALUE recursive_eql | ( | VALUE | range, |
VALUE | obj, | ||
int | recur | ||
) | [static] |
static VALUE recursive_equal | ( | VALUE | range, |
VALUE | obj, | ||
int | recur | ||
) | [static] |
Definition at line 117 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 224 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().
Definition at line 300 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 689 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 282 of file range.c.
References FIXNUM_FLAG, FIXNUM_P, INT2FIX, Qnil, rb_funcall(), rb_str_intern(), and rb_yield().
Referenced by range_step().
Definition at line 23 of file range.c.
Referenced by Init_Range(), range_dumper(), range_loader(), and rb_range_values().
Definition at line 23 of file range.c.
Referenced by Init_Range(), r_le(), r_lt(), range_bsearch(), range_check(), range_max(), and range_min().
Definition at line 23 of file range.c.
Referenced by Init_Range(), and range_bsearch().
Definition at line 23 of file range.c.
Referenced by Init_Range(), range_dumper(), range_loader(), and rb_range_values().
Definition at line 23 of file range.c.
Referenced by Init_Range(), range_dumper(), and range_loader().
ID id_integer_p [static] |
Definition at line 23 of file range.c.
Referenced by Init_Range(), and is_integer_p().
Definition at line 23 of file range.c.
Referenced by discrete_object_p(), Init_Range(), and range_each_func().