source: trunk/include/odinwrap.h@ 6912

Last change on this file since 6912 was 6912, checked in by bird, 24 years ago

Watcom: GetCurrentThreadId workaround. () -> (void).

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