1*4d6fc14bSjoerg // -*- C++ -*- 2*4d6fc14bSjoerg //===--------------------------- limits.h ---------------------------------===// 3*4d6fc14bSjoerg // 4*4d6fc14bSjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*4d6fc14bSjoerg // See https://llvm.org/LICENSE.txt for license information. 6*4d6fc14bSjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7*4d6fc14bSjoerg // 8*4d6fc14bSjoerg //===----------------------------------------------------------------------===// 9*4d6fc14bSjoerg 10*4d6fc14bSjoerg #ifndef _LIBCPP_LIMITS_H 11*4d6fc14bSjoerg #define _LIBCPP_LIMITS_H 12*4d6fc14bSjoerg 13*4d6fc14bSjoerg /* 14*4d6fc14bSjoerg limits.h synopsis 15*4d6fc14bSjoerg 16*4d6fc14bSjoerg Macros: 17*4d6fc14bSjoerg 18*4d6fc14bSjoerg CHAR_BIT 19*4d6fc14bSjoerg SCHAR_MIN 20*4d6fc14bSjoerg SCHAR_MAX 21*4d6fc14bSjoerg UCHAR_MAX 22*4d6fc14bSjoerg CHAR_MIN 23*4d6fc14bSjoerg CHAR_MAX 24*4d6fc14bSjoerg MB_LEN_MAX 25*4d6fc14bSjoerg SHRT_MIN 26*4d6fc14bSjoerg SHRT_MAX 27*4d6fc14bSjoerg USHRT_MAX 28*4d6fc14bSjoerg INT_MIN 29*4d6fc14bSjoerg INT_MAX 30*4d6fc14bSjoerg UINT_MAX 31*4d6fc14bSjoerg LONG_MIN 32*4d6fc14bSjoerg LONG_MAX 33*4d6fc14bSjoerg ULONG_MAX 34*4d6fc14bSjoerg LLONG_MIN // C99 35*4d6fc14bSjoerg LLONG_MAX // C99 36*4d6fc14bSjoerg ULLONG_MAX // C99 37*4d6fc14bSjoerg 38*4d6fc14bSjoerg */ 39*4d6fc14bSjoerg 40*4d6fc14bSjoerg #include <__config> 41*4d6fc14bSjoerg 42*4d6fc14bSjoerg #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 43*4d6fc14bSjoerg #pragma GCC system_header 44*4d6fc14bSjoerg #endif 45*4d6fc14bSjoerg 46*4d6fc14bSjoerg #ifndef __GNUC__ 47*4d6fc14bSjoerg #include_next <limits.h> 48*4d6fc14bSjoerg #else 49*4d6fc14bSjoerg // GCC header limits.h recursively includes itself through another header called 50*4d6fc14bSjoerg // syslimits.h for some reason. This setup breaks down if we directly 51*4d6fc14bSjoerg // #include_next GCC's limits.h (reasons not entirely clear to me). Therefore, 52*4d6fc14bSjoerg // we manually re-create the necessary include sequence below: 53*4d6fc14bSjoerg 54*4d6fc14bSjoerg // Get the system limits.h defines (force recurse into the next level) 55*4d6fc14bSjoerg #define _GCC_LIMITS_H_ 56*4d6fc14bSjoerg #define _GCC_NEXT_LIMITS_H 57*4d6fc14bSjoerg #include_next <limits.h> 58*4d6fc14bSjoerg 59*4d6fc14bSjoerg // Get the ISO C defines 60*4d6fc14bSjoerg #undef _GCC_LIMITS_H_ 61*4d6fc14bSjoerg #include_next <limits.h> 62*4d6fc14bSjoerg #endif // __GNUC__ 63*4d6fc14bSjoerg 64*4d6fc14bSjoerg #endif // _LIBCPP_LIMITS_H 65