1/* Copyright (C) 1992, 1994, 1997, 1998 Free Software Foundation, Inc. 2 3This file is part of GCC. 4 5GCC is free software; you can redistribute it and/or modify it under 6the terms of the GNU General Public License as published by the Free 7Software Foundation; either version 3, or (at your option) any later 8version. 9 10GCC is distributed in the hope that it will be useful, but WITHOUT ANY 11WARRANTY; without even the implied warranty of MERCHANTABILITY or 12FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13for 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/* This administrivia gets added to the beginning of limits.h 25 if the system has its own version of limits.h. */ 26 27/* We use _GCC_LIMITS_H_ because we want this not to match 28 any macros that the system's limits.h uses for its own purposes. */ 29#ifndef _GCC_LIMITS_H_ /* Terminated in limity.h. */ 30#define _GCC_LIMITS_H_ 31 32#ifndef _LIBC_LIMITS_H_ 33/* Use "..." so that we find syslimits.h only in this same directory. */ 34#include "syslimits.h" 35#endif 36/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001, 37 2002 Free Software Foundation, Inc. 38 39This file is part of GCC. 40 41GCC is free software; you can redistribute it and/or modify it under 42the terms of the GNU General Public License as published by the Free 43Software Foundation; either version 3, or (at your option) any later 44version. 45 46GCC is distributed in the hope that it will be useful, but WITHOUT ANY 47WARRANTY; without even the implied warranty of MERCHANTABILITY or 48FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 49for more details. 50 51Under Section 7 of GPL version 3, you are granted additional 52permissions described in the GCC Runtime Library Exception, version 533.1, as published by the Free Software Foundation. 54 55You should have received a copy of the GNU General Public License and 56a copy of the GCC Runtime Library Exception along with this program; 57see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 58<http://www.gnu.org/licenses/>. */ 59 60#ifndef _LIMITS_H___ 61#define _LIMITS_H___ 62 63/* Number of bits in a `char'. */ 64#undef CHAR_BIT 65#define CHAR_BIT __CHAR_BIT__ 66 67/* Maximum length of a multibyte character. */ 68#ifndef MB_LEN_MAX 69#define MB_LEN_MAX 1 70#endif 71 72/* Minimum and maximum values a `signed char' can hold. */ 73#undef SCHAR_MIN 74#define SCHAR_MIN (-SCHAR_MAX - 1) 75#undef SCHAR_MAX 76#define SCHAR_MAX __SCHAR_MAX__ 77 78/* Maximum value an `unsigned char' can hold. (Minimum is 0). */ 79#undef UCHAR_MAX 80#if __SCHAR_MAX__ == __INT_MAX__ 81# define UCHAR_MAX (SCHAR_MAX * 2U + 1U) 82#else 83# define UCHAR_MAX (SCHAR_MAX * 2 + 1) 84#endif 85 86/* Minimum and maximum values a `char' can hold. */ 87#ifdef __CHAR_UNSIGNED__ 88# undef CHAR_MIN 89# if __SCHAR_MAX__ == __INT_MAX__ 90# define CHAR_MIN 0U 91# else 92# define CHAR_MIN 0 93# endif 94# undef CHAR_MAX 95# define CHAR_MAX UCHAR_MAX 96#else 97# undef CHAR_MIN 98# define CHAR_MIN SCHAR_MIN 99# undef CHAR_MAX 100# define CHAR_MAX SCHAR_MAX 101#endif 102 103/* Minimum and maximum values a `signed short int' can hold. */ 104#undef SHRT_MIN 105#define SHRT_MIN (-SHRT_MAX - 1) 106#undef SHRT_MAX 107#define SHRT_MAX __SHRT_MAX__ 108 109/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ 110#undef USHRT_MAX 111#if __SHRT_MAX__ == __INT_MAX__ 112# define USHRT_MAX (SHRT_MAX * 2U + 1U) 113#else 114# define USHRT_MAX (SHRT_MAX * 2 + 1) 115#endif 116 117/* Minimum and maximum values a `signed int' can hold. */ 118#undef INT_MIN 119#define INT_MIN (-INT_MAX - 1) 120#undef INT_MAX 121#define INT_MAX __INT_MAX__ 122 123/* Maximum value an `unsigned int' can hold. (Minimum is 0). */ 124#undef UINT_MAX 125#define UINT_MAX (INT_MAX * 2U + 1U) 126 127/* Minimum and maximum values a `signed long int' can hold. 128 (Same as `int'). */ 129#undef LONG_MIN 130#define LONG_MIN (-LONG_MAX - 1L) 131#undef LONG_MAX 132#define LONG_MAX __LONG_MAX__ 133 134/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */ 135#undef ULONG_MAX 136#define ULONG_MAX (LONG_MAX * 2UL + 1UL) 137 138#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 139/* Minimum and maximum values a `signed long long int' can hold. */ 140# undef LLONG_MIN 141# define LLONG_MIN (-LLONG_MAX - 1LL) 142# undef LLONG_MAX 143# define LLONG_MAX __LONG_LONG_MAX__ 144 145/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ 146# undef ULLONG_MAX 147# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) 148#endif 149 150#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__) 151/* Minimum and maximum values a `signed long long int' can hold. */ 152# undef LONG_LONG_MIN 153# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL) 154# undef LONG_LONG_MAX 155# define LONG_LONG_MAX __LONG_LONG_MAX__ 156 157/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ 158# undef ULONG_LONG_MAX 159# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL) 160#endif 161 162#endif /* _LIMITS_H___ */ 163/* This administrivia gets added to the end of limits.h 164 if the system has its own version of limits.h. */ 165 166#else /* not _GCC_LIMITS_H_ */ 167 168#ifdef _GCC_NEXT_LIMITS_H 169#include_next <limits.h> /* recurse down to the real one */ 170#endif 171 172#endif /* not _GCC_LIMITS_H_ */ 173