source: trunk/include/odinwrap.h@ 5200

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

Added profiling support

File size: 40.0 KB
Line 
1/* $Id: odinwrap.h,v 1.29 2000-12-09 16:04:24 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
28//#define PROFILE
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#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
52
53
54#ifdef DEBUG
55
56//@@@PH 1999/10/25 IBM VAC++ debug memory support
57#include <malloc.h>
58#include <odin.h>
59
60// ---------------------------------------------------------------------------
61extern int IsExeStarted(); //kernel32
62extern unsigned long int WIN32API GetCurrentThreadId(); //kernel32
63
64// ---------------------------------------------------------------------------
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
73
74// ---------------------------------------------------------------------------
75// PH: this is for profiling cumulative method call times
76#ifdef PROFILE
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
101
102#define FNPROLOGUE(a) \
103 USHORT sel = GetFS(); \
104 ODIN_HEAPCHECK(); \
105 PROFILE_START(a)
106
107#define FNEPILOGUE(a) \
108 PROFILE_STOP(a) \
109 ODIN_HEAPCHECK(); \
110 if (sel != GetFS() && IsExeStarted()) \
111 dprintf(("ERROR: FS: for thread %08xh corrupted by "a, GetCurrentThreadId()));
112
113
114/****************************************************************************
115 * General Wrapper Macros (debug instrumented) *
116 ****************************************************************************/
117
118/* ---------- 0 parameters ---------- */
119#define ODINFUNCTION0(cRet,cName) \
120 cRet ODIN_INTERNAL ODIN_##cName (void); \
121 cRet WINAPI cName(void) \
122 { \
123 dprintf(("%s: "#cRet" "#cName"()", \
124 pszOdinDebugChannel)); \
125 FNPROLOGUE(#cName) \
126 cRet rc = ODIN_##cName(); \
127 FNEPILOGUE(#cName) \
128 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
129 pszOdinDebugChannel, \
130 rc)); \
131 return rc; \
132 } \
133 \
134 cRet ODIN_INTERNAL ODIN_##cName (void)
135
136
137#define ODINPROCEDURE0(cName) \
138 void ODIN_INTERNAL ODIN_##cName (void); \
139 void WINAPI cName(void) \
140 { \
141 dprintf(("%s: void "#cName"()", \
142 pszOdinDebugChannel)); \
143 FNPROLOGUE(#cName) \
144 ODIN_##cName(); \
145 dprintf(("%s: void "#cName"() leave\n", \
146 pszOdinDebugChannel)); \
147 FNEPILOGUE(#cName) \
148 } \
149 \
150 void ODIN_INTERNAL ODIN_##cName (void)
151
152
153/* ---------- 1 parameters ---------- */
154#define ODINFUNCTION1(cRet,cName,t1,a1) \
155 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
156 cRet WINAPI cName(t1 a1) \
157 { \
158 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh)", \
159 pszOdinDebugChannel, \
160 a1)); \
161 FNPROLOGUE(#cName) \
162 cRet rc = ODIN_##cName(a1); \
163 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
164 pszOdinDebugChannel, \
165 rc)); \
166 FNEPILOGUE(#cName) \
167 return rc; \
168 } \
169 \
170 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
171
172#define ODINPROCEDURE1(cName,t1,a1) \
173 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
174 void WINAPI cName(t1 a1) \
175 { \
176 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh)", \
177 pszOdinDebugChannel, \
178 a1)); \
179 FNPROLOGUE(#cName) \
180 ODIN_##cName(a1); \
181 dprintf(("%s: void "#cName"() leave\n", \
182 pszOdinDebugChannel)); \
183 FNEPILOGUE(#cName) \
184 } \
185 \
186 void ODIN_INTERNAL ODIN_##cName (t1 a1)
187
188
189/* ---------- 2 parameters ---------- */
190#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
191 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
192 cRet WINAPI cName(t1 a1,t2 a2) \
193 { \
194 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
195 pszOdinDebugChannel, \
196 a1,a2)); \
197 FNPROLOGUE(#cName) \
198 cRet rc = ODIN_##cName(a1,a2); \
199 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
200 pszOdinDebugChannel, \
201 rc)); \
202 FNEPILOGUE(#cName) \
203 return rc; \
204 } \
205 \
206 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
207
208#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
209 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
210 void WINAPI cName(t1 a1,t2 a2) \
211 { \
212 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
213 pszOdinDebugChannel, \
214 a1,a2)); \
215 FNPROLOGUE(#cName) \
216 ODIN_##cName(a1,a2); \
217 dprintf(("%s: void "#cName"() leave\n", \
218 pszOdinDebugChannel)); \
219 FNEPILOGUE(#cName) \
220 } \
221 \
222 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
223
224
225/* ---------- 3 parameters ---------- */
226#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
227 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
228 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
229 { \
230 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
231 pszOdinDebugChannel, \
232 a1,a2,a3)); \
233 FNPROLOGUE(#cName) \
234 cRet rc = ODIN_##cName(a1,a2,a3); \
235 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
236 pszOdinDebugChannel, \
237 rc)); \
238 FNEPILOGUE(#cName) \
239 return rc; \
240 } \
241 \
242 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
243
244#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
245 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
246 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
247 { \
248 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
249 pszOdinDebugChannel, \
250 a1,a2,a3)); \
251 FNPROLOGUE(#cName) \
252 ODIN_##cName(a1,a2,a3); \
253 pszOdinDebugChannel)); \
254 FNEPILOGUE(#cName) \
255 } \
256 \
257 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
258
259
260/* ---------- 4 parameters ---------- */
261#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
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) \
264 { \
265 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
266 pszOdinDebugChannel, \
267 a1,a2,a3,a4)); \
268 FNPROLOGUE(#cName) \
269 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
270 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
271 pszOdinDebugChannel, \
272 rc)); \
273 FNEPILOGUE(#cName) \
274 return rc; \
275 } \
276 \
277 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
278
279#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
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) \
282 { \
283 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
284 pszOdinDebugChannel, \
285 a1,a2,a3,a4)); \
286 FNPROLOGUE(#cName) \
287 ODIN_##cName(a1,a2,a3,a4); \
288 dprintf(("%s: void "#cName"() leave\n", \
289 pszOdinDebugChannel)); \
290 FNEPILOGUE \
291 } \
292 \
293 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
294
295
296/* ---------- 5 parameters ---------- */
297#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
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) \
300 { \
301 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
302 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
303 pszOdinDebugChannel, \
304 a1,a2,a3,a4,a5)); \
305 FNPROLOGUE(#cName) \
306 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
307 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
308 pszOdinDebugChannel, \
309 rc)); \
310 FNEPILOGUE(#cName) \
311 return rc; \
312 } \
313 \
314 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
315
316#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
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) \
319 { \
320 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
321 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
322 pszOdinDebugChannel, \
323 a1,a2,a3,a4,a5)); \
324 FNPROLOGUE(#cName) \
325 ODIN_##cName(a1,a2,a3,a4,a5); \
326 pszOdinDebugChannel)); \
327 FNEPILOGUE \
328 } \
329 \
330 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
331
332
333/* ---------- 6 parameters ---------- */
334#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
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) \
337 { \
338 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
339 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
340 pszOdinDebugChannel, \
341 a1,a2,a3,a4,a5,a6)); \
342 FNPROLOGUE(#cName) \
343 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
344 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
345 pszOdinDebugChannel, \
346 rc)); \
347 FNEPILOGUE(#cName) \
348 return rc; \
349 } \
350 \
351 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
352
353#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
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) \
356 { \
357 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
358 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
359 pszOdinDebugChannel, \
360 a1,a2,a3,a4,a5,a6)); \
361 FNPROLOGUE(#cName) \
362 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
363 dprintf(("%s: void "#cName"() leave\n", \
364 pszOdinDebugChannel)); \
365 FNEPILOGUE \
366 } \
367 \
368 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
369
370
371/* ---------- 7 parameters ---------- */
372#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
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) \
375 { \
376 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
377 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
378 pszOdinDebugChannel, \
379 a1,a2,a3,a4,a5,a6,a7)); \
380 FNPROLOGUE(#cName) \
381 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
382 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
383 pszOdinDebugChannel, \
384 rc)); \
385 FNEPILOGUE(#cName) \
386 return rc; \
387 } \
388 \
389 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
390
391#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
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) \
394 { \
395 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
396 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
397 pszOdinDebugChannel, \
398 a1,a2,a3,a4,a5,a6,a7)); \
399 FNPROLOGUE(#cName) \
400 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
401 dprintf(("%s: void "#cName"() leave\n", \
402 pszOdinDebugChannel)); \
403 FNEPILOGUE \
404 } \
405 \
406 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
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) \
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) \
413 { \
414 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
415 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
416 ", "#t8" "#a8"=%08xh)", \
417 pszOdinDebugChannel, \
418 a1,a2,a3,a4,a5,a6,a7,a8)); \
419 FNPROLOGUE(#cName) \
420 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
421 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
422 pszOdinDebugChannel, \
423 rc)); \
424 FNEPILOGUE(#cName) \
425 return rc; \
426 } \
427 \
428 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
429
430#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
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) \
433 { \
434 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
435 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
436 ", "#t8" "#a8"=%08xh)", \
437 pszOdinDebugChannel, \
438 a1,a2,a3,a4,a5,a6,a7,a8)); \
439 FNPROLOGUE(#cName) \
440 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
441 dprintf(("%s: void "#cName"() leave\n", \
442 pszOdinDebugChannel)); \
443 FNEPILOGUE \
444 } \
445 \
446 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
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) \
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) \
453 { \
454 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
455 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
456 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
457 pszOdinDebugChannel, \
458 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
459 FNPROLOGUE(#cName) \
460 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
461 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
462 pszOdinDebugChannel, \
463 rc)); \
464 FNEPILOGUE(#cName) \
465 return rc; \
466 } \
467 \
468 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
469
470#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
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) \
473 { \
474 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
475 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
476 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
477 pszOdinDebugChannel, \
478 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
479 FNPROLOGUE(#cName) \
480 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
481 dprintf(("%s: void "#cName"() leave\n", \
482 pszOdinDebugChannel)); \
483 FNEPILOGUE \
484 } \
485 \
486 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
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) \
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) \
493 { \
494 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
495 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
496 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
497 pszOdinDebugChannel, \
498 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
499 FNPROLOGUE(#cName) \
500 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
501 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
502 pszOdinDebugChannel, \
503 rc)); \
504 FNEPILOGUE(#cName) \
505 return rc; \
506 } \
507 \
508 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
509
510#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
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) \
513 { \
514 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
515 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
516 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
517 pszOdinDebugChannel, \
518 a1,a2,a3)); \
519 FNPROLOGUE(#cName) \
520 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
521 dprintf(("%s: void "#cName"() leave\n", \
522 pszOdinDebugChannel)); \
523 FNEPILOGUE \
524 } \
525 \
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)
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) \
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) \
533 { \
534 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
535 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
536 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
537 pszOdinDebugChannel, \
538 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
539 FNPROLOGUE(#cName) \
540 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
541 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
542 pszOdinDebugChannel, \
543 rc)); \
544 FNEPILOGUE(#cName) \
545 return rc; \
546 } \
547 \
548 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
549
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) \
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) \
553 { \
554 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
555 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
556 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
557 pszOdinDebugChannel, \
558 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
559 FNPROLOGUE(#cName) \
560 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
561 dprintf(("%s: void "#cName"() leave\n", \
562 pszOdinDebugChannel)); \
563 FNEPILOGUE \
564 } \
565 \
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)
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) \
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) \
573 { \
574 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
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" \
577 ", "#t12" "#a12"=%08xh)", \
578 pszOdinDebugChannel, \
579 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
580 FNPROLOGUE(#cName) \
581 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
582 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
583 pszOdinDebugChannel, \
584 rc)); \
585 FNEPILOGUE(#cName) \
586 return rc; \
587 } \
588 \
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)
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) \
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) \
594 { \
595 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
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" \
598 ", "#t12" "#a12"=%08xh)", \
599 pszOdinDebugChannel, \
600 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
601 FNPROLOGUE(#cName) \
602 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
603 dprintf(("%s: void "#cName"() leave\n", \
604 pszOdinDebugChannel)); \
605 FNEPILOGUE \
606 } \
607 \
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)
609
610
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 { \
616 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
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" \
619 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh)", \
620 pszOdinDebugChannel, \
621 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
622 FNPROLOGUE(#cName) \
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)); \
627 FNEPILOGUE(#cName) \
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 { \
637 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
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" \
640 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, )", \
641 pszOdinDebugChannel, \
642 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
643 FNPROLOGUE(#cName) \
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)); \
647 FNEPILOGUE \
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 { \
658 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
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" \
661 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
662 pszOdinDebugChannel, \
663 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
664 FNPROLOGUE(#cName) \
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)); \
669 FNEPILOGUE(#cName) \
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) \
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); \
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 { \
679 dprintf(("%s: void "#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, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
683 pszOdinDebugChannel, \
684 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
685 FNPROLOGUE(#cName) \
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)); \
689 FNEPILOGUE \
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
695#else
696
697/****************************************************************************
698 * General Wrapper Macros *
699 ****************************************************************************/
700
701#define ODINFUNCTION0 ODINFUNCTIONNODBG0
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
711#define ODINFUNCTION10 ODINFUNCTIONNODBG10
712#define ODINFUNCTION11 ODINFUNCTIONNODBG11
713#define ODINFUNCTION12 ODINFUNCTIONNODBG12
714#define ODINFUNCTION13 ODINFUNCTIONNODBG13
715#define ODINFUNCTION14 ODINFUNCTIONNODBG14
716
717#define ODINPROCEDURE0 ODINPROCEDURENODBG0
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
727#define ODINPROCEDURE10 ODINPROCEDURENODBG10
728#define ODINPROCEDURE11 ODINPROCEDURENODBG11
729#define ODINPROCEDURE12 ODINPROCEDURENODBG12
730#define ODINPROCEDURE13 ODINPROCEDURENODBG13
731#define ODINPROCEDURE14 ODINPROCEDURENODBG14
732
733#endif
734
735/****************************************************************************
736 * General Wrapper Macros *
737 ****************************************************************************/
738
739/* ---------- 0 parameters ---------- */
740#define ODINFUNCTIONNODBG0(cRet,cName) cRet WINAPI cName(void)
741#define ODINPROCEDURENODBG0(cName) void WINAPI cName(void)
742
743/* ---------- 1 parameters ---------- */
744#define ODINFUNCTIONNODBG1(cRet,cName,t1,a1) cRet WINAPI cName(t1 a1)
745#define ODINPROCEDURENODBG1(cName,t1,a1) void WINAPI cName(t1 a1)
746
747/* ---------- 2 parameters ---------- */
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)
750
751/* ---------- 3 parameters ---------- */
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)
754
755/* ---------- 4 parameters ---------- */
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)
758
759/* ---------- 5 parameters ---------- */
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)
762
763/* ---------- 6 parameters ---------- */
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)
766
767/* ---------- 7 parameters ---------- */
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)
770
771/* ---------- 8 parameters ---------- */
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)
774
775/* ---------- 9 parameters ---------- */
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)
778
779/* ---------- 10 parameters ---------- */
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)
782
783/* ---------- 11 parameters ---------- */
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)
786
787/* ---------- 12 parameters ---------- */
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)
790
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) \
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)
794
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) \
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)
797
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) \
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)
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) \
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)
804
805
806#endif /* _ODINWRAP_H_ */
Note: See TracBrowser for help on using the repository browser.