Exemplo n.º 1
0
Arquivo: range.c Projeto: DashYang/sim
void
Init_Range(void)
{
#undef rb_intern
#define rb_intern(str) rb_intern_const(str)

    id_cmp = rb_intern("<=>");
    id_succ = rb_intern("succ");
    id_beg = rb_intern("begin");
    id_end = rb_intern("end");
    id_excl = rb_intern("excl");
    id_integer_p = rb_intern("integer?");
    id_div = rb_intern("div");

    rb_cRange = rb_struct_define_without_accessor(
        "Range", rb_cObject, range_alloc,
        "begin", "end", "excl", NULL);

    rb_include_module(rb_cRange, rb_mEnumerable);
    rb_marshal_define_compat(rb_cRange, rb_cObject, range_dumper, range_loader);
    rb_define_method(rb_cRange, "initialize", range_initialize, -1);
    rb_define_method(rb_cRange, "initialize_copy", range_initialize_copy, 1);
    rb_define_method(rb_cRange, "==", range_eq, 1);
    rb_define_method(rb_cRange, "===", range_eqq, 1);
    rb_define_method(rb_cRange, "eql?", range_eql, 1);
    rb_define_method(rb_cRange, "hash", range_hash, 0);
    rb_define_method(rb_cRange, "each", range_each, 0);
    rb_define_method(rb_cRange, "step", range_step, -1);
    rb_define_method(rb_cRange, "bsearch", range_bsearch, 0);
    rb_define_method(rb_cRange, "begin", range_begin, 0);
    rb_define_method(rb_cRange, "end", range_end, 0);
    rb_define_method(rb_cRange, "first", range_first, -1);
    rb_define_method(rb_cRange, "last", range_last, -1);
    rb_define_method(rb_cRange, "min", range_min, -1);
    rb_define_method(rb_cRange, "max", range_max, -1);
    rb_define_method(rb_cRange, "size", range_size, 0);
    rb_define_method(rb_cRange, "to_s", range_to_s, 0);
    rb_define_method(rb_cRange, "inspect", range_inspect, 0);

    rb_define_method(rb_cRange, "exclude_end?", range_exclude_end_p, 0);

    rb_define_method(rb_cRange, "member?", range_include, 1);
    rb_define_method(rb_cRange, "include?", range_include, 1);
    rb_define_method(rb_cRange, "cover?", range_cover, 1);
}
Exemplo n.º 2
0
void
Init_Range(void)
{
    rb_cRange = rb_struct_define_without_accessor(
        "Range", rb_cObject, range_alloc,
        "begin", "end", "excl", NULL);

    rb_include_module(rb_cRange, rb_mEnumerable);
    //rb_marshal_define_compat(rb_cRange, rb_cObject, range_dumper, range_loader);
    rb_objc_define_method(rb_cRange, "initialize", range_initialize, -1);
    rb_objc_define_method(rb_cRange, "initialize_copy", range_initialize_copy, 1);
    rb_objc_define_method(rb_cRange, "==", range_eq, 1);
    rb_objc_define_method(rb_cRange, "===", range_eqq, 1);
    rb_objc_define_method(rb_cRange, "eql?", range_eql, 1);
    rb_objc_define_method(rb_cRange, "hash", range_hash, 0);
    rb_objc_define_method(rb_cRange, "each", range_each, 0);
    rb_objc_define_method(rb_cRange, "step", range_step, -1);
    rb_objc_define_method(rb_cRange, "begin", range_begin, 0);
    rb_objc_define_method(rb_cRange, "end", range_end, 0);
    rb_objc_define_method(rb_cRange, "first", range_first, -1);
    rb_objc_define_method(rb_cRange, "last", range_last, -1);
    rb_objc_define_method(rb_cRange, "min", range_min, 0);
    rb_objc_define_method(rb_cRange, "max", range_max, 0);
    rb_objc_define_method(rb_cRange, "to_s", range_to_s, 0);
    rb_objc_define_method(rb_cRange, "inspect", range_inspect, 0);

    rb_objc_define_method(rb_cRange, "exclude_end?", range_exclude_end_p, 0);

    rb_objc_define_method(rb_cRange, "member?", range_include, 1);
    rb_objc_define_method(rb_cRange, "include?", range_include, 1);
    rb_objc_define_method(rb_cRange, "cover?", range_cover, 1);

    // NOTE: This is a MacRuby specific extension.
    rb_objc_define_method(rb_cRange, "relative_to", range_relative_to, 1);

    selUpto = sel_registerName("upto:");
    selBeg = sel_registerName("begin");
    selEnd = sel_registerName("end");
    selExcludeEnd = sel_registerName("exclude_end?");
    selInclude = sel_registerName("include?:");
}