static VALUE iterate_method(VALUE obj) { const struct iter_method_arg * arg = (struct iter_method_arg *) obj; return rb_call(CLASS_OF(arg->obj), arg->obj, arg->mid, arg->argc, arg->argv, CALL_FCALL); }
VALUE rb_apply(VALUE recv, ID mid, VALUE args) { int argc; VALUE *argv; argc = RARRAY_LENINT(args); argv = ALLOCA_N(VALUE, argc); MEMCPY(argv, RARRAY_PTR(args), VALUE, argc); return rb_call(recv, mid, argc, argv, CALL_FCALL, false); }
VALUE rb_apply(VALUE recv, ID mid, VALUE args) { int argc; VALUE *argv; argc = RARRAY_LEN(args); /* Assigns LONG, but argc is INT */ argv = ALLOCA_N(VALUE, argc); MEMCPY(argv, RARRAY_PTR(args), VALUE, argc); return rb_call(CLASS_OF(recv), recv, mid, argc, argv, CALL_FCALL); }
static VALUE send_internal(int argc, VALUE *argv, VALUE recv, int scope) { if (argc == 0) { rb_raise(rb_eArgError, "no method name given"); } VALUE vid = *argv++; argc--; VALUE retval = rb_call(recv, rb_to_id(vid), argc, argv, scope, true); RETURN_IF_BROKEN(); return retval; }
static VALUE send_internal(int argc, VALUE *argv, VALUE recv, int scope) { VALUE vid; if (argc == 0) { rb_raise(rb_eArgError, "no method name given"); } vid = *argv++; argc--; return rb_call(recv, rb_to_id(vid), argc, argv, scope, true); }
VALUE rb_funcall(VALUE recv, ID mid, int n, ...) { VALUE *argv; va_list ar; va_init_list(ar, n); if (n > 0) { long i; argv = ALLOCA_N(VALUE, n); for (i = 0; i < n; i++) { argv[i] = va_arg(ar, VALUE); } va_end(ar); } else { argv = 0; } return rb_call(CLASS_OF(recv), recv, mid, n, argv, CALL_FCALL); }
VALUE rb_funcall(VALUE recv, ID mid, int n, ...) { VALUE *argv; va_list ar; if (n > 0) { long i; va_start(ar, n); argv = ALLOCA_N(VALUE, n); for (i = 0; i < n; i++) { argv[i] = va_arg(ar, VALUE); } va_end(ar); } else { argv = 0; } return rb_call(recv, mid, n, argv, CALL_FCALL, false); }
VALUE rb_each(VALUE obj) { return rb_call(CLASS_OF(obj), obj, idEach, 0, 0, CALL_FCALL); }
VALUE rb_funcall3(VALUE recv, ID mid, int argc, const VALUE *argv) { return rb_call(CLASS_OF(recv), recv, mid, argc, argv, CALL_PUBLIC); }
VALUE rb_each(VALUE obj) { return rb_call(obj, idEach, 0, 0, CALL_FCALL, false); }
VALUE rb_funcall3(VALUE recv, ID mid, int argc, const VALUE *argv) { return rb_call(recv, mid, argc, argv, CALL_PUBLIC, false); }