1 /* Copyright (C) 1991-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 it under 6 the terms of the GNU General Public License as published by the Free 7 Software Foundation; either version 3, or (at your option) any later 8 version. 9 10 GCC is distributed in the hope that it will be useful, but WITHOUT ANY 11 WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 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 #ifndef _LIMITS_H___ 25 #define _LIMITS_H___ 26 27 /* Number of bits in a `char'. */ 28 #undef CHAR_BIT 29 #define CHAR_BIT __CHAR_BIT__ 30 31 /* Maximum length of a multibyte character. */ 32 #ifndef MB_LEN_MAX 33 #define MB_LEN_MAX 1 34 #endif 35 36 /* Minimum and maximum values a `signed char' can hold. */ 37 #undef SCHAR_MIN 38 #define SCHAR_MIN (-SCHAR_MAX - 1) 39 #undef SCHAR_MAX 40 #define SCHAR_MAX __SCHAR_MAX__ 41 42 /* Maximum value an `unsigned char' can hold. (Minimum is 0). */ 43 #undef UCHAR_MAX 44 #if __SCHAR_MAX__ == __INT_MAX__ 45 # define UCHAR_MAX (SCHAR_MAX * 2U + 1U) 46 #else 47 # define UCHAR_MAX (SCHAR_MAX * 2 + 1) 48 #endif 49 50 /* Minimum and maximum values a `char' can hold. */ 51 #ifdef __CHAR_UNSIGNED__ 52 # undef CHAR_MIN 53 # if __SCHAR_MAX__ == __INT_MAX__ 54 # define CHAR_MIN 0U 55 # else 56 # define CHAR_MIN 0 57 # endif 58 # undef CHAR_MAX 59 # define CHAR_MAX UCHAR_MAX 60 #else 61 # undef CHAR_MIN 62 # define CHAR_MIN SCHAR_MIN 63 # undef CHAR_MAX 64 # define CHAR_MAX SCHAR_MAX 65 #endif 66 67 /* Minimum and maximum values a `signed short int' can hold. */ 68 #undef SHRT_MIN 69 #define SHRT_MIN (-SHRT_MAX - 1) 70 #undef SHRT_MAX 71 #define SHRT_MAX __SHRT_MAX__ 72 73 /* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ 74 #undef USHRT_MAX 75 #if __SHRT_MAX__ == __INT_MAX__ 76 # define USHRT_MAX (SHRT_MAX * 2U + 1U) 77 #else 78 # define USHRT_MAX (SHRT_MAX * 2 + 1) 79 #endif 80 81 /* Minimum and maximum values a `signed int' can hold. */ 82 #undef INT_MIN 83 #define INT_MIN (-INT_MAX - 1) 84 #undef INT_MAX 85 #define INT_MAX __INT_MAX__ 86 87 /* Maximum value an `unsigned int' can hold. (Minimum is 0). */ 88 #undef UINT_MAX 89 #define UINT_MAX (INT_MAX * 2U + 1U) 90 91 /* Minimum and maximum values a `signed long int' can hold. 92 (Same as `int'). */ 93 #undef LONG_MIN 94 #define LONG_MIN (-LONG_MAX - 1L) 95 #undef LONG_MAX 96 #define LONG_MAX __LONG_MAX__ 97 98 /* Maximum value an `unsigned long int' can hold. (Minimum is 0). */ 99 #undef ULONG_MAX 100 #define ULONG_MAX (LONG_MAX * 2UL + 1UL) 101 102 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 103 /* Minimum and maximum values a `signed long long int' can hold. */ 104 # undef LLONG_MIN 105 # define LLONG_MIN (-LLONG_MAX - 1LL) 106 # undef LLONG_MAX 107 # define LLONG_MAX __LONG_LONG_MAX__ 108 109 /* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ 110 # undef ULLONG_MAX 111 # define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) 112 #endif 113 114 #if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__) 115 /* Minimum and maximum values a `signed long long int' can hold. */ 116 # undef LONG_LONG_MIN 117 # define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL) 118 # undef LONG_LONG_MAX 119 # define LONG_LONG_MAX __LONG_LONG_MAX__ 120 121 /* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ 122 # undef ULONG_LONG_MAX 123 # define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL) 124 #endif 125 126 #ifdef __STDC_WANT_IEC_60559_BFP_EXT__ 127 /* TS 18661-1 widths of integer types. */ 128 # undef CHAR_WIDTH 129 # define CHAR_WIDTH __SCHAR_WIDTH__ 130 # undef SCHAR_WIDTH 131 # define SCHAR_WIDTH __SCHAR_WIDTH__ 132 # undef UCHAR_WIDTH 133 # define UCHAR_WIDTH __SCHAR_WIDTH__ 134 # undef SHRT_WIDTH 135 # define SHRT_WIDTH __SHRT_WIDTH__ 136 # undef USHRT_WIDTH 137 # define USHRT_WIDTH __SHRT_WIDTH__ 138 # undef INT_WIDTH 139 # define INT_WIDTH __INT_WIDTH__ 140 # undef UINT_WIDTH 141 # define UINT_WIDTH __INT_WIDTH__ 142 # undef LONG_WIDTH 143 # define LONG_WIDTH __LONG_WIDTH__ 144 # undef ULONG_WIDTH 145 # define ULONG_WIDTH __LONG_WIDTH__ 146 # undef LLONG_WIDTH 147 # define LLONG_WIDTH __LONG_LONG_WIDTH__ 148 # undef ULLONG_WIDTH 149 # define ULLONG_WIDTH __LONG_LONG_WIDTH__ 150 #endif 151 152 #endif /* _LIMITS_H___ */ 153