source: trunk/include/odinwrap.h@ 4377

Last change on this file since 4377 was 4377, checked in by phaller, 25 years ago

Removed FS: wrappers from wrapper macros (for SvL)

File size: 41.3 KB
RevLine 
[4377]1/* $Id: odinwrap.h,v 1.24 2000-10-02 15:52:06 phaller Exp $ */
[473]2
3/*
4 * Project Odin Software License can be found in LICENSE.TXT
5 *
6 * ODIN FS: Selector function wrapper macros
7 *
8 * Copyright 1999 Patrick Haller
9 *
10 */
11
12
13#ifndef _ODINWRAP_H_
[1545]14#define _ODINWRAP_H_
[473]15
[2341]16#include <os2sel.h>
[473]17
18/****************************************************************************
19 * Defines *
20 ****************************************************************************/
21
[3467]22// override debugging
23//#undef DEBUG
24//#define DEBUG
[537]25
[3467]26// override profiling
27//#undef PROFILE_ODIN
[3480]28//#define PROFILE_ODIN
[3467]29
30
31
[533]32#define ODIN_INTERNAL _Optlink
[473]33
34
[475]35#ifdef DEBUG
36# define ODINDEBUGCHANNEL(a) static char* pszOdinDebugChannel=#a;
[4124]37# define ODINDEBUGCHANNEL1(a) static char* pszOdinDebugChannel1=#a;
[475]38#else
39# define ODINDEBUGCHANNEL(a)
[4124]40# define ODINDEBUGCHANNEL1(a)
[475]41#endif
42
43
[1642]44//SvL: Define this to use the internal wrapper function of a specific api
45#define ODIN_EXTERN(a) ODIN_INTERNAL ODIN_##a
46
[4377]47
48
49
[475]50#ifdef DEBUG
51
[1439]52//@@@PH 1999/10/25 IBM VAC++ debug memory support
53#include <malloc.h>
54
[4377]55
56// ---------------------------------------------------------------------------
[1669]57//SvL: Eases locating apis that corrupt FS
[4377]58#define error_FSSelector "!!! ERROR - FS Selector for thread %d corrupted by this function call !!!"
[1669]59
60extern int IsExeStarted(); //kernel32
61
[4377]62#define FS_check() \
63 { USHORT sel = GetFS(); \
64 if(sel == 0x150b && IsExeStarted()) \
65 dprintf(((char *)error_FSSelector, GetCurrentThreadId())); \
66 }
[1669]67
[4377]68
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
81#ifdef PROFILE_ODIN
82
83# define PROFILE_START(a) \
84 LARGE_INTEGER liStart; \
85 LARGE_INTEGER liEnd; \
86 unsigned long ulElapsed; \
87 QueryPerformanceCounter(&liStart);
88
89
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
[4377]106
107#define FNPROLOGUE(a) \
108 ODIN_HEAPCHECK(); \
109 PROFILE_START(a)
110
111#define FNEPILOGUE(a) \
112 PROFILE_STOP(a) \
113 FS_check(); \
114 ODIN_HEAPCHECK(); \
115
116
[473]117/****************************************************************************
[475]118 * General Wrapper Macros (debug instrumented) *
119 ****************************************************************************/
120
121/* ---------- 0 parameters ---------- */
122#define ODINFUNCTION0(cRet,cName) \
[3467]123 cRet ODIN_INTERNAL ODIN_##cName (void); \
124 cRet WINAPI cName(void) \
[475]125 { \
[4377]126 dprintfNoEOL(("%s: "#cRet" "#cName"()", \
[475]127 pszOdinDebugChannel)); \
[4377]128 FNPROLOGUE(#cName) \
[594]129 cRet rc = ODIN_##cName(); \
[4377]130 FNEPILOGUE(#cName) \
131 dprintf(("- rc = %08xh\n", rc)); \
[475]132 return rc; \
133 } \
134 \
[484]135 cRet ODIN_INTERNAL ODIN_##cName (void)
[475]136
137
138#define ODINPROCEDURE0(cName) \
[3467]139 void ODIN_INTERNAL ODIN_##cName (void); \
140 void WINAPI cName(void) \
[475]141 { \
[4377]142 dprintfNoEOL(("%s: void "#cName"()", \
[475]143 pszOdinDebugChannel)); \
[4377]144 FNPROLOGUE(#cName) \
[3467]145 ODIN_##cName(); \
146 dprintf(("%s: void "#cName"() leave\n", \
[475]147 pszOdinDebugChannel)); \
[4377]148 FNEPILOGUE(#cName) \
[475]149 } \
150 \
[484]151 void ODIN_INTERNAL ODIN_##cName (void)
[475]152
153
154/* ---------- 1 parameters ---------- */
155#define ODINFUNCTION1(cRet,cName,t1,a1) \
[3467]156 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
157 cRet WINAPI cName(t1 a1) \
[475]158 { \
[4377]159 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh)", \
[475]160 pszOdinDebugChannel, \
161 a1)); \
[4377]162 FNPROLOGUE(#cName) \
[3467]163 cRet rc = ODIN_##cName(a1); \
[475]164 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
165 pszOdinDebugChannel, \
166 rc)); \
[4377]167 FNEPILOGUE(#cName) \
[475]168 return rc; \
169 } \
170 \
[484]171 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
[475]172
173#define ODINPROCEDURE1(cName,t1,a1) \
[3467]174 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
175 void WINAPI cName(t1 a1) \
[475]176 { \
[4377]177 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh)", \
[475]178 pszOdinDebugChannel, \
179 a1)); \
[4377]180 FNPROLOGUE(#cName) \
[3467]181 ODIN_##cName(a1); \
182 dprintf(("%s: void "#cName"() leave\n", \
[475]183 pszOdinDebugChannel)); \
[4377]184 FNEPILOGUE(#cName) \
[475]185 } \
186 \
[484]187 void ODIN_INTERNAL ODIN_##cName (t1 a1)
[475]188
189
190/* ---------- 2 parameters ---------- */
191#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
[3467]192 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
193 cRet WINAPI cName(t1 a1,t2 a2) \
[475]194 { \
[4377]195 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
[3467]196 pszOdinDebugChannel, \
197 a1,a2)); \
[4377]198 FNPROLOGUE(#cName) \
[3467]199 cRet rc = ODIN_##cName(a1,a2); \
[475]200 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
[3467]201 pszOdinDebugChannel, \
202 rc)); \
[4377]203 FNEPILOGUE(#cName) \
[3467]204 return rc; \
205 } \
206 \
[484]207 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[475]208
209#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
[484]210 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
[3467]211 void WINAPI cName(t1 a1,t2 a2) \
[475]212 { \
[4377]213 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
[475]214 pszOdinDebugChannel, \
215 a1,a2)); \
[4377]216 FNPROLOGUE(#cName) \
[3467]217 ODIN_##cName(a1,a2); \
218 dprintf(("%s: void "#cName"() leave\n", \
[475]219 pszOdinDebugChannel)); \
[4377]220 FNEPILOGUE(#cName) \
[475]221 } \
222 \
[484]223 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[475]224
225
226/* ---------- 3 parameters ---------- */
227#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
[484]228 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
229 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
[3467]230 { \
[4377]231 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
[475]232 pszOdinDebugChannel, \
233 a1,a2,a3)); \
[4377]234 FNPROLOGUE(#cName) \
[3467]235 cRet rc = ODIN_##cName(a1,a2,a3); \
[475]236 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
237 pszOdinDebugChannel, \
238 rc)); \
[4377]239 FNEPILOGUE(#cName) \
[475]240 return rc; \
241 } \
242 \
[484]243 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]244
245#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
[484]246 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
247 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
[475]248 { \
[4377]249 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
[475]250 pszOdinDebugChannel, \
251 a1,a2,a3)); \
[4377]252 FNPROLOGUE(#cName) \
[491]253 ODIN_##cName(a1,a2,a3); \
[475]254 pszOdinDebugChannel)); \
[4377]255 FNEPILOGUE(#cName) \
[475]256 } \
257 \
[484]258 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]259
260
261/* ---------- 4 parameters ---------- */
262#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]263 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
264 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[475]265 { \
[4377]266 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
[475]267 pszOdinDebugChannel, \
268 a1,a2,a3,a4)); \
[4377]269 FNPROLOGUE(#cName) \
[491]270 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
[475]271 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
272 pszOdinDebugChannel, \
273 rc)); \
[4377]274 FNEPILOGUE(#cName) \
[475]275 return rc; \
276 } \
277 \
[484]278 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]279
280#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]281 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
282 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[475]283 { \
[4377]284 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
[475]285 pszOdinDebugChannel, \
286 a1,a2,a3,a4)); \
[4377]287 FNPROLOGUE(#cName) \
[491]288 ODIN_##cName(a1,a2,a3,a4); \
[475]289 dprintf(("%s: void "#cName"() leave\n", \
290 pszOdinDebugChannel)); \
[4377]291 FNEPILOGUE \
[475]292 } \
293 \
[484]294 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]295
296
297/* ---------- 5 parameters ---------- */
298#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]299 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
300 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[475]301 { \
[4377]302 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
303 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
[475]304 pszOdinDebugChannel, \
305 a1,a2,a3,a4,a5)); \
[4377]306 FNPROLOGUE(#cName) \
[491]307 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
[475]308 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
309 pszOdinDebugChannel, \
310 rc)); \
[4377]311 FNEPILOGUE(#cName) \
[475]312 return rc; \
313 } \
314 \
[484]315 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]316
317#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]318 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
319 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[475]320 { \
[4377]321 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
322 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
[475]323 pszOdinDebugChannel, \
324 a1,a2,a3,a4,a5)); \
[4377]325 FNPROLOGUE(#cName) \
[491]326 ODIN_##cName(a1,a2,a3,a4,a5); \
[475]327 pszOdinDebugChannel)); \
[4377]328 FNEPILOGUE \
[475]329 } \
330 \
[484]331 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]332
333
334/* ---------- 6 parameters ---------- */
335#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]336 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
337 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[475]338 { \
[4377]339 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
340 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
[475]341 pszOdinDebugChannel, \
[1437]342 a1,a2,a3,a4,a5,a6)); \
[4377]343 FNPROLOGUE(#cName) \
[491]344 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[475]345 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
346 pszOdinDebugChannel, \
347 rc)); \
[4377]348 FNEPILOGUE(#cName) \
[475]349 return rc; \
350 } \
351 \
[484]352 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]353
[2241]354// @@@PH 1999/12/28 the following macro is a workaround for WINMM:waveOutOpen
355// where the system needs to know about the win32 tib fs selector
356#define ODINFUNCTION6FS(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
357 cRet ODIN_INTERNAL ODIN_##cName (unsigned short selFS, t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
358 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
359 { \
[4377]360 dprintfNoEOL(("%s: "#cRet" "#cName"(selFS=%04xh, "#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
361 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
[2241]362 pszOdinDebugChannel, \
363 sel, \
364 a1,a2,a3,a4,a5,a6)); \
[4377]365 FNPROLOGUE(#cName) \
[2241]366 cRet rc = ODIN_##cName(sel,a1,a2,a3,a4,a5,a6); \
367 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
368 pszOdinDebugChannel, \
369 rc)); \
[4377]370 FNEPILOGUE(#cName) \
[2241]371 return rc; \
372 } \
373 \
374 cRet ODIN_INTERNAL ODIN_##cName (unsigned short selFS, t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
375
376
[475]377#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]378 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
379 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[475]380 { \
[4377]381 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
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) \
[491]386 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[475]387 dprintf(("%s: void "#cName"() leave\n", \
388 pszOdinDebugChannel)); \
[4377]389 FNEPILOGUE \
[475]390 } \
391 \
[484]392 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]393
394
395/* ---------- 7 parameters ---------- */
396#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]397 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
398 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[475]399 { \
[4377]400 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
401 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
[475]402 pszOdinDebugChannel, \
[1437]403 a1,a2,a3,a4,a5,a6,a7)); \
[4377]404 FNPROLOGUE(#cName) \
[491]405 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[475]406 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
407 pszOdinDebugChannel, \
408 rc)); \
[4377]409 FNEPILOGUE(#cName) \
[475]410 return rc; \
411 } \
412 \
[484]413 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]414
415#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]416 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
417 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[475]418 { \
[4377]419 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
420 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
[475]421 pszOdinDebugChannel, \
[1437]422 a1,a2,a3,a4,a5,a6,a7)); \
[4377]423 FNPROLOGUE(#cName) \
[491]424 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[475]425 dprintf(("%s: void "#cName"() leave\n", \
426 pszOdinDebugChannel)); \
[4377]427 FNEPILOGUE \
[475]428 } \
429 \
[484]430 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]431
432
433/* ---------- 8 parameters ---------- */
434#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]435 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
436 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[475]437 { \
[4377]438 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]439 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]440 ", "#t8" "#a8"=%08xh)", \
[475]441 pszOdinDebugChannel, \
[1437]442 a1,a2,a3,a4,a5,a6,a7,a8)); \
[4377]443 FNPROLOGUE(#cName) \
[491]444 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[475]445 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
446 pszOdinDebugChannel, \
447 rc)); \
[4377]448 FNEPILOGUE(#cName) \
[475]449 return rc; \
450 } \
451 \
[484]452 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]453
454#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]455 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
456 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[475]457 { \
[4377]458 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]459 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]460 ", "#t8" "#a8"=%08xh)", \
[475]461 pszOdinDebugChannel, \
[1437]462 a1,a2,a3,a4,a5,a6,a7,a8)); \
[4377]463 FNPROLOGUE(#cName) \
[491]464 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[475]465 dprintf(("%s: void "#cName"() leave\n", \
466 pszOdinDebugChannel)); \
[4377]467 FNEPILOGUE \
[475]468 } \
469 \
[484]470 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]471
472
473/* ---------- 9 parameters ---------- */
474#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]475 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
476 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]477 { \
[4377]478 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]479 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]480 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
[475]481 pszOdinDebugChannel, \
[1437]482 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
[4377]483 FNPROLOGUE(#cName) \
[491]484 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[475]485 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
486 pszOdinDebugChannel, \
487 rc)); \
[4377]488 FNEPILOGUE(#cName) \
[475]489 return rc; \
490 } \
491 \
[484]492 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]493
494#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]495 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
496 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]497 { \
[4377]498 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]499 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]500 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
[475]501 pszOdinDebugChannel, \
[1437]502 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
[4377]503 FNPROLOGUE(#cName) \
[491]504 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[475]505 dprintf(("%s: void "#cName"() leave\n", \
506 pszOdinDebugChannel)); \
[4377]507 FNEPILOGUE \
[475]508 } \
509 \
[484]510 void 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
513/* ---------- 10 parameters ---------- */
514#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]515 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
516 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]517 { \
[4377]518 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]519 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]520 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
[475]521 pszOdinDebugChannel, \
[1437]522 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
[4377]523 FNPROLOGUE(#cName) \
[491]524 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[475]525 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
526 pszOdinDebugChannel, \
527 rc)); \
[4377]528 FNEPILOGUE(#cName) \
[475]529 return rc; \
530 } \
531 \
[484]532 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]533
534#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
[484]535 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); \
536 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]537 { \
[4377]538 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]539 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]540 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
[475]541 pszOdinDebugChannel, \
542 a1,a2,a3)); \
[4377]543 FNPROLOGUE(#cName) \
[491]544 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[475]545 dprintf(("%s: void "#cName"() leave\n", \
546 pszOdinDebugChannel)); \
[4377]547 FNEPILOGUE \
[475]548 } \
549 \
[484]550 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]551
552
553/* ---------- 11 parameters ---------- */
554#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]555 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
556 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]557 { \
[4377]558 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]559 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]560 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
[475]561 pszOdinDebugChannel, \
[1437]562 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
[4377]563 FNPROLOGUE(#cName) \
[491]564 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[475]565 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
566 pszOdinDebugChannel, \
567 rc)); \
[4377]568 FNEPILOGUE(#cName) \
[475]569 return rc; \
570 } \
571 \
[484]572 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]573
574#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]575 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); \
576 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]577 { \
[4377]578 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]579 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
[4377]580 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
[475]581 pszOdinDebugChannel, \
[1437]582 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
[4377]583 FNPROLOGUE(#cName) \
[491]584 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[475]585 dprintf(("%s: void "#cName"() leave\n", \
586 pszOdinDebugChannel)); \
[4377]587 FNEPILOGUE \
[475]588 } \
589 \
[484]590 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]591
592
593/* ---------- 12 parameters ---------- */
594#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]595 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
596 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]597 { \
[4377]598 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]599 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
600 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]601 ", "#t12" "#a12"=%08xh)", \
[475]602 pszOdinDebugChannel, \
[1437]603 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
[4377]604 FNPROLOGUE(#cName) \
[491]605 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[475]606 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
607 pszOdinDebugChannel, \
608 rc)); \
[4377]609 FNEPILOGUE(#cName) \
[475]610 return rc; \
611 } \
612 \
[484]613 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]614
615#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]616 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); \
617 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]618 { \
[4377]619 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]620 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
621 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]622 ", "#t12" "#a12"=%08xh)", \
[475]623 pszOdinDebugChannel, \
[1696]624 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
[4377]625 FNPROLOGUE(#cName) \
[491]626 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[475]627 dprintf(("%s: void "#cName"() leave\n", \
628 pszOdinDebugChannel)); \
[4377]629 FNEPILOGUE \
[475]630 } \
631 \
[484]632 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]633
634
[1696]635/* ---------- 13 parameters ---------- */
636#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) \
637 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
638 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) \
639 { \
[4377]640 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]641 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
642 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]643 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh)", \
[1696]644 pszOdinDebugChannel, \
645 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
[4377]646 FNPROLOGUE(#cName) \
[1696]647 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
648 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
649 pszOdinDebugChannel, \
650 rc)); \
[4377]651 FNEPILOGUE(#cName) \
[1696]652 return rc; \
653 } \
654 \
655 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)
656
657#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) \
658 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); \
659 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) \
660 { \
[4377]661 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]662 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
663 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]664 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, )", \
[1696]665 pszOdinDebugChannel, \
666 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
[4377]667 FNPROLOGUE(#cName) \
[1696]668 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
669 dprintf(("%s: void "#cName"() leave\n", \
670 pszOdinDebugChannel)); \
[4377]671 FNEPILOGUE \
[1696]672 } \
673 \
674 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)
675
676
677/* ---------- 14 parameters ---------- */
678#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) \
679 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
680 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) \
681 { \
[4377]682 dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]683 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
684 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]685 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
[1696]686 pszOdinDebugChannel, \
687 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
[4377]688 FNPROLOGUE(#cName) \
[1696]689 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
690 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
691 pszOdinDebugChannel, \
692 rc)); \
[4377]693 FNEPILOGUE(#cName) \
[1696]694 return rc; \
695 } \
696 \
697 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)
698
699#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]700 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]701 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) \
702 { \
[4377]703 dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[1696]704 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
705 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
[4377]706 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
[1696]707 pszOdinDebugChannel, \
708 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
[4377]709 FNPROLOGUE(#cName) \
[1696]710 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
711 dprintf(("%s: void "#cName"() leave\n", \
712 pszOdinDebugChannel)); \
[4377]713 FNEPILOGUE \
[1696]714 } \
715 \
716 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)
717
718
[475]719#else
720
721/****************************************************************************
[473]722 * General Wrapper Macros *
723 ****************************************************************************/
724
[4377]725#define ODINFUNCTION0 ODINFUNCTIONNODBG0
726#define ODINFUNCTION1 ODINFUNCTIONNODBG0
727#define ODINFUNCTION2 ODINFUNCTIONNODBG1
728#define ODINFUNCTION3 ODINFUNCTIONNODBG2
729#define ODINFUNCTION4 ODINFUNCTIONNODBG3
730#define ODINFUNCTION5 ODINFUNCTIONNODBG4
731#define ODINFUNCTION6 ODINFUNCTIONNODBG5
732#define ODINFUNCTION7 ODINFUNCTIONNODBG6
733#define ODINFUNCTION8 ODINFUNCTIONNODBG7
734#define ODINFUNCTION9 ODINFUNCTIONNODBG8
735#define ODINFUNCTION10 ODINFUNCTIONNODBG10
736#define ODINFUNCTION11 ODINFUNCTIONNODBG11
737#define ODINFUNCTION12 ODINFUNCTIONNODBG12
738#define ODINFUNCTION13 ODINFUNCTIONNODBG13
739#define ODINFUNCTION14 ODINFUNCTIONNODBG14
[473]740
[4377]741#define ODINPROCEDURE0 ODINPROCEDURENODBG0
742#define ODINPROCEDURE1 ODINPROCEDURENODBG0
743#define ODINPROCEDURE2 ODINPROCEDURENODBG1
744#define ODINPROCEDURE3 ODINPROCEDURENODBG2
745#define ODINPROCEDURE4 ODINPROCEDURENODBG3
746#define ODINPROCEDURE5 ODINPROCEDURENODBG4
747#define ODINPROCEDURE6 ODINPROCEDURENODBG5
748#define ODINPROCEDURE7 ODINPROCEDURENODBG6
749#define ODINPROCEDURE8 ODINPROCEDURENODBG7
750#define ODINPROCEDURE9 ODINPROCEDURENODBG8
751#define ODINPROCEDURE10 ODINPROCEDURENODBG10
752#define ODINPROCEDURE11 ODINPROCEDURENODBG11
753#define ODINPROCEDURE12 ODINPROCEDURENODBG12
754#define ODINPROCEDURE13 ODINPROCEDURENODBG13
755#define ODINPROCEDURE14 ODINPROCEDURENODBG14
[473]756
[475]757#endif
758
[1669]759/****************************************************************************
760 * General Wrapper Macros *
761 ****************************************************************************/
762
763/* ---------- 0 parameters ---------- */
[4377]764#define ODINFUNCTIONNODBG0(cRet,cName) cRet WINAPI cName(void)
765#define ODINPROCEDURENODBG0(cName) void WINAPI cName(void)
[1669]766
767/* ---------- 1 parameters ---------- */
[4377]768#define ODINFUNCTIONNODBG1(cRet,cName,t1,a1) cRet WINAPI cName(t1 a1)
769#define ODINPROCEDURENODBG1(cName,t1,a1) void WINAPI cName(t1 a1)
[1669]770
771/* ---------- 2 parameters ---------- */
[4377]772#define ODINFUNCTIONNODBG2(cRet,cName,t1,a1,t2,a2) cRet WINAPI cName(t1 a1,t2 a2)
773#define ODINPROCEDURENODBG2(cName,t1,a1,t2,a2) void WINAPI cName(t1 a1,t2 a2)
[1669]774
775/* ---------- 3 parameters ---------- */
[4377]776#define ODINFUNCTIONNODBG3(cRet,cName,t1,a1,t2,a2,t3,a3) cRet WINAPI cName(t1 a1,t2 a2,t3 a3)
777#define ODINPROCEDURENODBG3(cName,t1,a1,t2,a2,t3,a3) void WINAPI cName(t1 a1,t2 a2,t3 a3)
[1669]778
779/* ---------- 4 parameters ---------- */
[4377]780#define ODINFUNCTIONNODBG4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)
781#define ODINPROCEDURENODBG4(cName,t1,a1,t2,a2,t3,a3,t4,a4) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)
[1669]782
783/* ---------- 5 parameters ---------- */
[4377]784#define ODINFUNCTIONNODBG5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
785#define ODINPROCEDURENODBG5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[1669]786
787/* ---------- 6 parameters ---------- */
[4377]788#define ODINFUNCTIONNODBG6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
789#define ODINPROCEDURENODBG6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[1669]790
791/* ---------- 7 parameters ---------- */
[4377]792#define ODINFUNCTIONNODBG7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
793#define ODINPROCEDURENODBG7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[1669]794
795/* ---------- 8 parameters ---------- */
[4377]796#define ODINFUNCTIONNODBG8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
797#define ODINPROCEDURENODBG8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[1669]798
799/* ---------- 9 parameters ---------- */
[4377]800#define ODINFUNCTIONNODBG9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
801#define ODINPROCEDURENODBG9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[1669]802
803/* ---------- 10 parameters ---------- */
[4377]804#define ODINFUNCTIONNODBG10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
805#define ODINPROCEDURENODBG10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
[1669]806
807/* ---------- 11 parameters ---------- */
[4377]808#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) 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)
809#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) 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)
[1669]810
811/* ---------- 12 parameters ---------- */
[4377]812#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) 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)
813#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) 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)
[1669]814
[1696]815/* ---------- 13 parameters ---------- */
816#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) \
[4377]817 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)
[1669]818
[1696]819#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) \
[4377]820 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)
[1669]821
[1696]822/* ---------- 14 parameters ---------- */
823#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) \
[4377]824 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)
[1696]825
826#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) \
[4377]827 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)
[1696]828
829
[473]830#endif /* _ODINWRAP_H_ */
Note: See TracBrowser for help on using the repository browser.