]> icculus.org git repositories - btb/d2x.git/blob - include/pstypes.h
move old per-file change logs into new file ChangeLog-old
[btb/d2x.git] / include / pstypes.h
1 /* $Id: pstypes.h,v 1.32 2004-08-28 23:17:45 schaffner Exp $ */
2 /*
3 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
4 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
5 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
6 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
7 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
8 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
9 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
10 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
11 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
12 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
13 */
14
15 /*
16  *
17  * Common types for use in Miner
18  *
19  */
20
21 #ifndef _TYPES_H
22 #define _TYPES_H
23
24 // define a dboolean
25 typedef int dboolean;
26
27 //define a signed byte
28 typedef signed char sbyte;
29
30 //define unsigned types;
31 typedef unsigned char ubyte;
32 #if defined(_WIN32) || defined(macintosh)
33 typedef unsigned short ushort;
34 typedef unsigned int uint;
35 #endif
36
37 #if defined(_WIN32) || defined(__sun__) // platforms missing (u_)int??_t
38 # include <SDL_types.h>
39 #elif defined(macintosh) // misses (u_)int??_t and does not like SDL_types.h
40 # include <MacTypes.h>
41  typedef SInt16 int16_t;
42  typedef SInt32 int32_t;
43  typedef SInt64 int64_t;
44  typedef UInt16 u_int16_t;
45  typedef UInt32 u_int32_t;
46  typedef UInt64 u_int64_t;
47 #endif // macintosh
48 #if defined(_WIN32) // platforms missing int??_t
49  typedef Sint16 int16_t;
50  typedef Sint32 int32_t;
51  typedef Sint64 int64_t;
52 #endif // defined(_WIN32)
53 #if defined(_WIN32) || defined(__sun__) // platforms missing u_int??_t
54  typedef Uint16 u_int16_t;
55  typedef Uint32 u_int32_t;
56  typedef Uint64 u_int64_t;
57 #endif // defined(_WIN32) || defined(__sun__)
58
59 #ifdef _MSC_VER
60 # include <stdlib.h> // this is where min and max are defined
61 #endif
62 #ifndef min
63 #define min(a,b) (((a)>(b))?(b):(a))
64 #endif
65 #ifndef max
66 #define max(a,b) (((a)<(b))?(b):(a))
67 #endif
68
69 #ifdef _WIN32
70 # ifndef __MINGW32__
71 #  define PATH_MAX _MAX_PATH
72 # endif
73 # ifdef _WIN32_WCE
74 #  define _MAX_DIR 256
75 # endif
76 #elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
77 # include <sys/types.h>
78 # define _MAX_PATH 1024
79 # define _MAX_DIR 256
80 #elif defined __DJGPP__
81 # include <sys/types.h>
82 # define _MAX_PATH 255
83 # define _MAX_DIR 63
84 #elif defined(macintosh)
85 # define _MAX_PATH 255
86 # define _MAX_DIR 63
87 # define PATH_MAX _MAX_PATH
88 #endif
89
90 #ifndef __cplusplus
91 //define a boolean
92 typedef ubyte bool;
93 #endif
94
95 #ifndef NULL
96 #define NULL 0
97 #endif
98
99 // the following stuff has nothing to do with types but needed everywhere,
100 // and since this file is included everywhere, it's here.
101 #ifdef __GNUC__
102 # define __pack__ __attribute__((packed))
103 #elif defined(_MSC_VER)
104 # pragma pack(push, packing)
105 # pragma pack(1)
106 # define __pack__
107 #elif defined(macintosh)
108 # pragma options align=packed
109 # define __pack__
110 #else
111 # error d2x will not work without packed structures
112 #endif
113
114 #ifdef _MSC_VER
115 # define inline __inline
116 #endif
117
118 #ifndef PACKAGE_STRING
119 # define PACKAGE_STRING "d2x"
120 #endif
121
122 #endif //_TYPES_H
123