32 #ifndef ZYCORE_TYPES_H
33 #define ZYCORE_TYPES_H
41 #if defined(ZYAN_NO_LIBC) || \
42 (defined(ZYAN_MSVC) && defined(ZYAN_KERNEL))
44 # if defined(ZYAN_MSVC) || defined(ZYAN_ICC)
45 typedef unsigned __int8 ZyanU8;
46 typedef unsigned __int16 ZyanU16;
47 typedef unsigned __int32 ZyanU32;
48 typedef unsigned __int64 ZyanU64;
49 typedef signed __int8 ZyanI8;
50 typedef signed __int16 ZyanI16;
51 typedef signed __int32 ZyanI32;
52 typedef signed __int64 ZyanI64;
54 typedef ZyanU64 ZyanUSize;
55 typedef ZyanI64 ZyanISize;
56 typedef ZyanU64 ZyanUPointer;
57 typedef ZyanI64 ZyanIPointer;
59 typedef ZyanU32 ZyanUSize;
60 typedef ZyanI32 ZyanISize;
61 typedef ZyanU32 ZyanUPointer;
62 typedef ZyanI32 ZyanIPointer;
64 # elif defined(ZYAN_GNUC)
65 # ifdef __UINT8_TYPE__
66 typedef __UINT8_TYPE__ ZyanU8;
68 typedef unsigned char ZyanU8;
70 # ifdef __UINT16_TYPE__
71 typedef __UINT16_TYPE__ ZyanU16;
73 typedef unsigned short int ZyanU16;
75 # ifdef __UINT32_TYPE__
76 typedef __UINT32_TYPE__ ZyanU32;
78 typedef unsigned int ZyanU32;
80 # ifdef __UINT64_TYPE__
81 typedef __UINT64_TYPE__ ZyanU64;
83 # if defined(__x86_64__) && !defined(__ILP32__)
84 typedef unsigned long int ZyanU64;
86 typedef unsigned long long int ZyanU64;
90 typedef __INT8_TYPE__ ZyanI8;
92 typedef signed char ZyanI8;
94 # ifdef __INT16_TYPE__
95 typedef __INT16_TYPE__ ZyanI16;
97 typedef signed short int ZyanI16;
99 # ifdef __INT32_TYPE__
100 typedef __INT32_TYPE__ ZyanI32;
102 typedef signed int ZyanI32;
104 # ifdef __INT64_TYPE__
105 typedef __INT64_TYPE__ ZyanI64;
107 # if defined(__x86_64__) && !defined( __ILP32__)
108 typedef signed long int ZyanI64;
110 typedef signed long long int ZyanI64;
113 # ifdef __SIZE_TYPE__
114 typedef __SIZE_TYPE__ ZyanUSize;
116 typedef long unsigned int ZyanUSize;
118 # ifdef __PTRDIFF_TYPE__
119 typedef __PTRDIFF_TYPE__ ZyanISize;
121 typedef long int ZyanISize;
123 # ifdef __UINTPTR_TYPE__
124 typedef __UINTPTR_TYPE__ ZyanUPointer;
126 # if defined(__x86_64__) && !defined( __ILP32__)
127 typedef unsigned long int ZyanUPointer;
129 typedef unsigned int ZyanUPointer;
132 # ifdef __INTPTR_TYPE__
133 typedef __INTPTR_TYPE__ ZyanIPointer;
135 # if defined(__x86_64__) && !defined( __ILP32__)
136 typedef long int ZyanIPointer;
138 typedef int ZyanIPointer;
142 # error "Unsupported compiler for no-libc mode."
145 # if defined(ZYAN_MSVC)
146 # define ZYAN_INT8_MIN (-127i8 - 1)
147 # define ZYAN_INT16_MIN (-32767i16 - 1)
148 # define ZYAN_INT32_MIN (-2147483647i32 - 1)
149 # define ZYAN_INT64_MIN (-9223372036854775807i64 - 1)
150 # define ZYAN_INT8_MAX 127i8
151 # define ZYAN_INT16_MAX 32767i16
152 # define ZYAN_INT32_MAX 2147483647i32
153 # define ZYAN_INT64_MAX 9223372036854775807i64
154 # define ZYAN_UINT8_MAX 0xffui8
155 # define ZYAN_UINT16_MAX 0xffffui16
156 # define ZYAN_UINT32_MAX 0xffffffffui32
157 # define ZYAN_UINT64_MAX 0xffffffffffffffffui64
160 # define ZYAN_INT8_MAX __INT8_MAX__
162 # define ZYAN_INT8_MAX (127)
164 # define ZYAN_INT8_MIN (-ZYAN_INT8_MAX - 1)
165 # ifdef __INT16_MAX__
166 # define ZYAN_INT16_MAX __INT16_MAX__
168 # define ZYAN_INT16_MAX (32767)
170 # define ZYAN_INT16_MIN (-ZYAN_INT16_MAX - 1)
171 # ifdef __INT32_MAX__
172 # define ZYAN_INT32_MAX __INT32_MAX__
174 # define ZYAN_INT32_MAX (2147483647)
176 # define ZYAN_INT32_MIN (-ZYAN_INT32_MAX - 1)
177 # ifdef __INT64_MAX__
178 # define ZYAN_INT64_MAX __INT64_MAX__
180 # if defined(__x86_64__) && !defined( __ILP32__)
181 # define ZYAN_INT64_MAX (9223372036854775807L)
183 # define ZYAN_INT64_MAX (9223372036854775807LL)
186 # define ZYAN_INT64_MIN (-ZYAN_INT64_MAX - 1)
187 # ifdef __UINT8_MAX__
188 # define ZYAN_UINT8_MAX __UINT8_MAX__
190 # define ZYAN_UINT8_MAX (255)
192 # ifdef __UINT16_MAX__
193 # define ZYAN_UINT16_MAX __UINT16_MAX__
195 # define ZYAN_UINT16_MAX (65535)
197 # ifdef __UINT32_MAX__
198 # define ZYAN_UINT32_MAX __UINT32_MAX__
200 # define ZYAN_UINT32_MAX (4294967295U)
202 # ifdef __UINT64_MAX__
203 # define ZYAN_UINT64_MAX __UINT64_MAX__
205 # if defined(__x86_64__) && !defined( __ILP32__)
206 # define ZYAN_UINT64_MAX (18446744073709551615UL)
208 # define ZYAN_UINT64_MAX (18446744073709551615ULL)
216 typedef uint8_t ZyanU8;
217 typedef uint16_t ZyanU16;
218 typedef uint32_t ZyanU32;
219 typedef uint64_t ZyanU64;
220 typedef int8_t ZyanI8;
221 typedef int16_t ZyanI16;
222 typedef int32_t ZyanI32;
223 typedef int64_t ZyanI64;
224 typedef size_t ZyanUSize;
225 typedef ptrdiff_t ZyanISize;
226 typedef uintptr_t ZyanUPointer;
227 typedef intptr_t ZyanIPointer;
229 # define ZYAN_INT8_MIN INT8_MIN
230 # define ZYAN_INT16_MIN INT16_MIN
231 # define ZYAN_INT32_MIN INT32_MIN
232 # define ZYAN_INT64_MIN INT64_MIN
233 # define ZYAN_INT8_MAX INT8_MAX
234 # define ZYAN_INT16_MAX INT16_MAX
235 # define ZYAN_INT32_MAX INT32_MAX
236 # define ZYAN_INT64_MAX INT64_MAX
237 # define ZYAN_UINT8_MAX UINT8_MAX
238 # define ZYAN_UINT16_MAX UINT16_MAX
239 # define ZYAN_UINT32_MAX UINT32_MAX
240 # define ZYAN_UINT64_MAX UINT64_MAX
277 #define ZYAN_NULL ((void*)0)
287 #define ZYAN_FALSE 0u
310 #define ZYAN_TERNARY_FALSE (-1)
311 #define ZYAN_TERNARY_UNKNOWN 0x00
312 #define ZYAN_TERNARY_TRUE 0x01
#define ZYAN_STATIC_ASSERT(x)
Definition: Defines.h:292
ZyanU8 ZyanBool
Definition: Types.h:296
const void * ZyanConstVoidPointer
Definition: Types.h:275
const char * ZyanConstCharPointer
Definition: Types.h:334
char * ZyanCharPointer
Definition: Types.h:327
ZyanI8 ZyanTernary
Definition: Types.h:308
void * ZyanVoidPointer
Definition: Types.h:270