Cube  Diff

Differences From Artifact [b83be0b4d8]:

To Artifact [3d87b31463]:


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

26
27
28
29
30

31
32
33
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112


113
114
115
116
117
118

	_function = function;
	_argumentsTypes = argumentsTypes;

	return self;
}

- (int)callWithArguments:(char **)arguments
            numArguments:(size_t)numArguments
                  isDown:(bool)isDown
{
	switch (_argumentsTypes) {
	case ARG_1INT:
		if (isDown)
			((void(__cdecl *)(int))_function)(ATOI(arguments[1]));

		break;
	case ARG_2INT:
		if (isDown)
			((void(__cdecl *)(int, int))_function)(
			    ATOI(arguments[1]), ATOI(arguments[2]));

		break;
	case ARG_3INT:
		if (isDown)
			((void(__cdecl *)(int, int, int))_function)(
			    ATOI(arguments[1]), ATOI(arguments[2]),

			    ATOI(arguments[3]));
		break;
	case ARG_4INT:
		if (isDown)
			((void(__cdecl *)(int, int, int, int))_function)(
			    ATOI(arguments[1]), ATOI(arguments[2]),

			    ATOI(arguments[3]), ATOI(arguments[4]));

		break;
	case ARG_NONE:
		if (isDown)
			((void(__cdecl *)())_function)();
		break;
	case ARG_1STR:
		if (isDown)
			((void(__cdecl *)(OFString *))_function)(
			    @(arguments[1]));
		break;
	case ARG_2STR:
		if (isDown)
			((void(__cdecl *)(OFString *, OFString *))_function)(
			    @(arguments[1]), @(arguments[2]));
		break;
	case ARG_3STR:
		if (isDown)
			((void(__cdecl *)(
			    OFString *, OFString *, OFString *))_function)(
			    @(arguments[1]), @(arguments[2]), @(arguments[3]));
		break;
	case ARG_5STR:
		if (isDown)
			((void(__cdecl *)(OFString *, OFString *, OFString *,
			    OFString *, OFString *))_function)(@(arguments[1]),
			    @(arguments[2]), @(arguments[3]), @(arguments[4]),
			    @(arguments[5]));
		break;
	case ARG_DOWN:
		((void(__cdecl *)(bool))_function)(isDown);
		break;
	case ARG_DWN1:
		((void(__cdecl *)(bool, OFString *))_function)(
		    isDown, @(arguments[1]));
		break;
	case ARG_1EXP:
		if (isDown)
			return ((int(__cdecl *)(int))_function)(
			    execute(@(arguments[1])));
		break;
	case ARG_2EXP:
		if (isDown)
			return ((int(__cdecl *)(int, int))_function)(
			    execute(@(arguments[1])), execute(@(arguments[2])));
		break;
	case ARG_1EST:
		if (isDown)
			return ((int(__cdecl *)(OFString *))_function)(
			    @(arguments[1]));
		break;
	case ARG_2EST:
		if (isDown)
			return (
			    (int(__cdecl *)(OFString *, OFString *))_function)(
			    @(arguments[1]), @(arguments[2]));
		break;
	case ARG_VARI:
		if (isDown) {
			// limit, remove
			string r;
			r[0] = 0;
			for (int i = 1; i < numArguments; i++) {
				// make string-list out of all arguments
				strcat_s(r, arguments[i]);
				if (i == numArguments - 1)
					break;
				strcat_s(r, " ");
			}
			((void(__cdecl *)(OFString *))_function)(@(r));
		}


		break;
	}

	return 0;
}
@end







|
<
<




|
>




|
>




|
>
|




|
>
|
>







|
<




|





|




|
|
|






|




|




|




|



|
|
<


|

<
<
<
<
<
<
<
<
<
|
<
>
>






11
12
13
14
15
16
17
18


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98

99
100
101
102









103

104
105
106
107
108
109
110
111

	_function = function;
	_argumentsTypes = argumentsTypes;

	return self;
}

- (int)callWithArguments:(OFArray<OFString *> *)arguments isDown:(bool)isDown


{
	switch (_argumentsTypes) {
	case ARG_1INT:
		if (isDown)
			((void(__cdecl *)(int))_function)(
			    (int)[arguments[1] longLongValueWithBase:0]);
		break;
	case ARG_2INT:
		if (isDown)
			((void(__cdecl *)(int, int))_function)(
			    (int)[arguments[1] longLongValueWithBase:0],
			    (int)[arguments[2] longLongValueWithBase:0]);
		break;
	case ARG_3INT:
		if (isDown)
			((void(__cdecl *)(int, int, int))_function)(
			    (int)[arguments[1] longLongValueWithBase:0],
			    (int)[arguments[2] longLongValueWithBase:0],
			    (int)[arguments[3] longLongValueWithBase:0]);
		break;
	case ARG_4INT:
		if (isDown)
			((void(__cdecl *)(int, int, int, int))_function)(
			    (int)[arguments[1] longLongValueWithBase:0],
			    (int)[arguments[2] longLongValueWithBase:0],
			    (int)[arguments[3] longLongValueWithBase:0],
			    (int)[arguments[4] longLongValueWithBase:0]);
		break;
	case ARG_NONE:
		if (isDown)
			((void(__cdecl *)())_function)();
		break;
	case ARG_1STR:
		if (isDown)
			((void(__cdecl *)(OFString *))_function)(arguments[1]);

		break;
	case ARG_2STR:
		if (isDown)
			((void(__cdecl *)(OFString *, OFString *))_function)(
			    arguments[1], arguments[2]);
		break;
	case ARG_3STR:
		if (isDown)
			((void(__cdecl *)(
			    OFString *, OFString *, OFString *))_function)(
			    arguments[1], arguments[2], arguments[3]);
		break;
	case ARG_5STR:
		if (isDown)
			((void(__cdecl *)(OFString *, OFString *, OFString *,
			    OFString *, OFString *))_function)(arguments[1],
			    arguments[2], arguments[3], arguments[4],
			    arguments[5]);
		break;
	case ARG_DOWN:
		((void(__cdecl *)(bool))_function)(isDown);
		break;
	case ARG_DWN1:
		((void(__cdecl *)(bool, OFString *))_function)(
		    isDown, arguments[1]);
		break;
	case ARG_1EXP:
		if (isDown)
			return ((int(__cdecl *)(int))_function)(
			    execute(arguments[1]));
		break;
	case ARG_2EXP:
		if (isDown)
			return ((int(__cdecl *)(int, int))_function)(
			    execute(arguments[1]), execute(arguments[2]));
		break;
	case ARG_1EST:
		if (isDown)
			return ((int(__cdecl *)(OFString *))_function)(
			    arguments[1]);
		break;
	case ARG_2EST:
		if (isDown)
			return ((int(__cdecl *)(OFString *,
			    OFString *))_function)(arguments[1], arguments[2]);

		break;
	case ARG_VARI:
		if (isDown)
			// limit, remove









			((void(__cdecl *)(OFString *))_function)([[arguments

			    objectsInRange:OFMakeRange(1, arguments.count - 1)]
			    componentsJoinedByString:@" "]);
		break;
	}

	return 0;
}
@end