source: trunk/include/odinwrap.h@ 689

Last change on this file since 689 was 595, checked in by phaller, 26 years ago

Fix: macro fixes in ODINWRAP.H

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