source: trunk/include/odinwrap.h@ 6893

Last change on this file since 6893 was 6893, checked in by sandervl, 24 years ago

* empty log message *

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