3
/* from ruby1.9/eval.c */
6
call_cfunc(VALUE (*func)(), VALUE recv, int len, int argc, const VALUE *argv)
8
/* printf("len: %d, argc: %d\n", len, argc); */
10
if (len >= 0 && argc != len) {
11
rb_raise(rb_eArgError, "wrong number of arguments(%d for %d)",
17
return (*func) (recv, rb_ary_new4(argc, argv));
20
return (*func) (argc, argv, recv);
23
return (*func) (recv);
26
return (*func) (recv, argv[0]);
29
return (*func) (recv, argv[0], argv[1]);
32
return (*func) (recv, argv[0], argv[1], argv[2]);
35
return (*func) (recv, argv[0], argv[1], argv[2], argv[3]);
38
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
41
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4],
45
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4],
49
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4],
50
argv[5], argv[6], argv[7]);
53
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4],
54
argv[5], argv[6], argv[7], argv[8]);
57
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4],
58
argv[5], argv[6], argv[7], argv[8], argv[9]);
61
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4],
62
argv[5], argv[6], argv[7], argv[8], argv[9],
66
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4],
67
argv[5], argv[6], argv[7], argv[8], argv[9],
71
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4],
72
argv[5], argv[6], argv[7], argv[8], argv[9], argv[10],
76
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4],
77
argv[5], argv[6], argv[7], argv[8], argv[9], argv[10],
78
argv[11], argv[12], argv[13]);
81
return (*func) (recv, argv[0], argv[1], argv[2], argv[3], argv[4],
82
argv[5], argv[6], argv[7], argv[8], argv[9], argv[10],
83
argv[11], argv[12], argv[13], argv[14]);
86
rb_raise(rb_eArgError, "too many arguments(%d)", len);
89
return Qnil; /* not reached */