]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/MAI/bios_emulator/scitech/include/scitech.h
* Patch by Thomas Frieden, 13 Nov 2002:
[karo-tx-uboot.git] / board / MAI / bios_emulator / scitech / include / scitech.h
1 /****************************************************************************
2 *
3 *                   SciTech Multi-platform Graphics Library
4 *
5 *  ========================================================================
6 *
7 *    The contents of this file are subject to the SciTech MGL Public
8 *    License Version 1.0 (the "License"); you may not use this file
9 *    except in compliance with the License. You may obtain a copy of
10 *    the License at http://www.scitechsoft.com/mgl-license.txt
11 *
12 *    Software distributed under the License is distributed on an
13 *    "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
14 *    implied. See the License for the specific language governing
15 *    rights and limitations under the License.
16 *
17 *    The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc.
18 *
19 *    The Initial Developer of the Original Code is SciTech Software, Inc.
20 *    All Rights Reserved.
21 *
22 *  ========================================================================
23 *
24 * Language:     ANSI C
25 * Environment:  any
26 *
27 * Description:  General header file for operating system portable code.
28 *
29 ****************************************************************************/
30
31 #ifndef __SCITECH_H
32 #define __SCITECH_H
33
34 /* We have the following defines to identify the compilation environment:
35  *
36  *  __16BIT__       Compiling for 16 bit code (any environment)
37  *  __32BIT__       Compiling for 32 bit code (any environment)
38  *  __MSDOS__       Compiling for MS-DOS (includes __WINDOWS16__, __WIN386__)
39  *  __REALDOS__     Compiling for MS-DOS (excludes __WINDOWS16__)
40  *  __MSDOS16__     Compiling for 16 bit MS-DOS
41  *  __MSDOS32__     Compiling for 32 bit MS-DOS
42  *  __WINDOWS__     Compiling for Windows
43  *  __WINDOWS16__   Compiling for 16 bit Windows (__MSDOS__ also defined)
44  *  __WINDOWS32__   Compiling for 32 bit Windows
45  *  __WIN32_VXD__   Compiling for a 32-bit C based VxD
46  *  __NT_DRIVER__   Compiling for a 32-bit C based NT device driver
47  *  __OS2__         Compiling for OS/2
48  *  __OS2_16__      Compiling for 16 bit OS/2
49  *  __OS2_32__      Compiling for 32 bit OS/2
50  *  __UNIX__        Compiling for Unix
51  *  __QNX__         Compiling for the QNX realtime OS (Unix compatible)
52  *  __LINUX__       Compiling for the Linux OS (Unix compatible)
53  *  __FREEBSD__     Compiling for the FreeBSD OS (Unix compatible)
54  *  __BEOS__        Compiling for the BeOS (Unix compatible)
55  *  __SMX32__       Compiling for the SMX 32-bit Real Time OS
56  *  __ENEA_OSE__    Compiling for the OSE embedded OS
57  *  __RTTARGET__    Compiling for the RTTarget 32-bit embedded OS
58  *  __MACOS__       Compiling for the MacOS platform (PowerPC)
59  *  __DRIVER__      Compiling for a 32-bit binary compatible driver
60  *  __CONSOLE__     Compiling for a fullscreen OS console mode
61  *  __SNAP__        Compiling as a Snap executeable or dynamic library
62  *
63  *  __INTEL__       Compiling for Intel CPU's
64  *  __ALPHA__       Compiling for DEC Alpha CPU's
65  *  __MIPS__        Compiling for MIPS CPU's
66  *  __PPC__         Compiling for PowerPC CPU's
67  *  __MC68K__       Compiling for Motorola 680x0
68  *
69  *  __BIG_ENDIAN__  Compiling for a big endian processor
70  *
71  */
72
73 #ifdef  __SC__
74 #if     __INTSIZE == 4
75 #define __SC386__
76 #endif
77 #endif
78
79 /* Determine some things that are compiler specific */
80
81 #ifdef  __GNUC__
82 #ifdef  __cplusplus
83 // G++ currently fucks this up!
84 #define __cdecl
85 #define __stdcall
86 #else
87 #undef  __cdecl
88 #undef  __stdcall
89 #define __cdecl     __attribute__ ((cdecl))
90 #define __stdcall   __attribute__ ((stdcall))
91 #endif
92 #define __FLAT__            /* GCC is always 32 bit flat model          */
93 #define __HAS_BOOL__        /* Latest GNU C++ has ibool type            */
94 #define __HAS_LONG_LONG__   /* GNU C supports long long type            */
95 #include <stdio.h>          /* Bring in for definition of NULL          */
96 #endif
97
98 #ifdef  __BORLANDC__
99 #if (__BORLANDC__ >= 0x500) || defined(CLASSLIB_DEFS_H)
100 #define __HAS_BOOL__        /* Borland C++ 5.0 defines ibool type       */
101 #endif
102 #if (__BORLANDC__ >= 0x502) && !defined(VTOOLSD) && !defined(__SMX32__)
103 #define __HAS_INT64__       /* Borland C++ 5.02 supports __int64 type   */
104 #endif
105 #endif
106
107 #if defined(_MSC_VER) && !defined(__SC__) && !defined(VTOOLSD) && !defined(__SMX32__)
108 #define __HAS_INT64__       /* Visual C++ supports __int64 type         */
109 #endif
110
111 #if defined(__WATCOMC__) && (__WATCOMC__ >= 1100) && !defined(VTOOLSD) && !defined(__SMX32__)
112 #define __HAS_INT64__       /* Watcom C++ 11.0 supports __int64 type    */
113 #endif
114
115 /*---------------------------------------------------------------------------
116  * Determine the compile time environment. This must be done for each
117  * supported platform so that we can determine at compile time the target
118  * environment, hopefully without requiring #define's from the user.
119  *-------------------------------------------------------------------------*/
120
121 /* 32-bit binary compatible driver. Compiled as Win32, but as OS neutral */
122 #ifdef  __DRIVER__
123 #ifndef __32BIT__
124 #define __32BIT__
125 #endif
126 #undef  __WINDOWS__
127 #undef  _WIN32
128 #undef  __WIN32__
129 #undef  __NT__
130
131 /* 32-bit Snap exe or dll. Compiled as Win32, but as OS neutral */
132 #elif   defined(__SNAP__)
133 #ifndef __32BIT__
134 #define __32BIT__
135 #endif
136 #undef  __WINDOWS__
137 #undef  _WIN32
138 #undef  __WIN32__
139 #undef  __NT__
140
141 /* 32-bit Windows VxD compile environment */
142 #elif   defined(__vtoolsd_h_) || defined(VTOOLSD)
143 #include <vtoolsc.h>
144 #define __WIN32_VXD__
145 #ifndef __32BIT__
146 #define __32BIT__
147 #endif
148 #define _MAX_PATH   256
149 #undef __WINDOWS32__
150
151 /* 32-bit Windows NT driver compile environment: TODO!! */
152 #elif   defined(__NT_DRIVER__)
153 #include "ntdriver.h"
154 #ifndef __32BIT__
155 #define __32BIT__
156 #endif
157 #define _MAX_PATH   256
158 #undef __WINDOWS32__
159
160 /* 32-bit SMX compile environment */
161 #elif   defined(__SMX32__)
162 #ifndef __MSDOS__
163 #define __MSDOS__
164 #endif
165 #ifndef __32BIT__
166 #define __32BIT__
167 #endif
168 #ifndef __CONSOLE__
169 #define __CONSOLE__
170 #endif
171
172 /* 32-bit Enea OSE environment */
173 #elif   defined(__ENEA_OSE__)
174 #ifndef __32BIT__
175 #define __32BIT__
176 #endif
177 #ifndef __CONSOLE__
178 #define __CONSOLE__
179 #endif
180
181 /* 32-bit RTTarget-32 environment */
182 #elif   defined(__RTTARGET__)
183 #ifndef __32BIT__
184 #define __32BIT__
185 #endif
186 #ifndef __CONSOLE__
187 #define __CONSOLE__
188 #endif
189
190 /* 32-bit extended DOS compile environment */
191 #elif   defined(__MSDOS__) || defined(__MSDOS32__) || defined(__DOS__) || defined(__DPMI32__) || (defined(M_I86) && (!defined(__SC386__) && !defined(M_I386))) || defined(TNT)
192 #ifndef __MSDOS__
193 #define __MSDOS__
194 #endif
195 #if     defined(__MSDOS32__) || defined(__386__) || defined(__FLAT__) || defined(__NT__) || defined(__SC386__)
196 #ifndef __MSDOS32__
197 #define __MSDOS32__
198 #endif
199 #ifndef __32BIT__
200 #define __32BIT__
201 #endif
202 #ifndef __REALDOS__
203 #define __REALDOS__
204 #endif
205 #ifndef __CONSOLE__
206 #define __CONSOLE__
207 #endif
208
209 /* 16-bit Windows compile environment */
210 #elif   (defined(_Windows) || defined(_WINDOWS)) && !defined(__DPMI16__)
211 #ifndef __16BIT__
212 #define __16BIT__
213 #endif
214 #ifndef __WINDOWS16__
215 #define __WINDOWS16__
216 #endif
217 #ifndef __WINDOWS__
218 #define __WINDOWS__
219 #endif
220 #ifndef __MSDOS__
221 #define __MSDOS__
222 #endif
223
224 /* 16-bit DOS compile environment */
225 #else
226 #ifndef __16BIT__
227 #define __16BIT__
228 #endif
229 #ifndef __MSDOS16__
230 #define __MSDOS16__
231 #endif
232 #ifndef __REALDOS__
233 #define __REALDOS__
234 #endif
235 #ifndef __CONSOLE__
236 #define __CONSOLE__
237 #endif
238 #endif
239
240 /* 32-bit Windows compile environment */
241 #elif   defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
242 #ifndef __32BIT__
243 #define __32BIT__
244 #endif
245 #ifndef __WINDOWS32__
246 #define __WINDOWS32__
247 #endif
248 #ifndef _WIN32
249 #define _WIN32                  /* Microsoft Win32 SDK headers use _WIN32 */
250 #endif
251 #ifndef WIN32
252 #define WIN32                   /* OpenGL headers use WIN32 */
253 #endif
254 #ifndef __WINDOWS__
255 #define __WINDOWS__
256 #endif
257
258 /* 32-bit OS/2 VDD compile environment */
259 /* We're assuming (for now) that CL386 must be used */
260 #elif   defined(MSDOS) && defined(M_I386)
261 /* fixes necessary to compile with CL386 */
262 #define __cdecl  _cdecl
263 typedef unsigned int size_t;
264
265 #include <mvdm.h>
266
267 /* This should probably be somewhere else...                 */
268 /* Inline eligible functions (we have no CRT libs for CL386) */
269 #pragma intrinsic (strcpy, strcmp, strlen, strcat)
270 #pragma intrinsic (memcmp, memcpy, memset)
271
272 #define __OS2_VDD__
273 #ifndef __32BIT__
274 #define __32BIT__
275 #endif
276 #define CCHMAXPATH  256
277 #define _MAX_PATH   256
278 #ifndef __OS2__
279 #define __OS2__
280 #endif
281 #ifndef __OS2_32__
282 #define __OS2_32__
283 #endif
284
285 /* 16-bit OS/2 compile environment */
286 #elif   defined(__OS2_16__)
287 #ifndef __OS2__
288 #define __OS2__
289 #endif
290 #ifndef __16BIT__
291 #define __16BIT__
292 #endif
293 #ifndef __OS2_PM__
294 #ifndef __CONSOLE__
295 #define __CONSOLE__
296 #endif
297 #endif
298
299 /* 32-bit OS/2 compile environment */
300 #elif   defined(__OS2__) || defined(__OS2_32__)
301 #ifndef __OS2__
302 #define __OS2__
303 #endif
304 #ifndef __OS2_32__
305 #define __OS2_32__
306 #endif
307 #ifndef __32BIT__
308 #define __32BIT__
309 #endif
310 #ifndef __OS2_PM__
311 #ifndef __CONSOLE__
312 #define __CONSOLE__
313 #endif
314 #endif
315
316 /* 32-bit QNX compile environment */
317 #elif   defined(__QNX__)
318 #ifndef __32BIT__
319 #define __32BIT__
320 #endif
321 #ifndef __UNIX__
322 #define __UNIX__
323 #endif
324 #ifdef  __GNUC__
325 #define stricmp strcasecmp
326 #endif
327 #if !defined(__PHOTON__) && !defined(__X11__)
328 #ifndef __CONSOLE__
329 #define __CONSOLE__
330 #endif
331 #endif
332
333 /* 32-bit Linux compile environment */
334 #elif   defined(__LINUX__) || defined(linux)
335 #ifndef __LINUX__
336 #define __LINUX__
337 #endif
338 #ifndef __32BIT__
339 #define __32BIT__
340 #endif
341 #ifndef __UNIX__
342 #define __UNIX__
343 #endif
344 #ifdef  __GNUC__
345 #define stricmp strcasecmp
346 #endif
347 #ifndef __X11__
348 #ifndef __CONSOLE__
349 #define __CONSOLE__
350 #endif
351 #endif
352
353 /* 32-bit FreeBSD compile environment */
354 #elif   defined(__FREEBSD__)
355 #ifndef __FREEBSD__
356 #define __FREEBSD__
357 #endif
358 #ifndef __32BIT__
359 #define __32BIT__
360 #endif
361 #ifndef __UNIX__
362 #define __UNIX__
363 #endif
364 #ifdef  __GNUC__
365 #define stricmp strcasecmp
366 #endif
367 #ifndef __X11__
368 #ifndef __CONSOLE__
369 #define __CONSOLE__
370 #endif
371 #endif
372
373 /* 32-bit BeOS compile environment */
374 #elif   defined(__BEOS__)
375 #ifndef __32BIT__
376 #define __32BIT__
377 #endif
378 #ifndef __UNIX__
379 #define __UNIX__
380 #endif
381 #ifdef  __GNUC__
382 #define stricmp strcasecmp
383 #endif
384
385 /* Unsupported OS! */
386 #else
387 #error  This platform is not currently supported!
388 #endif
389
390 /* Determine the CPU type that we are compiling for */
391
392 #if     defined(__M_ALPHA) || defined(__ALPHA_) || defined(__ALPHA) || defined(__alpha)
393 #ifndef __ALPHA__
394 #define __ALPHA__
395 #endif
396 #elif   defined(__M_PPC) || defined(__POWERC)
397 #ifndef __PPC__
398 #define __PPC__
399 #endif
400 #elif   defined(__M_MRX000)
401 #ifndef __MIPS__
402 #define __MIPS__
403 #endif
404 #else
405 #ifndef __INTEL__
406 #define __INTEL__               /* Assume Intel if nothing found */
407 #endif
408 #endif
409
410 /* We have the following defines to define the calling conventions for
411  * publicly accesible functions:
412  *
413  *  _PUBAPI  - Compiler default calling conventions for all public 'C' functions
414  *  _ASMAPI  - Calling conventions for all public assembler functions
415  *  _VARAPI  - Modifiers for variables; Watcom C++ mangles C++ globals
416  *  _STDCALL - Win32 __stdcall where possible, __cdecl if not supported
417  */
418
419 #if defined(_MSC_VER) && defined(_WIN32) && !defined(__SC__)
420 #define __PASCAL    __stdcall
421 #else
422 #define __PASCAL    __pascal
423 #endif
424
425 #if defined(NO_STDCALL)
426 #define _STDCALL    __cdecl
427 #else
428 #define _STDCALL    __stdcall
429 #endif
430
431 #ifdef  __WATCOMC__
432 #if (__WATCOMC__ >= 1050)
433 #define _VARAPI     __cdecl
434 #else
435 #define _VARAPI
436 #endif
437 #else
438 #define _VARAPI
439 #endif
440
441 #if defined(__IBMC__) || defined(__IBMCPP__)
442 #define PTR_DECL_IN_FRONT
443 #endif
444
445 /* Define the calling conventions for all public functions. For simplicity
446  * we define all public functions as __cdecl calling conventions, so that
447  * they are the same across all compilers and runtime DLL's.
448  */
449
450 #define _PUBAPI __cdecl
451 #define _ASMAPI __cdecl
452
453 /* Determine the syntax for declaring a function pointer with a
454  * calling conventions override. Most compilers require the calling
455  * convention to be declared in front of the '*', but others require
456  * it to be declared after the '*'. We handle both in here depending
457  * on what the compiler requires.
458  */
459
460 #ifdef  PTR_DECL_IN_FRONT
461 #define _PUBAPIP    * _PUBAPI
462 #define _ASMAPIP    * _ASMAPI
463 #else
464 #define _PUBAPIP    _PUBAPI *
465 #define _ASMAPIP    _ASMAPI *
466 #endif
467
468 /* Useful macros */
469
470 #define PRIVATE static
471 #define PUBLIC
472
473 /* This HAS to be 0L for 16-bit real mode code to work!!! */
474
475 #ifndef NULL
476 #       define _NULL 0L
477 #       define NULL _NULL
478 #endif
479
480 #ifndef MAX
481 #       define MAX(a,b) ( ((a) > (b)) ? (a) : (b))
482 #endif
483 #ifndef MIN
484 #       define MIN(a,b) ( ((a) < (b)) ? (a) : (b))
485 #endif
486 #ifndef ABS
487 #       define ABS(a)   ((a) >= 0 ? (a) : -(a))
488 #endif
489 #ifndef SIGN
490 #       define SIGN(a)  ((a) > 0 ? 1 : -1)
491 #endif
492
493 /* General typedefs */
494
495 #ifndef __GENDEFS
496 #define __GENDEFS
497 #if defined(__BEOS__)
498 #include <SupportDefs.h>
499 #else
500 #ifdef __LINUX__
501 #include <sys/types.h>
502 #ifdef __STRICT_ANSI__
503 typedef unsigned short      ushort;
504 typedef unsigned long       ulong;
505 typedef unsigned int        uint;
506 #endif
507 #ifdef  __KERNEL__
508 #define __GENDEFS_2
509 #endif
510 #else
511 #if !(defined(__QNXNTO__) && defined(GENERAL_STRUCT))
512 typedef unsigned short      ushort;
513 typedef unsigned long       ulong;
514 #endif
515 typedef unsigned int        uint;
516 #endif
517 typedef unsigned char       uchar;
518 #endif
519 typedef int                 ibool;      /* Integer boolean type         */
520 #ifdef  USE_BOOL                        /* Only for older code          */
521 #ifndef __cplusplus
522 #define bool                ibool       /* Standard C                   */
523 #else
524 #ifndef __HAS_BOOL__
525 #define bool                ibool       /* Older C++ compilers          */
526 #endif
527 #endif  /* __cplusplus */
528 #endif  /* USE_BOOL */
529 #endif  /* __GENDEFS */
530
531 /* More general typedefs compatible with Linux kernel code */
532
533 #ifndef __GENDEFS_2
534 #define __GENDEFS_2
535 typedef char                s8;
536 typedef unsigned char       u8;
537 typedef short               s16;
538 typedef unsigned short      u16;
539 #ifdef  __16BIT__
540 typedef long                s32;
541 typedef unsigned long       u32;
542 #else
543 typedef int                 s32;
544 typedef unsigned int        u32;
545 #endif
546 typedef struct {
547     u32 low;
548     s32 high;
549     } __i64;
550 #ifdef  __HAS_LONG_LONG__
551 #define __NATIVE_INT64__
552 typedef long long           s64;
553 typedef unsigned long long  u64;
554 #elif   defined(__HAS_INT64__) && !defined(__16BIT__)
555 #define __NATIVE_INT64__
556 typedef __int64             s64;
557 typedef unsigned __int64    u64;
558 #else
559 typedef __i64               s64;
560 typedef __i64               u64;
561 #endif
562 #endif
563
564 /* Boolean truth values */
565
566 #undef  false
567 #undef  true
568 #undef  NO
569 #undef  YES
570 #undef  FALSE
571 #undef  TRUE
572 #define false       0
573 #define true        1
574 #define NO          0
575 #define YES         1
576 #define FALSE       0
577 #define TRUE        1
578
579 /* Inline debugger interrupts for Watcom C++ and Borland C++ */
580
581 #ifdef  __WATCOMC__
582 void DebugInt(void);
583 #pragma aux DebugInt =              \
584     "int    3";
585 void DebugVxD(void);
586 #pragma aux DebugVxD =              \
587     "int    1";
588 #elif   defined(__BORLANDC__)
589 #define DebugInt()  __emit__(0xCC)
590 #define DebugVxD()  {__emit__(0xCD); __emit__(0x01);}
591 #elif   defined(_MSC_VER)
592 #define DebugInt()  _asm int 0x3
593 #define DebugVxD()  _asm int 0x1
594 #elif   defined(__GNUC__)
595 #define DebugInt()  asm volatile ("int $0x3")
596 #define DebugVxD()  asm volatile ("int $0x1")
597 #else
598 void _ASMAPI DebugInt(void);
599 void _ASMAPI DebugVxD(void);
600 #endif
601
602 /* Macros to break once and never break again */
603
604 #define DebugIntOnce()              \
605 {                                   \
606     static ibool firstTime = true;  \
607     if (firstTime) {                \
608         firstTime = false;          \
609         DebugInt();                 \
610         }                           \
611 }
612
613 #define DebugVxDOnce()              \
614 {                                   \
615     static ibool firstTime = true;  \
616     if (firstTime) {                \
617         firstTime = false;          \
618         DebugVxD();                 \
619         }                           \
620 }
621
622 /* Macros for linux string compatibility functions */
623
624 #ifdef  __LINUX__
625 #define stricmp strcasecmp
626 #define strnicmp strncasecmp
627 #endif
628
629 /* Macros for NT driver string compatibility functions */
630
631 #ifdef __NT_DRIVER__
632 #define stricmp _stricmp
633 #define strnicmp _strnicmp
634 #endif
635
636 /* Get rid of some helaciously annoying Visual C++ warnings! */
637
638 #if defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__SC__)
639 #pragma warning(disable:4761)   // integral size mismatch in argument; conversion supplied
640 #pragma warning(disable:4244)   // conversion from 'unsigned short ' to 'unsigned char ', possible loss of data
641 #pragma warning(disable:4018)   // '<' : signed/unsigned mismatch
642 #pragma warning(disable:4305)   // 'initializing' : truncation from 'const double' to 'float'
643 #endif
644
645 /*---------------------------------------------------------------------------
646  * Set of debugging macros used by the libraries. If the debug flag is
647  * set, they are turned on depending on the setting of the flag. User code
648  * can override the default functions called when a check fails, and the
649  * MGL does this so it can restore the system from graphics mode to display
650  * an error message. These functions also log information to the
651  * scitech.log file in the root directory of the hard drive when problems
652  * show up.
653  *
654  * If you set the value of CHECKED to be 2, it will also enable code to
655  * insert hard coded debugger interrupt into the source code at the line of
656  * code where the check fail. This is useful if you run the code under a
657  * debugger as it will break inside the debugger before exiting with a
658  * failure condition.
659  *
660  * Also for code compiled to run under Windows, we also call the
661  * OutputDebugString function to send the message to the system debugger
662  * such as Soft-ICE or WDEB386. Hence if you get any non-fatal warnings you
663  * will see those on the debugger terminal as well as in the log file.
664  *-------------------------------------------------------------------------*/
665
666 #ifdef  __cplusplus
667 extern "C" {            /* Use "C" linkage when in C++ mode */
668 #endif
669
670 extern void (*_CHK_fail)(int fatal,const char *msg,const char *cond,const char *file,int line);
671 void _CHK_defaultFail(int fatal,const char *msg,const char *cond,const char *file,int line);
672
673 #ifdef  CHECKED
674 #       define  CHK(x)      x
675 #if     CHECKED > 1
676 #       define  CHECK(p)                                            \
677         ((p) ? (void)0 : DebugInt(),                                \
678             _CHK_fail(1,"Check failed: '%s', file %s, line %d\n",   \
679             #p, __FILE__, __LINE__))
680 #       define  WARN(p)                                             \
681         ((p) ? (void)0 : DebugInt(),                                \
682             _CHK_fail(0,"Warning: '%s', file %s, line %d\n",        \
683             #p, __FILE__, __LINE__))
684 #else
685 #       define  CHECK(p)                                            \
686         ((p) ? (void)0 :                                            \
687             _CHK_fail(1,"Check failed: '%s', file %s, line %d\n",   \
688             #p, __FILE__, __LINE__))
689 #       define  WARN(p)                                             \
690         ((p) ? (void)0 :                                            \
691             _CHK_fail(0,"Warning: '%s', file %s, line %d\n",        \
692             #p, __FILE__, __LINE__))
693 #endif
694 #       define  LOGFATAL(msg)                                       \
695             _CHK_fail(1,"Fatal error: '%s', file %s, line %d\n",    \
696             msg, __FILE__, __LINE__)
697 #       define  LOGWARN(msg)                                        \
698             _CHK_fail(0,"Warning: '%s', file %s, line %d\n",        \
699             msg, __FILE__, __LINE__)
700 #else
701 #       define  CHK(x)
702 #       define  CHECK(p)        ((void)0)
703 #       define  WARN(p)         ((void)0)
704 #       define  LOGFATAL(msg)   ((void)0)
705 #       define  LOGWARN(msg)    ((void)0)
706 #endif
707
708 #ifdef  __cplusplus
709 }                       /* End of "C" linkage for C++   */
710 #endif
711
712 #endif  /* __SCITECH_H */