source: trunk/include/odinwrap.h@ 7326

Last change on this file since 7326 was 7326, checked in by phaller, 24 years ago

.

File size: 58.8 KB
RevLine 
[6893]1/*
[473]2 * Project Odin Software License can be found in LICENSE.TXT
3 *
4 * ODIN FS: Selector function wrapper macros
5 *
6 * Copyright 1999 Patrick Haller
7 *
8 */
9
10
11#ifndef _ODINWRAP_H_
[1545]12#define _ODINWRAP_H_
[473]13
[2341]14#include <os2sel.h>
[473]15
16/****************************************************************************
17 * Defines *
18 ****************************************************************************/
19
[3467]20// override debugging
21//#undef DEBUG
22//#define DEBUG
[537]23
[3467]24// override profiling
[4770]25//#undef PROFILE
26//#define PROFILE
[3467]27
28
29
[533]30#define ODIN_INTERNAL _Optlink
[473]31
32
[475]33#ifdef DEBUG
34# define ODINDEBUGCHANNEL(a) static char* pszOdinDebugChannel=#a;
[4124]35# define ODINDEBUGCHANNEL1(a) static char* pszOdinDebugChannel1=#a;
[475]36#else
37# define ODINDEBUGCHANNEL(a)
[4124]38# define ODINDEBUGCHANNEL1(a)
[475]39#endif
40
41
[1642]42//SvL: Define this to use the internal wrapper function of a specific api
[4387]43#ifdef DEBUG
44#define ODIN_EXTERN(a) ODIN_INTERNAL ODIN_##a
45#define CALL_ODINFUNC(a) ODIN_##a
46#else
47#define ODIN_EXTERN(a) ODIN_INTERNAL a
48#define CALL_ODINFUNC(a) a
49#endif
[1642]50
[4377]51
[475]52#ifdef DEBUG
53
[1439]54//@@@PH 1999/10/25 IBM VAC++ debug memory support
55#include <malloc.h>
[4393]56#include <odin.h>
[1439]57
[4377]58// ---------------------------------------------------------------------------
[6912]59#ifdef __WATCOMC__
60//this doens't work with watcom because doubly declared somewhere :-(
61//extern unsigned long int WIN32API GetCurrentThreadId(void); // kernel32
62#else
63extern unsigned long int WIN32API GetCurrentThreadId(void); // kernel32
64#endif
65extern unsigned long int WIN32API dbg_GetThreadCallDepth(void); // kernel32
66extern void WIN32API dbg_IncThreadCallDepth(void); // kernel32
67extern void WIN32API dbg_DecThreadCallDepth(void); // kernel32
[7326]68extern void WIN32API dbg_ThreadPushCall(char *pszCaller);
69extern void WIN32API dbg_ThreadPopCall();
70extern char* WIN32API dbg_GetLastCallerName();
[1669]71
[7326]72
73
[4377]74// ---------------------------------------------------------------------------
[1545]75//SvL: Only check the heap very frequently when there are problems
76//#define DEBUG_ODINHEAP
77#ifdef DEBUG_ODINHEAP
78#define ODIN_HEAPCHECK() _heap_check()
79#else
80#define ODIN_HEAPCHECK()
81#endif
82
[4377]83
84// ---------------------------------------------------------------------------
[3467]85// PH: this is for profiling cumulative method call times
[4770]86#ifdef PROFILE
[3467]87
[7010]88#include <perfview.h>
89
90
[7002]91#define FNINIT \
92 LARGE_INTEGER liStart; \
93 LARGE_INTEGER liEnd; \
94 unsigned long ulElapsed; \
95 unsigned short sel;
96
[3467]97# define PROFILE_START(a) \
98 QueryPerformanceCounter(&liStart);
[6912]99
100
[3467]101# define PROFILE_STOP(a) \
102 QueryPerformanceCounter(&liEnd);\
103 if (liStart.LowPart > liEnd.LowPart) \
104 ulElapsed = 0xFFFFFFFF - liStart.LowPart + liEnd.LowPart; \
105 else \
106 ulElapsed = liEnd.LowPart - liStart.LowPart; \
107 \
[7326]108 PerfView_RegisterCall(dbg_GetLastCallerName(), a, ulElapsed); \
[7010]109 \
[3467]110 dprintf(("%s: %s %u ticks\n",\
111 pszOdinDebugChannel,\
112 a, \
113 ulElapsed));
114#else
115# define PROFILE_START(a)
116# define PROFILE_STOP(a)
117#endif
118
[7076]119
120
121#if defined(PROFILE) || defined(DEBUG)
122
[7002]123#ifndef FNINIT
[6997]124#define FNINIT \
125 unsigned short sel;
[7002]126#endif
[4377]127
128#define FNPROLOGUE(a) \
[6997]129 sel = GetFS(); \
[7326]130 dbg_ThreadPushCall(a); \
[4377]131 ODIN_HEAPCHECK(); \
132 PROFILE_START(a)
133
134#define FNEPILOGUE(a) \
135 PROFILE_STOP(a) \
136 ODIN_HEAPCHECK(); \
[7326]137 dbg_ThreadPopCall(); \
[5276]138 if (sel != GetFS()) { \
139 SetFS(sel); \
140 dprintf(("WARNING: FS: for thread %08xh corrupted by "a, GetCurrentThreadId())); \
141 }
[6912]142
[7076]143#endif
[6912]144
[7076]145
146#if defined(RELEASE)
147
148#define FNINIT
149#define FNPROLOGUE(a)
150#define FNEPILOGUE(a)
151
152#endif
153
154// check if all macros are defined
155#ifndef FNINIT
156#error FNINIT not defined: DEBUG, PROFILE, or RELEASE not specified
157#endif
158
159#ifndef FNPROLOGUE
160#error FNPROLOGUE not defined: DEBUG, PROFILE, or RELEASE not specified
161#endif
162
163#ifndef FNEPILOGUE
164#error FNEPILOGUE not defined: DEBUG, PROFILE, or RELEASE not specified
165#endif
166
167
[473]168/****************************************************************************
[475]169 * General Wrapper Macros (debug instrumented) *
170 ****************************************************************************/
171
172/* ---------- 0 parameters ---------- */
173#define ODINFUNCTION0(cRet,cName) \
[3467]174 cRet ODIN_INTERNAL ODIN_##cName (void); \
175 cRet WINAPI cName(void) \
[475]176 { \
[6997]177 FNINIT \
178 cRet rc; \
[4393]179 dprintf(("%s: "#cRet" "#cName"()", \
[475]180 pszOdinDebugChannel)); \
[4377]181 FNPROLOGUE(#cName) \
[6997]182 rc = ODIN_##cName(); \
[4377]183 FNEPILOGUE(#cName) \
[4393]184 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
185 pszOdinDebugChannel, \
186 rc)); \
[475]187 return rc; \
188 } \
189 \
[484]190 cRet ODIN_INTERNAL ODIN_##cName (void)
[475]191
192
193#define ODINPROCEDURE0(cName) \
[3467]194 void ODIN_INTERNAL ODIN_##cName (void); \
195 void WINAPI cName(void) \
[475]196 { \
[6997]197 FNINIT \
[4393]198 dprintf(("%s: void "#cName"()", \
[475]199 pszOdinDebugChannel)); \
[4377]200 FNPROLOGUE(#cName) \
[3467]201 ODIN_##cName(); \
[6829]202 FNEPILOGUE(#cName) \
[3467]203 dprintf(("%s: void "#cName"() leave\n", \
[475]204 pszOdinDebugChannel)); \
205 } \
206 \
[484]207 void ODIN_INTERNAL ODIN_##cName (void)
[475]208
209
210/* ---------- 1 parameters ---------- */
211#define ODINFUNCTION1(cRet,cName,t1,a1) \
[3467]212 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
213 cRet WINAPI cName(t1 a1) \
[475]214 { \
[6997]215 FNINIT \
216 cRet rc; \
[4393]217 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh)", \
[475]218 pszOdinDebugChannel, \
219 a1)); \
[6997]220 FNPROLOGUE(#cName) \
221 rc = ODIN_##cName(a1); \
[6829]222 FNEPILOGUE(#cName) \
[475]223 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
224 pszOdinDebugChannel, \
225 rc)); \
226 return rc; \
227 } \
228 \
[484]229 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
[475]230
231#define ODINPROCEDURE1(cName,t1,a1) \
[3467]232 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
233 void WINAPI cName(t1 a1) \
[475]234 { \
[6997]235 FNINIT \
[4393]236 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh)", \
[475]237 pszOdinDebugChannel, \
238 a1)); \
[4377]239 FNPROLOGUE(#cName) \
[3467]240 ODIN_##cName(a1); \
[6829]241 FNEPILOGUE(#cName) \
[3467]242 dprintf(("%s: void "#cName"() leave\n", \
[475]243 pszOdinDebugChannel)); \
244 } \
245 \
[484]246 void ODIN_INTERNAL ODIN_##cName (t1 a1)
[475]247
248
249/* ---------- 2 parameters ---------- */
250#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
[3467]251 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
252 cRet WINAPI cName(t1 a1,t2 a2) \
[475]253 { \
[6997]254 FNINIT \
255 cRet rc; \
[4393]256 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
[3467]257 pszOdinDebugChannel, \
258 a1,a2)); \
[4377]259 FNPROLOGUE(#cName) \
[6997]260 rc = ODIN_##cName(a1,a2); \
261 FNEPILOGUE(#cName) \
[475]262 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
[3467]263 pszOdinDebugChannel, \
264 rc)); \
265 return rc; \
266 } \
267 \
[484]268 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[475]269
270#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
[484]271 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
[3467]272 void WINAPI cName(t1 a1,t2 a2) \
[475]273 { \
[6997]274 FNINIT \
[4393]275 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
[475]276 pszOdinDebugChannel, \
277 a1,a2)); \
[4377]278 FNPROLOGUE(#cName) \
[3467]279 ODIN_##cName(a1,a2); \
[6829]280 FNEPILOGUE(#cName) \
[3467]281 dprintf(("%s: void "#cName"() leave\n", \
[475]282 pszOdinDebugChannel)); \
283 } \
284 \
[484]285 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[475]286
287
288/* ---------- 3 parameters ---------- */
289#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
[484]290 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
291 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
[3467]292 { \
[6997]293 FNINIT \
294 cRet rc; \
[4393]295 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
[475]296 pszOdinDebugChannel, \
297 a1,a2,a3)); \
[4377]298 FNPROLOGUE(#cName) \
[6997]299 rc = ODIN_##cName(a1,a2,a3); \
[6829]300 FNEPILOGUE(#cName) \
[475]301 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
302 pszOdinDebugChannel, \
303 rc)); \
304 return rc; \
305 } \
306 \
[484]307 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]308
309#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
[484]310 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
311 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
[475]312 { \
[6997]313 FNINIT \
[4393]314 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
[475]315 pszOdinDebugChannel, \
316 a1,a2,a3)); \
[4377]317 FNPROLOGUE(#cName) \
[491]318 ODIN_##cName(a1,a2,a3); \
[6829]319 FNEPILOGUE(#cName) \
[5759]320 dprintf(("%s: void "#cName"() leave\n", \
[475]321 pszOdinDebugChannel)); \
322 } \
323 \
[484]324 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]325
326
327/* ---------- 4 parameters ---------- */
328#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]329 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
330 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[475]331 { \
[6997]332 FNINIT \
333 cRet rc; \
[4393]334 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
[475]335 pszOdinDebugChannel, \
336 a1,a2,a3,a4)); \
[4377]337 FNPROLOGUE(#cName) \
[6997]338 rc = ODIN_##cName(a1,a2,a3,a4); \
[6829]339 FNEPILOGUE(#cName) \
[475]340 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
341 pszOdinDebugChannel, \
342 rc)); \
343 return rc; \
344 } \
345 \
[484]346 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]347
348#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]349 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
350 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[475]351 { \
[6997]352 FNINIT \
[4393]353 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
[475]354 pszOdinDebugChannel, \
355 a1,a2,a3,a4)); \
[4377]356 FNPROLOGUE(#cName) \
[491]357 ODIN_##cName(a1,a2,a3,a4); \
[6829]358 FNEPILOGUE(#cName) \
[5759]359 dprintf(("%s: void "#cName"() leave\n", \
[475]360 pszOdinDebugChannel)); \
361 } \
362 \
[484]363 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]364
365
366/* ---------- 5 parameters ---------- */
367#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]368 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
369 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[475]370 { \
[6997]371 FNINIT \
372 cRet rc; \
[4393]373 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
[4377]374 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
[475]375 pszOdinDebugChannel, \
376 a1,a2,a3,a4,a5)); \
[4377]377 FNPROLOGUE(#cName) \
[6997]378 rc = ODIN_##cName(a1,a2,a3,a4,a5); \
[6829]379 FNEPILOGUE(#cName) \
[475]380 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
381 pszOdinDebugChannel, \
382 rc)); \
383 return rc; \
384 } \
385 \
[484]386 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]387
388#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]389 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
390 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[475]391 { \
[6997]392 FNINIT \
[4393]393 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]394 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
[475]395 pszOdinDebugChannel, \
396 a1,a2,a3,a4,a5)); \
[4377]397 FNPROLOGUE(#cName) \
[491]398 ODIN_##cName(a1,a2,a3,a4,a5); \
[6829]399 FNEPILOGUE(#cName) \
[5759]400 dprintf(("%s: void "#cName"() leave\n", \
[475]401 pszOdinDebugChannel)); \
402 } \
403 \
[484]404 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]405
406
407/* ---------- 6 parameters ---------- */
408#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]409 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
410 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[475]411 { \
[6997]412 FNINIT \
413 cRet rc; \
[4393]414 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]415 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
[475]416 pszOdinDebugChannel, \
[1437]417 a1,a2,a3,a4,a5,a6)); \
[4377]418 FNPROLOGUE(#cName) \
[6997]419 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[6829]420 FNEPILOGUE(#cName) \
[475]421 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
422 pszOdinDebugChannel, \
423 rc)); \
424 return rc; \
425 } \
426 \
[484]427 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]428
429#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]430 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
431 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[475]432 { \
[6997]433 FNINIT \
[4393]434 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]435 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
[475]436 pszOdinDebugChannel, \
[1437]437 a1,a2,a3,a4,a5,a6)); \
[4377]438 FNPROLOGUE(#cName) \
[491]439 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[6829]440 FNEPILOGUE(#cName) \
[475]441 dprintf(("%s: void "#cName"() leave\n", \
442 pszOdinDebugChannel)); \
443 } \
444 \
[484]445 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]446
447
448/* ---------- 7 parameters ---------- */
449#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]450 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
451 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[475]452 { \
[6997]453 FNINIT \
454 cRet rc; \
[4393]455 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]456 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
[475]457 pszOdinDebugChannel, \
[1437]458 a1,a2,a3,a4,a5,a6,a7)); \
[4377]459 FNPROLOGUE(#cName) \
[6997]460 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[6829]461 FNEPILOGUE(#cName) \
[475]462 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
463 pszOdinDebugChannel, \
464 rc)); \
465 return rc; \
466 } \
467 \
[484]468 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]469
470#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]471 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
472 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[475]473 { \
[6997]474 FNINIT \
[4393]475 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[4377]476 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
[475]477 pszOdinDebugChannel, \
[1437]478 a1,a2,a3,a4,a5,a6,a7)); \
[4377]479 FNPROLOGUE(#cName) \
[491]480 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[6829]481 FNEPILOGUE(#cName) \
[475]482 dprintf(("%s: void "#cName"() leave\n", \
483 pszOdinDebugChannel)); \
484 } \
485 \
[484]486 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]487
488
489/* ---------- 8 parameters ---------- */
490#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]491 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
492 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[475]493 { \
[6997]494 FNINIT \
495 cRet rc; \
[4393]496 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]497 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]498 ", "#t8" "#a8"=%08xh)", \
[475]499 pszOdinDebugChannel, \
[1437]500 a1,a2,a3,a4,a5,a6,a7,a8)); \
[4377]501 FNPROLOGUE(#cName) \
[6997]502 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[6829]503 FNEPILOGUE(#cName) \
[475]504 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
505 pszOdinDebugChannel, \
506 rc)); \
507 return rc; \
508 } \
509 \
[484]510 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]511
512#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]513 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
514 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[475]515 { \
[6997]516 FNINIT \
[4393]517 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]518 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]519 ", "#t8" "#a8"=%08xh)", \
[475]520 pszOdinDebugChannel, \
[1437]521 a1,a2,a3,a4,a5,a6,a7,a8)); \
[4377]522 FNPROLOGUE(#cName) \
[491]523 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[6829]524 FNEPILOGUE(#cName) \
[475]525 dprintf(("%s: void "#cName"() leave\n", \
526 pszOdinDebugChannel)); \
527 } \
528 \
[484]529 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]530
531
532/* ---------- 9 parameters ---------- */
533#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]534 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
535 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]536 { \
[6997]537 FNINIT \
538 cRet rc; \
[4393]539 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]540 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]541 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
[475]542 pszOdinDebugChannel, \
[1437]543 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
[4377]544 FNPROLOGUE(#cName) \
[6997]545 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[6829]546 FNEPILOGUE(#cName) \
[475]547 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
548 pszOdinDebugChannel, \
549 rc)); \
550 return rc; \
551 } \
552 \
[484]553 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]554
555#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]556 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
557 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]558 { \
[6997]559 FNINIT \
[4393]560 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]561 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]562 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
[475]563 pszOdinDebugChannel, \
[1437]564 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
[4377]565 FNPROLOGUE(#cName) \
[491]566 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[6829]567 FNEPILOGUE(#cName) \
[475]568 dprintf(("%s: void "#cName"() leave\n", \
569 pszOdinDebugChannel)); \
570 } \
571 \
[484]572 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]573
574
575/* ---------- 10 parameters ---------- */
576#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]577 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); \
578 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]579 { \
[6997]580 FNINIT \
581 cRet rc; \
[4393]582 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]583 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]584 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
[475]585 pszOdinDebugChannel, \
[1437]586 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
[4377]587 FNPROLOGUE(#cName) \
[6997]588 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[6829]589 FNEPILOGUE(#cName) \
[475]590 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
591 pszOdinDebugChannel, \
592 rc)); \
593 return rc; \
594 } \
595 \
[484]596 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]597
598#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
[484]599 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); \
600 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]601 { \
[6997]602 FNINIT \
[4393]603 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]604 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]605 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
[475]606 pszOdinDebugChannel, \
607 a1,a2,a3)); \
[4377]608 FNPROLOGUE(#cName) \
[491]609 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[6829]610 FNEPILOGUE(#cName) \
[475]611 dprintf(("%s: void "#cName"() leave\n", \
612 pszOdinDebugChannel)); \
613 } \
614 \
[484]615 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]616
617
618/* ---------- 11 parameters ---------- */
619#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]620 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); \
621 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]622 { \
[6997]623 FNINIT \
624 cRet rc; \
[4393]625 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]626 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]627 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
[475]628 pszOdinDebugChannel, \
[1437]629 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
[4377]630 FNPROLOGUE(#cName) \
[6997]631 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[6829]632 FNEPILOGUE(#cName) \
[475]633 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
634 pszOdinDebugChannel, \
635 rc)); \
636 return rc; \
637 } \
638 \
[484]639 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]640
641#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]642 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); \
643 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]644 { \
[6997]645 FNINIT \
[4393]646 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]647 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]648 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
[475]649 pszOdinDebugChannel, \
[1437]650 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
[4377]651 FNPROLOGUE(#cName) \
[491]652 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[6829]653 FNEPILOGUE(#cName) \
[475]654 dprintf(("%s: void "#cName"() leave\n", \
655 pszOdinDebugChannel)); \
656 } \
657 \
[484]658 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]659
660
661/* ---------- 12 parameters ---------- */
662#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]663 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); \
664 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]665 { \
[6997]666 FNINIT \
667 cRet rc; \
[4393]668 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]669 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
670 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]671 ", "#t12" "#a12"=%08xh)", \
[475]672 pszOdinDebugChannel, \
[1437]673 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
[4377]674 FNPROLOGUE(#cName) \
[6997]675 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[6829]676 FNEPILOGUE(#cName) \
[475]677 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
678 pszOdinDebugChannel, \
679 rc)); \
680 return rc; \
681 } \
682 \
[484]683 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]684
685#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]686 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); \
687 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]688 { \
[6997]689 FNINIT \
[4393]690 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]691 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
692 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]693 ", "#t12" "#a12"=%08xh)", \
[475]694 pszOdinDebugChannel, \
[1696]695 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
[4377]696 FNPROLOGUE(#cName) \
[491]697 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[6829]698 FNEPILOGUE(#cName) \
[475]699 dprintf(("%s: void "#cName"() leave\n", \
700 pszOdinDebugChannel)); \
701 } \
702 \
[484]703 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]704
705
[1696]706/* ---------- 13 parameters ---------- */
707#define ODINFUNCTION13(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,t13,a13) \
708 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,t13 a13); \
709 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,t13 a13) \
710 { \
[6997]711 FNINIT \
712 cRet rc; \
[4393]713 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]714 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
715 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]716 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh)", \
[1696]717 pszOdinDebugChannel, \
718 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
[4377]719 FNPROLOGUE(#cName) \
[6997]720 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
[6829]721 FNEPILOGUE(#cName) \
[1696]722 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
723 pszOdinDebugChannel, \
724 rc)); \
725 return rc; \
726 } \
727 \
728 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,t13 a13)
729
730#define ODINPROCEDURE13(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,t13,a13) \
731 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,t13 a13); \
732 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,t13 a13) \
733 { \
[6997]734 FNINIT \
[4393]735 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]736 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
737 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]738 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, )", \
[1696]739 pszOdinDebugChannel, \
740 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
[4377]741 FNPROLOGUE(#cName) \
[1696]742 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
[6829]743 FNEPILOGUE(#cName) \
[1696]744 dprintf(("%s: void "#cName"() leave\n", \
745 pszOdinDebugChannel)); \
746 } \
747 \
748 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,t13 a13)
749
750
751/* ---------- 14 parameters ---------- */
752#define ODINFUNCTION14(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,t13,a13,t14,a14) \
753 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,t13 a13,t14 a14); \
754 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,t13 a13,t14 a14) \
755 { \
[6997]756 FNINIT \
757 cRet rc; \
[4393]758 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]759 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
760 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]761 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
[1696]762 pszOdinDebugChannel, \
763 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
[4377]764 FNPROLOGUE(#cName) \
[6997]765 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
[6829]766 FNEPILOGUE(#cName) \
[1696]767 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
768 pszOdinDebugChannel, \
769 rc)); \
770 return rc; \
771 } \
772 \
773 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,t13 a13,t14 a14)
774
775#define ODINPROCEDURE14(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,t13,a13,t14,a14) \
[1953]776 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,t13 a13,t14 a14); \
[1696]777 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,t13 a13,t14 a14) \
778 { \
[6997]779 FNINIT \
[4393]780 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]781 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
782 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]783 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
[1696]784 pszOdinDebugChannel, \
785 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
[4377]786 FNPROLOGUE(#cName) \
[1696]787 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
[6829]788 FNEPILOGUE(#cName) \
[1696]789 dprintf(("%s: void "#cName"() leave\n", \
790 pszOdinDebugChannel)); \
791 } \
792 \
793 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,t13 a13,t14 a14)
794
795
[475]796#else
797
798/****************************************************************************
[473]799 * General Wrapper Macros *
800 ****************************************************************************/
801
[6997]802#define FNINIT \
803 unsigned short sel;
804
[5759]805#define FNPROLOGUE(a) \
[6997]806 sel = GetFS();
[5759]807
808#define FNEPILOGUE(a) \
809 SetFS(sel);
810
[4377]811#define ODINFUNCTION0 ODINFUNCTIONNODBG0
[4386]812#define ODINFUNCTION1 ODINFUNCTIONNODBG1
813#define ODINFUNCTION2 ODINFUNCTIONNODBG2
814#define ODINFUNCTION3 ODINFUNCTIONNODBG3
815#define ODINFUNCTION4 ODINFUNCTIONNODBG4
816#define ODINFUNCTION5 ODINFUNCTIONNODBG5
817#define ODINFUNCTION6 ODINFUNCTIONNODBG6
818#define ODINFUNCTION7 ODINFUNCTIONNODBG7
819#define ODINFUNCTION8 ODINFUNCTIONNODBG8
820#define ODINFUNCTION9 ODINFUNCTIONNODBG9
[4377]821#define ODINFUNCTION10 ODINFUNCTIONNODBG10
822#define ODINFUNCTION11 ODINFUNCTIONNODBG11
823#define ODINFUNCTION12 ODINFUNCTIONNODBG12
824#define ODINFUNCTION13 ODINFUNCTIONNODBG13
825#define ODINFUNCTION14 ODINFUNCTIONNODBG14
[473]826
[4377]827#define ODINPROCEDURE0 ODINPROCEDURENODBG0
[4386]828#define ODINPROCEDURE1 ODINPROCEDURENODBG1
829#define ODINPROCEDURE2 ODINPROCEDURENODBG2
830#define ODINPROCEDURE3 ODINPROCEDURENODBG3
831#define ODINPROCEDURE4 ODINPROCEDURENODBG4
832#define ODINPROCEDURE5 ODINPROCEDURENODBG5
833#define ODINPROCEDURE6 ODINPROCEDURENODBG6
834#define ODINPROCEDURE7 ODINPROCEDURENODBG7
835#define ODINPROCEDURE8 ODINPROCEDURENODBG8
836#define ODINPROCEDURE9 ODINPROCEDURENODBG9
[4377]837#define ODINPROCEDURE10 ODINPROCEDURENODBG10
838#define ODINPROCEDURE11 ODINPROCEDURENODBG11
839#define ODINPROCEDURE12 ODINPROCEDURENODBG12
840#define ODINPROCEDURE13 ODINPROCEDURENODBG13
841#define ODINPROCEDURE14 ODINPROCEDURENODBG14
[473]842
[475]843#endif
844
[1669]845/****************************************************************************
846 * General Wrapper Macros *
847 ****************************************************************************/
848
[5759]849
[1669]850/* ---------- 0 parameters ---------- */
[5759]851#define ODINFUNCTIONNODBG0(cRet,cName) \
852 cRet ODIN_INTERNAL ODIN_##cName (void); \
853 cRet WINAPI cName(void) \
854 { \
[6997]855 FNINIT \
856 cRet rc; \
[5759]857 FNPROLOGUE(#cName) \
[6997]858 rc = ODIN_##cName(); \
[5759]859 FNEPILOGUE(#cName) \
860 return rc; \
861 } \
862 \
863 cRet ODIN_INTERNAL ODIN_##cName (void)
[1669]864
[5759]865
866#define ODINPROCEDURENODBG0(cName) \
867 void ODIN_INTERNAL ODIN_##cName (void); \
868 void WINAPI cName(void) \
869 { \
[6997]870 FNINIT \
[5759]871 FNPROLOGUE(#cName) \
872 ODIN_##cName(); \
873 FNEPILOGUE(#cName) \
874 } \
875 \
876 void ODIN_INTERNAL ODIN_##cName (void)
877
878
[1669]879/* ---------- 1 parameters ---------- */
[5759]880#define ODINFUNCTIONNODBG1(cRet,cName,t1,a1) \
881 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
882 cRet WINAPI cName(t1 a1) \
883 { \
[6997]884 FNINIT \
885 cRet rc; \
[5759]886 FNPROLOGUE(#cName) \
[6997]887 rc = ODIN_##cName(a1); \
[5759]888 FNEPILOGUE(#cName) \
889 return rc; \
890 } \
891 \
892 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
[1669]893
[5759]894#define ODINPROCEDURENODBG1(cName,t1,a1) \
895 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
896 void WINAPI cName(t1 a1) \
897 { \
[6997]898 FNINIT \
[5759]899 FNPROLOGUE(#cName) \
900 ODIN_##cName(a1); \
901 FNEPILOGUE(#cName) \
902 } \
903 \
904 void ODIN_INTERNAL ODIN_##cName (t1 a1)
905
906
[1669]907/* ---------- 2 parameters ---------- */
[5759]908#define ODINFUNCTIONNODBG2(cRet,cName,t1,a1,t2,a2) \
909 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
910 cRet WINAPI cName(t1 a1,t2 a2) \
911 { \
[6997]912 FNINIT \
913 cRet rc; \
[5759]914 FNPROLOGUE(#cName) \
[6997]915 rc = ODIN_##cName(a1,a2); \
[5759]916 FNEPILOGUE(#cName) \
917 return rc; \
918 } \
919 \
920 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[1669]921
[5759]922#define ODINPROCEDURENODBG2(cName,t1,a1,t2,a2) \
923 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
924 void WINAPI cName(t1 a1,t2 a2) \
925 { \
[6997]926 FNINIT \
[5759]927 FNPROLOGUE(#cName) \
928 ODIN_##cName(a1,a2); \
929 FNEPILOGUE(#cName) \
930 } \
931 \
932 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
933
934
[1669]935/* ---------- 3 parameters ---------- */
[5759]936#define ODINFUNCTIONNODBG3(cRet,cName,t1,a1,t2,a2,t3,a3) \
937 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
938 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
939 { \
[6997]940 FNINIT \
941 cRet rc; \
[5759]942 FNPROLOGUE(#cName) \
[6997]943 rc = ODIN_##cName(a1,a2,a3); \
[5759]944 FNEPILOGUE(#cName) \
945 return rc; \
946 } \
947 \
948 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[1669]949
[5759]950#define ODINPROCEDURENODBG3(cName,t1,a1,t2,a2,t3,a3) \
951 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
952 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
953 { \
[6997]954 FNINIT \
[5759]955 FNPROLOGUE(#cName) \
956 ODIN_##cName(a1,a2,a3); \
957 FNEPILOGUE(#cName) \
958 } \
959 \
960 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
961
962
[1669]963/* ---------- 4 parameters ---------- */
[5759]964#define ODINFUNCTIONNODBG4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
965 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
966 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
967 { \
[6997]968 FNINIT \
969 cRet rc; \
[5759]970 FNPROLOGUE(#cName) \
[6997]971 rc = ODIN_##cName(a1,a2,a3,a4); \
[5759]972 FNEPILOGUE(#cName) \
973 return rc; \
974 } \
975 \
976 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[1669]977
[5759]978#define ODINPROCEDURENODBG4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
979 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
980 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
981 { \
[6997]982 FNINIT \
[5759]983 FNPROLOGUE(#cName) \
984 ODIN_##cName(a1,a2,a3,a4); \
[6619]985 FNEPILOGUE(#cName) \
[5759]986 } \
987 \
988 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
989
990
[1669]991/* ---------- 5 parameters ---------- */
[5759]992#define ODINFUNCTIONNODBG5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
993 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
994 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
995 { \
[6997]996 FNINIT \
997 cRet rc; \
[5759]998 FNPROLOGUE(#cName) \
[6997]999 rc = ODIN_##cName(a1,a2,a3,a4,a5); \
[5759]1000 FNEPILOGUE(#cName) \
1001 return rc; \
1002 } \
1003 \
1004 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[1669]1005
[5759]1006#define ODINPROCEDURENODBG5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
1007 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
1008 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
1009 { \
[6997]1010 FNINIT \
[5759]1011 FNPROLOGUE(#cName) \
1012 ODIN_##cName(a1,a2,a3,a4,a5); \
[6620]1013 FNEPILOGUE(#cName) \
[5759]1014 } \
1015 \
1016 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
1017
1018
[1669]1019/* ---------- 6 parameters ---------- */
[5759]1020#define ODINFUNCTIONNODBG6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
1021 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
1022 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
1023 { \
[6997]1024 FNINIT \
1025 cRet rc; \
[5759]1026 FNPROLOGUE(#cName) \
[6997]1027 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[5759]1028 FNEPILOGUE(#cName) \
1029 return rc; \
1030 } \
1031 \
1032 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[1669]1033
[5759]1034#define ODINPROCEDURENODBG6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
1035 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
1036 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
1037 { \
[6997]1038 FNINIT \
[5759]1039 FNPROLOGUE(#cName) \
1040 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[6620]1041 FNEPILOGUE(#cName) \
[5759]1042 } \
1043 \
1044 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
1045
1046
[1669]1047/* ---------- 7 parameters ---------- */
[5759]1048#define ODINFUNCTIONNODBG7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
1049 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
1050 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
1051 { \
[6997]1052 FNINIT \
1053 cRet rc; \
[5759]1054 FNPROLOGUE(#cName) \
[6997]1055 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[5759]1056 FNEPILOGUE(#cName) \
1057 return rc; \
1058 } \
1059 \
1060 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[1669]1061
[5759]1062#define ODINPROCEDURENODBG7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
1063 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
1064 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
1065 { \
[6997]1066 FNINIT \
[5759]1067 FNPROLOGUE(#cName) \
1068 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[6620]1069 FNEPILOGUE(#cName) \
[5759]1070 } \
1071 \
1072 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
1073
1074
[1669]1075/* ---------- 8 parameters ---------- */
[5759]1076#define ODINFUNCTIONNODBG8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
1077 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
1078 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
1079 { \
[6997]1080 FNINIT \
1081 cRet rc; \
[5759]1082 FNPROLOGUE(#cName) \
[6997]1083 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[5759]1084 FNEPILOGUE(#cName) \
1085 return rc; \
1086 } \
1087 \
1088 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[1669]1089
[5759]1090#define ODINPROCEDURENODBG8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
1091 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
1092 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
1093 { \
[6997]1094 FNINIT \
[5759]1095 FNPROLOGUE(#cName) \
1096 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[6620]1097 FNEPILOGUE(#cName) \
[5759]1098 } \
1099 \
1100 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
1101
1102
[1669]1103/* ---------- 9 parameters ---------- */
[5759]1104#define ODINFUNCTIONNODBG9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
1105 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
1106 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
1107 { \
[6997]1108 FNINIT \
1109 cRet rc; \
[5759]1110 FNPROLOGUE(#cName) \
[6997]1111 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[5759]1112 FNEPILOGUE(#cName) \
1113 return rc; \
1114 } \
1115 \
1116 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[1669]1117
[5759]1118#define ODINPROCEDURENODBG9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
1119 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
1120 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
1121 { \
[6997]1122 FNINIT \
[5759]1123 FNPROLOGUE(#cName) \
1124 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[6620]1125 FNEPILOGUE(#cName) \
[5759]1126 } \
1127 \
1128 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
1129
1130
[1669]1131/* ---------- 10 parameters ---------- */
[5759]1132#define ODINFUNCTIONNODBG10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1133 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); \
1134 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
1135 { \
[6997]1136 FNINIT \
1137 cRet rc; \
[5759]1138 FNPROLOGUE(#cName) \
[6997]1139 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[5759]1140 FNEPILOGUE(#cName) \
1141 return rc; \
1142 } \
1143 \
1144 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)
[1669]1145
[5759]1146#define ODINPROCEDURENODBG10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1147 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); \
1148 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
1149 { \
[6997]1150 FNINIT \
[5759]1151 FNPROLOGUE(#cName) \
1152 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[6620]1153 FNEPILOGUE(#cName) \
[5759]1154 } \
1155 \
1156 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)
1157
1158
[1669]1159/* ---------- 11 parameters ---------- */
[5759]1160#define ODINFUNCTIONNODBG11(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
1161 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); \
1162 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) \
1163 { \
[6997]1164 FNINIT \
1165 cRet rc; \
[5759]1166 FNPROLOGUE(#cName) \
[6997]1167 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[5759]1168 FNEPILOGUE(#cName) \
1169 return rc; \
1170 } \
1171 \
1172 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)
[1669]1173
[5759]1174#define ODINPROCEDURENODBG11(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
1175 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); \
1176 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) \
1177 { \
[6997]1178 FNINIT \
[5759]1179 FNPROLOGUE(#cName) \
1180 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[6620]1181 FNEPILOGUE(#cName) \
[5759]1182 } \
1183 \
1184 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)
1185
1186
[1669]1187/* ---------- 12 parameters ---------- */
[5759]1188#define ODINFUNCTIONNODBG12(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) \
1189 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); \
1190 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) \
1191 { \
[6997]1192 FNINIT \
1193 cRet rc; \
[5759]1194 FNPROLOGUE(#cName) \
[6997]1195 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[5759]1196 FNEPILOGUE(#cName) \
1197 return rc; \
1198 } \
1199 \
1200 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)
[1669]1201
[5759]1202#define ODINPROCEDURENODBG12(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) \
1203 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); \
1204 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) \
1205 { \
[6997]1206 FNINIT \
[5759]1207 FNPROLOGUE(#cName) \
1208 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[6620]1209 FNEPILOGUE(#cName) \
[5759]1210 } \
1211 \
1212 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)
1213
1214
[1696]1215/* ---------- 13 parameters ---------- */
1216#define ODINFUNCTIONNODBG13(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,t13,a13) \
[5759]1217 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,t13 a13); \
1218 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,t13 a13) \
1219 { \
[6997]1220 FNINIT \
1221 cRet rc; \
[5759]1222 FNPROLOGUE(#cName) \
[6997]1223 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
[5759]1224 FNEPILOGUE(#cName) \
1225 return rc; \
1226 } \
1227 \
1228 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,t13 a13)
[1669]1229
[1696]1230#define ODINPROCEDURENODBG13(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,t13,a13) \
[5759]1231 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,t13 a13); \
1232 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,t13 a13) \
1233 { \
[6997]1234 FNINIT \
[5759]1235 FNPROLOGUE(#cName) \
1236 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
[6620]1237 FNEPILOGUE(#cName) \
[5759]1238 } \
1239 \
1240 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,t13 a13)
[1669]1241
[5759]1242
[1696]1243/* ---------- 14 parameters ---------- */
1244#define ODINFUNCTIONNODBG14(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,t13,a13,t14,a14) \
[5759]1245 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,t13 a13,t14 a14); \
1246 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,t13 a13,t14 a14) \
1247 { \
[6997]1248 FNINIT \
1249 cRet rc; \
[5759]1250 FNPROLOGUE(#cName) \
[6997]1251 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
[5759]1252 FNEPILOGUE(#cName) \
1253 return rc; \
1254 } \
1255 \
1256 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,t13 a13,t14 a14)
[1696]1257
1258#define ODINPROCEDURENODBG14(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,t13,a13,t14,a14) \
[5759]1259 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,t13 a13,t14 a14); \
1260 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,t13 a13,t14 a14) \
1261 { \
[6997]1262 FNINIT \
[5759]1263 FNPROLOGUE(#cName) \
1264 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
[6620]1265 FNEPILOGUE(#cName) \
[5759]1266 } \
1267 \
1268 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,t13 a13,t14 a14)
[1696]1269
[473]1270#endif /* _ODINWRAP_H_ */
Note: See TracBrowser for help on using the repository browser.