source: trunk/include/odinwrap.h@ 4384

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

.

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