1 /* stdint.h */
2 
3 /*
4  * Copyright (c) 2014 Wind River Systems, Inc.
5  *
6  * SPDX-License-Identifier: Apache-2.0
7  */
8 
9 #ifndef ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_STDINT_H_
10 #define ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_STDINT_H_
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 #define INT8_MAX    __INT8_MAX__
17 #define INT16_MAX   __INT16_MAX__
18 #define INT32_MAX   __INT32_MAX__
19 #define INT64_MAX   __INT64_MAX__
20 #define INTMAX_MAX  __INT64_MAX__
21 
22 #define INT8_MIN    (-INT8_MAX - 1)
23 #define INT16_MIN   (-INT16_MAX - 1)
24 #define INT32_MIN   (-INT32_MAX - 1)
25 #define INT64_MIN   (-INT64_MAX - 1LL)
26 
27 #define UINT8_MAX   __UINT8_MAX__
28 #define UINT16_MAX  __UINT16_MAX__
29 #define UINT32_MAX  __UINT32_MAX__
30 #define UINT64_MAX  __UINT64_MAX__
31 #define UINTMAX_MAX __UINT64_MAX__
32 
33 #define INT_FAST8_MAX    __INT_FAST8_MAX__
34 #define INT_FAST16_MAX   __INT_FAST16_MAX__
35 #define INT_FAST32_MAX   __INT_FAST32_MAX__
36 #define INT_FAST64_MAX   __INT_FAST64_MAX__
37 
38 #define INT_FAST8_MIN    (-INT_FAST8_MAX - 1)
39 #define INT_FAST16_MIN   (-INT_FAST16_MAX - 1)
40 #define INT_FAST32_MIN   (-INT_FAST32_MAX - 1)
41 #define INT_FAST64_MIN   (-INT_FAST64_MAX - 1LL)
42 
43 #define UINT_FAST8_MAX    __UINT_FAST8_MAX__
44 #define UINT_FAST16_MAX   __UINT_FAST16_MAX__
45 #define UINT_FAST32_MAX   __UINT_FAST32_MAX__
46 #define UINT_FAST64_MAX   __UINT_FAST64_MAX__
47 
48 #define INT_LEAST8_MAX    __INT_LEAST8_MAX__
49 #define INT_LEAST16_MAX   __INT_LEAST16_MAX__
50 #define INT_LEAST32_MAX   __INT_LEAST32_MAX__
51 #define INT_LEAST64_MAX   __INT_LEAST64_MAX__
52 
53 #define INT_LEAST8_MIN    (-INT_LEAST8_MAX - 1)
54 #define INT_LEAST16_MIN   (-INT_LEAST16_MAX - 1)
55 #define INT_LEAST32_MIN   (-INT_LEAST32_MAX - 1)
56 #define INT_LEAST64_MIN   (-INT_LEAST64_MAX - 1LL)
57 
58 #define UINT_LEAST8_MAX    __UINT_LEAST8_MAX__
59 #define UINT_LEAST16_MAX   __UINT_LEAST16_MAX__
60 #define UINT_LEAST32_MAX   __UINT_LEAST32_MAX__
61 #define UINT_LEAST64_MAX   __UINT_LEAST64_MAX__
62 
63 #define INTPTR_MAX  __INTPTR_MAX__
64 #define INTPTR_MIN  (-INTPTR_MAX - 1)
65 #define UINTPTR_MAX __UINTPTR_MAX__
66 
67 #define PTRDIFF_MAX __PTRDIFF_MAX__
68 #define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
69 
70 #define SIZE_MAX    __SIZE_MAX__
71 
72 typedef __INT8_TYPE__		int8_t;
73 typedef __INT16_TYPE__		int16_t;
74 typedef __INT32_TYPE__		int32_t;
75 typedef __INT64_TYPE__		int64_t;
76 typedef __INT64_TYPE__		intmax_t;
77 
78 typedef __INT_FAST8_TYPE__	int_fast8_t;
79 typedef __INT_FAST16_TYPE__	int_fast16_t;
80 typedef __INT_FAST32_TYPE__	int_fast32_t;
81 typedef __INT_FAST64_TYPE__	int_fast64_t;
82 
83 typedef __INT_LEAST8_TYPE__	int_least8_t;
84 typedef __INT_LEAST16_TYPE__	int_least16_t;
85 typedef __INT_LEAST32_TYPE__	int_least32_t;
86 typedef __INT_LEAST64_TYPE__	int_least64_t;
87 
88 typedef __UINT8_TYPE__		uint8_t;
89 typedef __UINT16_TYPE__		uint16_t;
90 typedef __UINT32_TYPE__		uint32_t;
91 typedef __UINT64_TYPE__		uint64_t;
92 typedef __UINT64_TYPE__		uintmax_t;
93 
94 typedef __UINT_FAST8_TYPE__	uint_fast8_t;
95 typedef __UINT_FAST16_TYPE__	uint_fast16_t;
96 typedef __UINT_FAST32_TYPE__	uint_fast32_t;
97 typedef __UINT_FAST64_TYPE__	uint_fast64_t;
98 
99 typedef __UINT_LEAST8_TYPE__	uint_least8_t;
100 typedef __UINT_LEAST16_TYPE__	uint_least16_t;
101 typedef __UINT_LEAST32_TYPE__	uint_least32_t;
102 typedef __UINT_LEAST64_TYPE__	uint_least64_t;
103 
104 typedef __INTPTR_TYPE__		intptr_t;
105 typedef __UINTPTR_TYPE__	uintptr_t;
106 
107 #if defined(__GNUC__) || defined(__clang__)
108 /* These macros must produce constant integer expressions, which can't
109  * be done in the preprocessor (casts aren't allowed).  Defer to the
110  * GCC internal functions where they're available.
111  */
112 #define INT8_C(_v) __INT8_C(_v)
113 #define INT16_C(_v) __INT16_C(_v)
114 #define INT32_C(_v) __INT32_C(_v)
115 #define INT64_C(_v) __INT64_C(_v)
116 #define INTMAX_C(_v) __INTMAX_C(_v)
117 
118 #define UINT8_C(_v) __UINT8_C(_v)
119 #define UINT16_C(_v) __UINT16_C(_v)
120 #define UINT32_C(_v) __UINT32_C(_v)
121 #define UINT64_C(_v) __UINT64_C(_v)
122 #define UINTMAX_C(_v) __UINTMAX_C(_v)
123 #endif /* defined(__GNUC__) || defined(__clang__) */
124 
125 #ifdef __CCAC__
126 #ifndef __INT8_C
127 #define __INT8_C(x)	x
128 #endif
129 
130 #ifndef INT8_C
131 #define INT8_C(x)	__INT8_C(x)
132 #endif
133 
134 #ifndef __UINT8_C
135 #define __UINT8_C(x)	x ## U
136 #endif
137 
138 #ifndef UINT8_C
139 #define UINT8_C(x)	__UINT8_C(x)
140 #endif
141 
142 #ifndef __INT16_C
143 #define __INT16_C(x)	x
144 #endif
145 
146 #ifndef INT16_C
147 #define INT16_C(x)	__INT16_C(x)
148 #endif
149 
150 #ifndef __UINT16_C
151 #define __UINT16_C(x)	x ## U
152 #endif
153 
154 #ifndef UINT16_C
155 #define UINT16_C(x)	__UINT16_C(x)
156 #endif
157 
158 #ifndef __INT32_C
159 #define __INT32_C(x)	x
160 #endif
161 
162 #ifndef INT32_C
163 #define INT32_C(x)	__INT32_C(x)
164 #endif
165 
166 #ifndef __UINT32_C
167 #define __UINT32_C(x)	x ## U
168 #endif
169 
170 #ifndef UINT32_C
171 #define UINT32_C(x)	__UINT32_C(x)
172 #endif
173 
174 #ifndef __INT64_C
175 #define __INT64_C(x)	x
176 #endif
177 
178 #ifndef INT64_C
179 #define INT64_C(x)	__INT64_C(x)
180 #endif
181 
182 #ifndef __UINT64_C
183 #define __UINT64_C(x)	x ## ULL
184 #endif
185 
186 #ifndef UINT64_C
187 #define UINT64_C(x)	__UINT64_C(x)
188 #endif
189 
190 #ifndef __INTMAX_C
191 #define __INTMAX_C(x)	x
192 #endif
193 
194 #ifndef INTMAX_C
195 #define INTMAX_C(x)	__INTMAX_C(x)
196 #endif
197 
198 #ifndef __UINTMAX_C
199 #define __UINTMAX_C(x)	x ## ULL
200 #endif
201 
202 #ifndef UINTMAX_C
203 #define UINTMAX_C(x)	__UINTMAX_C(x)
204 #endif
205 #endif /* __CCAC__ */
206 
207 #ifdef __cplusplus
208 }
209 #endif
210 
211 #endif /* ZEPHYR_LIB_LIBC_MINIMAL_INCLUDE_STDINT_H_ */
212