1/* This administrivia gets added to the beginning of limits.h
2   if the system has its own version of limits.h.  */
3
4/* We use _GCC_LIMITS_H_ because we want this not to match
5   any macros that the system's limits.h uses for its own purposes.  */
6#ifndef _GCC_LIMITS_H_  /* Terminated in limity.h.  */
7#define _GCC_LIMITS_H_
8
9#ifndef _LIBC_LIMITS_H_
10/* Use "..." so that we find syslimits.h only in this same directory.  */
11#include "syslimits.h"
12#endif
13#ifndef _LIMITS_H___
14#define _LIMITS_H___
15
16/* Number of bits in a `char'.  */
17#undef CHAR_BIT
18#define CHAR_BIT __CHAR_BIT__
19
20/* Maximum length of a multibyte character.  */
21#ifndef MB_LEN_MAX
22#define MB_LEN_MAX 1
23#endif
24
25/* Minimum and maximum values a `signed char' can hold.  */
26#undef SCHAR_MIN
27#define SCHAR_MIN (-SCHAR_MAX - 1)
28#undef SCHAR_MAX
29#define SCHAR_MAX __SCHAR_MAX__
30
31/* Maximum value an `unsigned char' can hold.  (Minimum is 0).  */
32#undef UCHAR_MAX
33#if __SCHAR_MAX__ == __INT_MAX__
34# define UCHAR_MAX (SCHAR_MAX * 2U + 1U)
35#else
36# define UCHAR_MAX (SCHAR_MAX * 2 + 1)
37#endif
38
39/* Minimum and maximum values a `char' can hold.  */
40#ifdef __CHAR_UNSIGNED__
41# undef CHAR_MIN
42# if __SCHAR_MAX__ == __INT_MAX__
43#  define CHAR_MIN 0U
44# else
45#  define CHAR_MIN 0
46# endif
47# undef CHAR_MAX
48# define CHAR_MAX UCHAR_MAX
49#else
50# undef CHAR_MIN
51# define CHAR_MIN SCHAR_MIN
52# undef CHAR_MAX
53# define CHAR_MAX SCHAR_MAX
54#endif
55
56/* Minimum and maximum values a `signed short int' can hold.  */
57#undef SHRT_MIN
58#define SHRT_MIN (-SHRT_MAX - 1)
59#undef SHRT_MAX
60#define SHRT_MAX __SHRT_MAX__
61
62/* Maximum value an `unsigned short int' can hold.  (Minimum is 0).  */
63#undef USHRT_MAX
64#if __SHRT_MAX__ == __INT_MAX__
65# define USHRT_MAX (SHRT_MAX * 2U + 1U)
66#else
67# define USHRT_MAX (SHRT_MAX * 2 + 1)
68#endif
69
70/* Minimum and maximum values a `signed int' can hold.  */
71#undef INT_MIN
72#define INT_MIN (-INT_MAX - 1)
73#undef INT_MAX
74#define INT_MAX __INT_MAX__
75
76/* Maximum value an `unsigned int' can hold.  (Minimum is 0).  */
77#undef UINT_MAX
78#define UINT_MAX (INT_MAX * 2U + 1U)
79
80/* Minimum and maximum values a `signed long int' can hold.
81   (Same as `int').  */
82#undef LONG_MIN
83#define LONG_MIN (-LONG_MAX - 1L)
84#undef LONG_MAX
85#define LONG_MAX __LONG_MAX__
86
87/* Maximum value an `unsigned long int' can hold.  (Minimum is 0).  */
88#undef ULONG_MAX
89#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
90
91#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
92/* Minimum and maximum values a `signed long long int' can hold.  */
93# undef LLONG_MIN
94# define LLONG_MIN (-LLONG_MAX - 1LL)
95# undef LLONG_MAX
96# define LLONG_MAX __LONG_LONG_MAX__
97
98/* Maximum value an `unsigned long long int' can hold.  (Minimum is 0).  */
99# undef ULLONG_MAX
100# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
101#endif
102
103#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__)
104/* Minimum and maximum values a `signed long long int' can hold.  */
105# undef LONG_LONG_MIN
106# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
107# undef LONG_LONG_MAX
108# define LONG_LONG_MAX __LONG_LONG_MAX__
109
110/* Maximum value an `unsigned long long int' can hold.  (Minimum is 0).  */
111# undef ULONG_LONG_MAX
112# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
113#endif
114
115#endif /* _LIMITS_H___ */
116/* This administrivia gets added to the end of limits.h
117   if the system has its own version of limits.h.  */
118
119#else /* not _GCC_LIMITS_H_ */
120
121#ifdef _GCC_NEXT_LIMITS_H
122#include_next <limits.h>		/* recurse down to the real one */
123#endif
124
125#endif /* not _GCC_LIMITS_H_ */
126