Path: blob/main/system/lib/llvm-libc/include/llvm-libc-macros/limits-macros.h
6174 views
//===-- Definition of macros from limits.h --------------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLVM_LIBC_MACROS_LIMITS_MACROS_H9#define LLVM_LIBC_MACROS_LIMITS_MACROS_H1011// Define all C23 macro constants of limits.h1213#ifndef CHAR_BIT14#ifdef __CHAR_BIT__15#define CHAR_BIT __CHAR_BIT__16#else17#define CHAR_BIT 818#endif // __CHAR_BIT__19#endif // CHAR_BIT2021#ifndef MB_LEN_MAX22// Represents a single UTF-32 wide character in the default locale.23#define MB_LEN_MAX 424#endif // MB_LEN_MAX2526// *_WIDTH macros2728#ifndef CHAR_WIDTH29#define CHAR_WIDTH CHAR_BIT30#endif // CHAR_WIDTH3132#ifndef SCHAR_WIDTH33#define SCHAR_WIDTH CHAR_BIT34#endif // SCHAR_WIDTH3536#ifndef UCHAR_WIDTH37#define UCHAR_WIDTH CHAR_BIT38#endif // UCHAR_WIDTH3940#ifndef SHRT_WIDTH41#ifdef __SHRT_WIDTH__42#define SHRT_WIDTH __SHRT_WIDTH__43#else44#define SHRT_WIDTH 1645#endif // __SHRT_WIDTH__46#endif // SHRT_WIDTH4748#ifndef USHRT_WIDTH49#define USHRT_WIDTH SHRT_WIDTH50#endif // USHRT_WIDTH5152#ifndef INT_WIDTH53#ifdef __INT_WIDTH__54#define INT_WIDTH __INT_WIDTH__55#else56#define INT_WIDTH 3257#endif // __INT_WIDTH__58#endif // INT_WIDTH5960#ifndef UINT_WIDTH61#define UINT_WIDTH INT_WIDTH62#endif // UINT_WIDTH6364#ifndef LONG_WIDTH65#ifdef __LONG_WIDTH__66#define LONG_WIDTH __LONG_WIDTH__67#elif defined(__WORDSIZE)68#define LONG_WIDTH __WORDSIZE69#else70// Use __SIZEOF_LONG__ * CHAR_BIT as backup. This is needed for clang-13 or71// before.72#define LONG_WIDTH (__SIZEOF_LONG__ * CHAR_BIT)73#endif // __LONG_WIDTH__74#endif // LONG_WIDTH7576#ifndef ULONG_WIDTH77#define ULONG_WIDTH LONG_WIDTH78#endif // ULONG_WIDTH7980#ifndef LLONG_WIDTH81#ifdef __LLONG_WIDTH__82#define LLONG_WIDTH __LLONG_WIDTH__83#else84#define LLONG_WIDTH 6485#endif // __LLONG_WIDTH__86#endif // LLONG_WIDTH8788#ifndef ULLONG_WIDTH89#define ULLONG_WIDTH LLONG_WIDTH90#endif // ULLONG_WIDTH9192#ifndef BOOL_WIDTH93#ifdef __BOOL_WIDTH__94#define BOOL_WIDTH __BOOL_WIDTH__95#else96#define BOOL_WIDTH 197#endif // __BOOL_WIDTH__98#endif // BOOL_WIDTH99100// *_MAX macros101102#ifndef SCHAR_MAX103#ifdef __SCHAR_MAX__104#define SCHAR_MAX __SCHAR_MAX__105#else106#define SCHAR_MAX 0x7f107#endif // __SCHAR_MAX__108#endif // SCHAR_MAX109110#ifndef UCHAR_MAX111#define UCHAR_MAX (SCHAR_MAX * 2 + 1)112#endif // UCHAR_MAX113114// Check if char is unsigned.115#if !defined(__CHAR_UNSIGNED__) && ('\xff' > 0)116#define __CHAR_UNSIGNED__117#endif118119#ifndef CHAR_MAX120#ifdef __CHAR_UNSIGNED__121#define CHAR_MAX UCHAR_MAX122#else123#define CHAR_MAX SCHAR_MAX124#endif // __CHAR_UNSIGNED__125#endif // CHAR_MAX126127#ifndef SHRT_MAX128#ifdef __SHRT_MAX__129#define SHRT_MAX __SHRT_MAX__130#else131#define SHRT_MAX 0x7fff132#endif // __SHRT_MAX__133#endif // SHRT_MAX134135#ifndef USHRT_MAX136#define USHRT_MAX (SHRT_MAX * 2U + 1U)137#endif // USHRT_MAX138139#ifndef INT_MAX140#ifdef __INT_MAX__141#define INT_MAX __INT_MAX__142#else143#define INT_MAX (0 ^ (1 << (INT_WIDTH - 1)))144#endif // __INT_MAX__145#endif // INT_MAX146147#ifndef UINT_MAX148#define UINT_MAX (INT_MAX * 2U + 1U)149#endif // UINT_MAX150151#ifndef LONG_MAX152#ifdef __LONG_MAX__153#define LONG_MAX __LONG_MAX__154#else155#define LONG_MAX (0L ^ (1L << (LONG_WIDTH - 1)))156#endif // __LONG_MAX__157#endif // LONG_MAX158159#ifndef ULONG_MAX160#define ULONG_MAX (LONG_MAX * 2UL + 1UL)161#endif // ULONG_MAX162163#ifndef LLONG_MAX164#ifdef __LONG_LONG_MAX__165#define LLONG_MAX __LONG_LONG_MAX__166#else167#define LLONG_MAX (0LL ^ (1LL << (LLONG_WIDTH - 1)))168#endif // __LONG_LONG_MAX__169#endif // LLONG_MAX170171#ifndef ULLONG_MAX172#define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)173#endif // ULLONG_MAX174175// *_MIN macros176177#ifndef SCHAR_MIN178#define SCHAR_MIN (-SCHAR_MAX - 1)179#endif // SCHAR_MIN180181#ifndef UCHAR_MIN182#define UCHAR_MIN 0183#endif // UCHAR_MIN184185#ifndef CHAR_MIN186#ifdef __CHAR_UNSIGNED__187#define CHAR_MIN UCHAR_MIN188#else189#define CHAR_MIN SCHAR_MIN190#endif // __CHAR_UNSIGNED__191#endif // CHAR_MIN192193#ifndef SHRT_MIN194#define SHRT_MIN (-SHRT_MAX - 1)195#endif // SHRT_MIN196197#ifndef USHRT_MIN198#define USHRT_MIN 0U199#endif // USHRT_MIN200201#ifndef INT_MIN202#define INT_MIN (-INT_MAX - 1)203#endif // INT_MIN204205#ifndef UINT_MIN206#define UINT_MIN 0U207#endif // UINT_MIN208209#ifndef LONG_MIN210#define LONG_MIN (-LONG_MAX - 1L)211#endif // LONG_MIN212213#ifndef ULONG_MIN214#define ULONG_MIN 0UL215#endif // ULONG_MIN216217#ifndef LLONG_MIN218#define LLONG_MIN (-LLONG_MAX - 1LL)219#endif // LLONG_MIN220221#ifndef ULLONG_MIN222#define ULLONG_MIN 0ULL223#endif // ULLONG_MIN224225#ifndef _POSIX_MAX_CANON226#define _POSIX_MAX_CANON 255227#endif228229#ifndef _POSIX_MAX_INPUT230#define _POSIX_MAX_INPUT 255231#endif232233#ifndef _POSIX_NAME_MAX234#define _POSIX_PATH_MAX 256235#endif236237#ifndef _POSIX_ARG_MAX238#define _POSIX_ARG_MAX 4096239#endif240241#ifndef IOV_MAX242#define IOV_MAX 1024243#endif // IOV_MAX244245#endif // LLVM_LIBC_MACROS_LIMITS_MACROS_H246247248