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
RevLine 
[1437]1/* $Id: odinwrap.h,v 1.11 1999-10-25 15:04:37 phaller Exp $ */
[473]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
[537]21
[533]22#define ODIN_INTERNAL _Optlink
[473]23
24
[475]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
[473]34/****************************************************************************
[475]35 * General Wrapper Macros (debug instrumented) *
36 ****************************************************************************/
37
38/* ---------- 0 parameters ---------- */
39#define ODINFUNCTION0(cRet,cName) \
[484]40 cRet ODIN_INTERNAL ODIN_##cName (void); \
41 cRet WINAPI cName(void) \
[475]42 { \
43 unsigned short sel = RestoreOS2FS(); \
44 dprintf(("%s: "#cRet" "#cName"() enter\n", \
45 pszOdinDebugChannel)); \
[1437]46 _heap_check(); \
[594]47 cRet rc = ODIN_##cName(); \
[1437]48 _heap_check(); \
[475]49 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
50 pszOdinDebugChannel, \
51 rc)); \
52 SetFS(sel); \
53 return rc; \
54 } \
55 \
[484]56 cRet ODIN_INTERNAL ODIN_##cName (void)
[475]57
58
59#define ODINPROCEDURE0(cName) \
[484]60 void ODIN_INTERNAL ODIN_##cName (void); \
61 void WINAPI cName(void) \
[475]62 { \
63 unsigned short sel = RestoreOS2FS(); \
64 dprintf(("%s: void "#cName"() enter\n", \
65 pszOdinDebugChannel)); \
[1437]66 _heap_check(); \
[491]67 ODIN_##cName(); \
[1437]68 _heap_check(); \
[475]69 dprintf(("%s: void "#cName"() leave\n", \
70 pszOdinDebugChannel)); \
71 SetFS(sel); \
72 } \
73 \
[484]74 void ODIN_INTERNAL ODIN_##cName (void)
[475]75
76
77/* ---------- 1 parameters ---------- */
78#define ODINFUNCTION1(cRet,cName,t1,a1) \
[484]79 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
80 cRet WINAPI cName(t1 a1) \
[475]81 { \
82 unsigned short sel = RestoreOS2FS(); \
83 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh) enter\n", \
84 pszOdinDebugChannel, \
85 a1)); \
[1437]86 _heap_check(); \
[491]87 cRet rc = ODIN_##cName(a1); \
[1437]88 _heap_check(); \
[475]89 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
90 pszOdinDebugChannel, \
91 rc)); \
92 SetFS(sel); \
93 return rc; \
94 } \
95 \
[484]96 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
[475]97
98#define ODINPROCEDURE1(cName,t1,a1) \
[484]99 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
100 void WINAPI cName(t1 a1) \
[475]101 { \
102 unsigned short sel = RestoreOS2FS(); \
103 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh) enter\n", \
104 pszOdinDebugChannel, \
105 a1)); \
[1437]106 _heap_check(); \
[491]107 ODIN_##cName(a1); \
[1437]108 _heap_check(); \
[475]109 dprintf(("%s: void "#cName"() leave\n", \
110 pszOdinDebugChannel)); \
111 SetFS(sel); \
112 } \
113 \
[484]114 void ODIN_INTERNAL ODIN_##cName (t1 a1)
[475]115
116
117/* ---------- 2 parameters ---------- */
118#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
[484]119 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
120 cRet WINAPI cName(t1 a1,t2 a2) \
[475]121 { \
122 unsigned short sel = RestoreOS2FS(); \
123 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh) enter\n", \
124 pszOdinDebugChannel, \
125 a1,a2)); \
[1437]126 _heap_check(); \
[491]127 cRet rc = ODIN_##cName(a1,a2); \
[1437]128 _heap_check(); \
[475]129 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
130 pszOdinDebugChannel, \
131 rc)); \
132 SetFS(sel); \
133 return rc; \
134 } \
135 \
[484]136 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[475]137
138#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
[484]139 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
140 void WINAPI cName(t1 a1,t2 a2) \
[475]141 { \
142 unsigned short sel = RestoreOS2FS(); \
143 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh) enter\n", \
144 pszOdinDebugChannel, \
145 a1,a2)); \
[1437]146 _heap_check(); \
[491]147 ODIN_##cName(a1,a2); \
[1437]148 _heap_check(); \
[475]149 dprintf(("%s: void "#cName"() leave\n", \
150 pszOdinDebugChannel)); \
151 SetFS(sel); \
152 } \
153 \
[484]154 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[475]155
156
157/* ---------- 3 parameters ---------- */
158#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
[484]159 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
160 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
[475]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)); \
[1437]166 _heap_check(); \
[491]167 cRet rc = ODIN_##cName(a1,a2,a3); \
[1437]168 _heap_check(); \
[475]169 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
170 pszOdinDebugChannel, \
171 rc)); \
172 SetFS(sel); \
173 return rc; \
174 } \
175 \
[484]176 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]177
178#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
[484]179 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
180 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
[475]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)); \
[1437]186 _heap_check(); \
[491]187 ODIN_##cName(a1,a2,a3); \
[1437]188 _heap_check(); \
[475]189 dprintf(("%s: void "#cName"() leave\n", \
190 pszOdinDebugChannel)); \
191 SetFS(sel); \
192 } \
193 \
[484]194 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]195
196
197/* ---------- 4 parameters ---------- */
198#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]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) \
[475]201 { \
202 unsigned short sel = RestoreOS2FS(); \
[1437]203 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh) enter\n", \
[475]204 pszOdinDebugChannel, \
205 a1,a2,a3,a4)); \
[1437]206 _heap_check(); \
[491]207 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
[1437]208 _heap_check(); \
[475]209 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
210 pszOdinDebugChannel, \
211 rc)); \
212 SetFS(sel); \
213 return rc; \
214 } \
215 \
[484]216 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]217
218#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]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) \
[475]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)); \
[1437]226 _heap_check(); \
[491]227 ODIN_##cName(a1,a2,a3,a4); \
[1437]228 _heap_check(); \
[475]229 dprintf(("%s: void "#cName"() leave\n", \
230 pszOdinDebugChannel)); \
231 SetFS(sel); \
232 } \
233 \
[484]234 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]235
236
237/* ---------- 5 parameters ---------- */
238#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]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) \
[475]241 { \
242 unsigned short sel = RestoreOS2FS(); \
[1437]243 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
[475]244 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh) enter\n", \
245 pszOdinDebugChannel, \
246 a1,a2,a3,a4,a5)); \
[1437]247 _heap_check(); \
[491]248 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
[1437]249 _heap_check(); \
[475]250 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
251 pszOdinDebugChannel, \
252 rc)); \
253 SetFS(sel); \
254 return rc; \
255 } \
256 \
[484]257 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]258
259#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]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) \
[475]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)); \
[1437]268 _heap_check(); \
[491]269 ODIN_##cName(a1,a2,a3,a4,a5); \
[1437]270 _heap_check(); \
[475]271 dprintf(("%s: void "#cName"() leave\n", \
272 pszOdinDebugChannel)); \
273 SetFS(sel); \
274 } \
275 \
[484]276 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]277
278
279/* ---------- 6 parameters ---------- */
280#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]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) \
[475]283 { \
284 unsigned short sel = RestoreOS2FS(); \
[1437]285 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]286 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh) enter\n", \
[475]287 pszOdinDebugChannel, \
[1437]288 a1,a2,a3,a4,a5,a6)); \
289 _heap_check(); \
[491]290 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[1437]291 _heap_check(); \
[475]292 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
293 pszOdinDebugChannel, \
294 rc)); \
295 SetFS(sel); \
296 return rc; \
297 } \
298 \
[484]299 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]300
301#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]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) \
[475]304 { \
305 unsigned short sel = RestoreOS2FS(); \
[476]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", \
[475]308 pszOdinDebugChannel, \
[1437]309 a1,a2,a3,a4,a5,a6)); \
310 _heap_check(); \
[491]311 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[1437]312 _heap_check(); \
[475]313 dprintf(("%s: void "#cName"() leave\n", \
314 pszOdinDebugChannel)); \
315 SetFS(sel); \
316 } \
317 \
[484]318 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]319
320
321/* ---------- 7 parameters ---------- */
322#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]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) \
[475]325 { \
326 unsigned short sel = RestoreOS2FS(); \
[1437]327 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]328 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh) enter\n", \
[475]329 pszOdinDebugChannel, \
[1437]330 a1,a2,a3,a4,a5,a6,a7)); \
331 _heap_check(); \
[491]332 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[1437]333 _heap_check(); \
[475]334 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
335 pszOdinDebugChannel, \
336 rc)); \
337 SetFS(sel); \
338 return rc; \
339 } \
340 \
[484]341 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]342
343#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]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) \
[475]346 { \
347 unsigned short sel = RestoreOS2FS(); \
[476]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", \
[475]350 pszOdinDebugChannel, \
[1437]351 a1,a2,a3,a4,a5,a6,a7)); \
352 _heap_check(); \
[491]353 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[1437]354 _heap_check(); \
[475]355 dprintf(("%s: void "#cName"() leave\n", \
356 pszOdinDebugChannel)); \
357 SetFS(sel); \
358 } \
359 \
[484]360 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]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) \
[484]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) \
[475]367 { \
368 unsigned short sel = RestoreOS2FS(); \
[1437]369 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]370 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
371 ", "#t8" "#a8"=%08xh) enter\n", \
[475]372 pszOdinDebugChannel, \
[1437]373 a1,a2,a3,a4,a5,a6,a7,a8)); \
374 _heap_check(); \
[491]375 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[1437]376 _heap_check(); \
[475]377 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
378 pszOdinDebugChannel, \
379 rc)); \
380 SetFS(sel); \
381 return rc; \
382 } \
383 \
[484]384 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]385
386#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]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) \
[475]389 { \
390 unsigned short sel = RestoreOS2FS(); \
[476]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", \
[475]394 pszOdinDebugChannel, \
[1437]395 a1,a2,a3,a4,a5,a6,a7,a8)); \
396 _heap_check(); \
[491]397 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[1437]398 _heap_check(); \
[475]399 dprintf(("%s: void "#cName"() leave\n", \
400 pszOdinDebugChannel)); \
401 SetFS(sel); \
402 } \
403 \
[484]404 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]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) \
[484]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) \
[475]411 { \
412 unsigned short sel = RestoreOS2FS(); \
[476]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", \
[475]416 pszOdinDebugChannel, \
[1437]417 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
418 _heap_check(); \
[491]419 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[1437]420 _heap_check(); \
[475]421 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
422 pszOdinDebugChannel, \
423 rc)); \
424 SetFS(sel); \
425 return rc; \
426 } \
427 \
[484]428 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]429
430#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]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) \
[475]433 { \
434 unsigned short sel = RestoreOS2FS(); \
[476]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", \
[475]438 pszOdinDebugChannel, \
[1437]439 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
440 _heap_check(); \
[491]441 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[1437]442 _heap_check(); \
[475]443 dprintf(("%s: void "#cName"() leave\n", \
444 pszOdinDebugChannel)); \
445 SetFS(sel); \
446 } \
447 \
[484]448 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]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) \
[484]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) \
[475]455 { \
456 unsigned short sel = RestoreOS2FS(); \
[1437]457 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]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", \
[475]460 pszOdinDebugChannel, \
[1437]461 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
462 _heap_check(); \
[491]463 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[1437]464 _heap_check(); \
[475]465 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
466 pszOdinDebugChannel, \
467 rc)); \
468 SetFS(sel); \
469 return rc; \
470 } \
471 \
[484]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)
[475]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) \
[484]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) \
[475]477 { \
478 unsigned short sel = RestoreOS2FS(); \
[476]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", \
[475]482 pszOdinDebugChannel, \
483 a1,a2,a3)); \
[1437]484 _heap_check(); \
[491]485 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[1437]486 _heap_check(); \
[475]487 dprintf(("%s: void "#cName"() leave\n", \
488 pszOdinDebugChannel)); \
489 SetFS(sel); \
490 } \
491 \
[484]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)
[475]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) \
[484]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) \
[475]499 { \
500 unsigned short sel = RestoreOS2FS(); \
[1437]501 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]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", \
[475]504 pszOdinDebugChannel, \
[1437]505 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
506 _heap_check(); \
[491]507 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[1437]508 _heap_check(); \
[475]509 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
510 pszOdinDebugChannel, \
511 rc)); \
512 SetFS(sel); \
513 return rc; \
514 } \
515 \
[484]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)
[475]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) \
[484]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) \
[475]521 { \
522 unsigned short sel = RestoreOS2FS(); \
[476]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", \
[475]526 pszOdinDebugChannel, \
[1437]527 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
528 _heap_check(); \
[491]529 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[1437]530 _heap_check(); \
[475]531 dprintf(("%s: void "#cName"() leave\n", \
532 pszOdinDebugChannel)); \
533 SetFS(sel); \
534 } \
535 \
[484]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)
[475]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) \
[484]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) \
[475]543 { \
544 unsigned short sel = RestoreOS2FS(); \
[1437]545 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]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", \
[475]549 pszOdinDebugChannel, \
[1437]550 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
551 _heap_check(); \
[491]552 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[1437]553 _heap_check(); \
[475]554 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
555 pszOdinDebugChannel, \
556 rc)); \
557 SetFS(sel); \
558 return rc; \
559 } \
560 \
[484]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)
[475]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) \
[484]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) \
[475]566 { \
567 unsigned short sel = RestoreOS2FS(); \
[476]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", \
[475]572 pszOdinDebugChannel, \
[1437]573 a1,a2,a3,a4,a5,a6,a7,a8,a9,10,a11,a12)); \
574 _heap_check(); \
[491]575 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[1437]576 _heap_check(); \
[475]577 dprintf(("%s: void "#cName"() leave\n", \
578 pszOdinDebugChannel)); \
579 SetFS(sel); \
580 } \
581 \
[484]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)
[475]583
584
585#else
586
587/****************************************************************************
[473]588 * General Wrapper Macros *
589 ****************************************************************************/
590
591/* ---------- 0 parameters ---------- */
592#define ODINFUNCTION0(cRet,cName) \
[484]593 cRet ODIN_INTERNAL ODIN_##cName (void);\
594 cRet WINAPI cName(void) \
[473]595 { \
596 unsigned short sel = RestoreOS2FS(); \
[491]597 cRet rc = ODIN_##cName(); \
[473]598 SetFS(sel); \
599 return rc; \
600 } \
601 \
[484]602 cRet ODIN_INTERNAL ODIN_##cName (void)
[473]603
604
605#define ODINPROCEDURE0(cName) \
[484]606 void ODIN_INTERNAL ODIN_##cName (void);\
607 void WINAPI cName(void) \
[473]608 { \
609 unsigned short sel = RestoreOS2FS(); \
[491]610 ODIN_##cName(); \
[473]611 SetFS(sel); \
612 } \
613 \
[484]614 void ODIN_INTERNAL ODIN_##cName (void)
[473]615
616
617/* ---------- 1 parameters ---------- */
618#define ODINFUNCTION1(cRet,cName,t1,a1) \
[484]619 cRet ODIN_INTERNAL ODIN_##cName (t1 a1);\
620 cRet WINAPI cName(t1 a1) \
[473]621 { \
622 unsigned short sel = RestoreOS2FS(); \
[491]623 cRet rc = ODIN_##cName(a1); \
[473]624 SetFS(sel); \
625 return rc; \
626 } \
627 \
[484]628 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
[473]629
630#define ODINPROCEDURE1(cName,t1,a1) \
[484]631 void ODIN_INTERNAL ODIN_##cName (t1 a1);\
632 void WINAPI cName(t1 a1) \
[473]633 { \
634 unsigned short sel = RestoreOS2FS(); \
[491]635 ODIN_##cName(a1); \
[473]636 SetFS(sel); \
637 } \
638 \
[484]639 void ODIN_INTERNAL ODIN_##cName (t1 a1)
[473]640
641
642/* ---------- 2 parameters ---------- */
643#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
[484]644 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
645 cRet WINAPI cName(t1 a1,t2 a2) \
[473]646 { \
647 unsigned short sel = RestoreOS2FS(); \
[491]648 cRet rc = ODIN_##cName(a1,a2); \
[473]649 SetFS(sel); \
650 return rc; \
651 } \
652 \
[484]653 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[473]654
655#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
[484]656 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2);\
657 void WINAPI cName(t1 a1,t2 a2) \
[473]658 { \
659 unsigned short sel = RestoreOS2FS(); \
[491]660 ODIN_##cName(a1,a2); \
[473]661 SetFS(sel); \
662 } \
663 \
[484]664 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[473]665
666
667/* ---------- 3 parameters ---------- */
668#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
[484]669 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
670 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
[473]671 { \
672 unsigned short sel = RestoreOS2FS(); \
[491]673 cRet rc = ODIN_##cName(a1,a2,a3); \
[473]674 SetFS(sel); \
675 return rc; \
676 } \
677 \
[484]678 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[473]679
680#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
[484]681 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
682 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
[473]683 { \
684 unsigned short sel = RestoreOS2FS(); \
[491]685 ODIN_##cName(a1,a2,a3); \
[473]686 SetFS(sel); \
687 } \
688 \
[484]689 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[473]690
691
692/* ---------- 4 parameters ---------- */
693#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]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) \
[473]696 { \
697 unsigned short sel = RestoreOS2FS(); \
[491]698 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
[473]699 SetFS(sel); \
700 return rc; \
701 } \
702 \
[484]703 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[473]704
705#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]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) \
[473]708 { \
709 unsigned short sel = RestoreOS2FS(); \
[491]710 ODIN_##cName(a1,a2,a3,a4); \
[473]711 SetFS(sel); \
712 } \
713 \
[484]714 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[473]715
716
717/* ---------- 5 parameters ---------- */
718#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]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) \
[473]721 { \
722 unsigned short sel = RestoreOS2FS(); \
[491]723 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
[473]724 SetFS(sel); \
725 return rc; \
726 } \
727 \
[484]728 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[473]729
730#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]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) \
[473]733 { \
734 unsigned short sel = RestoreOS2FS(); \
[491]735 ODIN_##cName(a1,a2,a3,a4,a5); \
[473]736 SetFS(sel); \
737 } \
738 \
[484]739 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[473]740
741
742/* ---------- 6 parameters ---------- */
743#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]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) \
[473]746 { \
747 unsigned short sel = RestoreOS2FS(); \
[491]748 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[473]749 SetFS(sel); \
750 return rc; \
751 } \
752 \
[484]753 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[473]754
755#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]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) \
[473]758 { \
759 unsigned short sel = RestoreOS2FS(); \
[491]760 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[473]761 SetFS(sel); \
762 } \
763 \
[484]764 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[473]765
766
767/* ---------- 7 parameters ---------- */
768#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]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) \
[473]771 { \
772 unsigned short sel = RestoreOS2FS(); \
[491]773 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[473]774 SetFS(sel); \
775 return rc; \
776 } \
777 \
[484]778 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[473]779
780#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]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) \
[473]783 { \
784 unsigned short sel = RestoreOS2FS(); \
[491]785 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[473]786 SetFS(sel); \
787 } \
788 \
[484]789 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[473]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) \
[484]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) \
[473]796 { \
797 unsigned short sel = RestoreOS2FS(); \
[491]798 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[473]799 SetFS(sel); \
800 return rc; \
801 } \
802 \
[595]803 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[473]804
805#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]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) \
[473]808 { \
809 unsigned short sel = RestoreOS2FS(); \
[491]810 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[473]811 SetFS(sel); \
812 } \
813 \
[484]814 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[473]815
816
[475]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) \
[484]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) \
[475]821 { \
822 unsigned short sel = RestoreOS2FS(); \
[491]823 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[475]824 SetFS(sel); \
825 return rc; \
826 } \
827 \
[595]828 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[473]829
[475]830#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]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) \
[475]833 { \
834 unsigned short sel = RestoreOS2FS(); \
[491]835 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[475]836 SetFS(sel); \
837 } \
838 \
[484]839 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]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) \
[484]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) \
[475]846 { \
847 unsigned short sel = RestoreOS2FS(); \
[491]848 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[475]849 SetFS(sel); \
850 return rc; \
851 } \
852 \
[595]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)
[475]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) \
[484]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) \
[475]858 { \
859 unsigned short sel = RestoreOS2FS(); \
[491]860 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[475]861 SetFS(sel); \
862 } \
863 \
[484]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)
[475]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) \
[484]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) \
[475]871 { \
872 unsigned short sel = RestoreOS2FS(); \
[491]873 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[475]874 SetFS(sel); \
875 return rc; \
876 } \
877 \
[595]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)
[475]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) \
[484]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) \
[475]883 { \
884 unsigned short sel = RestoreOS2FS(); \
[491]885 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[475]886 SetFS(sel); \
887 } \
888 \
[484]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)
[475]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) \
[484]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) \
[475]896 { \
897 unsigned short sel = RestoreOS2FS(); \
[491]898 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[475]899 SetFS(sel); \
900 return rc; \
901 } \
902 \
[595]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)
[475]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) \
[484]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) \
[475]908 { \
909 unsigned short sel = RestoreOS2FS(); \
[491]910 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[475]911 SetFS(sel); \
912 } \
913 \
[484]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)
[475]915
916
917
918#endif
919
[473]920#endif /* _ODINWRAP_H_ */
Note: See TracBrowser for help on using the repository browser.