Class: Enumerator::Generator
- Includes:
 - Enumerable
 
- Defined in:
 - enumerator.c
 
Instance Method Summary collapse
- 
  
    
      #each(*args)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #initialize(*args)  ⇒ Object 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #initialize_copy(orig)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 
Methods included from Enumerable
#all?, #any?, #chunk, #chunk_while, #collect, #collect_concat, #count, #cycle, #detect, #drop, #drop_while, #each_cons, #each_entry, #each_slice, #each_with_index, #each_with_object, #entries, #find, #find_all, #find_index, #first, #flat_map, #grep, #grep_v, #group_by, #include?, #inject, #lazy, #map, #max, #max_by, #member?, #min, #min_by, #minmax, #minmax_by, #none?, #one?, #partition, #reduce, #reject, #reverse_each, #select, #slice_after, #slice_before, #slice_when, #sort, #sort_by, #take, #take_while, #to_a, #to_h, #zip
Constructor Details
#initialize(*args) ⇒ Object
:nodoc:
      1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257  | 
    
      # File 'enumerator.c', line 1233
static VALUE
generator_initialize(int argc, VALUE *argv, VALUE obj)
{
    VALUE proc;
    if (argc == 0) {
	rb_need_block();
	proc = rb_block_proc();
    }
    else {
	rb_scan_args(argc, argv, "1", &proc);
	if (!rb_obj_is_proc(proc))
	    rb_raise(rb_eTypeError,
		     "wrong argument type %"PRIsVALUE" (expected Proc)",
		     rb_obj_class(proc));
	if (rb_block_given_p()) {
	    rb_warn("given block not used");
	}
    }
    return generator_init(obj, proc);
}
     | 
  
Instance Method Details
#each(*args) ⇒ Object
:nodoc:
      1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293  | 
    
      # File 'enumerator.c', line 1281
static VALUE
generator_each(int argc, VALUE *argv, VALUE obj)
{
    struct generator *ptr = generator_ptr(obj);
    VALUE args = rb_ary_new2(argc + 1);
    rb_ary_push(args, yielder_new());
    if (argc > 0) {
	rb_ary_cat(args, argv, argc);
    }
    return rb_proc_call(ptr->proc, args);
}
     | 
  
#initialize_copy(orig) ⇒ Object
:nodoc:
      1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278  | 
    
      # File 'enumerator.c', line 1260
static VALUE
generator_init_copy(VALUE obj, VALUE orig)
{
    struct generator *ptr0, *ptr1;
    if (!OBJ_INIT_COPY(obj, orig)) return obj;
    ptr0 = generator_ptr(orig);
    TypedData_Get_Struct(obj, struct generator, &generator_data_type, ptr1);
    if (!ptr1) {
	rb_raise(rb_eArgError, "unallocated generator");
    }
    ptr1->proc = ptr0->proc;
    return obj;
}
     |