xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/limits.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /* Copyright (C) 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2005
2*53ee8cc1Swenshuai.xi    Free Software Foundation, Inc.
3*53ee8cc1Swenshuai.xi    This file is part of the GNU C Library.
4*53ee8cc1Swenshuai.xi 
5*53ee8cc1Swenshuai.xi    The GNU C Library is free software; you can redistribute it and/or
6*53ee8cc1Swenshuai.xi    modify it under the terms of the GNU Lesser General Public
7*53ee8cc1Swenshuai.xi    License as published by the Free Software Foundation; either
8*53ee8cc1Swenshuai.xi    version 2.1 of the License, or (at your option) any later version.
9*53ee8cc1Swenshuai.xi 
10*53ee8cc1Swenshuai.xi    The GNU C Library is distributed in the hope that it will be useful,
11*53ee8cc1Swenshuai.xi    but WITHOUT ANY WARRANTY; without even the implied warranty of
12*53ee8cc1Swenshuai.xi    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13*53ee8cc1Swenshuai.xi    Lesser General Public License for more details.
14*53ee8cc1Swenshuai.xi 
15*53ee8cc1Swenshuai.xi    You should have received a copy of the GNU Lesser General Public
16*53ee8cc1Swenshuai.xi    License along with the GNU C Library; if not, write to the Free
17*53ee8cc1Swenshuai.xi    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18*53ee8cc1Swenshuai.xi    02111-1307 USA.  */
19*53ee8cc1Swenshuai.xi 
20*53ee8cc1Swenshuai.xi /*
21*53ee8cc1Swenshuai.xi  *	ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types	<limits.h>
22*53ee8cc1Swenshuai.xi  */
23*53ee8cc1Swenshuai.xi 
24*53ee8cc1Swenshuai.xi #ifndef _LIBC_LIMITS_H_
25*53ee8cc1Swenshuai.xi #define _LIBC_LIMITS_H_	1
26*53ee8cc1Swenshuai.xi 
27*53ee8cc1Swenshuai.xi #include <features.h>
28*53ee8cc1Swenshuai.xi 
29*53ee8cc1Swenshuai.xi 
30*53ee8cc1Swenshuai.xi /* Maximum length of any multibyte character in any locale.
31*53ee8cc1Swenshuai.xi    We define this value here since the gcc header does not define
32*53ee8cc1Swenshuai.xi    the correct value.  */
33*53ee8cc1Swenshuai.xi #define MB_LEN_MAX	16
34*53ee8cc1Swenshuai.xi 
35*53ee8cc1Swenshuai.xi 
36*53ee8cc1Swenshuai.xi /* If we are not using GNU CC we have to define all the symbols ourself.
37*53ee8cc1Swenshuai.xi    Otherwise use gcc's definitions (see below).  */
38*53ee8cc1Swenshuai.xi #if !defined __GNUC__ || __GNUC__ < 2
39*53ee8cc1Swenshuai.xi 
40*53ee8cc1Swenshuai.xi /* We only protect from multiple inclusion here, because all the other
41*53ee8cc1Swenshuai.xi    #include's protect themselves, and in GCC 2 we may #include_next through
42*53ee8cc1Swenshuai.xi    multiple copies of this file before we get to GCC's.  */
43*53ee8cc1Swenshuai.xi # ifndef _LIMITS_H
44*53ee8cc1Swenshuai.xi #  define _LIMITS_H	1
45*53ee8cc1Swenshuai.xi 
46*53ee8cc1Swenshuai.xi #include <bits/wordsize.h>
47*53ee8cc1Swenshuai.xi 
48*53ee8cc1Swenshuai.xi /* We don't have #include_next.
49*53ee8cc1Swenshuai.xi    Define ANSI <limits.h> for standard 32-bit words.  */
50*53ee8cc1Swenshuai.xi 
51*53ee8cc1Swenshuai.xi /* These assume 8-bit `char's, 16-bit `short int's,
52*53ee8cc1Swenshuai.xi    and 32-bit `int's and `long int's.  */
53*53ee8cc1Swenshuai.xi 
54*53ee8cc1Swenshuai.xi /* Number of bits in a `char'.	*/
55*53ee8cc1Swenshuai.xi #  define CHAR_BIT	8
56*53ee8cc1Swenshuai.xi 
57*53ee8cc1Swenshuai.xi /* Minimum and maximum values a `signed char' can hold.  */
58*53ee8cc1Swenshuai.xi #  define SCHAR_MIN	(-128)
59*53ee8cc1Swenshuai.xi #  define SCHAR_MAX	127
60*53ee8cc1Swenshuai.xi 
61*53ee8cc1Swenshuai.xi /* Maximum value an `unsigned char' can hold.  (Minimum is 0.)  */
62*53ee8cc1Swenshuai.xi #  define UCHAR_MAX	255
63*53ee8cc1Swenshuai.xi 
64*53ee8cc1Swenshuai.xi /* Minimum and maximum values a `char' can hold.  */
65*53ee8cc1Swenshuai.xi #  ifdef __CHAR_UNSIGNED__
66*53ee8cc1Swenshuai.xi #   define CHAR_MIN	0
67*53ee8cc1Swenshuai.xi #   define CHAR_MAX	UCHAR_MAX
68*53ee8cc1Swenshuai.xi #  else
69*53ee8cc1Swenshuai.xi #   define CHAR_MIN	SCHAR_MIN
70*53ee8cc1Swenshuai.xi #   define CHAR_MAX	SCHAR_MAX
71*53ee8cc1Swenshuai.xi #  endif
72*53ee8cc1Swenshuai.xi 
73*53ee8cc1Swenshuai.xi /* Minimum and maximum values a `signed short int' can hold.  */
74*53ee8cc1Swenshuai.xi #  define SHRT_MIN	(-32768)
75*53ee8cc1Swenshuai.xi #  define SHRT_MAX	32767
76*53ee8cc1Swenshuai.xi 
77*53ee8cc1Swenshuai.xi /* Maximum value an `unsigned short int' can hold.  (Minimum is 0.)  */
78*53ee8cc1Swenshuai.xi #  define USHRT_MAX	65535
79*53ee8cc1Swenshuai.xi 
80*53ee8cc1Swenshuai.xi /* Minimum and maximum values a `signed int' can hold.  */
81*53ee8cc1Swenshuai.xi #  define INT_MIN	(-INT_MAX - 1)
82*53ee8cc1Swenshuai.xi #  define INT_MAX	2147483647
83*53ee8cc1Swenshuai.xi 
84*53ee8cc1Swenshuai.xi /* Maximum value an `unsigned int' can hold.  (Minimum is 0.)  */
85*53ee8cc1Swenshuai.xi #  define UINT_MAX	4294967295U
86*53ee8cc1Swenshuai.xi 
87*53ee8cc1Swenshuai.xi /* Minimum and maximum values a `signed long int' can hold.  */
88*53ee8cc1Swenshuai.xi #  if __WORDSIZE == 64
89*53ee8cc1Swenshuai.xi #   define LONG_MAX	9223372036854775807L
90*53ee8cc1Swenshuai.xi #  else
91*53ee8cc1Swenshuai.xi #   define LONG_MAX	2147483647L
92*53ee8cc1Swenshuai.xi #  endif
93*53ee8cc1Swenshuai.xi #  define LONG_MIN	(-LONG_MAX - 1L)
94*53ee8cc1Swenshuai.xi 
95*53ee8cc1Swenshuai.xi /* Maximum value an `unsigned long int' can hold.  (Minimum is 0.)  */
96*53ee8cc1Swenshuai.xi #  if __WORDSIZE == 64
97*53ee8cc1Swenshuai.xi #   define ULONG_MAX	18446744073709551615UL
98*53ee8cc1Swenshuai.xi #  else
99*53ee8cc1Swenshuai.xi #   define ULONG_MAX	4294967295UL
100*53ee8cc1Swenshuai.xi #  endif
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi #  ifdef __USE_ISOC99
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi /* Minimum and maximum values a `signed long long int' can hold.  */
105*53ee8cc1Swenshuai.xi #   define LLONG_MAX	9223372036854775807LL
106*53ee8cc1Swenshuai.xi #   define LLONG_MIN	(-LLONG_MAX - 1LL)
107*53ee8cc1Swenshuai.xi 
108*53ee8cc1Swenshuai.xi /* Maximum value an `unsigned long long int' can hold.  (Minimum is 0.)  */
109*53ee8cc1Swenshuai.xi #   define ULLONG_MAX	18446744073709551615ULL
110*53ee8cc1Swenshuai.xi 
111*53ee8cc1Swenshuai.xi #  endif /* ISO C99 */
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi # endif	/* limits.h  */
114*53ee8cc1Swenshuai.xi #endif	/* GCC 2.  */
115*53ee8cc1Swenshuai.xi 
116*53ee8cc1Swenshuai.xi #endif	/* !_LIBC_LIMITS_H_ */
117*53ee8cc1Swenshuai.xi 
118*53ee8cc1Swenshuai.xi  /* Get the compiler's limits.h, which defines almost all the ISO constants.
119*53ee8cc1Swenshuai.xi 
120*53ee8cc1Swenshuai.xi     We put this #include_next outside the double inclusion check because
121*53ee8cc1Swenshuai.xi     it should be possible to include this file more than once and still get
122*53ee8cc1Swenshuai.xi     the definitions from gcc's header.  */
123*53ee8cc1Swenshuai.xi #if defined __GNUC__ && !defined _GCC_LIMITS_H_
124*53ee8cc1Swenshuai.xi /* `_GCC_LIMITS_H_' is what GCC's file defines.  */
125*53ee8cc1Swenshuai.xi # include_next <limits.h>
126*53ee8cc1Swenshuai.xi #endif
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi /* The <limits.h> files in some gcc versions don't define LLONG_MIN,
129*53ee8cc1Swenshuai.xi    LLONG_MAX, and ULLONG_MAX.  Instead only the values gcc defined for
130*53ee8cc1Swenshuai.xi    ages are available.  */
131*53ee8cc1Swenshuai.xi #if defined __USE_ISOC99 && defined __GNUC__
132*53ee8cc1Swenshuai.xi # ifndef LLONG_MIN
133*53ee8cc1Swenshuai.xi #  define LLONG_MIN	(-LLONG_MAX-1)
134*53ee8cc1Swenshuai.xi # endif
135*53ee8cc1Swenshuai.xi # ifndef LLONG_MAX
136*53ee8cc1Swenshuai.xi #  define LLONG_MAX	__LONG_LONG_MAX__
137*53ee8cc1Swenshuai.xi # endif
138*53ee8cc1Swenshuai.xi # ifndef ULLONG_MAX
139*53ee8cc1Swenshuai.xi #  define ULLONG_MAX	(LLONG_MAX * 2ULL + 1)
140*53ee8cc1Swenshuai.xi # endif
141*53ee8cc1Swenshuai.xi #endif
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi #ifdef	__USE_POSIX
144*53ee8cc1Swenshuai.xi /* POSIX adds things to <limits.h>.  */
145*53ee8cc1Swenshuai.xi # include <bits/posix1_lim.h>
146*53ee8cc1Swenshuai.xi #endif
147*53ee8cc1Swenshuai.xi 
148*53ee8cc1Swenshuai.xi #ifdef	__USE_POSIX2
149*53ee8cc1Swenshuai.xi # include <bits/posix2_lim.h>
150*53ee8cc1Swenshuai.xi #endif
151*53ee8cc1Swenshuai.xi 
152*53ee8cc1Swenshuai.xi #ifdef	__USE_XOPEN
153*53ee8cc1Swenshuai.xi # include <bits/xopen_lim.h>
154*53ee8cc1Swenshuai.xi #endif
155