xref: /nrf52832-nimble/rt-thread/components/libc/compilers/minilibc/stdint.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author       Notes
8*10465441SEvalZero  */
9*10465441SEvalZero /*
10*10465441SEvalZero  * ISO C Standard:  7.18  Integer types  <stdint.h>
11*10465441SEvalZero  */
12*10465441SEvalZero 
13*10465441SEvalZero #ifndef __STDINT_H__
14*10465441SEvalZero #define __STDINT_H__
15*10465441SEvalZero 
16*10465441SEvalZero /* 7.8.1.1 Exact-width integer types */
17*10465441SEvalZero 
18*10465441SEvalZero #ifdef __INT8_TYPE__
19*10465441SEvalZero typedef __INT8_TYPE__ int8_t;
20*10465441SEvalZero #endif
21*10465441SEvalZero #ifdef __INT16_TYPE__
22*10465441SEvalZero typedef __INT16_TYPE__ int16_t;
23*10465441SEvalZero #endif
24*10465441SEvalZero #ifdef __INT32_TYPE__
25*10465441SEvalZero typedef __INT32_TYPE__ int32_t;
26*10465441SEvalZero #endif
27*10465441SEvalZero #ifdef __INT64_TYPE__
28*10465441SEvalZero typedef __INT64_TYPE__ int64_t;
29*10465441SEvalZero #endif
30*10465441SEvalZero #ifdef __UINT8_TYPE__
31*10465441SEvalZero typedef __UINT8_TYPE__ uint8_t;
32*10465441SEvalZero #endif
33*10465441SEvalZero #ifdef __UINT16_TYPE__
34*10465441SEvalZero typedef __UINT16_TYPE__ uint16_t;
35*10465441SEvalZero #endif
36*10465441SEvalZero #ifdef __UINT32_TYPE__
37*10465441SEvalZero typedef __UINT32_TYPE__ uint32_t;
38*10465441SEvalZero #endif
39*10465441SEvalZero #ifdef __UINT64_TYPE__
40*10465441SEvalZero typedef __UINT64_TYPE__ uint64_t;
41*10465441SEvalZero #endif
42*10465441SEvalZero 
43*10465441SEvalZero /* 7.8.1.2 Minimum-width integer types */
44*10465441SEvalZero 
45*10465441SEvalZero typedef __INT_LEAST8_TYPE__ int_least8_t;
46*10465441SEvalZero typedef __INT_LEAST16_TYPE__ int_least16_t;
47*10465441SEvalZero typedef __INT_LEAST32_TYPE__ int_least32_t;
48*10465441SEvalZero typedef __INT_LEAST64_TYPE__ int_least64_t;
49*10465441SEvalZero typedef __UINT_LEAST8_TYPE__ uint_least8_t;
50*10465441SEvalZero typedef __UINT_LEAST16_TYPE__ uint_least16_t;
51*10465441SEvalZero typedef __UINT_LEAST32_TYPE__ uint_least32_t;
52*10465441SEvalZero typedef __UINT_LEAST64_TYPE__ uint_least64_t;
53*10465441SEvalZero 
54*10465441SEvalZero /* 7.8.1.3 Fastest minimum-width integer types */
55*10465441SEvalZero 
56*10465441SEvalZero typedef __INT_FAST8_TYPE__ int_fast8_t;
57*10465441SEvalZero typedef __INT_FAST16_TYPE__ int_fast16_t;
58*10465441SEvalZero typedef __INT_FAST32_TYPE__ int_fast32_t;
59*10465441SEvalZero typedef __INT_FAST64_TYPE__ int_fast64_t;
60*10465441SEvalZero typedef __UINT_FAST8_TYPE__ uint_fast8_t;
61*10465441SEvalZero typedef __UINT_FAST16_TYPE__ uint_fast16_t;
62*10465441SEvalZero typedef __UINT_FAST32_TYPE__ uint_fast32_t;
63*10465441SEvalZero typedef __UINT_FAST64_TYPE__ uint_fast64_t;
64*10465441SEvalZero 
65*10465441SEvalZero /* 7.8.1.4 Integer types capable of holding object pointers */
66*10465441SEvalZero 
67*10465441SEvalZero #ifdef __INTPTR_TYPE__
68*10465441SEvalZero typedef __INTPTR_TYPE__ intptr_t;
69*10465441SEvalZero #endif
70*10465441SEvalZero #ifdef __UINTPTR_TYPE__
71*10465441SEvalZero typedef __UINTPTR_TYPE__ uintptr_t;
72*10465441SEvalZero #endif
73*10465441SEvalZero 
74*10465441SEvalZero /* 7.8.1.5 Greatest-width integer types */
75*10465441SEvalZero 
76*10465441SEvalZero typedef __INTMAX_TYPE__ intmax_t;
77*10465441SEvalZero typedef __UINTMAX_TYPE__ uintmax_t;
78*10465441SEvalZero 
79*10465441SEvalZero #if (!defined __cplusplus || __cplusplus >= 201103L \
80*10465441SEvalZero      || defined __STDC_LIMIT_MACROS)
81*10465441SEvalZero 
82*10465441SEvalZero /*
83*10465441SEvalZero  * 7.18.2 Limits of specified-width integer types.
84*10465441SEvalZero  *
85*10465441SEvalZero  * The following object-like macros specify the minimum and maximum limits
86*10465441SEvalZero  * of integer types corresponding to the typedef names defined above.
87*10465441SEvalZero  */
88*10465441SEvalZero 
89*10465441SEvalZero /* 7.18.2.1 Limits of exact-width integer types */
90*10465441SEvalZero 
91*10465441SEvalZero #ifdef __INT8_MAX__
92*10465441SEvalZero # undef INT8_MAX
93*10465441SEvalZero # define INT8_MAX __INT8_MAX__
94*10465441SEvalZero # undef INT8_MIN
95*10465441SEvalZero # define INT8_MIN (-INT8_MAX - 1)
96*10465441SEvalZero #endif
97*10465441SEvalZero #ifdef __UINT8_MAX__
98*10465441SEvalZero # undef UINT8_MAX
99*10465441SEvalZero # define UINT8_MAX __UINT8_MAX__
100*10465441SEvalZero #endif
101*10465441SEvalZero #ifdef __INT16_MAX__
102*10465441SEvalZero # undef INT16_MAX
103*10465441SEvalZero # define INT16_MAX __INT16_MAX__
104*10465441SEvalZero # undef INT16_MIN
105*10465441SEvalZero # define INT16_MIN (-INT16_MAX - 1)
106*10465441SEvalZero #endif
107*10465441SEvalZero #ifdef __UINT16_MAX__
108*10465441SEvalZero # undef UINT16_MAX
109*10465441SEvalZero # define UINT16_MAX __UINT16_MAX__
110*10465441SEvalZero #endif
111*10465441SEvalZero #ifdef __INT32_MAX__
112*10465441SEvalZero # undef INT32_MAX
113*10465441SEvalZero # define INT32_MAX __INT32_MAX__
114*10465441SEvalZero # undef INT32_MIN
115*10465441SEvalZero # define INT32_MIN (-INT32_MAX - 1)
116*10465441SEvalZero #endif
117*10465441SEvalZero #ifdef __UINT32_MAX__
118*10465441SEvalZero # undef UINT32_MAX
119*10465441SEvalZero # define UINT32_MAX __UINT32_MAX__
120*10465441SEvalZero #endif
121*10465441SEvalZero #ifdef __INT64_MAX__
122*10465441SEvalZero # undef INT64_MAX
123*10465441SEvalZero # define INT64_MAX __INT64_MAX__
124*10465441SEvalZero # undef INT64_MIN
125*10465441SEvalZero # define INT64_MIN (-INT64_MAX - 1)
126*10465441SEvalZero #endif
127*10465441SEvalZero #ifdef __UINT64_MAX__
128*10465441SEvalZero # undef UINT64_MAX
129*10465441SEvalZero # define UINT64_MAX __UINT64_MAX__
130*10465441SEvalZero #endif
131*10465441SEvalZero 
132*10465441SEvalZero #undef INT_LEAST8_MAX
133*10465441SEvalZero #define INT_LEAST8_MAX __INT_LEAST8_MAX__
134*10465441SEvalZero #undef INT_LEAST8_MIN
135*10465441SEvalZero #define INT_LEAST8_MIN (-INT_LEAST8_MAX - 1)
136*10465441SEvalZero #undef UINT_LEAST8_MAX
137*10465441SEvalZero #define UINT_LEAST8_MAX __UINT_LEAST8_MAX__
138*10465441SEvalZero #undef INT_LEAST16_MAX
139*10465441SEvalZero #define INT_LEAST16_MAX __INT_LEAST16_MAX__
140*10465441SEvalZero #undef INT_LEAST16_MIN
141*10465441SEvalZero #define INT_LEAST16_MIN (-INT_LEAST16_MAX - 1)
142*10465441SEvalZero #undef UINT_LEAST16_MAX
143*10465441SEvalZero #define UINT_LEAST16_MAX __UINT_LEAST16_MAX__
144*10465441SEvalZero #undef INT_LEAST32_MAX
145*10465441SEvalZero #define INT_LEAST32_MAX __INT_LEAST32_MAX__
146*10465441SEvalZero #undef INT_LEAST32_MIN
147*10465441SEvalZero #define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)
148*10465441SEvalZero #undef UINT_LEAST32_MAX
149*10465441SEvalZero #define UINT_LEAST32_MAX __UINT_LEAST32_MAX__
150*10465441SEvalZero #undef INT_LEAST64_MAX
151*10465441SEvalZero #define INT_LEAST64_MAX __INT_LEAST64_MAX__
152*10465441SEvalZero #undef INT_LEAST64_MIN
153*10465441SEvalZero #define INT_LEAST64_MIN (-INT_LEAST64_MAX - 1)
154*10465441SEvalZero #undef UINT_LEAST64_MAX
155*10465441SEvalZero #define UINT_LEAST64_MAX __UINT_LEAST64_MAX__
156*10465441SEvalZero 
157*10465441SEvalZero #undef INT_FAST8_MAX
158*10465441SEvalZero #define INT_FAST8_MAX __INT_FAST8_MAX__
159*10465441SEvalZero #undef INT_FAST8_MIN
160*10465441SEvalZero #define INT_FAST8_MIN (-INT_FAST8_MAX - 1)
161*10465441SEvalZero #undef UINT_FAST8_MAX
162*10465441SEvalZero #define UINT_FAST8_MAX __UINT_FAST8_MAX__
163*10465441SEvalZero #undef INT_FAST16_MAX
164*10465441SEvalZero #define INT_FAST16_MAX __INT_FAST16_MAX__
165*10465441SEvalZero #undef INT_FAST16_MIN
166*10465441SEvalZero #define INT_FAST16_MIN (-INT_FAST16_MAX - 1)
167*10465441SEvalZero #undef UINT_FAST16_MAX
168*10465441SEvalZero #define UINT_FAST16_MAX __UINT_FAST16_MAX__
169*10465441SEvalZero #undef INT_FAST32_MAX
170*10465441SEvalZero #define INT_FAST32_MAX __INT_FAST32_MAX__
171*10465441SEvalZero #undef INT_FAST32_MIN
172*10465441SEvalZero #define INT_FAST32_MIN (-INT_FAST32_MAX - 1)
173*10465441SEvalZero #undef UINT_FAST32_MAX
174*10465441SEvalZero #define UINT_FAST32_MAX __UINT_FAST32_MAX__
175*10465441SEvalZero #undef INT_FAST64_MAX
176*10465441SEvalZero #define INT_FAST64_MAX __INT_FAST64_MAX__
177*10465441SEvalZero #undef INT_FAST64_MIN
178*10465441SEvalZero #define INT_FAST64_MIN (-INT_FAST64_MAX - 1)
179*10465441SEvalZero #undef UINT_FAST64_MAX
180*10465441SEvalZero #define UINT_FAST64_MAX __UINT_FAST64_MAX__
181*10465441SEvalZero 
182*10465441SEvalZero #ifdef __INTPTR_MAX__
183*10465441SEvalZero # undef INTPTR_MAX
184*10465441SEvalZero # define INTPTR_MAX __INTPTR_MAX__
185*10465441SEvalZero # undef INTPTR_MIN
186*10465441SEvalZero # define INTPTR_MIN (-INTPTR_MAX - 1)
187*10465441SEvalZero #endif
188*10465441SEvalZero #ifdef __UINTPTR_MAX__
189*10465441SEvalZero # undef UINTPTR_MAX
190*10465441SEvalZero # define UINTPTR_MAX __UINTPTR_MAX__
191*10465441SEvalZero #endif
192*10465441SEvalZero 
193*10465441SEvalZero #undef INTMAX_MAX
194*10465441SEvalZero #define INTMAX_MAX __INTMAX_MAX__
195*10465441SEvalZero #undef INTMAX_MIN
196*10465441SEvalZero #define INTMAX_MIN (-INTMAX_MAX - 1)
197*10465441SEvalZero #undef UINTMAX_MAX
198*10465441SEvalZero #define UINTMAX_MAX __UINTMAX_MAX__
199*10465441SEvalZero 
200*10465441SEvalZero /* 7.18.3 Limits of other integer types */
201*10465441SEvalZero 
202*10465441SEvalZero #undef PTRDIFF_MAX
203*10465441SEvalZero #define PTRDIFF_MAX __PTRDIFF_MAX__
204*10465441SEvalZero #undef PTRDIFF_MIN
205*10465441SEvalZero #define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
206*10465441SEvalZero 
207*10465441SEvalZero #undef SIG_ATOMIC_MAX
208*10465441SEvalZero #define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__
209*10465441SEvalZero #undef SIG_ATOMIC_MIN
210*10465441SEvalZero #define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__
211*10465441SEvalZero 
212*10465441SEvalZero #undef SIZE_MAX
213*10465441SEvalZero #define SIZE_MAX __SIZE_MAX__
214*10465441SEvalZero 
215*10465441SEvalZero #undef WCHAR_MAX
216*10465441SEvalZero #define WCHAR_MAX __WCHAR_MAX__
217*10465441SEvalZero #undef WCHAR_MIN
218*10465441SEvalZero #define WCHAR_MIN __WCHAR_MIN__
219*10465441SEvalZero 
220*10465441SEvalZero #undef WINT_MAX
221*10465441SEvalZero #define WINT_MAX __WINT_MAX__
222*10465441SEvalZero #undef WINT_MIN
223*10465441SEvalZero #define WINT_MIN __WINT_MIN__
224*10465441SEvalZero 
225*10465441SEvalZero #endif /* (!defined __cplusplus || __cplusplus >= 201103L
226*10465441SEvalZero 	   || defined __STDC_LIMIT_MACROS)  */
227*10465441SEvalZero 
228*10465441SEvalZero #if (!defined __cplusplus || __cplusplus >= 201103L \
229*10465441SEvalZero      || defined __STDC_CONSTANT_MACROS)
230*10465441SEvalZero 
231*10465441SEvalZero #undef INT8_C
232*10465441SEvalZero #define INT8_C(c) __INT8_C(c)
233*10465441SEvalZero #undef INT16_C
234*10465441SEvalZero #define INT16_C(c) __INT16_C(c)
235*10465441SEvalZero #undef INT32_C
236*10465441SEvalZero #define INT32_C(c) __INT32_C(c)
237*10465441SEvalZero #undef INT64_C
238*10465441SEvalZero #define INT64_C(c) __INT64_C(c)
239*10465441SEvalZero #undef UINT8_C
240*10465441SEvalZero #define UINT8_C(c) __UINT8_C(c)
241*10465441SEvalZero #undef UINT16_C
242*10465441SEvalZero #define UINT16_C(c) __UINT16_C(c)
243*10465441SEvalZero #undef UINT32_C
244*10465441SEvalZero #define UINT32_C(c) __UINT32_C(c)
245*10465441SEvalZero #undef UINT64_C
246*10465441SEvalZero #define UINT64_C(c) __UINT64_C(c)
247*10465441SEvalZero #undef INTMAX_C
248*10465441SEvalZero #define INTMAX_C(c) __INTMAX_C(c)
249*10465441SEvalZero #undef UINTMAX_C
250*10465441SEvalZero #define UINTMAX_C(c) __UINTMAX_C(c)
251*10465441SEvalZero 
252*10465441SEvalZero #endif /* (!defined __cplusplus || __cplusplus >= 201103L
253*10465441SEvalZero 	   || defined __STDC_CONSTANT_MACROS) */
254*10465441SEvalZero 
255*10465441SEvalZero #ifndef __INT_MAX__
256*10465441SEvalZero #define __INT_MAX__     2147483647
257*10465441SEvalZero #endif
258*10465441SEvalZero #define INT_MIN         (-1 - INT_MAX)
259*10465441SEvalZero #define INT_MAX         (__INT_MAX__)
260*10465441SEvalZero #define UINT_MAX        (INT_MAX * 2U + 1U)
261*10465441SEvalZero 
262*10465441SEvalZero #define LONG_MAX	((long)(~0UL>>1))
263*10465441SEvalZero #define LONG_MIN	(-LONG_MAX - 1)
264*10465441SEvalZero #define ULONG_MAX	(~0UL)
265*10465441SEvalZero 
266*10465441SEvalZero #endif
267