VALUE rb_yield(VALUE val) { if (val == Qundef) { return rb_vm_yield(0, NULL); } return rb_vm_yield(1, &val); }
VALUE rb_yield_splat(VALUE values) { VALUE tmp = rb_check_array_type(values); if (NIL_P(tmp)) { rb_raise(rb_eArgError, "not an array"); } return rb_vm_yield(RARRAY_LENINT(tmp), RARRAY_PTR(tmp)); }
VALUE rb_yield_values(int n, ...) { if (n == 0) { return rb_vm_yield(0, 0); } else { int i; VALUE *argv; va_list args; argv = ALLOCA_N(VALUE, n); va_start(args, n); for (i=0; i<n; i++) { argv[i] = va_arg(args, VALUE); } va_end(args); return rb_vm_yield(n, argv); } }
VALUE rb_yield_values2(int argc, const VALUE *argv) { return rb_vm_yield(argc, argv); }
static inline VALUE rb_yield_0(int argc, const VALUE * argv) { return rb_vm_yield(argc, argv); }