34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
- (int)callWithArguments:(OFArray<OFString *> *)arguments isDown:(bool)isDown
{
switch (_argumentsTypes) {
case ARG_1INT:
if (isDown) {
arguments = padArguments(arguments, 2);
((void(__cdecl *)(int))_function)(
[arguments[1] intValueWithBase:0]);
}
break;
case ARG_2INT:
if (isDown) {
arguments = padArguments(arguments, 3);
((void(__cdecl *)(int, int))_function)(
[arguments[1] intValueWithBase:0],
[arguments[2] intValueWithBase:0]);
}
break;
case ARG_3INT:
if (isDown) {
arguments = padArguments(arguments, 4);
((void(__cdecl *)(int, int, int))_function)(
[arguments[1] intValueWithBase:0],
[arguments[2] intValueWithBase:0],
[arguments[3] intValueWithBase:0]);
}
break;
case ARG_4INT:
if (isDown) {
arguments = padArguments(arguments, 5);
((void(__cdecl *)(int, int, int, int))_function)(
[arguments[1] intValueWithBase:0],
[arguments[2] intValueWithBase:0],
[arguments[3] intValueWithBase:0],
[arguments[4] intValueWithBase:0]);
}
break;
case ARG_NONE:
if (isDown)
((void(__cdecl *)())_function)();
break;
case ARG_1STR:
|
|
|
|
|
|
|
|
|
|
|
|
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
- (int)callWithArguments:(OFArray<OFString *> *)arguments isDown:(bool)isDown
{
switch (_argumentsTypes) {
case ARG_1INT:
if (isDown) {
arguments = padArguments(arguments, 2);
((void(__cdecl *)(int))_function)(
[arguments[1] cube_intValueWithBase:0]);
}
break;
case ARG_2INT:
if (isDown) {
arguments = padArguments(arguments, 3);
((void(__cdecl *)(int, int))_function)(
[arguments[1] cube_intValueWithBase:0],
[arguments[2] cube_intValueWithBase:0]);
}
break;
case ARG_3INT:
if (isDown) {
arguments = padArguments(arguments, 4);
((void(__cdecl *)(int, int, int))_function)(
[arguments[1] cube_intValueWithBase:0],
[arguments[2] cube_intValueWithBase:0],
[arguments[3] cube_intValueWithBase:0]);
}
break;
case ARG_4INT:
if (isDown) {
arguments = padArguments(arguments, 5);
((void(__cdecl *)(int, int, int, int))_function)(
[arguments[1] cube_intValueWithBase:0],
[arguments[2] cube_intValueWithBase:0],
[arguments[3] cube_intValueWithBase:0],
[arguments[4] cube_intValueWithBase:0]);
}
break;
case ARG_NONE:
if (isDown)
((void(__cdecl *)())_function)();
break;
case ARG_1STR:
|