source: trunk/include/odinwrap.h@ 6757

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

.

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