source: trunk/include/odinwrap.h@ 7314

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

.

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