source: trunk/include/odinwrap.h@ 1437

Last change on this file since 1437 was 1437, checked in by phaller, 26 years ago

Fix: Bugfix + Heap Check

File size: 43.0 KB
Line 
1/* $Id: odinwrap.h,v 1.11 1999-10-25 15:04:37 phaller Exp $ */
2
3/*
4 * Project Odin Software License can be found in LICENSE.TXT
5 *
6 * ODIN FS: Selector function wrapper macros
7 *
8 * Copyright 1999 Patrick Haller
9 *
10 */
11
12
13#ifndef _ODINWRAP_H_
14#define _ODINWARP_H_
15
16
17/****************************************************************************
18 * Defines *
19 ****************************************************************************/
20
21
22#define ODIN_INTERNAL _Optlink
23
24
25#ifdef DEBUG
26# define ODINDEBUGCHANNEL(a) static char* pszOdinDebugChannel=#a;
27#else
28# define ODINDEBUGCHANNEL(a)
29#endif
30
31
32#ifdef DEBUG
33
34/****************************************************************************
35 * General Wrapper Macros (debug instrumented) *
36 ****************************************************************************/
37
38/* ---------- 0 parameters ---------- */
39#define ODINFUNCTION0(cRet,cName) \
40 cRet ODIN_INTERNAL ODIN_##cName (void); \
41 cRet WINAPI cName(void) \
42 { \
43 unsigned short sel = RestoreOS2FS(); \
44 dprintf(("%s: "#cRet" "#cName"() enter\n", \
45 pszOdinDebugChannel)); \
46 _heap_check(); \
47 cRet rc = ODIN_##cName(); \
48 _heap_check(); \
49 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
50 pszOdinDebugChannel, \
51 rc)); \
52 SetFS(sel); \
53 return rc; \
54 } \
55 \
56 cRet ODIN_INTERNAL ODIN_##cName (void)
57
58
59#define ODINPROCEDURE0(cName) \
60 void ODIN_INTERNAL ODIN_##cName (void); \
61 void WINAPI cName(void) \
62 { \
63 unsigned short sel = RestoreOS2FS(); \
64 dprintf(("%s: void "#cName"() enter\n", \
65 pszOdinDebugChannel)); \
66 _heap_check(); \
67 ODIN_##cName(); \
68 _heap_check(); \
69 dprintf(("%s: void "#cName"() leave\n", \
70 pszOdinDebugChannel)); \
71 SetFS(sel); \
72 } \
73 \
74 void ODIN_INTERNAL ODIN_##cName (void)
75
76
77/* ---------- 1 parameters ---------- */
78#define ODINFUNCTION1(cRet,cName,t1,a1) \
79 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
80 cRet WINAPI cName(t1 a1) \
81 { \
82 unsigned short sel = RestoreOS2FS(); \
83 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh) enter\n", \
84 pszOdinDebugChannel, \
85 a1)); \
86 _heap_check(); \
87 cRet rc = ODIN_##cName(a1); \
88 _heap_check(); \
89 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
90 pszOdinDebugChannel, \
91 rc)); \
92 SetFS(sel); \
93 return rc; \
94 } \
95 \
96 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
97
98#define ODINPROCEDURE1(cName,t1,a1) \
99 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
100 void WINAPI cName(t1 a1) \
101 { \
102 unsigned short sel = RestoreOS2FS(); \
103 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh) enter\n", \
104 pszOdinDebugChannel, \
105 a1)); \
106 _heap_check(); \
107 ODIN_##cName(a1); \
108 _heap_check(); \
109 dprintf(("%s: void "#cName"() leave\n", \
110 pszOdinDebugChannel)); \
111 SetFS(sel); \
112 } \
113 \
114 void ODIN_INTERNAL ODIN_##cName (t1 a1)
115
116
117/* ---------- 2 parameters ---------- */
118#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
119 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
120 cRet WINAPI cName(t1 a1,t2 a2) \
121 { \
122 unsigned short sel = RestoreOS2FS(); \
123 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh) enter\n", \
124 pszOdinDebugChannel, \
125 a1,a2)); \
126 _heap_check(); \
127 cRet rc = ODIN_##cName(a1,a2); \
128 _heap_check(); \
129 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
130 pszOdinDebugChannel, \
131 rc)); \
132 SetFS(sel); \
133 return rc; \
134 } \
135 \
136 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
137
138#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
139 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
140 void WINAPI cName(t1 a1,t2 a2) \
141 { \
142 unsigned short sel = RestoreOS2FS(); \
143 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh) enter\n", \
144 pszOdinDebugChannel, \
145 a1,a2)); \
146 _heap_check(); \
147 ODIN_##cName(a1,a2); \
148 _heap_check(); \
149 dprintf(("%s: void "#cName"() leave\n", \
150 pszOdinDebugChannel)); \
151 SetFS(sel); \
152 } \
153 \
154 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
155
156
157/* ---------- 3 parameters ---------- */
158#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
159 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
160 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
161 { \
162 unsigned short sel = RestoreOS2FS(); \
163 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh) enter\n", \
164 pszOdinDebugChannel, \
165 a1,a2,a3)); \
166 _heap_check(); \
167 cRet rc = ODIN_##cName(a1,a2,a3); \
168 _heap_check(); \
169 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
170 pszOdinDebugChannel, \
171 rc)); \
172 SetFS(sel); \
173 return rc; \
174 } \
175 \
176 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
177
178#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
179 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
180 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
181 { \
182 unsigned short sel = RestoreOS2FS(); \
183 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh) enter\n", \
184 pszOdinDebugChannel, \
185 a1,a2,a3)); \
186 _heap_check(); \
187 ODIN_##cName(a1,a2,a3); \
188 _heap_check(); \
189 dprintf(("%s: void "#cName"() leave\n", \
190 pszOdinDebugChannel)); \
191 SetFS(sel); \
192 } \
193 \
194 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
195
196
197/* ---------- 4 parameters ---------- */
198#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
199 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
200 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
201 { \
202 unsigned short sel = RestoreOS2FS(); \
203 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh) enter\n", \
204 pszOdinDebugChannel, \
205 a1,a2,a3,a4)); \
206 _heap_check(); \
207 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
208 _heap_check(); \
209 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
210 pszOdinDebugChannel, \
211 rc)); \
212 SetFS(sel); \
213 return rc; \
214 } \
215 \
216 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
217
218#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
219 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
220 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
221 { \
222 unsigned short sel = RestoreOS2FS(); \
223 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh) enter\n", \
224 pszOdinDebugChannel, \
225 a1,a2,a3,a4)); \
226 _heap_check(); \
227 ODIN_##cName(a1,a2,a3,a4); \
228 _heap_check(); \
229 dprintf(("%s: void "#cName"() leave\n", \
230 pszOdinDebugChannel)); \
231 SetFS(sel); \
232 } \
233 \
234 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
235
236
237/* ---------- 5 parameters ---------- */
238#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
239 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
240 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
241 { \
242 unsigned short sel = RestoreOS2FS(); \
243 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
244 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh) enter\n", \
245 pszOdinDebugChannel, \
246 a1,a2,a3,a4,a5)); \
247 _heap_check(); \
248 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
249 _heap_check(); \
250 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
251 pszOdinDebugChannel, \
252 rc)); \
253 SetFS(sel); \
254 return rc; \
255 } \
256 \
257 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
258
259#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
260 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
261 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
262 { \
263 unsigned short sel = RestoreOS2FS(); \
264 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
265 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh) enter\n", \
266 pszOdinDebugChannel, \
267 a1,a2,a3,a4,a5)); \
268 _heap_check(); \
269 ODIN_##cName(a1,a2,a3,a4,a5); \
270 _heap_check(); \
271 dprintf(("%s: void "#cName"() leave\n", \
272 pszOdinDebugChannel)); \
273 SetFS(sel); \
274 } \
275 \
276 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
277
278
279/* ---------- 6 parameters ---------- */
280#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
281 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
282 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
283 { \
284 unsigned short sel = RestoreOS2FS(); \
285 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
286 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh) enter\n", \
287 pszOdinDebugChannel, \
288 a1,a2,a3,a4,a5,a6)); \
289 _heap_check(); \
290 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
291 _heap_check(); \
292 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
293 pszOdinDebugChannel, \
294 rc)); \
295 SetFS(sel); \
296 return rc; \
297 } \
298 \
299 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
300
301#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
302 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
303 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
304 { \
305 unsigned short sel = RestoreOS2FS(); \
306 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
307 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh) enter\n", \
308 pszOdinDebugChannel, \
309 a1,a2,a3,a4,a5,a6)); \
310 _heap_check(); \
311 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
312 _heap_check(); \
313 dprintf(("%s: void "#cName"() leave\n", \
314 pszOdinDebugChannel)); \
315 SetFS(sel); \
316 } \
317 \
318 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
319
320
321/* ---------- 7 parameters ---------- */
322#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
323 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
324 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
325 { \
326 unsigned short sel = RestoreOS2FS(); \
327 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
328 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh) enter\n", \
329 pszOdinDebugChannel, \
330 a1,a2,a3,a4,a5,a6,a7)); \
331 _heap_check(); \
332 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
333 _heap_check(); \
334 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
335 pszOdinDebugChannel, \
336 rc)); \
337 SetFS(sel); \
338 return rc; \
339 } \
340 \
341 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
342
343#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
344 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
345 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
346 { \
347 unsigned short sel = RestoreOS2FS(); \
348 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
349 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh) enter\n", \
350 pszOdinDebugChannel, \
351 a1,a2,a3,a4,a5,a6,a7)); \
352 _heap_check(); \
353 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
354 _heap_check(); \
355 dprintf(("%s: void "#cName"() leave\n", \
356 pszOdinDebugChannel)); \
357 SetFS(sel); \
358 } \
359 \
360 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
361
362
363/* ---------- 8 parameters ---------- */
364#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
365 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
366 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
367 { \
368 unsigned short sel = RestoreOS2FS(); \
369 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
370 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
371 ", "#t8" "#a8"=%08xh) enter\n", \
372 pszOdinDebugChannel, \
373 a1,a2,a3,a4,a5,a6,a7,a8)); \
374 _heap_check(); \
375 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
376 _heap_check(); \
377 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
378 pszOdinDebugChannel, \
379 rc)); \
380 SetFS(sel); \
381 return rc; \
382 } \
383 \
384 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
385
386#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
387 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
388 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
389 { \
390 unsigned short sel = RestoreOS2FS(); \
391 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
392 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
393 ", "#t8" "#a8"=%08xh) enter\n", \
394 pszOdinDebugChannel, \
395 a1,a2,a3,a4,a5,a6,a7,a8)); \
396 _heap_check(); \
397 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
398 _heap_check(); \
399 dprintf(("%s: void "#cName"() leave\n", \
400 pszOdinDebugChannel)); \
401 SetFS(sel); \
402 } \
403 \
404 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
405
406
407/* ---------- 9 parameters ---------- */
408#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
409 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
410 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
411 { \
412 unsigned short sel = RestoreOS2FS(); \
413 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
414 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
415 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh) enter\n", \
416 pszOdinDebugChannel, \
417 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
418 _heap_check(); \
419 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
420 _heap_check(); \
421 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
422 pszOdinDebugChannel, \
423 rc)); \
424 SetFS(sel); \
425 return rc; \
426 } \
427 \
428 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
429
430#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
431 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
432 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
433 { \
434 unsigned short sel = RestoreOS2FS(); \
435 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
436 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
437 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh) enter\n", \
438 pszOdinDebugChannel, \
439 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
440 _heap_check(); \
441 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
442 _heap_check(); \
443 dprintf(("%s: void "#cName"() leave\n", \
444 pszOdinDebugChannel)); \
445 SetFS(sel); \
446 } \
447 \
448 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
449
450
451/* ---------- 10 parameters ---------- */
452#define ODINFUNCTION10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
453 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
454 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
455 { \
456 unsigned short sel = RestoreOS2FS(); \
457 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
458 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
459 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh) enter\n", \
460 pszOdinDebugChannel, \
461 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
462 _heap_check(); \
463 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
464 _heap_check(); \
465 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
466 pszOdinDebugChannel, \
467 rc)); \
468 SetFS(sel); \
469 return rc; \
470 } \
471 \
472 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
473
474#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
475 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
476 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
477 { \
478 unsigned short sel = RestoreOS2FS(); \
479 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
480 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
481 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh) enter\n", \
482 pszOdinDebugChannel, \
483 a1,a2,a3)); \
484 _heap_check(); \
485 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
486 _heap_check(); \
487 dprintf(("%s: void "#cName"() leave\n", \
488 pszOdinDebugChannel)); \
489 SetFS(sel); \
490 } \
491 \
492 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
493
494
495/* ---------- 11 parameters ---------- */
496#define ODINFUNCTION11(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
497 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
498 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
499 { \
500 unsigned short sel = RestoreOS2FS(); \
501 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
502 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
503 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh) enter\n", \
504 pszOdinDebugChannel, \
505 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
506 _heap_check(); \
507 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
508 _heap_check(); \
509 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
510 pszOdinDebugChannel, \
511 rc)); \
512 SetFS(sel); \
513 return rc; \
514 } \
515 \
516 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
517
518#define ODINPROCEDURE11(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
519 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
520 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
521 { \
522 unsigned short sel = RestoreOS2FS(); \
523 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
524 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
525 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh) enter\n", \
526 pszOdinDebugChannel, \
527 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
528 _heap_check(); \
529 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
530 _heap_check(); \
531 dprintf(("%s: void "#cName"() leave\n", \
532 pszOdinDebugChannel)); \
533 SetFS(sel); \
534 } \
535 \
536 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
537
538
539/* ---------- 12 parameters ---------- */
540#define ODINFUNCTION12(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
541 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
542 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
543 { \
544 unsigned short sel = RestoreOS2FS(); \
545 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
546 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
547 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
548 ", "#t12" "#a12"=%08xh) enter\n", \
549 pszOdinDebugChannel, \
550 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
551 _heap_check(); \
552 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
553 _heap_check(); \
554 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
555 pszOdinDebugChannel, \
556 rc)); \
557 SetFS(sel); \
558 return rc; \
559 } \
560 \
561 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
562
563#define ODINPROCEDURE12(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
564 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
565 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
566 { \
567 unsigned short sel = RestoreOS2FS(); \
568 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
569 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
570 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
571 ", "#t12" "#a12"=%08xh) enter\n", \
572 pszOdinDebugChannel, \
573 a1,a2,a3,a4,a5,a6,a7,a8,a9,10,a11,a12)); \
574 _heap_check(); \
575 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
576 _heap_check(); \
577 dprintf(("%s: void "#cName"() leave\n", \
578 pszOdinDebugChannel)); \
579 SetFS(sel); \
580 } \
581 \
582 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
583
584
585#else
586
587/****************************************************************************
588 * General Wrapper Macros *
589 ****************************************************************************/
590
591/* ---------- 0 parameters ---------- */
592#define ODINFUNCTION0(cRet,cName) \
593 cRet ODIN_INTERNAL ODIN_##cName (void);\
594 cRet WINAPI cName(void) \
595 { \
596 unsigned short sel = RestoreOS2FS(); \
597 cRet rc = ODIN_##cName(); \
598 SetFS(sel); \
599 return rc; \
600 } \
601 \
602 cRet ODIN_INTERNAL ODIN_##cName (void)
603
604
605#define ODINPROCEDURE0(cName) \
606 void ODIN_INTERNAL ODIN_##cName (void);\
607 void WINAPI cName(void) \
608 { \
609 unsigned short sel = RestoreOS2FS(); \
610 ODIN_##cName(); \
611 SetFS(sel); \
612 } \
613 \
614 void ODIN_INTERNAL ODIN_##cName (void)
615
616
617/* ---------- 1 parameters ---------- */
618#define ODINFUNCTION1(cRet,cName,t1,a1) \
619 cRet ODIN_INTERNAL ODIN_##cName (t1 a1);\
620 cRet WINAPI cName(t1 a1) \
621 { \
622 unsigned short sel = RestoreOS2FS(); \
623 cRet rc = ODIN_##cName(a1); \
624 SetFS(sel); \
625 return rc; \
626 } \
627 \
628 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
629
630#define ODINPROCEDURE1(cName,t1,a1) \
631 void ODIN_INTERNAL ODIN_##cName (t1 a1);\
632 void WINAPI cName(t1 a1) \
633 { \
634 unsigned short sel = RestoreOS2FS(); \
635 ODIN_##cName(a1); \
636 SetFS(sel); \
637 } \
638 \
639 void ODIN_INTERNAL ODIN_##cName (t1 a1)
640
641
642/* ---------- 2 parameters ---------- */
643#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
644 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
645 cRet WINAPI cName(t1 a1,t2 a2) \
646 { \
647 unsigned short sel = RestoreOS2FS(); \
648 cRet rc = ODIN_##cName(a1,a2); \
649 SetFS(sel); \
650 return rc; \
651 } \
652 \
653 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
654
655#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
656 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2);\
657 void WINAPI cName(t1 a1,t2 a2) \
658 { \
659 unsigned short sel = RestoreOS2FS(); \
660 ODIN_##cName(a1,a2); \
661 SetFS(sel); \
662 } \
663 \
664 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
665
666
667/* ---------- 3 parameters ---------- */
668#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
669 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
670 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
671 { \
672 unsigned short sel = RestoreOS2FS(); \
673 cRet rc = ODIN_##cName(a1,a2,a3); \
674 SetFS(sel); \
675 return rc; \
676 } \
677 \
678 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
679
680#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
681 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
682 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
683 { \
684 unsigned short sel = RestoreOS2FS(); \
685 ODIN_##cName(a1,a2,a3); \
686 SetFS(sel); \
687 } \
688 \
689 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
690
691
692/* ---------- 4 parameters ---------- */
693#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
694 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
695 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
696 { \
697 unsigned short sel = RestoreOS2FS(); \
698 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
699 SetFS(sel); \
700 return rc; \
701 } \
702 \
703 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
704
705#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
706 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
707 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
708 { \
709 unsigned short sel = RestoreOS2FS(); \
710 ODIN_##cName(a1,a2,a3,a4); \
711 SetFS(sel); \
712 } \
713 \
714 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
715
716
717/* ---------- 5 parameters ---------- */
718#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
719 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
720 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
721 { \
722 unsigned short sel = RestoreOS2FS(); \
723 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
724 SetFS(sel); \
725 return rc; \
726 } \
727 \
728 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
729
730#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
731 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
732 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
733 { \
734 unsigned short sel = RestoreOS2FS(); \
735 ODIN_##cName(a1,a2,a3,a4,a5); \
736 SetFS(sel); \
737 } \
738 \
739 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
740
741
742/* ---------- 6 parameters ---------- */
743#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
744 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
745 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
746 { \
747 unsigned short sel = RestoreOS2FS(); \
748 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
749 SetFS(sel); \
750 return rc; \
751 } \
752 \
753 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
754
755#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
756 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
757 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
758 { \
759 unsigned short sel = RestoreOS2FS(); \
760 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
761 SetFS(sel); \
762 } \
763 \
764 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
765
766
767/* ---------- 7 parameters ---------- */
768#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
769 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
770 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
771 { \
772 unsigned short sel = RestoreOS2FS(); \
773 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
774 SetFS(sel); \
775 return rc; \
776 } \
777 \
778 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
779
780#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
781 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
782 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
783 { \
784 unsigned short sel = RestoreOS2FS(); \
785 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
786 SetFS(sel); \
787 } \
788 \
789 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
790
791
792/* ---------- 8 parameters ---------- */
793#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
794 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
795 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
796 { \
797 unsigned short sel = RestoreOS2FS(); \
798 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
799 SetFS(sel); \
800 return rc; \
801 } \
802 \
803 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
804
805#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
806 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
807 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
808 { \
809 unsigned short sel = RestoreOS2FS(); \
810 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
811 SetFS(sel); \
812 } \
813 \
814 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
815
816
817/* ---------- 9 parameters ---------- */
818#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
819 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
820 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
821 { \
822 unsigned short sel = RestoreOS2FS(); \
823 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
824 SetFS(sel); \
825 return rc; \
826 } \
827 \
828 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
829
830#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
831 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
832 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
833 { \
834 unsigned short sel = RestoreOS2FS(); \
835 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
836 SetFS(sel); \
837 } \
838 \
839 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
840
841
842/* ---------- 10 parameters ---------- */
843#define ODINFUNCTION10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
844 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
845 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
846 { \
847 unsigned short sel = RestoreOS2FS(); \
848 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
849 SetFS(sel); \
850 return rc; \
851 } \
852 \
853 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
854
855#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
856 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
857 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
858 { \
859 unsigned short sel = RestoreOS2FS(); \
860 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
861 SetFS(sel); \
862 } \
863 \
864 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
865
866
867/* ---------- 11 parameters ---------- */
868#define ODINFUNCTION11(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
869 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
870 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
871 { \
872 unsigned short sel = RestoreOS2FS(); \
873 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
874 SetFS(sel); \
875 return rc; \
876 } \
877 \
878 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
879
880#define ODINPROCEDURE11(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
881 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
882 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
883 { \
884 unsigned short sel = RestoreOS2FS(); \
885 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
886 SetFS(sel); \
887 } \
888 \
889 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
890
891
892/* ---------- 12 parameters ---------- */
893#define ODINFUNCTION12(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
894 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
895 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
896 { \
897 unsigned short sel = RestoreOS2FS(); \
898 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
899 SetFS(sel); \
900 return rc; \
901 } \
902 \
903 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
904
905#define ODINPROCEDURE12(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
906 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
907 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
908 { \
909 unsigned short sel = RestoreOS2FS(); \
910 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
911 SetFS(sel); \
912 } \
913 \
914 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
915
916
917
918#endif
919
920#endif /* _ODINWRAP_H_ */
Note: See TracBrowser for help on using the repository browser.