source: trunk/include/odinwrap.h@ 1489

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

Fix: include malloc.h

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