source: trunk/include/odinwrap.h@ 6997

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

Standard C compatibility

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