diff options
Diffstat (limited to 'include/limits.h')
-rw-r--r-- | include/limits.h | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/include/limits.h b/include/limits.h new file mode 100644 index 0000000..31d8792 --- /dev/null +++ b/include/limits.h @@ -0,0 +1,123 @@ +/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* + * ISO C Standard: 4.14/2.2.4.2 Limits of integral types <limits.h> + */ + +#include <features.h> + +#ifdef __USE_POSIX +/* POSIX adds things to <limits.h>. */ +# include <bits/posix1_lim.h> +#endif + +#ifdef __USE_POSIX2 +# include <bits/posix2_lim.h> +#endif + +#ifdef __USE_XOPEN +# include <bits/xopen_lim.h> +#endif + + +#if __GNUC__ >= 2 + + /* Get the compiler's limits.h, which defines all the ANSI constants. */ + #ifndef _LIBC_LIMITS_H_ + #define _LIBC_LIMITS_H_ /* This tells it not to look for another. */ + #endif + #ifndef _GCC_LIMITS_H_ /* This is what GCC's file defines. */ + #include_next <limits.h> + #endif + +#else /* Not GCC 2. */ + +/* We only protect from multiple inclusion here, because all the other + #include's protect themselves, and in GCC 2 we may #include_next through + multiple copies of this file before we get to GCC's. */ +# ifndef _LIMITS_H +# define _LIMITS_H 1 + +/* We don't have #include_next. + Define ANSI <limits.h> for standard 32-bit words. */ + +/* These assume 8-bit `char's, 16-bit `short int's, + and 32-bit `int's and `long int's. */ + +/* Number of bits in a `char'. */ +# define CHAR_BIT 8 + +/* Maximum length of any multibyte character in any locale. */ +# define MB_LEN_MAX 6 + +/* Minimum and maximum values a `signed char' can hold. */ +# define SCHAR_MIN (-128) +# define SCHAR_MAX 127 + +/* Maximum value an `unsigned char' can hold. (Minimum is 0.) */ +# define UCHAR_MAX 255 + +/* Minimum and maximum values a `char' can hold. */ +# ifdef __CHAR_UNSIGNED__ +# define CHAR_MIN 0 +# define CHAR_MAX UCHAR_MAX +# else +# define CHAR_MIN SCHAR_MIN +# define CHAR_MAX SCHAR_MAX +# endif + +/* Minimum and maximum values a `signed short int' can hold. */ +# define SHRT_MIN (-32768) +# define SHRT_MAX 32767 + +/* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */ +# define USHRT_MAX 65535 + +/* Minimum and maximum values a `signed int' can hold. */ +# define INT_MIN (- INT_MAX - 1) +# define INT_MAX 2147483647 + +/* Maximum value an `unsigned int' can hold. (Minimum is 0.) */ +# ifdef __STDC__ +# define UINT_MAX 4294967295U +# else +# define UINT_MAX 4294967295 +# endif + +/* Minimum and maximum values a `signed long int' can hold. */ +# ifdef __alpha__ +# define LONG_MAX 9223372036854775807L +# else +# define LONG_MAX 2147483647L +# endif +# define LONG_MIN (- LONG_MAX - 1L) + +/* Maximum value an `unsigned long int' can hold. (Minimum is 0.) */ +# ifdef __alpha__ +# define ULONG_MAX 18446744073709551615UL +# else +# ifdef __STDC__ +# define ULONG_MAX 4294967295UL +# else +# define ULONG_MAX 4294967295L +# endif +# endif + +# endif /* limits.h */ +#endif /* GCC 2. */ |