source: trunk/include/odinwrap.h@ 22145

Last change on this file since 22145 was 21916, checked in by dmik, 14 years ago

Merge branch gcc-kmk to trunk.

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