1 /* Copyright (C) 2008-2018 Free Software Foundation, Inc. 2 3 This file is part of GCC. 4 5 GCC is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3, or (at your option) 8 any later version. 9 10 GCC is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 Under Section 7 of GPL version 3, you are granted additional 16 permissions described in the GCC Runtime Library Exception, version 17 3.1, as published by the Free Software Foundation. 18 19 You should have received a copy of the GNU General Public License and 20 a copy of the GCC Runtime Library Exception along with this program; 21 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 22 <http://www.gnu.org/licenses/>. */ 23 24 /* 25 * ISO C Standard: 7.18 Integer types <stdint.h> 26 */ 27 28 #ifndef _STDINT_H 29 #define _STDINT_H 30 31 /* 7.8.1.1 Exact-width integer types */ 32 33 #ifdef __INT8_TYPE__ 34 typedef __INT8_TYPE__ int8_t; 35 #endif 36 #ifdef __INT16_TYPE__ 37 typedef __INT16_TYPE__ int16_t; 38 #endif 39 #ifdef __INT32_TYPE__ 40 typedef __INT32_TYPE__ int32_t; 41 #endif 42 #ifdef __INT64_TYPE__ 43 typedef __INT64_TYPE__ int64_t; 44 #endif 45 #ifdef __UINT8_TYPE__ 46 typedef __UINT8_TYPE__ uint8_t; 47 #endif 48 #ifdef __UINT16_TYPE__ 49 typedef __UINT16_TYPE__ uint16_t; 50 #endif 51 #ifdef __UINT32_TYPE__ 52 typedef __UINT32_TYPE__ uint32_t; 53 #endif 54 #ifdef __UINT64_TYPE__ 55 typedef __UINT64_TYPE__ uint64_t; 56 #endif 57 58 /* 7.8.1.2 Minimum-width integer types */ 59 60 typedef __INT_LEAST8_TYPE__ int_least8_t; 61 typedef __INT_LEAST16_TYPE__ int_least16_t; 62 typedef __INT_LEAST32_TYPE__ int_least32_t; 63 typedef __INT_LEAST64_TYPE__ int_least64_t; 64 typedef __UINT_LEAST8_TYPE__ uint_least8_t; 65 typedef __UINT_LEAST16_TYPE__ uint_least16_t; 66 typedef __UINT_LEAST32_TYPE__ uint_least32_t; 67 typedef __UINT_LEAST64_TYPE__ uint_least64_t; 68 69 /* 7.8.1.3 Fastest minimum-width integer types */ 70 71 typedef __INT_FAST8_TYPE__ int_fast8_t; 72 typedef __INT_FAST16_TYPE__ int_fast16_t; 73 typedef __INT_FAST32_TYPE__ int_fast32_t; 74 typedef __INT_FAST64_TYPE__ int_fast64_t; 75 typedef __UINT_FAST8_TYPE__ uint_fast8_t; 76 typedef __UINT_FAST16_TYPE__ uint_fast16_t; 77 typedef __UINT_FAST32_TYPE__ uint_fast32_t; 78 typedef __UINT_FAST64_TYPE__ uint_fast64_t; 79 80 /* 7.8.1.4 Integer types capable of holding object pointers */ 81 82 #ifdef __INTPTR_TYPE__ 83 typedef __INTPTR_TYPE__ intptr_t; 84 #endif 85 #ifdef __UINTPTR_TYPE__ 86 typedef __UINTPTR_TYPE__ uintptr_t; 87 #endif 88 89 /* 7.8.1.5 Greatest-width integer types */ 90 91 typedef __INTMAX_TYPE__ intmax_t; 92 typedef __UINTMAX_TYPE__ uintmax_t; 93 94 #if (!defined __cplusplus || __cplusplus >= 201103L \ 95 || defined __STDC_LIMIT_MACROS) 96 97 /* 7.18.2 Limits of specified-width integer types */ 98 99 #ifdef __INT8_MAX__ 100 # undef INT8_MAX 101 # define INT8_MAX __INT8_MAX__ 102 # undef INT8_MIN 103 # define INT8_MIN (-INT8_MAX - 1) 104 #endif 105 #ifdef __UINT8_MAX__ 106 # undef UINT8_MAX 107 # define UINT8_MAX __UINT8_MAX__ 108 #endif 109 #ifdef __INT16_MAX__ 110 # undef INT16_MAX 111 # define INT16_MAX __INT16_MAX__ 112 # undef INT16_MIN 113 # define INT16_MIN (-INT16_MAX - 1) 114 #endif 115 #ifdef __UINT16_MAX__ 116 # undef UINT16_MAX 117 # define UINT16_MAX __UINT16_MAX__ 118 #endif 119 #ifdef __INT32_MAX__ 120 # undef INT32_MAX 121 # define INT32_MAX __INT32_MAX__ 122 # undef INT32_MIN 123 # define INT32_MIN (-INT32_MAX - 1) 124 #endif 125 #ifdef __UINT32_MAX__ 126 # undef UINT32_MAX 127 # define UINT32_MAX __UINT32_MAX__ 128 #endif 129 #ifdef __INT64_MAX__ 130 # undef INT64_MAX 131 # define INT64_MAX __INT64_MAX__ 132 # undef INT64_MIN 133 # define INT64_MIN (-INT64_MAX - 1) 134 #endif 135 #ifdef __UINT64_MAX__ 136 # undef UINT64_MAX 137 # define UINT64_MAX __UINT64_MAX__ 138 #endif 139 140 #undef INT_LEAST8_MAX 141 #define INT_LEAST8_MAX __INT_LEAST8_MAX__ 142 #undef INT_LEAST8_MIN 143 #define INT_LEAST8_MIN (-INT_LEAST8_MAX - 1) 144 #undef UINT_LEAST8_MAX 145 #define UINT_LEAST8_MAX __UINT_LEAST8_MAX__ 146 #undef INT_LEAST16_MAX 147 #define INT_LEAST16_MAX __INT_LEAST16_MAX__ 148 #undef INT_LEAST16_MIN 149 #define INT_LEAST16_MIN (-INT_LEAST16_MAX - 1) 150 #undef UINT_LEAST16_MAX 151 #define UINT_LEAST16_MAX __UINT_LEAST16_MAX__ 152 #undef INT_LEAST32_MAX 153 #define INT_LEAST32_MAX __INT_LEAST32_MAX__ 154 #undef INT_LEAST32_MIN 155 #define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1) 156 #undef UINT_LEAST32_MAX 157 #define UINT_LEAST32_MAX __UINT_LEAST32_MAX__ 158 #undef INT_LEAST64_MAX 159 #define INT_LEAST64_MAX __INT_LEAST64_MAX__ 160 #undef INT_LEAST64_MIN 161 #define INT_LEAST64_MIN (-INT_LEAST64_MAX - 1) 162 #undef UINT_LEAST64_MAX 163 #define UINT_LEAST64_MAX __UINT_LEAST64_MAX__ 164 165 #undef INT_FAST8_MAX 166 #define INT_FAST8_MAX __INT_FAST8_MAX__ 167 #undef INT_FAST8_MIN 168 #define INT_FAST8_MIN (-INT_FAST8_MAX - 1) 169 #undef UINT_FAST8_MAX 170 #define UINT_FAST8_MAX __UINT_FAST8_MAX__ 171 #undef INT_FAST16_MAX 172 #define INT_FAST16_MAX __INT_FAST16_MAX__ 173 #undef INT_FAST16_MIN 174 #define INT_FAST16_MIN (-INT_FAST16_MAX - 1) 175 #undef UINT_FAST16_MAX 176 #define UINT_FAST16_MAX __UINT_FAST16_MAX__ 177 #undef INT_FAST32_MAX 178 #define INT_FAST32_MAX __INT_FAST32_MAX__ 179 #undef INT_FAST32_MIN 180 #define INT_FAST32_MIN (-INT_FAST32_MAX - 1) 181 #undef UINT_FAST32_MAX 182 #define UINT_FAST32_MAX __UINT_FAST32_MAX__ 183 #undef INT_FAST64_MAX 184 #define INT_FAST64_MAX __INT_FAST64_MAX__ 185 #undef INT_FAST64_MIN 186 #define INT_FAST64_MIN (-INT_FAST64_MAX - 1) 187 #undef UINT_FAST64_MAX 188 #define UINT_FAST64_MAX __UINT_FAST64_MAX__ 189 190 #ifdef __INTPTR_MAX__ 191 # undef INTPTR_MAX 192 # define INTPTR_MAX __INTPTR_MAX__ 193 # undef INTPTR_MIN 194 # define INTPTR_MIN (-INTPTR_MAX - 1) 195 #endif 196 #ifdef __UINTPTR_MAX__ 197 # undef UINTPTR_MAX 198 # define UINTPTR_MAX __UINTPTR_MAX__ 199 #endif 200 201 #undef INTMAX_MAX 202 #define INTMAX_MAX __INTMAX_MAX__ 203 #undef INTMAX_MIN 204 #define INTMAX_MIN (-INTMAX_MAX - 1) 205 #undef UINTMAX_MAX 206 #define UINTMAX_MAX __UINTMAX_MAX__ 207 208 /* 7.18.3 Limits of other integer types */ 209 210 #undef PTRDIFF_MAX 211 #define PTRDIFF_MAX __PTRDIFF_MAX__ 212 #undef PTRDIFF_MIN 213 #define PTRDIFF_MIN (-PTRDIFF_MAX - 1) 214 215 #undef SIG_ATOMIC_MAX 216 #define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__ 217 #undef SIG_ATOMIC_MIN 218 #define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__ 219 220 #undef SIZE_MAX 221 #define SIZE_MAX __SIZE_MAX__ 222 223 #undef WCHAR_MAX 224 #define WCHAR_MAX __WCHAR_MAX__ 225 #undef WCHAR_MIN 226 #define WCHAR_MIN __WCHAR_MIN__ 227 228 #undef WINT_MAX 229 #define WINT_MAX __WINT_MAX__ 230 #undef WINT_MIN 231 #define WINT_MIN __WINT_MIN__ 232 233 #endif /* (!defined __cplusplus || __cplusplus >= 201103L 234 || defined __STDC_LIMIT_MACROS) */ 235 236 #if (!defined __cplusplus || __cplusplus >= 201103L \ 237 || defined __STDC_CONSTANT_MACROS) 238 239 #undef INT8_C 240 #define INT8_C(c) __INT8_C(c) 241 #undef INT16_C 242 #define INT16_C(c) __INT16_C(c) 243 #undef INT32_C 244 #define INT32_C(c) __INT32_C(c) 245 #undef INT64_C 246 #define INT64_C(c) __INT64_C(c) 247 #undef UINT8_C 248 #define UINT8_C(c) __UINT8_C(c) 249 #undef UINT16_C 250 #define UINT16_C(c) __UINT16_C(c) 251 #undef UINT32_C 252 #define UINT32_C(c) __UINT32_C(c) 253 #undef UINT64_C 254 #define UINT64_C(c) __UINT64_C(c) 255 #undef INTMAX_C 256 #define INTMAX_C(c) __INTMAX_C(c) 257 #undef UINTMAX_C 258 #define UINTMAX_C(c) __UINTMAX_C(c) 259 260 #endif /* (!defined __cplusplus || __cplusplus >= 201103L 261 || defined __STDC_CONSTANT_MACROS) */ 262 263 #ifdef __STDC_WANT_IEC_60559_BFP_EXT__ 264 /* TS 18661-1 widths of integer types. */ 265 266 #ifdef __INT8_TYPE__ 267 # undef INT8_WIDTH 268 # define INT8_WIDTH 8 269 #endif 270 #ifdef __UINT8_TYPE__ 271 # undef UINT8_WIDTH 272 # define UINT8_WIDTH 8 273 #endif 274 #ifdef __INT16_TYPE__ 275 # undef INT16_WIDTH 276 # define INT16_WIDTH 16 277 #endif 278 #ifdef __UINT16_TYPE__ 279 # undef UINT16_WIDTH 280 # define UINT16_WIDTH 16 281 #endif 282 #ifdef __INT32_TYPE__ 283 # undef INT32_WIDTH 284 # define INT32_WIDTH 32 285 #endif 286 #ifdef __UINT32_TYPE__ 287 # undef UINT32_WIDTH 288 # define UINT32_WIDTH 32 289 #endif 290 #ifdef __INT64_TYPE__ 291 # undef INT64_WIDTH 292 # define INT64_WIDTH 64 293 #endif 294 #ifdef __UINT64_TYPE__ 295 # undef UINT64_WIDTH 296 # define UINT64_WIDTH 64 297 #endif 298 299 #undef INT_LEAST8_WIDTH 300 #define INT_LEAST8_WIDTH __INT_LEAST8_WIDTH__ 301 #undef UINT_LEAST8_WIDTH 302 #define UINT_LEAST8_WIDTH __INT_LEAST8_WIDTH__ 303 #undef INT_LEAST16_WIDTH 304 #define INT_LEAST16_WIDTH __INT_LEAST16_WIDTH__ 305 #undef UINT_LEAST16_WIDTH 306 #define UINT_LEAST16_WIDTH __INT_LEAST16_WIDTH__ 307 #undef INT_LEAST32_WIDTH 308 #define INT_LEAST32_WIDTH __INT_LEAST32_WIDTH__ 309 #undef UINT_LEAST32_WIDTH 310 #define UINT_LEAST32_WIDTH __INT_LEAST32_WIDTH__ 311 #undef INT_LEAST64_WIDTH 312 #define INT_LEAST64_WIDTH __INT_LEAST64_WIDTH__ 313 #undef UINT_LEAST64_WIDTH 314 #define UINT_LEAST64_WIDTH __INT_LEAST64_WIDTH__ 315 316 #undef INT_FAST8_WIDTH 317 #define INT_FAST8_WIDTH __INT_FAST8_WIDTH__ 318 #undef UINT_FAST8_WIDTH 319 #define UINT_FAST8_WIDTH __INT_FAST8_WIDTH__ 320 #undef INT_FAST16_WIDTH 321 #define INT_FAST16_WIDTH __INT_FAST16_WIDTH__ 322 #undef UINT_FAST16_WIDTH 323 #define UINT_FAST16_WIDTH __INT_FAST16_WIDTH__ 324 #undef INT_FAST32_WIDTH 325 #define INT_FAST32_WIDTH __INT_FAST32_WIDTH__ 326 #undef UINT_FAST32_WIDTH 327 #define UINT_FAST32_WIDTH __INT_FAST32_WIDTH__ 328 #undef INT_FAST64_WIDTH 329 #define INT_FAST64_WIDTH __INT_FAST64_WIDTH__ 330 #undef UINT_FAST64_WIDTH 331 #define UINT_FAST64_WIDTH __INT_FAST64_WIDTH__ 332 333 #ifdef __INTPTR_TYPE__ 334 # undef INTPTR_WIDTH 335 # define INTPTR_WIDTH __INTPTR_WIDTH__ 336 #endif 337 #ifdef __UINTPTR_TYPE__ 338 # undef UINTPTR_WIDTH 339 # define UINTPTR_WIDTH __INTPTR_WIDTH__ 340 #endif 341 342 #undef INTMAX_WIDTH 343 #define INTMAX_WIDTH __INTMAX_WIDTH__ 344 #undef UINTMAX_WIDTH 345 #define UINTMAX_WIDTH __INTMAX_WIDTH__ 346 347 #undef PTRDIFF_WIDTH 348 #define PTRDIFF_WIDTH __PTRDIFF_WIDTH__ 349 350 #undef SIG_ATOMIC_WIDTH 351 #define SIG_ATOMIC_WIDTH __SIG_ATOMIC_WIDTH__ 352 353 #undef SIZE_WIDTH 354 #define SIZE_WIDTH __SIZE_WIDTH__ 355 356 #undef WCHAR_WIDTH 357 #define WCHAR_WIDTH __WCHAR_WIDTH__ 358 359 #undef WINT_WIDTH 360 #define WINT_WIDTH __WINT_WIDTH__ 361 362 #define SIZE_MAX UINT64_MAX 363 #endif 364 365 typedef long sig_atomic_t; 366 367 #endif /* _GCC_STDINT_H */ 368