Example #1
0
File: proc.c Project: MSch/MacRuby
VALUE
rb_proc_call(VALUE self, VALUE args)
{
#if 0
    rb_proc_t *proc;
    GetProcPtr(self, proc);
    return vm_invoke_proc(GET_THREAD(), proc, proc->block.self,
			  RARRAY_LEN(args), RARRAY_PTR(args), 0);
#endif
    return proc_call(self, 0, RARRAY_LEN(args), RARRAY_PTR(args));
}
Example #2
0
File: proc.c Project: MSch/MacRuby
VALUE
rb_proc_check_and_call(VALUE proc, int argc, VALUE *argv)
{
    VALUE tmp = rb_check_convert_type(proc, T_DATA, "Proc", "to_proc");
    if (NIL_P(tmp)) {
        rb_raise(rb_eTypeError,
		"wrong type %s (expected Proc)",
		rb_obj_classname(proc));
    }
    proc = tmp;

    const int arity = rb_proc_arity(proc);
    if (arity != argc) {
	rb_raise(rb_eArgError, "expected Proc with %d arguments (got %d)",
		argc, arity);
    }
    return proc_call(proc, 0, argc, argv);
}
Example #3
0
void signal_send(proc_t *proc,int sig) {
  if (sig==SIGCONT) proc_wake(proc); // wake process even if it has no signal handler for it
  if (proc->signal!=NULL) proc_call(proc,proc->signal,1,sig);
}
static VALUE
enumerator_iter_i(VALUE i, VALUE enum_obj, int argc, VALUE *argv)
{
    struct enumerator *e = (struct enumerator *)enum_obj;
    return rb_yield(proc_call(e->proc, i));
}
Example #5
0
File: proc.c Project: MSch/MacRuby
VALUE
rb_proc_call2(VALUE self, int argc, VALUE *argv)
{
    return proc_call(self, 0, argc, argv);
}