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