source: trunk/include/odinwrap.h@ 7002

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

fixed c-compatibility for profiling

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