Mercurial > sdl-ios-xcode
comparison include/SDL_types.h @ 1353:7ba544e2888d
Started the process of improving configure support, and merging C types
and library support into a single header.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 09 Feb 2006 09:07:13 +0000 |
parents | 1b5fbaf1d2c6 |
children | 22f39393668a |
comparison
equal
deleted
inserted
replaced
1352:c643342f3f33 | 1353:7ba544e2888d |
---|---|
18 | 18 |
19 Sam Lantinga | 19 Sam Lantinga |
20 slouken@libsdl.org | 20 slouken@libsdl.org |
21 */ | 21 */ |
22 | 22 |
23 /* General data types used by the SDL library */ | 23 #include "SDL_stdinc.h" |
24 | |
25 #ifndef _SDL_types_h | |
26 #define _SDL_types_h | |
27 | |
28 #include <sys/types.h> | |
29 #ifdef _MSC_VER | |
30 #ifndef _SIZE_T_DEFINED | |
31 #ifdef _WIN64 | |
32 typedef unsigned __int64 size_t; | |
33 #else | |
34 typedef _W64 unsigned int size_t; | |
35 #endif | |
36 #define _SIZE_T_DEFINED | |
37 #endif | |
38 typedef size_t uintptr_t; | |
39 #endif | |
40 | |
41 /* The number of elements in an array */ | |
42 #define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) | |
43 #define SDL_TABLESIZE(table) SDL_arraysize(table) | |
44 | |
45 /* Basic data types */ | |
46 typedef enum SDL_bool { | |
47 SDL_FALSE = 0, | |
48 SDL_TRUE = 1 | |
49 } SDL_bool; | |
50 | |
51 #ifdef H_MMBASIC /* mmbasic.h (Tru64 MME) */ | |
52 /* Some of the basic types are already defined in mmbasic.h */ | |
53 typedef signed char Sint8; | |
54 typedef signed short Sint16; | |
55 typedef signed int Sint32; | |
56 #else | |
57 typedef unsigned char Uint8; | |
58 typedef signed char Sint8; | |
59 typedef unsigned short Uint16; | |
60 typedef signed short Sint16; | |
61 typedef unsigned int Uint32; | |
62 typedef signed int Sint32; | |
63 #endif | |
64 | |
65 /* Figure out how to support 64-bit datatypes */ | |
66 #if !defined(__STRICT_ANSI__) | |
67 #ifdef __osf__ /* Tru64 */ | |
68 #define SDL_HAS_64BIT_TYPE long | |
69 #elif defined(__GNUC__) || defined(__MWERKS__) || defined(__SUNPRO_C) || defined(__DECC) || defined(__WATCOMC__) | |
70 #define SDL_HAS_64BIT_TYPE long long | |
71 #elif defined(_MSC_VER) /* VC++ */ | |
72 #define SDL_HAS_64BIT_TYPE __int64 | |
73 #endif | |
74 #endif /* !__STRICT_ANSI__ */ | |
75 | |
76 /* The 64-bit type isn't available on EPOC/Symbian OS */ | |
77 #ifdef __SYMBIAN32__ | |
78 #undef SDL_HAS_64BIT_TYPE | |
79 #endif | |
80 | |
81 /* The 64-bit datatype isn't supported on all platforms */ | |
82 #ifdef SDL_HAS_64BIT_TYPE | |
83 #ifndef H_MMBASIC | |
84 typedef unsigned SDL_HAS_64BIT_TYPE Uint64; | |
85 #endif | |
86 typedef SDL_HAS_64BIT_TYPE Sint64; | |
87 #else | |
88 /* This is really just a hack to prevent the compiler from complaining */ | |
89 typedef struct { | |
90 Uint32 hi; | |
91 Uint32 lo; | |
92 } Uint64, Sint64; | |
93 #endif | |
94 | |
95 /* Make sure the types really have the right sizes */ | |
96 #define SDL_COMPILE_TIME_ASSERT(name, x) \ | |
97 typedef int SDL_dummy_ ## name[(x) * 2 - 1] | |
98 | |
99 SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); | |
100 SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); | |
101 SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); | |
102 SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); | |
103 SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); | |
104 SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); | |
105 SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); | |
106 SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); | |
107 | |
108 /* Check to make sure enums are the size of ints, for structure packing. | |
109 For both Watcom C/C++ and Borland C/C++ the compiler option that makes | |
110 enums having the size of an int must be enabled. | |
111 This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). | |
112 */ | |
113 /* Enable enums always int in CodeWarrior (for MPW use "-enum int") */ | |
114 #ifdef __MWERKS__ | |
115 #pragma enumsalwaysint on | |
116 #endif | |
117 | |
118 typedef enum { | |
119 DUMMY_ENUM_VALUE | |
120 } SDL_DUMMY_ENUM; | |
121 | |
122 SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); | |
123 | |
124 #endif |