1*71db0c75SAndroid Build Coastguard Worker //===-- Definition of macros from limits.h --------------------------------===// 2*71db0c75SAndroid Build Coastguard Worker // 3*71db0c75SAndroid Build Coastguard Worker // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*71db0c75SAndroid Build Coastguard Worker // See https://llvm.org/LICENSE.txt for license information. 5*71db0c75SAndroid Build Coastguard Worker // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*71db0c75SAndroid Build Coastguard Worker // 7*71db0c75SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 8*71db0c75SAndroid Build Coastguard Worker 9*71db0c75SAndroid Build Coastguard Worker #ifndef LLVM_LIBC_MACROS_LIMITS_MACROS_H 10*71db0c75SAndroid Build Coastguard Worker #define LLVM_LIBC_MACROS_LIMITS_MACROS_H 11*71db0c75SAndroid Build Coastguard Worker 12*71db0c75SAndroid Build Coastguard Worker // Define all C23 macro constants of limits.h 13*71db0c75SAndroid Build Coastguard Worker 14*71db0c75SAndroid Build Coastguard Worker #ifndef CHAR_BIT 15*71db0c75SAndroid Build Coastguard Worker #ifdef __CHAR_BIT__ 16*71db0c75SAndroid Build Coastguard Worker #define CHAR_BIT __CHAR_BIT__ 17*71db0c75SAndroid Build Coastguard Worker #else 18*71db0c75SAndroid Build Coastguard Worker #define CHAR_BIT 8 19*71db0c75SAndroid Build Coastguard Worker #endif // __CHAR_BIT__ 20*71db0c75SAndroid Build Coastguard Worker #endif // CHAR_BIT 21*71db0c75SAndroid Build Coastguard Worker 22*71db0c75SAndroid Build Coastguard Worker #ifndef MB_LEN_MAX 23*71db0c75SAndroid Build Coastguard Worker // Represents a single UTF-32 wide character in the default locale. 24*71db0c75SAndroid Build Coastguard Worker #define MB_LEN_MAX 4 25*71db0c75SAndroid Build Coastguard Worker #endif // MB_LEN_MAX 26*71db0c75SAndroid Build Coastguard Worker 27*71db0c75SAndroid Build Coastguard Worker // *_WIDTH macros 28*71db0c75SAndroid Build Coastguard Worker 29*71db0c75SAndroid Build Coastguard Worker #ifndef CHAR_WIDTH 30*71db0c75SAndroid Build Coastguard Worker #define CHAR_WIDTH CHAR_BIT 31*71db0c75SAndroid Build Coastguard Worker #endif // CHAR_WIDTH 32*71db0c75SAndroid Build Coastguard Worker 33*71db0c75SAndroid Build Coastguard Worker #ifndef SCHAR_WIDTH 34*71db0c75SAndroid Build Coastguard Worker #define SCHAR_WIDTH CHAR_BIT 35*71db0c75SAndroid Build Coastguard Worker #endif // SCHAR_WIDTH 36*71db0c75SAndroid Build Coastguard Worker 37*71db0c75SAndroid Build Coastguard Worker #ifndef UCHAR_WIDTH 38*71db0c75SAndroid Build Coastguard Worker #define UCHAR_WIDTH CHAR_BIT 39*71db0c75SAndroid Build Coastguard Worker #endif // UCHAR_WIDTH 40*71db0c75SAndroid Build Coastguard Worker 41*71db0c75SAndroid Build Coastguard Worker #ifndef SHRT_WIDTH 42*71db0c75SAndroid Build Coastguard Worker #ifdef __SHRT_WIDTH__ 43*71db0c75SAndroid Build Coastguard Worker #define SHRT_WIDTH __SHRT_WIDTH__ 44*71db0c75SAndroid Build Coastguard Worker #else 45*71db0c75SAndroid Build Coastguard Worker #define SHRT_WIDTH 16 46*71db0c75SAndroid Build Coastguard Worker #endif // __SHRT_WIDTH__ 47*71db0c75SAndroid Build Coastguard Worker #endif // SHRT_WIDTH 48*71db0c75SAndroid Build Coastguard Worker 49*71db0c75SAndroid Build Coastguard Worker #ifndef USHRT_WIDTH 50*71db0c75SAndroid Build Coastguard Worker #define USHRT_WIDTH SHRT_WIDTH 51*71db0c75SAndroid Build Coastguard Worker #endif // USHRT_WIDTH 52*71db0c75SAndroid Build Coastguard Worker 53*71db0c75SAndroid Build Coastguard Worker #ifndef INT_WIDTH 54*71db0c75SAndroid Build Coastguard Worker #ifdef __INT_WIDTH__ 55*71db0c75SAndroid Build Coastguard Worker #define INT_WIDTH __INT_WIDTH__ 56*71db0c75SAndroid Build Coastguard Worker #else 57*71db0c75SAndroid Build Coastguard Worker #define INT_WIDTH 32 58*71db0c75SAndroid Build Coastguard Worker #endif // __INT_WIDTH__ 59*71db0c75SAndroid Build Coastguard Worker #endif // INT_WIDTH 60*71db0c75SAndroid Build Coastguard Worker 61*71db0c75SAndroid Build Coastguard Worker #ifndef UINT_WIDTH 62*71db0c75SAndroid Build Coastguard Worker #define UINT_WIDTH INT_WIDTH 63*71db0c75SAndroid Build Coastguard Worker #endif // UINT_WIDTH 64*71db0c75SAndroid Build Coastguard Worker 65*71db0c75SAndroid Build Coastguard Worker #ifndef LONG_WIDTH 66*71db0c75SAndroid Build Coastguard Worker #ifdef __LONG_WIDTH__ 67*71db0c75SAndroid Build Coastguard Worker #define LONG_WIDTH __LONG_WIDTH__ 68*71db0c75SAndroid Build Coastguard Worker #elif defined(__WORDSIZE) 69*71db0c75SAndroid Build Coastguard Worker #define LONG_WIDTH __WORDSIZE 70*71db0c75SAndroid Build Coastguard Worker #else 71*71db0c75SAndroid Build Coastguard Worker // Use __SIZEOF_LONG__ * CHAR_BIT as backup. This is needed for clang-13 or 72*71db0c75SAndroid Build Coastguard Worker // before. 73*71db0c75SAndroid Build Coastguard Worker #define LONG_WIDTH (__SIZEOF_LONG__ * CHAR_BIT) 74*71db0c75SAndroid Build Coastguard Worker #endif // __LONG_WIDTH__ 75*71db0c75SAndroid Build Coastguard Worker #endif // LONG_WIDTH 76*71db0c75SAndroid Build Coastguard Worker 77*71db0c75SAndroid Build Coastguard Worker #ifndef ULONG_WIDTH 78*71db0c75SAndroid Build Coastguard Worker #define ULONG_WIDTH LONG_WIDTH 79*71db0c75SAndroid Build Coastguard Worker #endif // ULONG_WIDTH 80*71db0c75SAndroid Build Coastguard Worker 81*71db0c75SAndroid Build Coastguard Worker #ifndef LLONG_WIDTH 82*71db0c75SAndroid Build Coastguard Worker #ifdef __LLONG_WIDTH__ 83*71db0c75SAndroid Build Coastguard Worker #define LLONG_WIDTH __LLONG_WIDTH__ 84*71db0c75SAndroid Build Coastguard Worker #else 85*71db0c75SAndroid Build Coastguard Worker #define LLONG_WIDTH 64 86*71db0c75SAndroid Build Coastguard Worker #endif // __LLONG_WIDTH__ 87*71db0c75SAndroid Build Coastguard Worker #endif // LLONG_WIDTH 88*71db0c75SAndroid Build Coastguard Worker 89*71db0c75SAndroid Build Coastguard Worker #ifndef ULLONG_WIDTH 90*71db0c75SAndroid Build Coastguard Worker #define ULLONG_WIDTH LLONG_WIDTH 91*71db0c75SAndroid Build Coastguard Worker #endif // ULLONG_WIDTH 92*71db0c75SAndroid Build Coastguard Worker 93*71db0c75SAndroid Build Coastguard Worker #ifndef BOOL_WIDTH 94*71db0c75SAndroid Build Coastguard Worker #ifdef __BOOL_WIDTH__ 95*71db0c75SAndroid Build Coastguard Worker #define BOOL_WIDTH __BOOL_WIDTH__ 96*71db0c75SAndroid Build Coastguard Worker #else 97*71db0c75SAndroid Build Coastguard Worker #define BOOL_WIDTH 1 98*71db0c75SAndroid Build Coastguard Worker #endif // __BOOL_WIDTH__ 99*71db0c75SAndroid Build Coastguard Worker #endif // BOOL_WIDTH 100*71db0c75SAndroid Build Coastguard Worker 101*71db0c75SAndroid Build Coastguard Worker // *_MAX macros 102*71db0c75SAndroid Build Coastguard Worker 103*71db0c75SAndroid Build Coastguard Worker #ifndef SCHAR_MAX 104*71db0c75SAndroid Build Coastguard Worker #ifdef __SCHAR_MAX__ 105*71db0c75SAndroid Build Coastguard Worker #define SCHAR_MAX __SCHAR_MAX__ 106*71db0c75SAndroid Build Coastguard Worker #else 107*71db0c75SAndroid Build Coastguard Worker #define SCHAR_MAX 0x7f 108*71db0c75SAndroid Build Coastguard Worker #endif // __SCHAR_MAX__ 109*71db0c75SAndroid Build Coastguard Worker #endif // SCHAR_MAX 110*71db0c75SAndroid Build Coastguard Worker 111*71db0c75SAndroid Build Coastguard Worker #ifndef UCHAR_MAX 112*71db0c75SAndroid Build Coastguard Worker #define UCHAR_MAX (SCHAR_MAX * 2 + 1) 113*71db0c75SAndroid Build Coastguard Worker #endif // UCHAR_MAX 114*71db0c75SAndroid Build Coastguard Worker 115*71db0c75SAndroid Build Coastguard Worker // Check if char is unsigned. 116*71db0c75SAndroid Build Coastguard Worker #if !defined(__CHAR_UNSIGNED__) && ('\xff' > 0) 117*71db0c75SAndroid Build Coastguard Worker #define __CHAR_UNSIGNED__ 118*71db0c75SAndroid Build Coastguard Worker #endif 119*71db0c75SAndroid Build Coastguard Worker 120*71db0c75SAndroid Build Coastguard Worker #ifndef CHAR_MAX 121*71db0c75SAndroid Build Coastguard Worker #ifdef __CHAR_UNSIGNED__ 122*71db0c75SAndroid Build Coastguard Worker #define CHAR_MAX UCHAR_MAX 123*71db0c75SAndroid Build Coastguard Worker #else 124*71db0c75SAndroid Build Coastguard Worker #define CHAR_MAX SCHAR_MAX 125*71db0c75SAndroid Build Coastguard Worker #endif // __CHAR_UNSIGNED__ 126*71db0c75SAndroid Build Coastguard Worker #endif // CHAR_MAX 127*71db0c75SAndroid Build Coastguard Worker 128*71db0c75SAndroid Build Coastguard Worker #ifndef SHRT_MAX 129*71db0c75SAndroid Build Coastguard Worker #ifdef __SHRT_MAX__ 130*71db0c75SAndroid Build Coastguard Worker #define SHRT_MAX __SHRT_MAX__ 131*71db0c75SAndroid Build Coastguard Worker #else 132*71db0c75SAndroid Build Coastguard Worker #define SHRT_MAX 0x7fff 133*71db0c75SAndroid Build Coastguard Worker #endif // __SHRT_MAX__ 134*71db0c75SAndroid Build Coastguard Worker #endif // SHRT_MAX 135*71db0c75SAndroid Build Coastguard Worker 136*71db0c75SAndroid Build Coastguard Worker #ifndef USHRT_MAX 137*71db0c75SAndroid Build Coastguard Worker #define USHRT_MAX (SHRT_MAX * 2U + 1U) 138*71db0c75SAndroid Build Coastguard Worker #endif // USHRT_MAX 139*71db0c75SAndroid Build Coastguard Worker 140*71db0c75SAndroid Build Coastguard Worker #ifndef INT_MAX 141*71db0c75SAndroid Build Coastguard Worker #ifdef __INT_MAX__ 142*71db0c75SAndroid Build Coastguard Worker #define INT_MAX __INT_MAX__ 143*71db0c75SAndroid Build Coastguard Worker #else 144*71db0c75SAndroid Build Coastguard Worker #define INT_MAX (0 ^ (1 << (INT_WIDTH - 1))) 145*71db0c75SAndroid Build Coastguard Worker #endif // __INT_MAX__ 146*71db0c75SAndroid Build Coastguard Worker #endif // INT_MAX 147*71db0c75SAndroid Build Coastguard Worker 148*71db0c75SAndroid Build Coastguard Worker #ifndef UINT_MAX 149*71db0c75SAndroid Build Coastguard Worker #define UINT_MAX (INT_MAX * 2U + 1U) 150*71db0c75SAndroid Build Coastguard Worker #endif // UINT_MAX 151*71db0c75SAndroid Build Coastguard Worker 152*71db0c75SAndroid Build Coastguard Worker #ifndef LONG_MAX 153*71db0c75SAndroid Build Coastguard Worker #ifdef __LONG_MAX__ 154*71db0c75SAndroid Build Coastguard Worker #define LONG_MAX __LONG_MAX__ 155*71db0c75SAndroid Build Coastguard Worker #else 156*71db0c75SAndroid Build Coastguard Worker #define LONG_MAX (0L ^ (1L << (LONG_WIDTH - 1))) 157*71db0c75SAndroid Build Coastguard Worker #endif // __LONG_MAX__ 158*71db0c75SAndroid Build Coastguard Worker #endif // LONG_MAX 159*71db0c75SAndroid Build Coastguard Worker 160*71db0c75SAndroid Build Coastguard Worker #ifndef ULONG_MAX 161*71db0c75SAndroid Build Coastguard Worker #define ULONG_MAX (LONG_MAX * 2UL + 1UL) 162*71db0c75SAndroid Build Coastguard Worker #endif // ULONG_MAX 163*71db0c75SAndroid Build Coastguard Worker 164*71db0c75SAndroid Build Coastguard Worker #ifndef LLONG_MAX 165*71db0c75SAndroid Build Coastguard Worker #ifdef __LONG_LONG_MAX__ 166*71db0c75SAndroid Build Coastguard Worker #define LLONG_MAX __LONG_LONG_MAX__ 167*71db0c75SAndroid Build Coastguard Worker #else 168*71db0c75SAndroid Build Coastguard Worker #define LLONG_MAX (0LL ^ (1LL << (LLONG_WIDTH - 1))) 169*71db0c75SAndroid Build Coastguard Worker #endif // __LONG_LONG_MAX__ 170*71db0c75SAndroid Build Coastguard Worker #endif // LLONG_MAX 171*71db0c75SAndroid Build Coastguard Worker 172*71db0c75SAndroid Build Coastguard Worker #ifndef ULLONG_MAX 173*71db0c75SAndroid Build Coastguard Worker #define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) 174*71db0c75SAndroid Build Coastguard Worker #endif // ULLONG_MAX 175*71db0c75SAndroid Build Coastguard Worker 176*71db0c75SAndroid Build Coastguard Worker // *_MIN macros 177*71db0c75SAndroid Build Coastguard Worker 178*71db0c75SAndroid Build Coastguard Worker #ifndef SCHAR_MIN 179*71db0c75SAndroid Build Coastguard Worker #define SCHAR_MIN (-SCHAR_MAX - 1) 180*71db0c75SAndroid Build Coastguard Worker #endif // SCHAR_MIN 181*71db0c75SAndroid Build Coastguard Worker 182*71db0c75SAndroid Build Coastguard Worker #ifndef UCHAR_MIN 183*71db0c75SAndroid Build Coastguard Worker #define UCHAR_MIN 0 184*71db0c75SAndroid Build Coastguard Worker #endif // UCHAR_MIN 185*71db0c75SAndroid Build Coastguard Worker 186*71db0c75SAndroid Build Coastguard Worker #ifndef CHAR_MIN 187*71db0c75SAndroid Build Coastguard Worker #ifdef __CHAR_UNSIGNED__ 188*71db0c75SAndroid Build Coastguard Worker #define CHAR_MIN UCHAR_MIN 189*71db0c75SAndroid Build Coastguard Worker #else 190*71db0c75SAndroid Build Coastguard Worker #define CHAR_MIN SCHAR_MIN 191*71db0c75SAndroid Build Coastguard Worker #endif // __CHAR_UNSIGNED__ 192*71db0c75SAndroid Build Coastguard Worker #endif // CHAR_MIN 193*71db0c75SAndroid Build Coastguard Worker 194*71db0c75SAndroid Build Coastguard Worker #ifndef SHRT_MIN 195*71db0c75SAndroid Build Coastguard Worker #define SHRT_MIN (-SHRT_MAX - 1) 196*71db0c75SAndroid Build Coastguard Worker #endif // SHRT_MIN 197*71db0c75SAndroid Build Coastguard Worker 198*71db0c75SAndroid Build Coastguard Worker #ifndef USHRT_MIN 199*71db0c75SAndroid Build Coastguard Worker #define USHRT_MIN 0U 200*71db0c75SAndroid Build Coastguard Worker #endif // USHRT_MIN 201*71db0c75SAndroid Build Coastguard Worker 202*71db0c75SAndroid Build Coastguard Worker #ifndef INT_MIN 203*71db0c75SAndroid Build Coastguard Worker #define INT_MIN (-INT_MAX - 1) 204*71db0c75SAndroid Build Coastguard Worker #endif // INT_MIN 205*71db0c75SAndroid Build Coastguard Worker 206*71db0c75SAndroid Build Coastguard Worker #ifndef UINT_MIN 207*71db0c75SAndroid Build Coastguard Worker #define UINT_MIN 0U 208*71db0c75SAndroid Build Coastguard Worker #endif // UINT_MIN 209*71db0c75SAndroid Build Coastguard Worker 210*71db0c75SAndroid Build Coastguard Worker #ifndef LONG_MIN 211*71db0c75SAndroid Build Coastguard Worker #define LONG_MIN (-LONG_MAX - 1L) 212*71db0c75SAndroid Build Coastguard Worker #endif // LONG_MIN 213*71db0c75SAndroid Build Coastguard Worker 214*71db0c75SAndroid Build Coastguard Worker #ifndef ULONG_MIN 215*71db0c75SAndroid Build Coastguard Worker #define ULONG_MIN 0UL 216*71db0c75SAndroid Build Coastguard Worker #endif // ULONG_MIN 217*71db0c75SAndroid Build Coastguard Worker 218*71db0c75SAndroid Build Coastguard Worker #ifndef LLONG_MIN 219*71db0c75SAndroid Build Coastguard Worker #define LLONG_MIN (-LLONG_MAX - 1LL) 220*71db0c75SAndroid Build Coastguard Worker #endif // LLONG_MIN 221*71db0c75SAndroid Build Coastguard Worker 222*71db0c75SAndroid Build Coastguard Worker #ifndef ULLONG_MIN 223*71db0c75SAndroid Build Coastguard Worker #define ULLONG_MIN 0ULL 224*71db0c75SAndroid Build Coastguard Worker #endif // ULLONG_MIN 225*71db0c75SAndroid Build Coastguard Worker 226*71db0c75SAndroid Build Coastguard Worker #ifndef _POSIX_MAX_CANON 227*71db0c75SAndroid Build Coastguard Worker #define _POSIX_MAX_CANON 255 228*71db0c75SAndroid Build Coastguard Worker #endif 229*71db0c75SAndroid Build Coastguard Worker 230*71db0c75SAndroid Build Coastguard Worker #ifndef _POSIX_MAX_INPUT 231*71db0c75SAndroid Build Coastguard Worker #define _POSIX_MAX_INPUT 255 232*71db0c75SAndroid Build Coastguard Worker #endif 233*71db0c75SAndroid Build Coastguard Worker 234*71db0c75SAndroid Build Coastguard Worker #ifndef _POSIX_NAME_MAX 235*71db0c75SAndroid Build Coastguard Worker #define _POSIX_PATH_MAX 256 236*71db0c75SAndroid Build Coastguard Worker #endif 237*71db0c75SAndroid Build Coastguard Worker 238*71db0c75SAndroid Build Coastguard Worker #endif // LLVM_LIBC_MACROS_LIMITS_MACROS_H 239