1/* Copyright (C) 2008, 2009 Free Software Foundation, Inc. 2 3This file is part of GCC. 4 5GCC is free software; you can redistribute it and/or modify 6it under the terms of the GNU General Public License as published by 7the Free Software Foundation; either version 3, or (at your option) 8any later version. 9 10GCC is distributed in the hope that it will be useful, 11but WITHOUT ANY WARRANTY; without even the implied warranty of 12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13GNU General Public License for more details. 14 15Under Section 7 of GPL version 3, you are granted additional 16permissions described in the GCC Runtime Library Exception, version 173.1, as published by the Free Software Foundation. 18 19You should have received a copy of the GNU General Public License and 20a copy of the GCC Runtime Library Exception along with this program; 21see 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 _GCC_STDINT_H 29#define _GCC_STDINT_H 30 31/* 7.8.1.1 Exact-width integer types */ 32 33#ifdef __INT8_TYPE__ 34typedef __INT8_TYPE__ int8_t; 35#endif 36#ifdef __INT16_TYPE__ 37typedef __INT16_TYPE__ int16_t; 38#endif 39#ifdef __INT32_TYPE__ 40typedef __INT32_TYPE__ int32_t; 41#endif 42#ifdef __INT64_TYPE__ 43typedef __INT64_TYPE__ int64_t; 44#endif 45#ifdef __UINT8_TYPE__ 46typedef __UINT8_TYPE__ uint8_t; 47#endif 48#ifdef __UINT16_TYPE__ 49typedef __UINT16_TYPE__ uint16_t; 50#endif 51#ifdef __UINT32_TYPE__ 52typedef __UINT32_TYPE__ uint32_t; 53#endif 54#ifdef __UINT64_TYPE__ 55typedef __UINT64_TYPE__ uint64_t; 56#endif 57 58/* 7.8.1.2 Minimum-width integer types */ 59 60typedef __INT_LEAST8_TYPE__ int_least8_t; 61typedef __INT_LEAST16_TYPE__ int_least16_t; 62typedef __INT_LEAST32_TYPE__ int_least32_t; 63typedef __INT_LEAST64_TYPE__ int_least64_t; 64typedef __UINT_LEAST8_TYPE__ uint_least8_t; 65typedef __UINT_LEAST16_TYPE__ uint_least16_t; 66typedef __UINT_LEAST32_TYPE__ uint_least32_t; 67typedef __UINT_LEAST64_TYPE__ uint_least64_t; 68 69/* 7.8.1.3 Fastest minimum-width integer types */ 70 71typedef __INT_FAST8_TYPE__ int_fast8_t; 72typedef __INT_FAST16_TYPE__ int_fast16_t; 73typedef __INT_FAST32_TYPE__ int_fast32_t; 74typedef __INT_FAST64_TYPE__ int_fast64_t; 75typedef __UINT_FAST8_TYPE__ uint_fast8_t; 76typedef __UINT_FAST16_TYPE__ uint_fast16_t; 77typedef __UINT_FAST32_TYPE__ uint_fast32_t; 78typedef __UINT_FAST64_TYPE__ uint_fast64_t; 79 80/* 7.8.1.4 Integer types capable of holding object pointers */ 81 82#ifdef __INTPTR_TYPE__ 83typedef __INTPTR_TYPE__ intptr_t; 84#endif 85#ifdef __UINTPTR_TYPE__ 86typedef __UINTPTR_TYPE__ uintptr_t; 87#endif 88 89/* 7.8.1.5 Greatest-width integer types */ 90 91typedef __INTMAX_TYPE__ intmax_t; 92typedef __UINTMAX_TYPE__ uintmax_t; 93 94#if !defined __cplusplus || defined __STDC_LIMIT_MACROS 95 96/* 7.18.2 Limits of specified-width integer types */ 97 98#ifdef __INT8_MAX__ 99# undef INT8_MAX 100# define INT8_MAX __INT8_MAX__ 101# undef INT8_MIN 102# define INT8_MIN (-INT8_MAX - 1) 103#endif 104#ifdef __UINT8_MAX__ 105# undef UINT8_MAX 106# define UINT8_MAX __UINT8_MAX__ 107#endif 108#ifdef __INT16_MAX__ 109# undef INT16_MAX 110# define INT16_MAX __INT16_MAX__ 111# undef INT16_MIN 112# define INT16_MIN (-INT16_MAX - 1) 113#endif 114#ifdef __UINT16_MAX__ 115# undef UINT16_MAX 116# define UINT16_MAX __UINT16_MAX__ 117#endif 118#ifdef __INT32_MAX__ 119# undef INT32_MAX 120# define INT32_MAX __INT32_MAX__ 121# undef INT32_MIN 122# define INT32_MIN (-INT32_MAX - 1) 123#endif 124#ifdef __UINT32_MAX__ 125# undef UINT32_MAX 126# define UINT32_MAX __UINT32_MAX__ 127#endif 128#ifdef __INT64_MAX__ 129# undef INT64_MAX 130# define INT64_MAX __INT64_MAX__ 131# undef INT64_MIN 132# define INT64_MIN (-INT64_MAX - 1) 133#endif 134#ifdef __UINT64_MAX__ 135# undef UINT64_MAX 136# define UINT64_MAX __UINT64_MAX__ 137#endif 138 139#undef INT_LEAST8_MAX 140#define INT_LEAST8_MAX __INT_LEAST8_MAX__ 141#undef INT_LEAST8_MIN 142#define INT_LEAST8_MIN (-INT_LEAST8_MAX - 1) 143#undef UINT_LEAST8_MAX 144#define UINT_LEAST8_MAX __UINT_LEAST8_MAX__ 145#undef INT_LEAST16_MAX 146#define INT_LEAST16_MAX __INT_LEAST16_MAX__ 147#undef INT_LEAST16_MIN 148#define INT_LEAST16_MIN (-INT_LEAST16_MAX - 1) 149#undef UINT_LEAST16_MAX 150#define UINT_LEAST16_MAX __UINT_LEAST16_MAX__ 151#undef INT_LEAST32_MAX 152#define INT_LEAST32_MAX __INT_LEAST32_MAX__ 153#undef INT_LEAST32_MIN 154#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1) 155#undef UINT_LEAST32_MAX 156#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__ 157#undef INT_LEAST64_MAX 158#define INT_LEAST64_MAX __INT_LEAST64_MAX__ 159#undef INT_LEAST64_MIN 160#define INT_LEAST64_MIN (-INT_LEAST64_MAX - 1) 161#undef UINT_LEAST64_MAX 162#define UINT_LEAST64_MAX __UINT_LEAST64_MAX__ 163 164#undef INT_FAST8_MAX 165#define INT_FAST8_MAX __INT_FAST8_MAX__ 166#undef INT_FAST8_MIN 167#define INT_FAST8_MIN (-INT_FAST8_MAX - 1) 168#undef UINT_FAST8_MAX 169#define UINT_FAST8_MAX __UINT_FAST8_MAX__ 170#undef INT_FAST16_MAX 171#define INT_FAST16_MAX __INT_FAST16_MAX__ 172#undef INT_FAST16_MIN 173#define INT_FAST16_MIN (-INT_FAST16_MAX - 1) 174#undef UINT_FAST16_MAX 175#define UINT_FAST16_MAX __UINT_FAST16_MAX__ 176#undef INT_FAST32_MAX 177#define INT_FAST32_MAX __INT_FAST32_MAX__ 178#undef INT_FAST32_MIN 179#define INT_FAST32_MIN (-INT_FAST32_MAX - 1) 180#undef UINT_FAST32_MAX 181#define UINT_FAST32_MAX __UINT_FAST32_MAX__ 182#undef INT_FAST64_MAX 183#define INT_FAST64_MAX __INT_FAST64_MAX__ 184#undef INT_FAST64_MIN 185#define INT_FAST64_MIN (-INT_FAST64_MAX - 1) 186#undef UINT_FAST64_MAX 187#define UINT_FAST64_MAX __UINT_FAST64_MAX__ 188 189#ifdef __INTPTR_MAX__ 190# undef INTPTR_MAX 191# define INTPTR_MAX __INTPTR_MAX__ 192# undef INTPTR_MIN 193# define INTPTR_MIN (-INTPTR_MAX - 1) 194#endif 195#ifdef __UINTPTR_MAX__ 196# undef UINTPTR_MAX 197# define UINTPTR_MAX __UINTPTR_MAX__ 198#endif 199 200#undef INTMAX_MAX 201#define INTMAX_MAX __INTMAX_MAX__ 202#undef INTMAX_MIN 203#define INTMAX_MIN (-INTMAX_MAX - 1) 204#undef UINTMAX_MAX 205#define UINTMAX_MAX __UINTMAX_MAX__ 206 207/* 7.18.3 Limits of other integer types */ 208 209#undef PTRDIFF_MAX 210#define PTRDIFF_MAX __PTRDIFF_MAX__ 211#undef PTRDIFF_MIN 212#define PTRDIFF_MIN (-PTRDIFF_MAX - 1) 213 214#undef SIG_ATOMIC_MAX 215#define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__ 216#undef SIG_ATOMIC_MIN 217#define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__ 218 219#undef SIZE_MAX 220#define SIZE_MAX __SIZE_MAX__ 221 222#undef WCHAR_MAX 223#define WCHAR_MAX __WCHAR_MAX__ 224#undef WCHAR_MIN 225#define WCHAR_MIN __WCHAR_MIN__ 226 227#undef WINT_MAX 228#define WINT_MAX __WINT_MAX__ 229#undef WINT_MIN 230#define WINT_MIN __WINT_MIN__ 231 232#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */ 233 234#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS 235 236#undef INT8_C 237#define INT8_C(c) __INT8_C(c) 238#undef INT16_C 239#define INT16_C(c) __INT16_C(c) 240#undef INT32_C 241#define INT32_C(c) __INT32_C(c) 242#undef INT64_C 243#define INT64_C(c) __INT64_C(c) 244#undef UINT8_C 245#define UINT8_C(c) __UINT8_C(c) 246#undef UINT16_C 247#define UINT16_C(c) __UINT16_C(c) 248#undef UINT32_C 249#define UINT32_C(c) __UINT32_C(c) 250#undef UINT64_C 251#define UINT64_C(c) __UINT64_C(c) 252#undef INTMAX_C 253#define INTMAX_C(c) __INTMAX_C(c) 254#undef UINTMAX_C 255#define UINTMAX_C(c) __UINTMAX_C(c) 256 257#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */ 258 259#endif /* _GCC_STDINT_H */ 260