source: trunk/include/odinwrap.h@ 4377

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

Removed FS: wrappers from wrapper macros (for SvL)

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