_limits.h revision 47389
178344Sobrien/* 278344Sobrien * Copyright (c) 1988, 1993 398184Sgordon * The Regents of the University of California. All rights reserved. 498184Sgordon * 578344Sobrien * Redistribution and use in source and binary forms, with or without 678344Sobrien * modification, are permitted provided that the following conditions 778344Sobrien * are met: 8113959Smtm * 1. Redistributions of source code must retain the above copyright 998184Sgordon * notice, this list of conditions and the following disclaimer. 1098184Sgordon * 2. Redistributions in binary form must reproduce the above copyright 1178344Sobrien * notice, this list of conditions and the following disclaimer in the 1278344Sobrien * documentation and/or other materials provided with the distribution. 1378344Sobrien * 3. All advertising materials mentioning features or use of this software 1478344Sobrien * must display the following acknowledgement: 1598184Sgordon * This product includes software developed by the University of 1678344Sobrien * California, Berkeley and its contributors. 17103019Sgordon * 4. Neither the name of the University nor the names of its contributors 1898184Sgordon * may be used to endorse or promote products derived from this software 1998184Sgordon * without specific prior written permission. 2098184Sgordon * 2198184Sgordon * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2298184Sgordon * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2398184Sgordon * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2498184Sgordon * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2598184Sgordon * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2698184Sgordon * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2798184Sgordon * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2898184Sgordon * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29113959Smtm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30113959Smtm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31113959Smtm * SUCH DAMAGE. 32113959Smtm * 33113959Smtm * @(#)limits.h 8.3 (Berkeley) 1/4/94 34113959Smtm * $Id: limits.h,v 1.12 1999/05/20 23:33:35 ache Exp $ 35104980Sschweikh */ 36113959Smtm 37104980Sschweikh#ifndef _MACHINE_LIMITS_H_ 3898184Sgordon#define _MACHINE_LIMITS_H_ 3998184Sgordon 4098184Sgordon#define CHAR_BIT 8 /* number of bits in a char */ 4178344Sobrien#define MB_LEN_MAX 6 /* Allow 31 bit UTF2 */ 4278344Sobrien 43/* 44 * According to ANSI (section 2.2.4.2), the values below must be usable by 45 * #if preprocessing directives. Additionally, the expression must have the 46 * same type as would an expression that is an object of the corresponding 47 * type converted according to the integral promotions. The subtraction for 48 * INT_MIN and LONG_MIN is so the value is not unsigned; 2147483648 is an 49 * unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2). 50 * These numbers work for pcc as well. The UINT_MAX and ULONG_MAX values 51 * are written as hex so that GCC will be quiet about large integer constants. 52 */ 53#define SCHAR_MAX 127 /* min value for a signed char */ 54#define SCHAR_MIN (-128) /* max value for a signed char */ 55 56#define UCHAR_MAX 255 /* max value for an unsigned char */ 57 58#ifdef __CHAR_UNSIGNED__ 59#define CHAR_MAX UCHAR_MAX /* max value for a char */ 60#define CHAR_MIN 0 /* min value for a char */ 61#else 62#define CHAR_MAX SCHAR_MAX /* max value for a char */ 63#define CHAR_MIN SCHAR_MIN /* min value for a char */ 64#endif 65 66#define USHRT_MAX 65535 /* max value for an unsigned short */ 67#define SHRT_MAX 32767 /* max value for a short */ 68#define SHRT_MIN (-32768) /* min value for a short */ 69 70#define UINT_MAX 0xffffffff /* max value for an unsigned int */ 71#define INT_MAX 2147483647 /* max value for an int */ 72#define INT_MIN (-2147483647-1) /* min value for an int */ 73 74#define ULONG_MAX 0xffffffff /* max value for an unsigned long */ 75#define LONG_MAX 2147483647 /* max value for a long */ 76#define LONG_MIN (-2147483647-1) /* min value for a long */ 77 78#if !defined(_ANSI_SOURCE) 79#define SSIZE_MAX INT_MAX /* max value for a ssize_t */ 80 81#if !defined(_POSIX_SOURCE) 82#define SIZE_T_MAX UINT_MAX /* max value for a size_t */ 83 84/* GCC requires that quad constants be written as expressions. */ 85#define UQUAD_MAX ((u_quad_t)0-1) /* max value for a uquad_t */ 86 /* max value for a quad_t */ 87#define QUAD_MAX ((quad_t)(UQUAD_MAX >> 1)) 88#define QUAD_MIN (-QUAD_MAX-1) /* min value for a quad_t */ 89 90#endif /* !_POSIX_SOURCE */ 91#endif /* !_ANSI_SOURCE */ 92 93#endif /* !_MACHINE_LIMITS_H_ */ 94