/* * call-seq: * Enumerable::Enumerator.new(obj, method = :each, *args) * * Creates a new Enumerable::Enumerator object, which is to be * used as an Enumerable object using the given object's given * method with the given arguments. * * e.g.: * str = "xyz" * * enum = Enumerable::Enumerator.new(str, :each_byte) * a = enum.map {|b| '%02x' % b } #=> ["78", "79", "7a"] * */ static VALUE enumerator_initialize(argc, argv, obj) int argc; VALUE *argv; VALUE obj; { VALUE enum_obj, enum_method, enum_args; rb_scan_args(argc, argv, "11*", &enum_obj, &enum_method, &enum_args); if (enum_method == Qnil) enum_method = sym_each; rb_ivar_set(obj, id_enum_obj, enum_obj); rb_ivar_set(obj, id_enum_method, enum_method); rb_ivar_set(obj, id_enum_args, enum_args); return Qnil; }