118334Speter#ifndef _LIMITS_H___ 218334Speter#define _LIMITS_H___ 318334Speter 418334Speter/* Number of bits in a `char'. */ 518334Speter#undef CHAR_BIT 6117395Skan#define CHAR_BIT __CHAR_BIT__ 718334Speter 818334Speter/* Maximum length of a multibyte character. */ 918334Speter#ifndef MB_LEN_MAX 1018334Speter#define MB_LEN_MAX 1 1118334Speter#endif 1218334Speter 1318334Speter/* Minimum and maximum values a `signed char' can hold. */ 1418334Speter#undef SCHAR_MIN 15117395Skan#define SCHAR_MIN (-SCHAR_MAX - 1) 1618334Speter#undef SCHAR_MAX 17117395Skan#define SCHAR_MAX __SCHAR_MAX__ 1818334Speter 1918334Speter/* Maximum value an `unsigned char' can hold. (Minimum is 0). */ 2018334Speter#undef UCHAR_MAX 21117395Skan#if __SCHAR_MAX__ == __INT_MAX__ 22117395Skan# define UCHAR_MAX (SCHAR_MAX * 2U + 1U) 23117395Skan#else 24117395Skan# define UCHAR_MAX (SCHAR_MAX * 2 + 1) 25117395Skan#endif 2618334Speter 2718334Speter/* Minimum and maximum values a `char' can hold. */ 2818334Speter#ifdef __CHAR_UNSIGNED__ 29117395Skan# undef CHAR_MIN 30117395Skan# if __SCHAR_MAX__ == __INT_MAX__ 31117395Skan# define CHAR_MIN 0U 32117395Skan# else 33117395Skan# define CHAR_MIN 0 34117395Skan# endif 35117395Skan# undef CHAR_MAX 36117395Skan# define CHAR_MAX UCHAR_MAX 3718334Speter#else 38117395Skan# undef CHAR_MIN 39117395Skan# define CHAR_MIN SCHAR_MIN 40117395Skan# undef CHAR_MAX 41117395Skan# define CHAR_MAX SCHAR_MAX 4218334Speter#endif 4318334Speter 4418334Speter/* Minimum and maximum values a `signed short int' can hold. */ 4518334Speter#undef SHRT_MIN 46117395Skan#define SHRT_MIN (-SHRT_MAX - 1) 4718334Speter#undef SHRT_MAX 4890075Sobrien#define SHRT_MAX __SHRT_MAX__ 4918334Speter 5090075Sobrien/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ 5190075Sobrien#undef USHRT_MAX 5290075Sobrien#if __SHRT_MAX__ == __INT_MAX__ 53117395Skan# define USHRT_MAX (SHRT_MAX * 2U + 1U) 5490075Sobrien#else 55117395Skan# define USHRT_MAX (SHRT_MAX * 2 + 1) 5690075Sobrien#endif 5790075Sobrien 58117395Skan/* Minimum and maximum values a `signed int' can hold. */ 59117395Skan#undef INT_MIN 60117395Skan#define INT_MIN (-INT_MAX - 1) 61117395Skan#undef INT_MAX 62117395Skan#define INT_MAX __INT_MAX__ 63117395Skan 6418334Speter/* Maximum value an `unsigned int' can hold. (Minimum is 0). */ 6518334Speter#undef UINT_MAX 66117395Skan#define UINT_MAX (INT_MAX * 2U + 1U) 6718334Speter 6818334Speter/* Minimum and maximum values a `signed long int' can hold. 6918334Speter (Same as `int'). */ 7018334Speter#undef LONG_MIN 71117395Skan#define LONG_MIN (-LONG_MAX - 1L) 7218334Speter#undef LONG_MAX 7318334Speter#define LONG_MAX __LONG_MAX__ 7418334Speter 7518334Speter/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */ 7618334Speter#undef ULONG_MAX 77117395Skan#define ULONG_MAX (LONG_MAX * 2UL + 1UL) 7818334Speter 7990075Sobrien#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 8090075Sobrien/* Minimum and maximum values a `signed long long int' can hold. */ 81117395Skan# undef LLONG_MIN 82117395Skan# define LLONG_MIN (-LLONG_MAX - 1LL) 83117395Skan# undef LLONG_MAX 84117395Skan# define LLONG_MAX __LONG_LONG_MAX__ 8590075Sobrien 8690075Sobrien/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ 87117395Skan# undef ULLONG_MAX 88117395Skan# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) 8990075Sobrien#endif 9090075Sobrien 9190075Sobrien#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__) 9290075Sobrien/* Minimum and maximum values a `signed long long int' can hold. */ 93117395Skan# undef LONG_LONG_MIN 94117395Skan# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL) 95117395Skan# undef LONG_LONG_MAX 96117395Skan# define LONG_LONG_MAX __LONG_LONG_MAX__ 9718334Speter 9818334Speter/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ 99117395Skan# undef ULONG_LONG_MAX 100117395Skan# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL) 10118334Speter#endif 10218334Speter 10318334Speter#endif /* _LIMITS_H___ */ 104