/*
 * $Id: limits.h,v 1.1 1997/02/28 04:42:07 gdr Exp $
 */

#ifndef _MACHINE_LIMITS_H_
#define	_MACHINE_LIMITS_H_

#define	CHAR_BIT	8		/* number of bits in a char */
#define	MB_LEN_MAX	1		/* Allow 31 bit UTF2 */

/*
 * According to ANSI (section 2.2.4.2), the values below must be usable by
 * #if preprocessing directives.  Additionally, the expression must have the
 * same type as would an expression that is an object of the corresponding
 * type converted according to the integral promotions.
 */

#define	SCHAR_MAX	127		/* min value for a signed char */
#define	SCHAR_MIN	(-128)		/* max value for a signed char */

#define CHAR_MAX        255u		/* max value for a char */
#define CHAR_MIN        0		/* min value for a char */
#define	UCHAR_MAX	255u		/* max value for an unsigned char */

#define	USHRT_MAX	65535u		/* max value for an unsigned short */
#define	SHRT_MAX	32767		/* max value for a short */
#define	SHRT_MIN	(-32767-1)	/* min value for a short */

#define	UINT_MAX	65535u		/* max value for an unsigned int */
#define	INT_MAX		32767		/* max value for an int */
#define	INT_MIN		(-32767-1)	/* min value for an int */

#define	ULONG_MAX	4294967295u	/* max value for an unsigned long */
#define	LONG_MAX	2147483647	/* max value for a long */
#define	LONG_MIN	(-2147483647-1)	/* min value for a long */

#if !defined(_ANSI_SOURCE)
#define	SSIZE_MAX	LONG_MAX	/* max value for a ssize_t */

#if !defined(_POSIX_SOURCE)
#define	SIZE_T_MAX	ULONG_MAX	/* max value for a size_t */

#endif /* !_POSIX_SOURCE */
#endif /* !_ANSI_SOURCE */

#endif /* !_MACHINE_LIMITS_H_ */
