xref: /utopia/UTPA2-700.0.x/projects/tools/lint/aeon_include/stdint.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /*
2*53ee8cc1Swenshuai.xi  * Copyright (c) 2004, 2005 by
3*53ee8cc1Swenshuai.xi  * Ralf Corsepius, Ulm/Germany. All rights reserved.
4*53ee8cc1Swenshuai.xi  *
5*53ee8cc1Swenshuai.xi  * Permission to use, copy, modify, and distribute this software
6*53ee8cc1Swenshuai.xi  * is freely granted, provided that this notice is preserved.
7*53ee8cc1Swenshuai.xi  */
8*53ee8cc1Swenshuai.xi 
9*53ee8cc1Swenshuai.xi /*
10*53ee8cc1Swenshuai.xi  * @todo - Add support for wint_t types.
11*53ee8cc1Swenshuai.xi  */
12*53ee8cc1Swenshuai.xi 
13*53ee8cc1Swenshuai.xi #ifndef _STDINT_H
14*53ee8cc1Swenshuai.xi #define _STDINT_H
15*53ee8cc1Swenshuai.xi 
16*53ee8cc1Swenshuai.xi #ifdef __cplusplus
17*53ee8cc1Swenshuai.xi extern "C" {
18*53ee8cc1Swenshuai.xi #endif
19*53ee8cc1Swenshuai.xi 
20*53ee8cc1Swenshuai.xi #if defined(__GNUC__) && \
21*53ee8cc1Swenshuai.xi   ( (__GNUC__ >= 4) || \
22*53ee8cc1Swenshuai.xi     ( (__GNUC__ >= 3) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2) ) )
23*53ee8cc1Swenshuai.xi /* gcc > 3.2 implicitly defines the values we are interested */
24*53ee8cc1Swenshuai.xi #define __STDINT_EXP(x) __##x##__
25*53ee8cc1Swenshuai.xi #else
26*53ee8cc1Swenshuai.xi #define __STDINT_EXP(x) x
27*53ee8cc1Swenshuai.xi #include <limits.h>
28*53ee8cc1Swenshuai.xi #endif
29*53ee8cc1Swenshuai.xi 
30*53ee8cc1Swenshuai.xi /* Check if "long long" is 64bit wide */
31*53ee8cc1Swenshuai.xi /* Modern GCCs provide __LONG_LONG_MAX__, SUSv3 wants LLONG_MAX */
32*53ee8cc1Swenshuai.xi #if ( defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) ) \
33*53ee8cc1Swenshuai.xi   || ( defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) )
34*53ee8cc1Swenshuai.xi #define __have_longlong64 1
35*53ee8cc1Swenshuai.xi #endif
36*53ee8cc1Swenshuai.xi 
37*53ee8cc1Swenshuai.xi /* Check if "long" is 64bit or 32bit wide */
38*53ee8cc1Swenshuai.xi #if __STDINT_EXP(LONG_MAX) > 0x7fffffff
39*53ee8cc1Swenshuai.xi #define __have_long64 1
40*53ee8cc1Swenshuai.xi #elif __STDINT_EXP(LONG_MAX) == 0x7fffffff
41*53ee8cc1Swenshuai.xi #define __have_long32 1
42*53ee8cc1Swenshuai.xi #endif
43*53ee8cc1Swenshuai.xi 
44*53ee8cc1Swenshuai.xi #if __STDINT_EXP(SCHAR_MAX) == 0x7f
45*53ee8cc1Swenshuai.xi typedef signed char int8_t ;
46*53ee8cc1Swenshuai.xi typedef unsigned char uint8_t ;
47*53ee8cc1Swenshuai.xi #define __int8_t_defined 1
48*53ee8cc1Swenshuai.xi #endif
49*53ee8cc1Swenshuai.xi 
50*53ee8cc1Swenshuai.xi #if __int8_t_defined
51*53ee8cc1Swenshuai.xi typedef signed char int_least8_t;
52*53ee8cc1Swenshuai.xi typedef unsigned char uint_least8_t;
53*53ee8cc1Swenshuai.xi #define __int_least8_t_defined 1
54*53ee8cc1Swenshuai.xi #endif
55*53ee8cc1Swenshuai.xi 
56*53ee8cc1Swenshuai.xi #if __STDINT_EXP(SHRT_MAX) == 0x7fff
57*53ee8cc1Swenshuai.xi typedef signed short int16_t;
58*53ee8cc1Swenshuai.xi typedef unsigned short uint16_t;
59*53ee8cc1Swenshuai.xi #define __int16_t_defined 1
60*53ee8cc1Swenshuai.xi #elif __STDINT_EXP(INT_MAX) == 0x7fff
61*53ee8cc1Swenshuai.xi typedef signed int int16_t;
62*53ee8cc1Swenshuai.xi typedef unsigned int uint16_t;
63*53ee8cc1Swenshuai.xi #define __int16_t_defined 1
64*53ee8cc1Swenshuai.xi #elif __STDINT_EXP(SCHAR_MAX) == 0x7fff
65*53ee8cc1Swenshuai.xi typedef signed char int16_t;
66*53ee8cc1Swenshuai.xi typedef unsigned char uint16_t;
67*53ee8cc1Swenshuai.xi #define __int16_t_defined 1
68*53ee8cc1Swenshuai.xi #endif
69*53ee8cc1Swenshuai.xi 
70*53ee8cc1Swenshuai.xi #if __int16_t_defined
71*53ee8cc1Swenshuai.xi typedef int16_t   	int_least16_t;
72*53ee8cc1Swenshuai.xi typedef uint16_t 	uint_least16_t;
73*53ee8cc1Swenshuai.xi #define __int_least16_t_defined 1
74*53ee8cc1Swenshuai.xi 
75*53ee8cc1Swenshuai.xi #if !__int_least8_t_defined
76*53ee8cc1Swenshuai.xi typedef int16_t	   	int_least8_t;
77*53ee8cc1Swenshuai.xi typedef uint16_t  	uint_least8_t;
78*53ee8cc1Swenshuai.xi #define __int_least8_t_defined 1
79*53ee8cc1Swenshuai.xi #endif
80*53ee8cc1Swenshuai.xi #endif
81*53ee8cc1Swenshuai.xi 
82*53ee8cc1Swenshuai.xi #if __have_long32
83*53ee8cc1Swenshuai.xi typedef signed long int32_t;
84*53ee8cc1Swenshuai.xi typedef unsigned long uint32_t;
85*53ee8cc1Swenshuai.xi #define __int32_t_defined 1
86*53ee8cc1Swenshuai.xi #elif __STDINT_EXP(INT_MAX) == 0x7fffffffL
87*53ee8cc1Swenshuai.xi typedef signed int int32_t;
88*53ee8cc1Swenshuai.xi typedef unsigned int uint32_t;
89*53ee8cc1Swenshuai.xi #define __int32_t_defined 1
90*53ee8cc1Swenshuai.xi #elif __STDINT_EXP(SHRT_MAX) == 0x7fffffffL
91*53ee8cc1Swenshuai.xi typedef signed short int32_t;
92*53ee8cc1Swenshuai.xi typedef unsigned short uint32_t;
93*53ee8cc1Swenshuai.xi #define __int32_t_defined 1
94*53ee8cc1Swenshuai.xi #elif __STDINT_EXP(SCHAR_MAX) == 0x7fffffffL
95*53ee8cc1Swenshuai.xi typedef signed char int32_t;
96*53ee8cc1Swenshuai.xi typedef unsigned char uint32_t;
97*53ee8cc1Swenshuai.xi #define __int32_t_defined 1
98*53ee8cc1Swenshuai.xi #endif
99*53ee8cc1Swenshuai.xi 
100*53ee8cc1Swenshuai.xi #if __int32_t_defined
101*53ee8cc1Swenshuai.xi typedef int32_t   	int_least32_t;
102*53ee8cc1Swenshuai.xi typedef uint32_t 	uint_least32_t;
103*53ee8cc1Swenshuai.xi #define __int_least32_t_defined 1
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi #if !__int_least8_t_defined
106*53ee8cc1Swenshuai.xi typedef int32_t	   	int_least8_t;
107*53ee8cc1Swenshuai.xi typedef uint32_t  	uint_least8_t;
108*53ee8cc1Swenshuai.xi #define __int_least8_t_defined 1
109*53ee8cc1Swenshuai.xi #endif
110*53ee8cc1Swenshuai.xi 
111*53ee8cc1Swenshuai.xi #if !__int_least16_t_defined
112*53ee8cc1Swenshuai.xi typedef int32_t	   	int_least16_t;
113*53ee8cc1Swenshuai.xi typedef uint32_t  	uint_least16_t;
114*53ee8cc1Swenshuai.xi #define __int_least16_t_defined 1
115*53ee8cc1Swenshuai.xi #endif
116*53ee8cc1Swenshuai.xi #endif
117*53ee8cc1Swenshuai.xi 
118*53ee8cc1Swenshuai.xi #if __have_long64
119*53ee8cc1Swenshuai.xi typedef signed long int64_t;
120*53ee8cc1Swenshuai.xi typedef unsigned long uint64_t;
121*53ee8cc1Swenshuai.xi #define __int64_t_defined 1
122*53ee8cc1Swenshuai.xi #elif __have_longlong64
123*53ee8cc1Swenshuai.xi typedef signed long long int64_t;
124*53ee8cc1Swenshuai.xi typedef unsigned long long uint64_t;
125*53ee8cc1Swenshuai.xi #define __int64_t_defined 1
126*53ee8cc1Swenshuai.xi #elif  __STDINT_EXP(INT_MAX) > 0x7fffffff
127*53ee8cc1Swenshuai.xi typedef signed int int64_t;
128*53ee8cc1Swenshuai.xi typedef unsigned int uint64_t;
129*53ee8cc1Swenshuai.xi #define __int64_t_defined 1
130*53ee8cc1Swenshuai.xi #endif
131*53ee8cc1Swenshuai.xi 
132*53ee8cc1Swenshuai.xi #if __int64_t_defined
133*53ee8cc1Swenshuai.xi typedef int64_t   	int_least64_t;
134*53ee8cc1Swenshuai.xi typedef uint64_t 	uint_least64_t;
135*53ee8cc1Swenshuai.xi #define __int_least64_t_defined 1
136*53ee8cc1Swenshuai.xi 
137*53ee8cc1Swenshuai.xi #if !__int_least8_t_defined
138*53ee8cc1Swenshuai.xi typedef int64_t	   	int_least8_t;
139*53ee8cc1Swenshuai.xi typedef uint64_t  	uint_least8_t;
140*53ee8cc1Swenshuai.xi #define __int_least8_t_defined 1
141*53ee8cc1Swenshuai.xi #endif
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi #if !__int_least16_t_defined
144*53ee8cc1Swenshuai.xi typedef int64_t	   	int_least16_t;
145*53ee8cc1Swenshuai.xi typedef uint64_t  	uint_least16_t;
146*53ee8cc1Swenshuai.xi #define __int_least16_t_defined 1
147*53ee8cc1Swenshuai.xi #endif
148*53ee8cc1Swenshuai.xi 
149*53ee8cc1Swenshuai.xi #if !__int_least32_t_defined
150*53ee8cc1Swenshuai.xi typedef int64_t	   	int_least32_t;
151*53ee8cc1Swenshuai.xi typedef uint64_t  	uint_least32_t;
152*53ee8cc1Swenshuai.xi #define __int_least32_t_defined 1
153*53ee8cc1Swenshuai.xi #endif
154*53ee8cc1Swenshuai.xi #endif
155*53ee8cc1Swenshuai.xi 
156*53ee8cc1Swenshuai.xi /*
157*53ee8cc1Swenshuai.xi  * Fastest minimum-width integer types
158*53ee8cc1Swenshuai.xi  *
159*53ee8cc1Swenshuai.xi  * Assume int to be the fastest type for all types with a width
160*53ee8cc1Swenshuai.xi  * less than __INT_MAX__ rsp. INT_MAX
161*53ee8cc1Swenshuai.xi  */
162*53ee8cc1Swenshuai.xi #if __STDINT_EXP(INT_MAX) >= 0x7f
163*53ee8cc1Swenshuai.xi   typedef signed int int_fast8_t;
164*53ee8cc1Swenshuai.xi   typedef unsigned int uint_fast8_t;
165*53ee8cc1Swenshuai.xi #define __int_fast8_t_defined 1
166*53ee8cc1Swenshuai.xi #endif
167*53ee8cc1Swenshuai.xi 
168*53ee8cc1Swenshuai.xi #if __STDINT_EXP(INT_MAX) >= 0x7fff
169*53ee8cc1Swenshuai.xi   typedef signed int int_fast16_t;
170*53ee8cc1Swenshuai.xi   typedef unsigned int uint_fast16_t;
171*53ee8cc1Swenshuai.xi #define __int_fast16_t_defined 1
172*53ee8cc1Swenshuai.xi #endif
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi #if __STDINT_EXP(INT_MAX) >= 0x7fffffff
175*53ee8cc1Swenshuai.xi   typedef signed int int_fast32_t;
176*53ee8cc1Swenshuai.xi   typedef unsigned int uint_fast32_t;
177*53ee8cc1Swenshuai.xi #define __int_fast32_t_defined 1
178*53ee8cc1Swenshuai.xi #endif
179*53ee8cc1Swenshuai.xi 
180*53ee8cc1Swenshuai.xi #if __STDINT_EXP(INT_MAX) > 0x7fffffff
181*53ee8cc1Swenshuai.xi   typedef signed int int_fast64_t;
182*53ee8cc1Swenshuai.xi   typedef unsigned int uint_fast64_t;
183*53ee8cc1Swenshuai.xi #define __int_fast64_t_defined 1
184*53ee8cc1Swenshuai.xi #endif
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi /*
187*53ee8cc1Swenshuai.xi  * Fall back to [u]int_least<N>_t for [u]int_fast<N>_t types
188*53ee8cc1Swenshuai.xi  * not having been defined, yet.
189*53ee8cc1Swenshuai.xi  * Leave undefined, if [u]int_least<N>_t should not be available.
190*53ee8cc1Swenshuai.xi  */
191*53ee8cc1Swenshuai.xi #if !__int_fast8_t_defined
192*53ee8cc1Swenshuai.xi #if __int_least8_t_defined
193*53ee8cc1Swenshuai.xi   typedef int_least8_t int_fast8_t;
194*53ee8cc1Swenshuai.xi   typedef uint_least8_t uint_fast8_t;
195*53ee8cc1Swenshuai.xi #define __int_fast8_t_defined 1
196*53ee8cc1Swenshuai.xi #endif
197*53ee8cc1Swenshuai.xi #endif
198*53ee8cc1Swenshuai.xi 
199*53ee8cc1Swenshuai.xi #if !__int_fast16_t_defined
200*53ee8cc1Swenshuai.xi #if __int_least16_t_defined
201*53ee8cc1Swenshuai.xi   typedef int_least16_t int_fast16_t;
202*53ee8cc1Swenshuai.xi   typedef uint_least16_t uint_fast16_t;
203*53ee8cc1Swenshuai.xi #define __int_fast16_t_defined 1
204*53ee8cc1Swenshuai.xi #endif
205*53ee8cc1Swenshuai.xi #endif
206*53ee8cc1Swenshuai.xi 
207*53ee8cc1Swenshuai.xi #if !__int_fast32_t_defined
208*53ee8cc1Swenshuai.xi #if __int_least32_t_defined
209*53ee8cc1Swenshuai.xi   typedef int_least32_t int_fast32_t;
210*53ee8cc1Swenshuai.xi   typedef uint_least32_t uint_fast32_t;
211*53ee8cc1Swenshuai.xi #define __int_fast32_t_defined 1
212*53ee8cc1Swenshuai.xi #endif
213*53ee8cc1Swenshuai.xi #endif
214*53ee8cc1Swenshuai.xi 
215*53ee8cc1Swenshuai.xi #if !__int_fast64_t_defined
216*53ee8cc1Swenshuai.xi #if __int_least64_t_defined
217*53ee8cc1Swenshuai.xi   typedef int_least64_t int_fast64_t;
218*53ee8cc1Swenshuai.xi   typedef uint_least64_t uint_fast64_t;
219*53ee8cc1Swenshuai.xi #define __int_fast64_t_defined 1
220*53ee8cc1Swenshuai.xi #endif
221*53ee8cc1Swenshuai.xi #endif
222*53ee8cc1Swenshuai.xi 
223*53ee8cc1Swenshuai.xi /* Greatest-width integer types */
224*53ee8cc1Swenshuai.xi /* Modern GCCs provide __INTMAX_TYPE__ */
225*53ee8cc1Swenshuai.xi #if defined(__INTMAX_TYPE__)
226*53ee8cc1Swenshuai.xi   typedef __INTMAX_TYPE__ intmax_t;
227*53ee8cc1Swenshuai.xi #elif __have_longlong64
228*53ee8cc1Swenshuai.xi   typedef signed long long intmax_t;
229*53ee8cc1Swenshuai.xi #else
230*53ee8cc1Swenshuai.xi   typedef signed long intmax_t;
231*53ee8cc1Swenshuai.xi #endif
232*53ee8cc1Swenshuai.xi 
233*53ee8cc1Swenshuai.xi /* Modern GCCs provide __UINTMAX_TYPE__ */
234*53ee8cc1Swenshuai.xi #if defined(__UINTMAX_TYPE__)
235*53ee8cc1Swenshuai.xi   typedef __UINTMAX_TYPE__ uintmax_t;
236*53ee8cc1Swenshuai.xi #elif __have_longlong64
237*53ee8cc1Swenshuai.xi   typedef unsigned long long uintmax_t;
238*53ee8cc1Swenshuai.xi #else
239*53ee8cc1Swenshuai.xi   typedef unsigned long uintmax_t;
240*53ee8cc1Swenshuai.xi #endif
241*53ee8cc1Swenshuai.xi 
242*53ee8cc1Swenshuai.xi /*
243*53ee8cc1Swenshuai.xi  * GCC doesn't provide an appropriate macro for [u]intptr_t
244*53ee8cc1Swenshuai.xi  * For now, use __PTRDIFF_TYPE__
245*53ee8cc1Swenshuai.xi  */
246*53ee8cc1Swenshuai.xi #if defined(__PTRDIFF_TYPE__)
247*53ee8cc1Swenshuai.xi typedef signed __PTRDIFF_TYPE__ intptr_t;
248*53ee8cc1Swenshuai.xi typedef unsigned __PTRDIFF_TYPE__ uintptr_t;
249*53ee8cc1Swenshuai.xi #else
250*53ee8cc1Swenshuai.xi /*
251*53ee8cc1Swenshuai.xi  * Fallback to hardcoded values,
252*53ee8cc1Swenshuai.xi  * should be valid on cpu's with 32bit int/32bit void*
253*53ee8cc1Swenshuai.xi  */
254*53ee8cc1Swenshuai.xi typedef signed long intptr_t;
255*53ee8cc1Swenshuai.xi typedef unsigned long uintptr_t;
256*53ee8cc1Swenshuai.xi #endif
257*53ee8cc1Swenshuai.xi 
258*53ee8cc1Swenshuai.xi /* Limits of Specified-Width Integer Types */
259*53ee8cc1Swenshuai.xi 
260*53ee8cc1Swenshuai.xi #if __int8_t_defined
261*53ee8cc1Swenshuai.xi #define INT8_MIN 	-128
262*53ee8cc1Swenshuai.xi #define INT8_MAX 	 127
263*53ee8cc1Swenshuai.xi #define UINT8_MAX 	 255
264*53ee8cc1Swenshuai.xi #endif
265*53ee8cc1Swenshuai.xi 
266*53ee8cc1Swenshuai.xi #if __int_least8_t_defined
267*53ee8cc1Swenshuai.xi #define INT_LEAST8_MIN 	-128
268*53ee8cc1Swenshuai.xi #define INT_LEAST8_MAX 	 127
269*53ee8cc1Swenshuai.xi #define UINT_LEAST8_MAX	 255
270*53ee8cc1Swenshuai.xi #else
271*53ee8cc1Swenshuai.xi #error required type int_least8_t missing
272*53ee8cc1Swenshuai.xi #endif
273*53ee8cc1Swenshuai.xi 
274*53ee8cc1Swenshuai.xi #if __int16_t_defined
275*53ee8cc1Swenshuai.xi #define INT16_MIN 	-32768
276*53ee8cc1Swenshuai.xi #define INT16_MAX 	 32767
277*53ee8cc1Swenshuai.xi #define UINT16_MAX 	 65535
278*53ee8cc1Swenshuai.xi #endif
279*53ee8cc1Swenshuai.xi 
280*53ee8cc1Swenshuai.xi #if __int_least16_t_defined
281*53ee8cc1Swenshuai.xi #define INT_LEAST16_MIN	-32768
282*53ee8cc1Swenshuai.xi #define INT_LEAST16_MAX	 32767
283*53ee8cc1Swenshuai.xi #define UINT_LEAST16_MAX 65535
284*53ee8cc1Swenshuai.xi #else
285*53ee8cc1Swenshuai.xi #error required type int_least16_t missing
286*53ee8cc1Swenshuai.xi #endif
287*53ee8cc1Swenshuai.xi 
288*53ee8cc1Swenshuai.xi #if __int32_t_defined
289*53ee8cc1Swenshuai.xi #define INT32_MIN 	 (-2147483647-1)
290*53ee8cc1Swenshuai.xi #define INT32_MAX 	 2147483647
291*53ee8cc1Swenshuai.xi #define UINT32_MAX       4294967295U
292*53ee8cc1Swenshuai.xi #endif
293*53ee8cc1Swenshuai.xi 
294*53ee8cc1Swenshuai.xi #if __int_least32_t_defined
295*53ee8cc1Swenshuai.xi #define INT_LEAST32_MIN  (-2147483647-1)
296*53ee8cc1Swenshuai.xi #define INT_LEAST32_MAX  2147483647
297*53ee8cc1Swenshuai.xi #define UINT_LEAST32_MAX 4294967295U
298*53ee8cc1Swenshuai.xi #else
299*53ee8cc1Swenshuai.xi #error required type int_least32_t missing
300*53ee8cc1Swenshuai.xi #endif
301*53ee8cc1Swenshuai.xi 
302*53ee8cc1Swenshuai.xi #if __int64_t_defined
303*53ee8cc1Swenshuai.xi #if __have_long64
304*53ee8cc1Swenshuai.xi #define INT64_MIN 	(-9223372036854775807L-1L)
305*53ee8cc1Swenshuai.xi #define INT64_MAX 	 9223372036854775807L
306*53ee8cc1Swenshuai.xi #define UINT64_MAX 	18446744073709551615U
307*53ee8cc1Swenshuai.xi #elif __have_longlong64
308*53ee8cc1Swenshuai.xi #define INT64_MIN 	(-9223372036854775807LL-1LL)
309*53ee8cc1Swenshuai.xi #define INT64_MAX 	 9223372036854775807LL
310*53ee8cc1Swenshuai.xi #define UINT64_MAX 	18446744073709551615ULL
311*53ee8cc1Swenshuai.xi #endif
312*53ee8cc1Swenshuai.xi #endif
313*53ee8cc1Swenshuai.xi 
314*53ee8cc1Swenshuai.xi #if __int_least64_t_defined
315*53ee8cc1Swenshuai.xi #if __have_long64
316*53ee8cc1Swenshuai.xi #define INT_LEAST64_MIN  (-9223372036854775807L-1L)
317*53ee8cc1Swenshuai.xi #define INT_LEAST64_MAX  9223372036854775807L
318*53ee8cc1Swenshuai.xi #define UINT_LEAST64_MAX 18446744073709551615U
319*53ee8cc1Swenshuai.xi #elif __have_longlong64
320*53ee8cc1Swenshuai.xi #define INT_LEAST64_MIN  (-9223372036854775807LL-1LL)
321*53ee8cc1Swenshuai.xi #define INT_LEAST64_MAX  9223372036854775807LL
322*53ee8cc1Swenshuai.xi #define UINT_LEAST64_MAX 18446744073709551615ULL
323*53ee8cc1Swenshuai.xi #endif
324*53ee8cc1Swenshuai.xi #endif
325*53ee8cc1Swenshuai.xi 
326*53ee8cc1Swenshuai.xi #if __int_fast8_t_defined
327*53ee8cc1Swenshuai.xi #define INT_FAST8_MIN	INT8_MIN
328*53ee8cc1Swenshuai.xi #define INT_FAST8_MAX	INT8_MAX
329*53ee8cc1Swenshuai.xi #define UINT_FAST8_MAX	UINT8_MAX
330*53ee8cc1Swenshuai.xi #endif
331*53ee8cc1Swenshuai.xi 
332*53ee8cc1Swenshuai.xi #if __int_fast16_t_defined
333*53ee8cc1Swenshuai.xi #define INT_FAST16_MIN	INT16_MIN
334*53ee8cc1Swenshuai.xi #define INT_FAST16_MAX	INT16_MAX
335*53ee8cc1Swenshuai.xi #define UINT_FAST16_MAX	UINT16_MAX
336*53ee8cc1Swenshuai.xi #endif
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi #if __int_fast32_t_defined
339*53ee8cc1Swenshuai.xi #define INT_FAST32_MIN	INT32_MIN
340*53ee8cc1Swenshuai.xi #define INT_FAST32_MAX	INT32_MAX
341*53ee8cc1Swenshuai.xi #define UINT_FAST32_MAX	UINT32_MAX
342*53ee8cc1Swenshuai.xi #endif
343*53ee8cc1Swenshuai.xi 
344*53ee8cc1Swenshuai.xi #if __int_fast64_t_defined
345*53ee8cc1Swenshuai.xi #define INT_FAST64_MIN	INT64_MIN
346*53ee8cc1Swenshuai.xi #define INT_FAST64_MAX	INT64_MAX
347*53ee8cc1Swenshuai.xi #define UINT_FAST64_MAX	UINT64_MAX
348*53ee8cc1Swenshuai.xi #endif
349*53ee8cc1Swenshuai.xi 
350*53ee8cc1Swenshuai.xi /* This must match size_t in stddef.h, currently long unsigned int */
351*53ee8cc1Swenshuai.xi #define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L)
352*53ee8cc1Swenshuai.xi #define SIZE_MAX __STDINT_EXP(LONG_MAX)
353*53ee8cc1Swenshuai.xi 
354*53ee8cc1Swenshuai.xi /* This must match sig_atomic_t in <signal.h> (currently int) */
355*53ee8cc1Swenshuai.xi #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)
356*53ee8cc1Swenshuai.xi #define SIG_ATOMIC_MAX __STDINT_EXP(INT_MAX)
357*53ee8cc1Swenshuai.xi 
358*53ee8cc1Swenshuai.xi /* This must match ptrdiff_t  in <stddef.h> (currently long int) */
359*53ee8cc1Swenshuai.xi #define PTRDIFF_MIN (-__STDINT_EXP(LONG_MAX) - 1L)
360*53ee8cc1Swenshuai.xi #define PTRDIFF_MAX __STDINT_EXP(LONG_MAX)
361*53ee8cc1Swenshuai.xi 
362*53ee8cc1Swenshuai.xi /** Macros for minimum-width integer constant expressions */
363*53ee8cc1Swenshuai.xi #define INT8_C(x)	x
364*53ee8cc1Swenshuai.xi #define UINT8_C(x)	x##U
365*53ee8cc1Swenshuai.xi 
366*53ee8cc1Swenshuai.xi #define INT16_C(x)	x
367*53ee8cc1Swenshuai.xi #define UINT16_C(x)	x##U
368*53ee8cc1Swenshuai.xi 
369*53ee8cc1Swenshuai.xi #if __have_long32
370*53ee8cc1Swenshuai.xi #define INT32_C(x)	x##L
371*53ee8cc1Swenshuai.xi #define UINT32_C(x)	x##UL
372*53ee8cc1Swenshuai.xi #else
373*53ee8cc1Swenshuai.xi #define INT32_C(x)	x
374*53ee8cc1Swenshuai.xi #define UINT32_C(x)	x##U
375*53ee8cc1Swenshuai.xi #endif
376*53ee8cc1Swenshuai.xi 
377*53ee8cc1Swenshuai.xi #if __int64_t_defined
378*53ee8cc1Swenshuai.xi #if __have_longlong64
379*53ee8cc1Swenshuai.xi #define INT64_C(x)	x##LL
380*53ee8cc1Swenshuai.xi #define UINT64_C(x)	x##ULL
381*53ee8cc1Swenshuai.xi #else
382*53ee8cc1Swenshuai.xi #define INT64_C(x)	x##L
383*53ee8cc1Swenshuai.xi #define UINT64_C(x)	x##UL
384*53ee8cc1Swenshuai.xi #endif
385*53ee8cc1Swenshuai.xi #endif
386*53ee8cc1Swenshuai.xi 
387*53ee8cc1Swenshuai.xi /** Macros for greatest-width integer constant expression */
388*53ee8cc1Swenshuai.xi #if __have_longlong64
389*53ee8cc1Swenshuai.xi #define INTMAX_C(x)	x##LL
390*53ee8cc1Swenshuai.xi #define UINTMAX_C(x)	x##ULL
391*53ee8cc1Swenshuai.xi #else
392*53ee8cc1Swenshuai.xi #define INTMAX_C(x)	x##L
393*53ee8cc1Swenshuai.xi #define UINTMAX_C(x)	x##UL
394*53ee8cc1Swenshuai.xi #endif
395*53ee8cc1Swenshuai.xi 
396*53ee8cc1Swenshuai.xi 
397*53ee8cc1Swenshuai.xi #ifdef __cplusplus
398*53ee8cc1Swenshuai.xi }
399*53ee8cc1Swenshuai.xi #endif
400*53ee8cc1Swenshuai.xi 
401*53ee8cc1Swenshuai.xi #endif /* _STDINT_H */
402