source: trunk/include/odinwrap.h@ 10367

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

Don't generate any wrapper function in release build

File size: 63.6 KB
Line 
1/*
2 * Project Odin Software License can be found in LICENSE.TXT
3 *
4 * ODIN FS: Selector function wrapper macros
5 *
6 * Copyright 1999 Patrick Haller
7 *
8 */
9
10
11#ifndef _ODINWRAP_H_
12#define _ODINWRAP_H_
13
14#include <os2sel.h>
15
16/****************************************************************************
17 * Defines *
18 ****************************************************************************/
19
20// override debugging
21//#undef DEBUG
22//#define DEBUG
23
24// override profiling
25//#undef PROFILE
26//#define PROFILE
27
28
29// check if release is really defined ...
30#if !defined(DEBUG) && !defined(PROFILE)
31#define RELEASE
32#endif
33
34
35#define ODIN_INTERNAL _Optlink
36
37
38#ifdef DEBUG
39# define ODINDEBUGCHANNEL(a) static char* pszOdinDebugChannel=#a;
40# define ODINDEBUGCHANNEL1(a) static char* pszOdinDebugChannel1=#a;
41#else
42# define ODINDEBUGCHANNEL(a)
43# define ODINDEBUGCHANNEL1(a)
44#endif
45
46
47//SvL: Define this to use the internal wrapper function of a specific api
48#ifdef DEBUG
49#define ODIN_EXTERN(a) ODIN_INTERNAL ODIN_##a
50#define CALL_ODINFUNC(a) ODIN_##a
51#else
52#define ODIN_EXTERN(a) ODIN_INTERNAL a
53#define CALL_ODINFUNC(a) a
54#endif
55
56
57#ifdef DEBUG
58
59//@@@PH 1999/10/25 IBM VAC++ debug memory support
60#include <malloc.h>
61#include <odin.h>
62
63// ---------------------------------------------------------------------------
64#ifdef __WATCOMC__
65//this doens't work with watcom because doubly declared somewhere :-(
66//extern unsigned long int WIN32API GetCurrentThreadId(void); // kernel32
67#else
68extern unsigned long int WIN32API GetCurrentThreadId(void); // kernel32
69#endif
70extern unsigned long int WIN32API dbg_GetThreadCallDepth(void); // kernel32
71extern void WIN32API dbg_IncThreadCallDepth(void); // kernel32
72extern void WIN32API dbg_DecThreadCallDepth(void); // kernel32
73extern void WIN32API dbg_ThreadPushCall(char *pszCaller);
74extern void WIN32API dbg_ThreadPopCall();
75extern char* WIN32API dbg_GetLastCallerName();
76
77
78
79// ---------------------------------------------------------------------------
80//SvL: Only check the heap very frequently when there are problems
81//#define DEBUG_ODINHEAP
82#ifdef DEBUG_ODINHEAP
83#define ODIN_HEAPCHECK() _heap_check()
84#else
85#define ODIN_HEAPCHECK()
86#endif
87
88
89// ---------------------------------------------------------------------------
90// PH: this is for profiling cumulative method call times
91#ifdef PROFILE
92
93#include <perfview.h>
94
95
96#define FNINIT \
97 LARGE_INTEGER liStart; \
98 LARGE_INTEGER liEnd; \
99 unsigned long ulElapsed; \
100 unsigned short sel;
101
102# define PROFILE_START(a) \
103 QueryPerformanceCounter(&liStart);
104
105
106# define PROFILE_STOP(a) \
107 QueryPerformanceCounter(&liEnd);\
108 if (liStart.LowPart > liEnd.LowPart) \
109 ulElapsed = 0xFFFFFFFF - liStart.LowPart + liEnd.LowPart; \
110 else \
111 ulElapsed = liEnd.LowPart - liStart.LowPart; \
112 \
113 PerfView_RegisterCall(dbg_GetLastCallerName(), a, ulElapsed); \
114 \
115 dprintf(("%s: %s %u ticks\n",\
116 pszOdinDebugChannel,\
117 a, \
118 ulElapsed));
119#else
120# define PROFILE_START(a)
121# define PROFILE_STOP(a)
122#endif
123
124
125
126#if defined(PROFILE) || defined(DEBUG)
127
128#ifndef FNINIT
129#define FNINIT \
130 unsigned short sel;
131#endif
132
133#define FNPROLOGUE(a) \
134 sel = GetFS(); \
135 dbg_ThreadPushCall(a); \
136 ODIN_HEAPCHECK(); \
137 PROFILE_START(a)
138
139#define FNEPILOGUE(a) \
140 PROFILE_STOP(a) \
141 ODIN_HEAPCHECK(); \
142 dbg_ThreadPopCall(); \
143 if (sel != GetFS()) { \
144 SetFS(sel); \
145 dprintf(("WARNING: FS: for thread %08xh corrupted by "a, GetCurrentThreadId())); \
146 }
147
148#endif
149
150
151#if defined(RELEASE)
152
153#define FNINIT
154#define FNPROLOGUE(a)
155#define FNEPILOGUE(a)
156
157#endif
158
159
160// check if all macros are defined
161#ifndef FNINIT
162#error FNINIT not defined: DEBUG, PROFILE, or RELEASE not specified
163#endif
164
165#ifndef FNPROLOGUE
166#error FNPROLOGUE not defined: DEBUG, PROFILE, or RELEASE not specified
167#endif
168
169#ifndef FNEPILOGUE
170#error FNEPILOGUE not defined: DEBUG, PROFILE, or RELEASE not specified
171#endif
172
173
174#endif /* DEBUG */
175
176
177/****************************************************************************
178 * General Wrapper Macros (debug instrumented) *
179 ****************************************************************************/
180#if defined(DEBUG) || defined(PROFILE)
181
182
183/* ---------- 0 parameters ---------- */
184#define ODINFUNCTION0(cRet,cName) \
185 cRet ODIN_INTERNAL ODIN_##cName (void); \
186 cRet WINAPI cName(void) \
187 { \
188 FNINIT \
189 cRet rc; \
190 dprintf(("%s: "#cRet" "#cName"()", \
191 pszOdinDebugChannel)); \
192 FNPROLOGUE(#cName) \
193 rc = ODIN_##cName(); \
194 FNEPILOGUE(#cName) \
195 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
196 pszOdinDebugChannel, \
197 rc)); \
198 return rc; \
199 } \
200 \
201 cRet ODIN_INTERNAL ODIN_##cName (void)
202
203
204#define ODINPROCEDURE0(cName) \
205 void ODIN_INTERNAL ODIN_##cName (void); \
206 void WINAPI cName(void) \
207 { \
208 FNINIT \
209 dprintf(("%s: void "#cName"()", \
210 pszOdinDebugChannel)); \
211 FNPROLOGUE(#cName) \
212 ODIN_##cName(); \
213 FNEPILOGUE(#cName) \
214 dprintf(("%s: void "#cName"() leave\n", \
215 pszOdinDebugChannel)); \
216 } \
217 \
218 void ODIN_INTERNAL ODIN_##cName (void)
219
220
221/* ---------- 1 parameters ---------- */
222#define ODINFUNCTION1(cRet,cName,t1,a1) \
223 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
224 cRet WINAPI cName(t1 a1) \
225 { \
226 FNINIT \
227 cRet rc; \
228 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh)", \
229 pszOdinDebugChannel, \
230 a1)); \
231 FNPROLOGUE(#cName) \
232 rc = ODIN_##cName(a1); \
233 FNEPILOGUE(#cName) \
234 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
235 pszOdinDebugChannel, \
236 rc)); \
237 return rc; \
238 } \
239 \
240 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
241
242#define ODINPROCEDURE1(cName,t1,a1) \
243 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
244 void WINAPI cName(t1 a1) \
245 { \
246 FNINIT \
247 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh)", \
248 pszOdinDebugChannel, \
249 a1)); \
250 FNPROLOGUE(#cName) \
251 ODIN_##cName(a1); \
252 FNEPILOGUE(#cName) \
253 dprintf(("%s: void "#cName"() leave\n", \
254 pszOdinDebugChannel)); \
255 } \
256 \
257 void ODIN_INTERNAL ODIN_##cName (t1 a1)
258
259
260/* ---------- 2 parameters ---------- */
261#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
262 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
263 cRet WINAPI cName(t1 a1,t2 a2) \
264 { \
265 FNINIT \
266 cRet rc; \
267 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
268 pszOdinDebugChannel, \
269 a1,a2)); \
270 FNPROLOGUE(#cName) \
271 rc = ODIN_##cName(a1,a2); \
272 FNEPILOGUE(#cName) \
273 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
274 pszOdinDebugChannel, \
275 rc)); \
276 return rc; \
277 } \
278 \
279 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
280
281#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
282 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
283 void WINAPI cName(t1 a1,t2 a2) \
284 { \
285 FNINIT \
286 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
287 pszOdinDebugChannel, \
288 a1,a2)); \
289 FNPROLOGUE(#cName) \
290 ODIN_##cName(a1,a2); \
291 FNEPILOGUE(#cName) \
292 dprintf(("%s: void "#cName"() leave\n", \
293 pszOdinDebugChannel)); \
294 } \
295 \
296 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
297
298
299/* ---------- 3 parameters ---------- */
300#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
301 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
302 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
303 { \
304 FNINIT \
305 cRet rc; \
306 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
307 pszOdinDebugChannel, \
308 a1,a2,a3)); \
309 FNPROLOGUE(#cName) \
310 rc = ODIN_##cName(a1,a2,a3); \
311 FNEPILOGUE(#cName) \
312 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
313 pszOdinDebugChannel, \
314 rc)); \
315 return rc; \
316 } \
317 \
318 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
319
320#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
321 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
322 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
323 { \
324 FNINIT \
325 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
326 pszOdinDebugChannel, \
327 a1,a2,a3)); \
328 FNPROLOGUE(#cName) \
329 ODIN_##cName(a1,a2,a3); \
330 FNEPILOGUE(#cName) \
331 dprintf(("%s: void "#cName"() leave\n", \
332 pszOdinDebugChannel)); \
333 } \
334 \
335 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
336
337
338/* ---------- 4 parameters ---------- */
339#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
340 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
341 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
342 { \
343 FNINIT \
344 cRet rc; \
345 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
346 pszOdinDebugChannel, \
347 a1,a2,a3,a4)); \
348 FNPROLOGUE(#cName) \
349 rc = ODIN_##cName(a1,a2,a3,a4); \
350 FNEPILOGUE(#cName) \
351 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
352 pszOdinDebugChannel, \
353 rc)); \
354 return rc; \
355 } \
356 \
357 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
358
359#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
360 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
361 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
362 { \
363 FNINIT \
364 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
365 pszOdinDebugChannel, \
366 a1,a2,a3,a4)); \
367 FNPROLOGUE(#cName) \
368 ODIN_##cName(a1,a2,a3,a4); \
369 FNEPILOGUE(#cName) \
370 dprintf(("%s: void "#cName"() leave\n", \
371 pszOdinDebugChannel)); \
372 } \
373 \
374 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
375
376
377/* ---------- 5 parameters ---------- */
378#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
379 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
380 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
381 { \
382 FNINIT \
383 cRet rc; \
384 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
385 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
386 pszOdinDebugChannel, \
387 a1,a2,a3,a4,a5)); \
388 FNPROLOGUE(#cName) \
389 rc = ODIN_##cName(a1,a2,a3,a4,a5); \
390 FNEPILOGUE(#cName) \
391 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
392 pszOdinDebugChannel, \
393 rc)); \
394 return rc; \
395 } \
396 \
397 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
398
399#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
400 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
401 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
402 { \
403 FNINIT \
404 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
405 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
406 pszOdinDebugChannel, \
407 a1,a2,a3,a4,a5)); \
408 FNPROLOGUE(#cName) \
409 ODIN_##cName(a1,a2,a3,a4,a5); \
410 FNEPILOGUE(#cName) \
411 dprintf(("%s: void "#cName"() leave\n", \
412 pszOdinDebugChannel)); \
413 } \
414 \
415 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
416
417
418/* ---------- 6 parameters ---------- */
419#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
420 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
421 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
422 { \
423 FNINIT \
424 cRet rc; \
425 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
426 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
427 pszOdinDebugChannel, \
428 a1,a2,a3,a4,a5,a6)); \
429 FNPROLOGUE(#cName) \
430 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
431 FNEPILOGUE(#cName) \
432 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
433 pszOdinDebugChannel, \
434 rc)); \
435 return rc; \
436 } \
437 \
438 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
439
440#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
441 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
442 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
443 { \
444 FNINIT \
445 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
446 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
447 pszOdinDebugChannel, \
448 a1,a2,a3,a4,a5,a6)); \
449 FNPROLOGUE(#cName) \
450 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
451 FNEPILOGUE(#cName) \
452 dprintf(("%s: void "#cName"() leave\n", \
453 pszOdinDebugChannel)); \
454 } \
455 \
456 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
457
458
459/* ---------- 7 parameters ---------- */
460#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
461 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
462 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
463 { \
464 FNINIT \
465 cRet rc; \
466 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
467 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
468 pszOdinDebugChannel, \
469 a1,a2,a3,a4,a5,a6,a7)); \
470 FNPROLOGUE(#cName) \
471 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
472 FNEPILOGUE(#cName) \
473 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
474 pszOdinDebugChannel, \
475 rc)); \
476 return rc; \
477 } \
478 \
479 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
480
481#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
482 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
483 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
484 { \
485 FNINIT \
486 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
487 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
488 pszOdinDebugChannel, \
489 a1,a2,a3,a4,a5,a6,a7)); \
490 FNPROLOGUE(#cName) \
491 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
492 FNEPILOGUE(#cName) \
493 dprintf(("%s: void "#cName"() leave\n", \
494 pszOdinDebugChannel)); \
495 } \
496 \
497 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
498
499
500/* ---------- 8 parameters ---------- */
501#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
502 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
503 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
504 { \
505 FNINIT \
506 cRet rc; \
507 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
508 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
509 ", "#t8" "#a8"=%08xh)", \
510 pszOdinDebugChannel, \
511 a1,a2,a3,a4,a5,a6,a7,a8)); \
512 FNPROLOGUE(#cName) \
513 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
514 FNEPILOGUE(#cName) \
515 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
516 pszOdinDebugChannel, \
517 rc)); \
518 return rc; \
519 } \
520 \
521 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
522
523#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
524 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
525 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
526 { \
527 FNINIT \
528 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
529 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
530 ", "#t8" "#a8"=%08xh)", \
531 pszOdinDebugChannel, \
532 a1,a2,a3,a4,a5,a6,a7,a8)); \
533 FNPROLOGUE(#cName) \
534 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
535 FNEPILOGUE(#cName) \
536 dprintf(("%s: void "#cName"() leave\n", \
537 pszOdinDebugChannel)); \
538 } \
539 \
540 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
541
542
543/* ---------- 9 parameters ---------- */
544#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
545 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
546 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
547 { \
548 FNINIT \
549 cRet rc; \
550 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
551 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
552 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
553 pszOdinDebugChannel, \
554 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
555 FNPROLOGUE(#cName) \
556 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
557 FNEPILOGUE(#cName) \
558 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
559 pszOdinDebugChannel, \
560 rc)); \
561 return rc; \
562 } \
563 \
564 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
565
566#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
567 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
568 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
569 { \
570 FNINIT \
571 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
572 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
573 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
574 pszOdinDebugChannel, \
575 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
576 FNPROLOGUE(#cName) \
577 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
578 FNEPILOGUE(#cName) \
579 dprintf(("%s: void "#cName"() leave\n", \
580 pszOdinDebugChannel)); \
581 } \
582 \
583 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
584
585
586/* ---------- 10 parameters ---------- */
587#define ODINFUNCTION10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
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); \
589 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
590 { \
591 FNINIT \
592 cRet rc; \
593 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
594 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
595 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
596 pszOdinDebugChannel, \
597 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
598 FNPROLOGUE(#cName) \
599 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
600 FNEPILOGUE(#cName) \
601 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
602 pszOdinDebugChannel, \
603 rc)); \
604 return rc; \
605 } \
606 \
607 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)
608
609#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
610 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); \
611 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
612 { \
613 FNINIT \
614 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
615 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
616 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
617 pszOdinDebugChannel, \
618 a1,a2,a3)); \
619 FNPROLOGUE(#cName) \
620 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
621 FNEPILOGUE(#cName) \
622 dprintf(("%s: void "#cName"() leave\n", \
623 pszOdinDebugChannel)); \
624 } \
625 \
626 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)
627
628
629/* ---------- 11 parameters ---------- */
630#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) \
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); \
632 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) \
633 { \
634 FNINIT \
635 cRet rc; \
636 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
637 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
638 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
639 pszOdinDebugChannel, \
640 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
641 FNPROLOGUE(#cName) \
642 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
643 FNEPILOGUE(#cName) \
644 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
645 pszOdinDebugChannel, \
646 rc)); \
647 return rc; \
648 } \
649 \
650 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
651
652#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) \
653 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
654 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
655 { \
656 FNINIT \
657 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
658 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
659 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
660 pszOdinDebugChannel, \
661 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
662 FNPROLOGUE(#cName) \
663 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
664 FNEPILOGUE(#cName) \
665 dprintf(("%s: void "#cName"() leave\n", \
666 pszOdinDebugChannel)); \
667 } \
668 \
669 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)
670
671
672/* ---------- 12 parameters ---------- */
673#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) \
674 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); \
675 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) \
676 { \
677 FNINIT \
678 cRet rc; \
679 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
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" \
682 ", "#t12" "#a12"=%08xh)", \
683 pszOdinDebugChannel, \
684 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
685 FNPROLOGUE(#cName) \
686 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
687 FNEPILOGUE(#cName) \
688 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
689 pszOdinDebugChannel, \
690 rc)); \
691 return rc; \
692 } \
693 \
694 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)
695
696#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) \
697 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); \
698 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) \
699 { \
700 FNINIT \
701 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
702 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
703 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
704 ", "#t12" "#a12"=%08xh)", \
705 pszOdinDebugChannel, \
706 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
707 FNPROLOGUE(#cName) \
708 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
709 FNEPILOGUE(#cName) \
710 dprintf(("%s: void "#cName"() leave\n", \
711 pszOdinDebugChannel)); \
712 } \
713 \
714 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)
715
716
717/* ---------- 13 parameters ---------- */
718#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) \
719 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); \
720 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) \
721 { \
722 FNINIT \
723 cRet rc; \
724 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
725 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
726 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
727 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh)", \
728 pszOdinDebugChannel, \
729 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
730 FNPROLOGUE(#cName) \
731 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
732 FNEPILOGUE(#cName) \
733 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
734 pszOdinDebugChannel, \
735 rc)); \
736 return rc; \
737 } \
738 \
739 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)
740
741#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) \
742 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); \
743 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) \
744 { \
745 FNINIT \
746 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
747 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
748 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
749 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, )", \
750 pszOdinDebugChannel, \
751 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
752 FNPROLOGUE(#cName) \
753 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
754 FNEPILOGUE(#cName) \
755 dprintf(("%s: void "#cName"() leave\n", \
756 pszOdinDebugChannel)); \
757 } \
758 \
759 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)
760
761
762/* ---------- 14 parameters ---------- */
763#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) \
764 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); \
765 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) \
766 { \
767 FNINIT \
768 cRet rc; \
769 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
770 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
771 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
772 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
773 pszOdinDebugChannel, \
774 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
775 FNPROLOGUE(#cName) \
776 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
777 FNEPILOGUE(#cName) \
778 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
779 pszOdinDebugChannel, \
780 rc)); \
781 return rc; \
782 } \
783 \
784 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)
785
786#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) \
787 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); \
788 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) \
789 { \
790 FNINIT \
791 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
792 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
793 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
794 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
795 pszOdinDebugChannel, \
796 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
797 FNPROLOGUE(#cName) \
798 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
799 FNEPILOGUE(#cName) \
800 dprintf(("%s: void "#cName"() leave\n", \
801 pszOdinDebugChannel)); \
802 } \
803 \
804 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)
805
806
807/* ---------- 0 parameters ---------- */
808#define ODINFUNCTIONNODBG0(cRet,cName) \
809 cRet ODIN_INTERNAL ODIN_##cName (void); \
810 cRet WINAPI cName(void) \
811 { \
812 FNINIT \
813 cRet rc; \
814 FNPROLOGUE(#cName) \
815 rc = ODIN_##cName(); \
816 FNEPILOGUE(#cName) \
817 return rc; \
818 } \
819 \
820 cRet ODIN_INTERNAL ODIN_##cName (void)
821
822
823#define ODINPROCEDURENODBG0(cName) \
824 void ODIN_INTERNAL ODIN_##cName (void); \
825 void WINAPI cName(void) \
826 { \
827 FNINIT \
828 FNPROLOGUE(#cName) \
829 ODIN_##cName(); \
830 FNEPILOGUE(#cName) \
831 } \
832 \
833 void ODIN_INTERNAL ODIN_##cName (void)
834
835
836/* ---------- 1 parameters ---------- */
837#define ODINFUNCTIONNODBG1(cRet,cName,t1,a1) \
838 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
839 cRet WINAPI cName(t1 a1) \
840 { \
841 FNINIT \
842 cRet rc; \
843 FNPROLOGUE(#cName) \
844 rc = ODIN_##cName(a1); \
845 FNEPILOGUE(#cName) \
846 return rc; \
847 } \
848 \
849 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
850
851#define ODINPROCEDURENODBG1(cName,t1,a1) \
852 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
853 void WINAPI cName(t1 a1) \
854 { \
855 FNINIT \
856 FNPROLOGUE(#cName) \
857 ODIN_##cName(a1); \
858 FNEPILOGUE(#cName) \
859 } \
860 \
861 void ODIN_INTERNAL ODIN_##cName (t1 a1)
862
863
864/* ---------- 2 parameters ---------- */
865#define ODINFUNCTIONNODBG2(cRet,cName,t1,a1,t2,a2) \
866 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
867 cRet WINAPI cName(t1 a1,t2 a2) \
868 { \
869 FNINIT \
870 cRet rc; \
871 FNPROLOGUE(#cName) \
872 rc = ODIN_##cName(a1,a2); \
873 FNEPILOGUE(#cName) \
874 return rc; \
875 } \
876 \
877 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
878
879#define ODINPROCEDURENODBG2(cName,t1,a1,t2,a2) \
880 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
881 void WINAPI cName(t1 a1,t2 a2) \
882 { \
883 FNINIT \
884 FNPROLOGUE(#cName) \
885 ODIN_##cName(a1,a2); \
886 FNEPILOGUE(#cName) \
887 } \
888 \
889 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
890
891
892/* ---------- 3 parameters ---------- */
893#define ODINFUNCTIONNODBG3(cRet,cName,t1,a1,t2,a2,t3,a3) \
894 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
895 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
896 { \
897 FNINIT \
898 cRet rc; \
899 FNPROLOGUE(#cName) \
900 rc = ODIN_##cName(a1,a2,a3); \
901 FNEPILOGUE(#cName) \
902 return rc; \
903 } \
904 \
905 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
906
907#define ODINPROCEDURENODBG3(cName,t1,a1,t2,a2,t3,a3) \
908 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
909 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
910 { \
911 FNINIT \
912 FNPROLOGUE(#cName) \
913 ODIN_##cName(a1,a2,a3); \
914 FNEPILOGUE(#cName) \
915 } \
916 \
917 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
918
919
920/* ---------- 4 parameters ---------- */
921#define ODINFUNCTIONNODBG4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
922 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
923 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
924 { \
925 FNINIT \
926 cRet rc; \
927 FNPROLOGUE(#cName) \
928 rc = ODIN_##cName(a1,a2,a3,a4); \
929 FNEPILOGUE(#cName) \
930 return rc; \
931 } \
932 \
933 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
934
935#define ODINPROCEDURENODBG4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
936 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
937 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
938 { \
939 FNINIT \
940 FNPROLOGUE(#cName) \
941 ODIN_##cName(a1,a2,a3,a4); \
942 FNEPILOGUE(#cName) \
943 } \
944 \
945 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
946
947
948/* ---------- 5 parameters ---------- */
949#define ODINFUNCTIONNODBG5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
950 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
951 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
952 { \
953 FNINIT \
954 cRet rc; \
955 FNPROLOGUE(#cName) \
956 rc = ODIN_##cName(a1,a2,a3,a4,a5); \
957 FNEPILOGUE(#cName) \
958 return rc; \
959 } \
960 \
961 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
962
963#define ODINPROCEDURENODBG5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
964 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
965 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
966 { \
967 FNINIT \
968 FNPROLOGUE(#cName) \
969 ODIN_##cName(a1,a2,a3,a4,a5); \
970 FNEPILOGUE(#cName) \
971 } \
972 \
973 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
974
975
976/* ---------- 6 parameters ---------- */
977#define ODINFUNCTIONNODBG6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
978 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
979 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
980 { \
981 FNINIT \
982 cRet rc; \
983 FNPROLOGUE(#cName) \
984 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
985 FNEPILOGUE(#cName) \
986 return rc; \
987 } \
988 \
989 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
990
991#define ODINPROCEDURENODBG6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
992 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
993 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
994 { \
995 FNINIT \
996 FNPROLOGUE(#cName) \
997 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
998 FNEPILOGUE(#cName) \
999 } \
1000 \
1001 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
1002
1003
1004/* ---------- 7 parameters ---------- */
1005#define ODINFUNCTIONNODBG7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
1006 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
1007 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
1008 { \
1009 FNINIT \
1010 cRet rc; \
1011 FNPROLOGUE(#cName) \
1012 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
1013 FNEPILOGUE(#cName) \
1014 return rc; \
1015 } \
1016 \
1017 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
1018
1019#define ODINPROCEDURENODBG7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
1020 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
1021 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
1022 { \
1023 FNINIT \
1024 FNPROLOGUE(#cName) \
1025 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
1026 FNEPILOGUE(#cName) \
1027 } \
1028 \
1029 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
1030
1031
1032/* ---------- 8 parameters ---------- */
1033#define ODINFUNCTIONNODBG8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
1034 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
1035 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
1036 { \
1037 FNINIT \
1038 cRet rc; \
1039 FNPROLOGUE(#cName) \
1040 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
1041 FNEPILOGUE(#cName) \
1042 return rc; \
1043 } \
1044 \
1045 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
1046
1047#define ODINPROCEDURENODBG8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
1048 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
1049 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
1050 { \
1051 FNINIT \
1052 FNPROLOGUE(#cName) \
1053 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
1054 FNEPILOGUE(#cName) \
1055 } \
1056 \
1057 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
1058
1059
1060/* ---------- 9 parameters ---------- */
1061#define ODINFUNCTIONNODBG9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
1062 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
1063 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
1064 { \
1065 FNINIT \
1066 cRet rc; \
1067 FNPROLOGUE(#cName) \
1068 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
1069 FNEPILOGUE(#cName) \
1070 return rc; \
1071 } \
1072 \
1073 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
1074
1075#define ODINPROCEDURENODBG9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
1076 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
1077 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
1078 { \
1079 FNINIT \
1080 FNPROLOGUE(#cName) \
1081 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
1082 FNEPILOGUE(#cName) \
1083 } \
1084 \
1085 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
1086
1087
1088/* ---------- 10 parameters ---------- */
1089#define ODINFUNCTIONNODBG10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1090 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
1091 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
1092 { \
1093 FNINIT \
1094 cRet rc; \
1095 FNPROLOGUE(#cName) \
1096 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
1097 FNEPILOGUE(#cName) \
1098 return rc; \
1099 } \
1100 \
1101 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
1102
1103#define ODINPROCEDURENODBG10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1104 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
1105 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
1106 { \
1107 FNINIT \
1108 FNPROLOGUE(#cName) \
1109 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
1110 FNEPILOGUE(#cName) \
1111 } \
1112 \
1113 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
1114
1115
1116/* ---------- 11 parameters ---------- */
1117#define ODINFUNCTIONNODBG11(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
1118 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
1119 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
1120 { \
1121 FNINIT \
1122 cRet rc; \
1123 FNPROLOGUE(#cName) \
1124 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
1125 FNEPILOGUE(#cName) \
1126 return rc; \
1127 } \
1128 \
1129 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
1130
1131#define ODINPROCEDURENODBG11(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
1132 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
1133 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
1134 { \
1135 FNINIT \
1136 FNPROLOGUE(#cName) \
1137 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
1138 FNEPILOGUE(#cName) \
1139 } \
1140 \
1141 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
1142
1143
1144/* ---------- 12 parameters ---------- */
1145#define ODINFUNCTIONNODBG12(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
1146 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
1147 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
1148 { \
1149 FNINIT \
1150 cRet rc; \
1151 FNPROLOGUE(#cName) \
1152 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
1153 FNEPILOGUE(#cName) \
1154 return rc; \
1155 } \
1156 \
1157 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
1158
1159#define ODINPROCEDURENODBG12(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
1160 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
1161 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
1162 { \
1163 FNINIT \
1164 FNPROLOGUE(#cName) \
1165 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
1166 FNEPILOGUE(#cName) \
1167 } \
1168 \
1169 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
1170
1171
1172/* ---------- 13 parameters ---------- */
1173#define ODINFUNCTIONNODBG13(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) \
1174 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
1175 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13) \
1176 { \
1177 FNINIT \
1178 cRet rc; \
1179 FNPROLOGUE(#cName) \
1180 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
1181 FNEPILOGUE(#cName) \
1182 return rc; \
1183 } \
1184 \
1185 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13)
1186
1187#define ODINPROCEDURENODBG13(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) \
1188 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
1189 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13) \
1190 { \
1191 FNINIT \
1192 FNPROLOGUE(#cName) \
1193 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
1194 FNEPILOGUE(#cName) \
1195 } \
1196 \
1197 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13)
1198
1199
1200/* ---------- 14 parameters ---------- */
1201#define ODINFUNCTIONNODBG14(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) \
1202 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
1203 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14) \
1204 { \
1205 FNINIT \
1206 cRet rc; \
1207 FNPROLOGUE(#cName) \
1208 rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
1209 FNEPILOGUE(#cName) \
1210 return rc; \
1211 } \
1212 \
1213 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14)
1214
1215#define ODINPROCEDURENODBG14(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) \
1216 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
1217 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14) \
1218 { \
1219 FNINIT \
1220 FNPROLOGUE(#cName) \
1221 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
1222 FNEPILOGUE(#cName) \
1223 } \
1224 \
1225 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14)
1226
1227
1228
1229#endif
1230
1231
1232
1233/****************************************************************************
1234 * Release Wrapper Macros (not instrumented) *
1235 ****************************************************************************/
1236#ifdef RELEASE
1237
1238 /* ---------- 0 parameters ---------- */
1239#define ODINFUNCTION0(cRet,cName) \
1240 cRet WINAPI cName(void)
1241
1242#define ODINPROCEDURE0(cName) \
1243 void WINAPI cName(void)
1244
1245
1246/* ---------- 1 parameters ---------- */
1247#define ODINFUNCTION1(cRet,cName,t1,a1) \
1248 cRet WINAPI cName(t1 a1)
1249
1250#define ODINPROCEDURE1(cName,t1,a1) \
1251 void WINAPI cName(t1 a1)
1252
1253/* ---------- 2 parameters ---------- */
1254#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
1255 cRet WINAPI cName(t1 a1,t2 a2)
1256
1257#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
1258 void WINAPI cName(t1 a1,t2 a2)
1259
1260
1261/* ---------- 3 parameters ---------- */
1262#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
1263 cRet WINAPI cName(t1 a1,t2 a2,t3 a3)
1264
1265#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
1266 void WINAPI cName(t1 a1,t2 a2,t3 a3)
1267
1268
1269/* ---------- 4 parameters ---------- */
1270#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
1271 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)
1272
1273#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
1274 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)
1275
1276
1277/* ---------- 5 parameters ---------- */
1278#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
1279 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
1280
1281#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
1282 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
1283
1284
1285/* ---------- 6 parameters ---------- */
1286#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
1287 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
1288
1289#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
1290 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
1291
1292/* ---------- 7 parameters ---------- */
1293#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
1294 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
1295
1296#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
1297 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
1298
1299/* ---------- 8 parameters ---------- */
1300#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
1301 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
1302
1303#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
1304 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
1305
1306/* ---------- 9 parameters ---------- */
1307#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
1308 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
1309
1310#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
1311 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
1312
1313/* ---------- 10 parameters ---------- */
1314#define ODINFUNCTION10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1315 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
1316
1317#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1318 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
1319
1320/* ---------- 11 parameters ---------- */
1321#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) \
1322 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)
1323
1324#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) \
1325 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)
1326
1327/* ---------- 12 parameters ---------- */
1328#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) \
1329 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)
1330
1331#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) \
1332 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)
1333
1334/* ---------- 13 parameters ---------- */
1335#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) \
1336 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)
1337
1338#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) \
1339 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)
1340
1341/* ---------- 14 parameters ---------- */
1342#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) \
1343 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)
1344
1345#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) \
1346 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) \
1347
1348#define ODINFUNCTIONNODBG0 ODINFUNCTION0
1349#define ODINFUNCTIONNODBG1 ODINFUNCTION1
1350#define ODINFUNCTIONNODBG2 ODINFUNCTION2
1351#define ODINFUNCTIONNODBG3 ODINFUNCTION3
1352#define ODINFUNCTIONNODBG4 ODINFUNCTION4
1353#define ODINFUNCTIONNODBG5 ODINFUNCTION5
1354#define ODINFUNCTIONNODBG6 ODINFUNCTION6
1355#define ODINFUNCTIONNODBG7 ODINFUNCTION7
1356#define ODINFUNCTIONNODBG8 ODINFUNCTION8
1357#define ODINFUNCTIONNODBG9 ODINFUNCTION9
1358#define ODINFUNCTIONNODBG10 ODINFUNCTION10
1359#define ODINFUNCTIONNODBG11 ODINFUNCTION11
1360#define ODINFUNCTIONNODBG12 ODINFUNCTION12
1361#define ODINFUNCTIONNODBG13 ODINFUNCTION13
1362#define ODINFUNCTIONNODBG14 ODINFUNCTION14
1363
1364#define ODINPROCEDURENODBG0 ODINPROCEDURE0
1365#define ODINPROCEDURENODBG1 ODINPROCEDURE1
1366#define ODINPROCEDURENODBG2 ODINPROCEDURE2
1367#define ODINPROCEDURENODBG3 ODINPROCEDURE3
1368#define ODINPROCEDURENODBG4 ODINPROCEDURE4
1369#define ODINPROCEDURENODBG5 ODINPROCEDURE5
1370#define ODINPROCEDURENODBG6 ODINPROCEDURE6
1371#define ODINPROCEDURENODBG7 ODINPROCEDURE7
1372#define ODINPROCEDURENODBG8 ODINPROCEDURE8
1373#define ODINPROCEDURENODBG9 ODINPROCEDURE9
1374#define ODINPROCEDURENODBG10 ODINPROCEDURE10
1375#define ODINPROCEDURENODBG11 ODINPROCEDURE11
1376#define ODINPROCEDURENODBG12 ODINPROCEDURE12
1377#define ODINPROCEDURENODBG13 ODINPROCEDURE13
1378#define ODINPROCEDURENODBG14 ODINPROCEDURE14
1379
1380#endif /* RELEASE */
1381
1382
1383#endif /* _ODINWRAP_H_ */
Note: See TracBrowser for help on using the repository browser.