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