/** @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 */ |