source: trunk/include/odinwrap.h@ 4927

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

Added profiling support

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