| /** @file | |
| The header <limits.h> defines several macros that expand to various limits and | |
| parameters of the standard integer types. | |
| The values given below are constant expressions suitable for | |
| use in #if preprocessing directives. Except for CHAR_BIT and | |
| MB_LEN_MAX, they have the same | |
| type as would an expression that is an object of the corresponding type | |
| converted according to the integer promotions. | |
| Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR> | |
| This program and the accompanying materials are licensed and made available under | |
| the terms and conditions of the BSD License that accompanies this distribution. | |
| The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license. | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #ifndef _LIMITS_H | |
| #define _LIMITS_H | |
| #include <sys/EfiCdefs.h> | |
| #include <Library/PcdLib.h> | |
| /* Get the architecturally defined limits for this compilation unit. */ | |
| #include <machine/limits.h> | |
| /* Define the values required by the ISO/IEC 9899 Specification. */ | |
| /** Maximum number of bytes in a multibyte character, for any supported locale. **/ | |
| #define MB_LEN_MAX 4 /* UTF-8 can require up to 4 bytes */ | |
| /** Number of bits comprising the smallest object that is not a bit-field (byte). **/ | |
| #define CHAR_BIT __CHAR_BIT | |
| /** Minimum value for an object of type signed char. **/ | |
| #define SCHAR_MIN __SCHAR_MIN | |
| /** Maximum value for an object of type signed char. **/ | |
| #define SCHAR_MAX __SCHAR_MAX | |
| /** Maximum value for an object of type unsigned char. **/ | |
| #define UCHAR_MAX __UCHAR_MAX | |
| #ifdef __CHAR_UNSIGNED__ | |
| /** Maximum value for an object of type char. **/ | |
| #define CHAR_MAX UCHAR_MAX | |
| /** Minimum value for an object of type char. **/ | |
| #define CHAR_MIN 0 | |
| #else | |
| /** Maximum value for an object of type char. **/ | |
| #define CHAR_MAX SCHAR_MAX | |
| /** Minimum value for an object of type char. **/ | |
| #define CHAR_MIN SCHAR_MIN | |
| #endif | |
| /** Minimum value for an object of type short int. **/ | |
| #define SHRT_MIN __SHRT_MIN | |
| /** Maximum value for an object of type short int. **/ | |
| #define SHRT_MAX __SHRT_MAX | |
| /** Maximum value for an object of type unsigned short int. **/ | |
| #define USHRT_MAX __USHRT_MAX | |
| /** Minimum value for an object of type int. **/ | |
| #define INT_MIN __INT_MIN | |
| /** Maximum value for an object of type int. **/ | |
| #define INT_MAX __INT_MAX | |
| /** Maximum value for an object of type unsigned int. **/ | |
| #define UINT_MAX __UINT_MAX | |
| /** Minimum value for an object of type long int. **/ | |
| #define LONG_MIN __LONG_MIN | |
| /** Maximum value for an object of type long int. **/ | |
| #define LONG_MAX __LONG_MAX | |
| /** Maximum value for an object of type unsigned long int. **/ | |
| #define ULONG_MAX __ULONG_MAX | |
| /** Minimum value for an object of type long long int. **/ | |
| #define LLONG_MIN __LLONG_MIN | |
| /** Maximum value for an object of type long long int. **/ | |
| #define LLONG_MAX __LLONG_MAX | |
| /** Maximum value for an object of type unsigned long long int. **/ | |
| #define ULLONG_MAX __ULLONG_MAX | |
| /* Object limits used in the Standard Libraries */ | |
| #if (PcdGet32(PcdMaximumAsciiStringLength) > 0) | |
| /** Maximum length of an arbitrary "narrow-character" string. **/ | |
| #define ASCII_STRING_MAX PcdGet32(PcdMaximumAsciiStringLength) | |
| #else | |
| /** Maximum length of an arbitrary "narrow-character" string. **/ | |
| #define ASCII_STRING_MAX 256 | |
| #endif | |
| #if (PcdGet32(PcdMaximumUnicodeStringLength) > 0) | |
| /** Maximum length of an arbitrary "wide-character" string. **/ | |
| #define UNICODE_STRING_MAX PcdGet32(PcdMaximumUnicodeStringLength) | |
| #else | |
| /** Maximum length of an arbitrary "wide-character" string. **/ | |
| #define UNICODE_STRING_MAX 512 | |
| #endif | |
| /* Limits for BSD Compatibility */ | |
| #define NL_TEXTMAX 2048 | |
| #include <sys/syslimits.h> | |
| #endif /* _LIMITS_H */ |