brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 79bbbe4 Raw
247 lines · c
1//===-- Definition of macros from limits.h --------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIBC_MACROS_LIMITS_MACROS_H10#define LLVM_LIBC_MACROS_LIMITS_MACROS_H11 12// Define all C23 macro constants of limits.h13 14#ifndef CHAR_BIT15#ifdef __CHAR_BIT__16#define CHAR_BIT __CHAR_BIT__17#else18#define CHAR_BIT 819#endif // __CHAR_BIT__20#endif // CHAR_BIT21 22#ifndef MB_LEN_MAX23// Represents a single UTF-32 wide character in the default locale.24#define MB_LEN_MAX 425#endif // MB_LEN_MAX26 27// *_WIDTH macros28 29#ifndef CHAR_WIDTH30#define CHAR_WIDTH CHAR_BIT31#endif // CHAR_WIDTH32 33#ifndef SCHAR_WIDTH34#define SCHAR_WIDTH CHAR_BIT35#endif // SCHAR_WIDTH36 37#ifndef UCHAR_WIDTH38#define UCHAR_WIDTH CHAR_BIT39#endif // UCHAR_WIDTH40 41#ifndef SHRT_WIDTH42#ifdef __SHRT_WIDTH__43#define SHRT_WIDTH __SHRT_WIDTH__44#else45#define SHRT_WIDTH 1646#endif // __SHRT_WIDTH__47#endif // SHRT_WIDTH48 49#ifndef USHRT_WIDTH50#define USHRT_WIDTH SHRT_WIDTH51#endif // USHRT_WIDTH52 53#ifndef INT_WIDTH54#ifdef __INT_WIDTH__55#define INT_WIDTH __INT_WIDTH__56#else57#define INT_WIDTH 3258#endif // __INT_WIDTH__59#endif // INT_WIDTH60 61#ifndef UINT_WIDTH62#define UINT_WIDTH INT_WIDTH63#endif // UINT_WIDTH64 65#ifndef LONG_WIDTH66#ifdef __LONG_WIDTH__67#define LONG_WIDTH __LONG_WIDTH__68#elif defined(__WORDSIZE)69#define LONG_WIDTH __WORDSIZE70#else71// Use __SIZEOF_LONG__ * CHAR_BIT as backup.  This is needed for clang-13 or72// before.73#define LONG_WIDTH (__SIZEOF_LONG__ * CHAR_BIT)74#endif // __LONG_WIDTH__75#endif // LONG_WIDTH76 77#ifndef ULONG_WIDTH78#define ULONG_WIDTH LONG_WIDTH79#endif // ULONG_WIDTH80 81#ifndef LLONG_WIDTH82#ifdef __LLONG_WIDTH__83#define LLONG_WIDTH __LLONG_WIDTH__84#else85#define LLONG_WIDTH 6486#endif // __LLONG_WIDTH__87#endif // LLONG_WIDTH88 89#ifndef ULLONG_WIDTH90#define ULLONG_WIDTH LLONG_WIDTH91#endif // ULLONG_WIDTH92 93#ifndef BOOL_WIDTH94#ifdef __BOOL_WIDTH__95#define BOOL_WIDTH __BOOL_WIDTH__96#else97#define BOOL_WIDTH 198#endif // __BOOL_WIDTH__99#endif // BOOL_WIDTH100 101// *_MAX macros102 103#ifndef SCHAR_MAX104#ifdef __SCHAR_MAX__105#define SCHAR_MAX __SCHAR_MAX__106#else107#define SCHAR_MAX 0x7f108#endif // __SCHAR_MAX__109#endif // SCHAR_MAX110 111#ifndef UCHAR_MAX112#define UCHAR_MAX (SCHAR_MAX * 2 + 1)113#endif // UCHAR_MAX114 115// Check if char is unsigned.116#if !defined(__CHAR_UNSIGNED__) && ('\xff' > 0)117#define __CHAR_UNSIGNED__118#endif119 120#ifndef CHAR_MAX121#ifdef __CHAR_UNSIGNED__122#define CHAR_MAX UCHAR_MAX123#else124#define CHAR_MAX SCHAR_MAX125#endif // __CHAR_UNSIGNED__126#endif // CHAR_MAX127 128#ifndef SHRT_MAX129#ifdef __SHRT_MAX__130#define SHRT_MAX __SHRT_MAX__131#else132#define SHRT_MAX 0x7fff133#endif // __SHRT_MAX__134#endif // SHRT_MAX135 136#ifndef USHRT_MAX137#define USHRT_MAX (SHRT_MAX * 2U + 1U)138#endif // USHRT_MAX139 140#ifndef INT_MAX141#ifdef __INT_MAX__142#define INT_MAX __INT_MAX__143#else144#define INT_MAX (0 ^ (1 << (INT_WIDTH - 1)))145#endif // __INT_MAX__146#endif // INT_MAX147 148#ifndef UINT_MAX149#define UINT_MAX (INT_MAX * 2U + 1U)150#endif // UINT_MAX151 152#ifndef LONG_MAX153#ifdef __LONG_MAX__154#define LONG_MAX __LONG_MAX__155#else156#define LONG_MAX (0L ^ (1L << (LONG_WIDTH - 1)))157#endif // __LONG_MAX__158#endif // LONG_MAX159 160#ifndef ULONG_MAX161#define ULONG_MAX (LONG_MAX * 2UL + 1UL)162#endif // ULONG_MAX163 164#ifndef LLONG_MAX165#ifdef __LONG_LONG_MAX__166#define LLONG_MAX __LONG_LONG_MAX__167#else168#define LLONG_MAX (0LL ^ (1LL << (LLONG_WIDTH - 1)))169#endif // __LONG_LONG_MAX__170#endif // LLONG_MAX171 172#ifndef ULLONG_MAX173#define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)174#endif // ULLONG_MAX175 176// *_MIN macros177 178#ifndef SCHAR_MIN179#define SCHAR_MIN (-SCHAR_MAX - 1)180#endif // SCHAR_MIN181 182#ifndef UCHAR_MIN183#define UCHAR_MIN 0184#endif // UCHAR_MIN185 186#ifndef CHAR_MIN187#ifdef __CHAR_UNSIGNED__188#define CHAR_MIN UCHAR_MIN189#else190#define CHAR_MIN SCHAR_MIN191#endif // __CHAR_UNSIGNED__192#endif // CHAR_MIN193 194#ifndef SHRT_MIN195#define SHRT_MIN (-SHRT_MAX - 1)196#endif // SHRT_MIN197 198#ifndef USHRT_MIN199#define USHRT_MIN 0U200#endif // USHRT_MIN201 202#ifndef INT_MIN203#define INT_MIN (-INT_MAX - 1)204#endif // INT_MIN205 206#ifndef UINT_MIN207#define UINT_MIN 0U208#endif // UINT_MIN209 210#ifndef LONG_MIN211#define LONG_MIN (-LONG_MAX - 1L)212#endif // LONG_MIN213 214#ifndef ULONG_MIN215#define ULONG_MIN 0UL216#endif // ULONG_MIN217 218#ifndef LLONG_MIN219#define LLONG_MIN (-LLONG_MAX - 1LL)220#endif // LLONG_MIN221 222#ifndef ULLONG_MIN223#define ULLONG_MIN 0ULL224#endif // ULLONG_MIN225 226#ifndef _POSIX_MAX_CANON227#define _POSIX_MAX_CANON 255228#endif229 230#ifndef _POSIX_MAX_INPUT231#define _POSIX_MAX_INPUT 255232#endif233 234#ifndef _POSIX_NAME_MAX235#define _POSIX_PATH_MAX 256236#endif237 238#ifndef _POSIX_ARG_MAX239#define _POSIX_ARG_MAX 4096240#endif241 242#ifndef IOV_MAX243#define IOV_MAX 1024244#endif // IOV_MAX245 246#endif // LLVM_LIBC_MACROS_LIMITS_MACROS_H247