source: trunk/include/odinwrap.h@ 7010

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

added ODIN perfview profiler

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