Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5131 clevermous 1
/****************************************************************************
2
*
3
*                   Copyright (C) 1996 SciTech Software
4
*                           All rights reserved.
5
*
6
* Filename:     $Workfile:   debug.h  $
7
* Version:      $Revision:   1.17  $
8
*
9
* Language:     ANSI C
10
* Environment:  any
11
*
12
* Description:  General header file for operating system portable code.
13
*
14
* $Date:   04 Mar 1997 11:34:08  $ $Author:   KendallB  $
15
*
16
****************************************************************************/
17
 
18
#ifndef __DEBUG_H
19
#define __DEBUG_H
20
 
21
/* We have the following defines to identify the compilation environment:
22
 *
23
 *	__16BIT__		Compiling for 16 bit code (any environment)
24
 *  __32BIT__       Compiling for 32 bit code (any environment)
25
 *	__MSDOS__		Compiling for MS-DOS (includes __WINDOWS16__, __WIN386__)
26
 *  __REALDOS__     Compiling for MS-DOS (excludes __WINDOWS16__)
27
 *  __MSDOS16__ 	Compiling for 16 bit MS-DOS
28
 *  __MSDOS32__ 	Compiling for 32 bit MS-DOS
29
 *  __WINDOWS__ 	Compiling for Windows
30
 *	__WINDOWS16__	Compiling for 16 bit Windows (__MSDOS__ also defined)
31
 *	__WINDOWS32__	Compiling for 32 bit Windows
32
 *  __WIN386__      Compiling for Watcom C++ Win386 extended Windows
33
 *  __OS2__     	Compiling for OS/2
34
 *  __OS2_16__  	Compiling for 16 bit OS/2
35
 *  __OS2_32__ 		Compiling for 32 bit OS/2
36
 *  __UNIX__   		Compiling for Unix
37
 *
38
 */
39
 
40
#ifdef	__SC__
41
#if		__INTSIZE == 4
42
#define __SC386__
43
#endif
44
#endif
45
 
46
#ifdef	__GNUC__
47
#define	__cdecl			/* GCC doesn't know about __cdecl modifiers		*/
48
#define	__FLAT__		/* GCC is always 32 bit flat model				*/
49
#define	__HAS_BOOL__	/* Latest GNU C++ has bool type					*/
50
#endif
51
 
52
#ifdef	__BORLANDC__
53
#if	(__BORLANDC__ >= 0x500) || defined(CLASSLIB_DEFS_H)
54
#define	__HAS_BOOL__	/* Borland C++ 5.0 and later define bool type	*/
55
#endif
56
#endif
57
 
58
/* For the Metaware High C/C++ compiler, there is no _cdecl calling
59
 * convention. The conventions can be changed, but it is a complicated
60
 * process involving #pragmas, and all externally referenced functions
61
 * will use stack based calling conventions. We also need to change the
62
 * global aliasing conventions to use underscores for external function
63
 * and variables names, so that our assembler routines will link
64
 * correctly (except of course the main function - man what a PAIN!).
65
 */
66
 
67
#ifdef	__HIGHC__
68
#define	__cdecl
69
#define	__FLAT__	/* High C is always 32 bit flat model				*/
70
#pragma Global_aliasing_convention("_%r")
71
extern main();
72
#pragma Alias(main,"main")
73
#endif
74
 
75
#if     defined(__MSDOS__) || defined(__DOS__) || defined(__DPMI32__) || (defined(M_I86) && !defined(__SC386__))
76
#ifndef __MSDOS__
77
#define __MSDOS__
78
#endif
79
#if     defined(__386__) || defined(__FLAT__) || defined(__NT__) || defined(__SC386__)
80
#ifndef	__MSDOS32__
81
#define __MSDOS32__
82
#endif
83
#ifndef	__32BIT__
84
#define __32BIT__
85
#endif
86
#ifndef __REALDOS__
87
#define __REALDOS__
88
#endif
89
#elif   (defined(_Windows) || defined(_WINDOWS)) && !defined(__DPMI16__)
90
#ifndef	__16BIT__
91
#define	__16BIT__
92
#endif
93
#ifndef __WINDOWS16__
94
#define	__WINDOWS16__
95
#endif
96
#ifndef __WINDOWS__
97
#define __WINDOWS__
98
#endif
99
#ifndef	__MSDOS__
100
#define	__MSDOS__
101
#endif
102
#else
103
#ifndef	__16BIT__
104
#define	__16BIT__
105
#endif
106
#ifndef __MSDOS16__
107
#define __MSDOS16__
108
#endif
109
#ifndef __REALDOS__
110
#define __REALDOS__
111
#endif
112
#endif
113
#elif   defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
114
#ifndef	__32BIT__
115
#define __32BIT__
116
#endif
117
#ifndef	__WINDOWS32__
118
#define	__WINDOWS32__
119
#endif
120
#ifndef	_WIN32
121
#define	_WIN32					/* Microsoft Win32 SDK headers use _WIN32 */
122
#endif
123
#ifndef	WIN32
124
#define	WIN32					/* OpenGL headers use WIN32 */
125
#endif
126
#ifndef __WINDOWS__
127
#define __WINDOWS__
128
#endif
129
#elif   defined(__WINDOWS_386__)
130
#ifndef	__32BIT__
131
#define __32BIT__
132
#endif
133
#ifndef __WIN386__
134
#define __WIN386__
135
#endif
136
#ifndef __WINDOWS__
137
#define __WINDOWS__
138
#endif
139
#ifndef	__MSDOS__
140
#define	__MSDOS__
141
#endif
142
#elif   defined(__OS2__)
143
#ifndef __OS2__                 /* TODO: to be completed */
144
#define __OS2__
145
#define	__OS2_32__				/* Default to 32 bit OS/2 */
146
#endif
147
#else
148
#define __UNIX__				/* TODO: to be completed */
149
#endif
150
 
151
/* We have the following defines to define the calling conventions for
152
 * publicly accesible functions:
153
 *
154
 *  _PUBAPI - Compiler default calling conventions for all public 'C' functions
155
 *  _ASMAPI - Calling conventions for all public assembler functions
156
 *  _DLLAPI - Calling conventions for all DLL exported functions
157
 *  _DLLVAR - Modifier to export/import globals in 32 bit DLL's
158
 *  _EXPORT - Expands to _export when compiling a DLL
159
 *  _VARAPI - Modifiers for variables; Watcom C++ mangles C++ globals
160
 */
161
 
162
#define _PUBAPI
163
#define _ASMAPI __cdecl
164
 
165
#if defined(_MSC_VER) && defined(_WIN32) && !defined(__SC__)
166
#define __PASCAL    __stdcall
167
#define __export
168
#define	__import
169
#else
170
#define __PASCAL    __pascal
171
#endif
172
 
173
#if defined(__WATCOMC__)
174
#define	_VARAPI		__cdecl
175
#else
176
#define	_VARAPI
177
#endif
178
 
179
#if     defined(__WINDOWS__)
180
#ifdef  BUILD_DLL
181
#define _DLLASM __export __cdecl
182
#define _EXPORT __export
183
#ifdef  __WINDOWS32__
184
#define _DLLAPI __export __PASCAL
185
#define _DLLVAR __export
186
#else
187
#define _DLLAPI  __export __far __pascal
188
#define _DLLVAR
189
#endif
190
#else
191
#define _DLLASM __cdecl
192
#define	_EXPORT
193
#ifdef  __WINDOWS32__
194
#define _DLLAPI __PASCAL
195
#define _DLLVAR __import
196
#else
197
#define _DLLAPI __far __pascal
198
#define _DLLVAR
199
#endif
200
#endif
201
#else
202
#define _EXPORT
203
#define _DLLAPI
204
#define _DLLVAR
205
#endif
206
 
207
/* Useful macros */
208
 
209
#define PRIVATE static
210
#define PUBLIC
211
 
212
#ifdef  DEBUG
213
#       define DBG(x) x
214
#else
215
#       define DBG(x)
216
#endif
217
 
218
#ifndef NULL
219
#       define NULL 0L
220
#endif
221
 
222
#ifndef MAX
223
#       define MAX(a,b) ( ((a) > (b)) ? (a) : (b))
224
#endif
225
#ifndef MIN
226
#       define MIN(a,b) ( ((a) < (b)) ? (a) : (b))
227
#endif
228
#ifndef ABS
229
#       define ABS(a)   ((a) >= 0 ? (a) : -(a))
230
#endif
231
#ifndef	SIGN
232
#		define SIGN(a)	((a) > 0 ? 1 : -1)
233
#endif
234
 
235
/* General typedefs */
236
 
237
#ifndef __GENDEFS
238
#define __GENDEFS
239
typedef unsigned char   uchar;
240
typedef unsigned short  ushort;
241
typedef unsigned int    uint;
242
typedef unsigned long   ulong;
243
typedef int             ibool;		/* Integer boolean type			*/
244
#ifndef	__cplusplus
245
#define	bool			ibool		/* Standard C					*/
246
#else
247
#ifndef	__HAS_BOOL__
248
#define	bool			ibool		/* Older C++ compilers			*/
249
#endif
250
#endif	/* __cplusplus */
251
#endif  /* __GENDEFS */
252
 
253
/* Includes Windows headers, as they define TRUE and FALSE */
254
 
255
#ifdef	__WINDOWS__
256
#ifndef _WINDOWS_                   /* Dont include if already included */
257
#ifndef __WIN386__
258
#define STRICT
259
#define	WIN32_LEAN_AND_MEAN
260
#endif
261
#include 
262
#endif
263
#endif
264
 
265
/* Boolean truth values */
266
 
267
#undef	false
268
#undef	true
269
#undef	NO
270
#undef	YES
271
#undef	FALSE
272
#undef	TRUE
273
 
274
#ifdef	__cplusplus					/* Cast to bool's for C++ code		*/
275
#define false       ((bool)0)
276
#define true        ((bool)1)
277
#define NO          ((bool)0)
278
#define YES         ((bool)1)
279
#define FALSE       ((bool)0)
280
#define TRUE        ((bool)1)
281
#else								/* Define to 0 and 1 for C code		*/
282
#define false       0
283
#define true        1
284
#define NO          0
285
#define YES         1
286
#define FALSE       0
287
#define TRUE        1
288
#endif
289
 
290
#endif  /* __DEBUG_H */