source: trunk/include/odinwrap.h@ 1669

Last change on this file since 1669 was 1669, checked in by sandervl, 26 years ago

dprintf & wrapper updates

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