123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- /****************************************************************************
- *
- * Copyright (C) 1996 SciTech Software
- * All rights reserved.
- *
- * Filename: $Workfile: debug.h $
- * Version: $Revision: 1.17 $
- *
- * Language: ANSI C
- * Environment: any
- *
- * Description: General header file for operating system portable code.
- *
- * $Date: 04 Mar 1997 11:34:08 $ $Author: KendallB $
- *
- ****************************************************************************/
- #ifndef __DEBUG_H
- #define __DEBUG_H
- /* We have the following defines to identify the compilation environment:
- *
- * __16BIT__ Compiling for 16 bit code (any environment)
- * __32BIT__ Compiling for 32 bit code (any environment)
- * __MSDOS__ Compiling for MS-DOS (includes __WINDOWS16__, __WIN386__)
- * __REALDOS__ Compiling for MS-DOS (excludes __WINDOWS16__)
- * __MSDOS16__ Compiling for 16 bit MS-DOS
- * __MSDOS32__ Compiling for 32 bit MS-DOS
- * __WINDOWS__ Compiling for Windows
- * __WINDOWS16__ Compiling for 16 bit Windows (__MSDOS__ also defined)
- * __WINDOWS32__ Compiling for 32 bit Windows
- * __WIN386__ Compiling for Watcom C++ Win386 extended Windows
- * __OS2__ Compiling for OS/2
- * __OS2_16__ Compiling for 16 bit OS/2
- * __OS2_32__ Compiling for 32 bit OS/2
- * __UNIX__ Compiling for Unix
- *
- */
- #ifdef __SC__
- #if __INTSIZE == 4
- #define __SC386__
- #endif
- #endif
- #ifdef __GNUC__
- #define __cdecl /* GCC doesn't know about __cdecl modifiers */
- #define __FLAT__ /* GCC is always 32 bit flat model */
- #define __HAS_BOOL__ /* Latest GNU C++ has bool type */
- #endif
- #ifdef __BORLANDC__
- #if (__BORLANDC__ >= 0x500) || defined(CLASSLIB_DEFS_H)
- #define __HAS_BOOL__ /* Borland C++ 5.0 and later define bool type */
- #endif
- #endif
- /* For the Metaware High C/C++ compiler, there is no _cdecl calling
- * convention. The conventions can be changed, but it is a complicated
- * process involving #pragmas, and all externally referenced functions
- * will use stack based calling conventions. We also need to change the
- * global aliasing conventions to use underscores for external function
- * and variables names, so that our assembler routines will link
- * correctly (except of course the main function - man what a PAIN!).
- */
- #ifdef __HIGHC__
- #define __cdecl
- #define __FLAT__ /* High C is always 32 bit flat model */
- #pragma Global_aliasing_convention("_%r")
- extern main();
- #pragma Alias(main,"main")
- #endif
- #if defined(__MSDOS__) || defined(__DOS__) || defined(__DPMI32__) || (defined(M_I86) && !defined(__SC386__))
- #ifndef __MSDOS__
- #define __MSDOS__
- #endif
- #if defined(__386__) || defined(__FLAT__) || defined(__NT__) || defined(__SC386__)
- #ifndef __MSDOS32__
- #define __MSDOS32__
- #endif
- #ifndef __32BIT__
- #define __32BIT__
- #endif
- #ifndef __REALDOS__
- #define __REALDOS__
- #endif
- #elif (defined(_Windows) || defined(_WINDOWS)) && !defined(__DPMI16__)
- #ifndef __16BIT__
- #define __16BIT__
- #endif
- #ifndef __WINDOWS16__
- #define __WINDOWS16__
- #endif
- #ifndef __WINDOWS__
- #define __WINDOWS__
- #endif
- #ifndef __MSDOS__
- #define __MSDOS__
- #endif
- #else
- #ifndef __16BIT__
- #define __16BIT__
- #endif
- #ifndef __MSDOS16__
- #define __MSDOS16__
- #endif
- #ifndef __REALDOS__
- #define __REALDOS__
- #endif
- #endif
- #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
- #ifndef __32BIT__
- #define __32BIT__
- #endif
- #ifndef __WINDOWS32__
- #define __WINDOWS32__
- #endif
- #ifndef _WIN32
- #define _WIN32 /* Microsoft Win32 SDK headers use _WIN32 */
- #endif
- #ifndef WIN32
- #define WIN32 /* OpenGL headers use WIN32 */
- #endif
- #ifndef __WINDOWS__
- #define __WINDOWS__
- #endif
- #elif defined(__WINDOWS_386__)
- #ifndef __32BIT__
- #define __32BIT__
- #endif
- #ifndef __WIN386__
- #define __WIN386__
- #endif
- #ifndef __WINDOWS__
- #define __WINDOWS__
- #endif
- #ifndef __MSDOS__
- #define __MSDOS__
- #endif
- #elif defined(__OS2__)
- #ifndef __OS2__ /* TODO: to be completed */
- #define __OS2__
- #define __OS2_32__ /* Default to 32 bit OS/2 */
- #endif
- #else
- #define __UNIX__ /* TODO: to be completed */
- #endif
- /* We have the following defines to define the calling conventions for
- * publicly accesible functions:
- *
- * _PUBAPI - Compiler default calling conventions for all public 'C' functions
- * _ASMAPI - Calling conventions for all public assembler functions
- * _DLLAPI - Calling conventions for all DLL exported functions
- * _DLLVAR - Modifier to export/import globals in 32 bit DLL's
- * _EXPORT - Expands to _export when compiling a DLL
- * _VARAPI - Modifiers for variables; Watcom C++ mangles C++ globals
- */
- #define _PUBAPI
- #define _ASMAPI __cdecl
- #if defined(_MSC_VER) && defined(_WIN32) && !defined(__SC__)
- #define __PASCAL __stdcall
- #define __export
- #define __import
- #else
- #define __PASCAL __pascal
- #endif
- #if defined(__WATCOMC__)
- #define _VARAPI __cdecl
- #else
- #define _VARAPI
- #endif
- #if defined(__WINDOWS__)
- #ifdef BUILD_DLL
- #define _DLLASM __export __cdecl
- #define _EXPORT __export
- #ifdef __WINDOWS32__
- #define _DLLAPI __export __PASCAL
- #define _DLLVAR __export
- #else
- #define _DLLAPI __export __far __pascal
- #define _DLLVAR
- #endif
- #else
- #define _DLLASM __cdecl
- #define _EXPORT
- #ifdef __WINDOWS32__
- #define _DLLAPI __PASCAL
- #define _DLLVAR __import
- #else
- #define _DLLAPI __far __pascal
- #define _DLLVAR
- #endif
- #endif
- #else
- #define _EXPORT
- #define _DLLAPI
- #define _DLLVAR
- #endif
- /* Useful macros */
- #define PRIVATE static
- #define PUBLIC
- #ifdef DEBUG
- # define DBG(x) x
- #else
- # define DBG(x)
- #endif
- #ifndef NULL
- # define NULL 0L
- #endif
- #ifndef MAX
- # define MAX(a,b) ( ((a) > (b)) ? (a) : (b))
- #endif
- #ifndef MIN
- # define MIN(a,b) ( ((a) < (b)) ? (a) : (b))
- #endif
- #ifndef ABS
- # define ABS(a) ((a) >= 0 ? (a) : -(a))
- #endif
- #ifndef SIGN
- # define SIGN(a) ((a) > 0 ? 1 : -1)
- #endif
- /* General typedefs */
- #ifndef __GENDEFS
- #define __GENDEFS
- typedef unsigned char uchar;
- typedef unsigned short ushort;
- typedef unsigned int uint;
- typedef unsigned long ulong;
- typedef int ibool; /* Integer boolean type */
- #ifndef __cplusplus
- #define bool ibool /* Standard C */
- #else
- #ifndef __HAS_BOOL__
- #define bool ibool /* Older C++ compilers */
- #endif
- #endif /* __cplusplus */
- #endif /* __GENDEFS */
- /* Includes Windows headers, as they define TRUE and FALSE */
- #ifdef __WINDOWS__
- #ifndef _WINDOWS_ /* Dont include if already included */
- #ifndef __WIN386__
- #define STRICT
- #define WIN32_LEAN_AND_MEAN
- #endif
- #include <windows.h>
- #endif
- #endif
- /* Boolean truth values */
- #undef false
- #undef true
- #undef NO
- #undef YES
- #undef FALSE
- #undef TRUE
- #ifdef __cplusplus /* Cast to bool's for C++ code */
- #define false ((bool)0)
- #define true ((bool)1)
- #define NO ((bool)0)
- #define YES ((bool)1)
- #define FALSE ((bool)0)
- #define TRUE ((bool)1)
- #else /* Define to 0 and 1 for C code */
- #define false 0
- #define true 1
- #define NO 0
- #define YES 1
- #define FALSE 0
- #define TRUE 1
- #endif
- #endif /* __DEBUG_H */
|