1 /** @file 2 The header <limits.h> defines several macros that expand to various limits and 3 parameters of the standard integer types. 4 5 The values given below are constant expressions suitable for 6 use in #if preprocessing directives. Except for CHAR_BIT and 7 MB_LEN_MAX, they have the same 8 type as would an expression that is an object of the corresponding type 9 converted according to the integer promotions. 10 11 Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR> 12 This program and the accompanying materials are licensed and made available under 13 the terms and conditions of the BSD License that accompanies this distribution. 14 The full text of the license may be found at 15 http://opensource.org/licenses/bsd-license. 16 17 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 18 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 19 **/ 20 #ifndef _LIMITS_H 21 #define _LIMITS_H 22 #include <sys/EfiCdefs.h> 23 #include <Library/PcdLib.h> 24 25 /* Get the architecturally defined limits for this compilation unit. */ 26 #include <machine/limits.h> 27 28 /* Define the values required by the ISO/IEC 9899 Specification. */ 29 30 /** Maximum number of bytes in a multibyte character, for any supported locale. **/ 31 #define MB_LEN_MAX 4 /* UTF-8 can require up to 4 bytes */ 32 33 /** Number of bits comprising the smallest object that is not a bit-field (byte). **/ 34 #define CHAR_BIT __CHAR_BIT 35 36 /** Minimum value for an object of type signed char. **/ 37 #define SCHAR_MIN __SCHAR_MIN 38 39 /** Maximum value for an object of type signed char. **/ 40 #define SCHAR_MAX __SCHAR_MAX 41 42 /** Maximum value for an object of type unsigned char. **/ 43 #define UCHAR_MAX __UCHAR_MAX 44 45 #ifdef __CHAR_UNSIGNED__ 46 /** Maximum value for an object of type char. **/ 47 #define CHAR_MAX UCHAR_MAX 48 /** Minimum value for an object of type char. **/ 49 #define CHAR_MIN 0 50 #else 51 /** Maximum value for an object of type char. **/ 52 #define CHAR_MAX SCHAR_MAX 53 /** Minimum value for an object of type char. **/ 54 #define CHAR_MIN SCHAR_MIN 55 #endif 56 57 /** Minimum value for an object of type short int. **/ 58 #define SHRT_MIN __SHRT_MIN 59 60 /** Maximum value for an object of type short int. **/ 61 #define SHRT_MAX __SHRT_MAX 62 63 /** Maximum value for an object of type unsigned short int. **/ 64 #define USHRT_MAX __USHRT_MAX 65 66 /** Minimum value for an object of type int. **/ 67 #define INT_MIN __INT_MIN 68 69 /** Maximum value for an object of type int. **/ 70 #define INT_MAX __INT_MAX 71 72 /** Maximum value for an object of type unsigned int. **/ 73 #define UINT_MAX __UINT_MAX 74 75 /** Minimum value for an object of type long int. **/ 76 #define LONG_MIN __LONG_MIN 77 78 /** Maximum value for an object of type long int. **/ 79 #define LONG_MAX __LONG_MAX 80 81 /** Maximum value for an object of type unsigned long int. **/ 82 #define ULONG_MAX __ULONG_MAX 83 84 /** Minimum value for an object of type long long int. **/ 85 #define LLONG_MIN __LLONG_MIN 86 87 /** Maximum value for an object of type long long int. **/ 88 #define LLONG_MAX __LLONG_MAX 89 90 /** Maximum value for an object of type unsigned long long int. **/ 91 #define ULLONG_MAX __ULLONG_MAX 92 93 /* Object limits used in the Standard Libraries */ 94 #if (PcdGet32(PcdMaximumAsciiStringLength) > 0) 95 /** Maximum length of an arbitrary "narrow-character" string. **/ 96 #define ASCII_STRING_MAX PcdGet32(PcdMaximumAsciiStringLength) 97 #else 98 /** Maximum length of an arbitrary "narrow-character" string. **/ 99 #define ASCII_STRING_MAX 256 100 #endif 101 102 #if (PcdGet32(PcdMaximumUnicodeStringLength) > 0) 103 /** Maximum length of an arbitrary "wide-character" string. **/ 104 #define UNICODE_STRING_MAX PcdGet32(PcdMaximumUnicodeStringLength) 105 #else 106 /** Maximum length of an arbitrary "wide-character" string. **/ 107 #define UNICODE_STRING_MAX 512 108 #endif 109 110 /* Limits for BSD Compatibility */ 111 #define NL_TEXTMAX 2048 112 113 #include <sys/syslimits.h> 114 115 #endif /* _LIMITS_H */ 116