source: trunk/include/odinwrap.h@ 6829

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

added calldepth tracing

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