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