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