__config revision 241903
1227825Stheraven// -*- C++ -*- 2227825Stheraven//===--------------------------- __config ---------------------------------===// 3227825Stheraven// 4227825Stheraven// The LLVM Compiler Infrastructure 5227825Stheraven// 6227825Stheraven// This file is dual licensed under the MIT and the University of Illinois Open 7227825Stheraven// Source Licenses. See LICENSE.TXT for details. 8227825Stheraven// 9227825Stheraven//===----------------------------------------------------------------------===// 10227825Stheraven 11227825Stheraven#ifndef _LIBCPP_CONFIG 12227825Stheraven#define _LIBCPP_CONFIG 13227825Stheraven 14227825Stheraven#if !_MSC_VER // explicit macro necessary because it is only defined below in this file 15227825Stheraven#pragma GCC system_header 16227825Stheraven#endif 17227825Stheraven 18241903Sdim#ifdef __GNUC__ 19241903Sdim#define _GNUC_VER (__GNUC__ * 100 + __GNUC_MINOR__) 20241903Sdim#endif 21227825Stheraven 22241903Sdim#define _LIBCPP_VERSION 1101 23241903Sdim 24227825Stheraven#define _LIBCPP_ABI_VERSION 1 25227825Stheraven 26227825Stheraven#define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y 27227825Stheraven#define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) 28227825Stheraven 29227825Stheraven#define _LIBCPP_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION) 30227825Stheraven 31227825Stheraven#ifdef __LITTLE_ENDIAN__ 32227825Stheraven#if __LITTLE_ENDIAN__ 33227825Stheraven#define _LIBCPP_LITTLE_ENDIAN 1 34227825Stheraven#define _LIBCPP_BIG_ENDIAN 0 35227825Stheraven#endif // __LITTLE_ENDIAN__ 36227825Stheraven#endif // __LITTLE_ENDIAN__ 37227825Stheraven 38227825Stheraven#ifdef __BIG_ENDIAN__ 39227825Stheraven#if __BIG_ENDIAN__ 40227825Stheraven#define _LIBCPP_LITTLE_ENDIAN 0 41227825Stheraven#define _LIBCPP_BIG_ENDIAN 1 42227825Stheraven#endif // __BIG_ENDIAN__ 43227825Stheraven#endif // __BIG_ENDIAN__ 44227825Stheraven 45227825Stheraven#ifdef __FreeBSD__ 46227825Stheraven# include <sys/endian.h> 47227825Stheraven# if _BYTE_ORDER == _LITTLE_ENDIAN 48227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 49227825Stheraven# define _LIBCPP_BIG_ENDIAN 0 50227825Stheraven# else // _BYTE_ORDER == _LITTLE_ENDIAN 51227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 0 52227825Stheraven# define _LIBCPP_BIG_ENDIAN 1 53227825Stheraven# endif // _BYTE_ORDER == _LITTLE_ENDIAN 54227825Stheraven#endif // __FreeBSD__ 55227825Stheraven 56227825Stheraven#ifdef _WIN32 57227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 58227825Stheraven# define _LIBCPP_BIG_ENDIAN 0 59227825Stheraven// Compiler intrinsics (GCC or MSVC) 60241903Sdim# if (defined(_MSC_VER) && _MSC_VER >= 1400) \ 61241903Sdim || (defined(__GNUC__) && _GNUC_VER > 403) 62227825Stheraven# define _LIBCP_HAS_IS_BASE_OF 63227825Stheraven# endif 64227825Stheraven#endif // _WIN32 65227825Stheraven 66232950Stheraven#ifdef __sun__ 67232950Stheraven# include <sys/isa_defs.h> 68232950Stheraven# ifdef _LITTLE_ENDIAN 69232950Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 70232950Stheraven# define _LIBCPP_BIG_ENDIAN 0 71232950Stheraven# else 72232950Stheraven# define _LIBCPP_LITTLE_ENDIAN 0 73232950Stheraven# define _LIBCPP_BIG_ENDIAN 1 74232950Stheraven# endif 75232950Stheraven#endif // __sun__ 76232950Stheraven 77227825Stheraven#if !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) 78227825Stheraven# include <endian.h> 79227825Stheraven# if __BYTE_ORDER == __LITTLE_ENDIAN 80227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 81227825Stheraven# define _LIBCPP_BIG_ENDIAN 0 82227825Stheraven# elif __BYTE_ORDER == __BIG_ENDIAN 83227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 0 84227825Stheraven# define _LIBCPP_BIG_ENDIAN 1 85227825Stheraven# else // __BYTE_ORDER == __BIG_ENDIAN 86227825Stheraven# error unable to determine endian 87227825Stheraven# endif 88227825Stheraven#endif // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) 89227825Stheraven 90227825Stheraven#if _WIN32 91227825Stheraven 92227825Stheraven// only really useful for a DLL 93227825Stheraven#ifdef _LIBCPP_DLL // this should be a compiler builtin define ideally... 94227825Stheraven# ifdef cxx_EXPORTS 95227825Stheraven# define _LIBCPP_HIDDEN 96227825Stheraven# define _LIBCPP_VISIBLE __declspec(dllexport) 97227825Stheraven# else 98227825Stheraven# define _LIBCPP_HIDDEN 99227825Stheraven# define _LIBCPP_VISIBLE __declspec(dllimport) 100227825Stheraven# endif 101227825Stheraven#else 102227825Stheraven# define _LIBCPP_HIDDEN 103227825Stheraven# define _LIBCPP_VISIBLE 104227825Stheraven#endif 105227825Stheraven 106227825Stheraven#ifndef _LIBCPP_INLINE_VISIBILITY 107227825Stheraven# if _MSC_VER 108227825Stheraven# define _LIBCPP_INLINE_VISIBILITY __forceinline 109227825Stheraven# else // MinGW GCC and Clang 110227825Stheraven# define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__always_inline__)) 111227825Stheraven# endif 112227825Stheraven#endif 113227825Stheraven 114227825Stheraven#ifndef _LIBCPP_EXCEPTION_ABI 115227825Stheraven#define _LIBCPP_EXCEPTION_ABI _LIBCPP_VISIBLE 116227825Stheraven#endif 117227825Stheraven 118227825Stheraven#ifndef _LIBCPP_ALWAYS_INLINE 119227825Stheraven# if _MSC_VER 120227825Stheraven# define _LIBCPP_ALWAYS_INLINE __forceinline 121227825Stheraven# endif 122227825Stheraven#endif 123227825Stheraven 124227825Stheraven#endif // _WIN32 125227825Stheraven 126227825Stheraven#ifndef _LIBCPP_HIDDEN 127227825Stheraven#define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden"))) 128227825Stheraven#endif 129227825Stheraven 130227825Stheraven#ifndef _LIBCPP_VISIBLE 131227825Stheraven#define _LIBCPP_VISIBLE __attribute__ ((__visibility__("default"))) 132227825Stheraven#endif 133227825Stheraven 134227825Stheraven#ifndef _LIBCPP_INLINE_VISIBILITY 135227825Stheraven#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__)) 136227825Stheraven#endif 137227825Stheraven 138227825Stheraven#ifndef _LIBCPP_EXCEPTION_ABI 139227825Stheraven#define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default"))) 140227825Stheraven#endif 141227825Stheraven 142227825Stheraven#ifndef _LIBCPP_CANTTHROW 143227825Stheraven#define _LIBCPP_CANTTHROW __attribute__ ((__nothrow__)) 144227825Stheraven#endif 145227825Stheraven 146227825Stheraven#ifndef _LIBCPP_ALWAYS_INLINE 147227825Stheraven#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__visibility__("hidden"), __always_inline__)) 148227825Stheraven#endif 149227825Stheraven 150227825Stheraven#if defined(__clang__) 151227825Stheraven 152227825Stheraven#if __has_feature(cxx_alignas) 153241903Sdim# define _ALIGNAS_TYPE(x) alignas(x) 154227825Stheraven# define _ALIGNAS(x) alignas(x) 155227825Stheraven#else 156241903Sdim# define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))) 157227825Stheraven# define _ALIGNAS(x) __attribute__((__aligned__(x))) 158227825Stheraven#endif 159227825Stheraven 160227825Stheraven#if !__has_feature(cxx_alias_templates) 161227825Stheraven#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES 162227825Stheraven#endif 163227825Stheraven 164227825Stheraven#ifndef __GXX_EXPERIMENTAL_CXX0X__ 165227825Stheraven#ifdef __linux__ 166227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 167227825Stheraven#else 168227825Stheraventypedef __char16_t char16_t; 169227825Stheraventypedef __char32_t char32_t; 170227825Stheraven#endif 171227825Stheraven#endif 172227825Stheraven 173227825Stheraven#if !(__has_feature(cxx_exceptions)) 174227825Stheraven#define _LIBCPP_NO_EXCEPTIONS 175227825Stheraven#endif 176227825Stheraven 177227825Stheraven#if !(__has_feature(cxx_rtti)) 178227825Stheraven#define _LIBCPP_NO_RTTI 179227825Stheraven#endif 180227825Stheraven 181232950Stheraven#if !(__has_feature(cxx_strong_enums)) 182232950Stheraven#define _LIBCPP_HAS_NO_STRONG_ENUMS 183232950Stheraven#endif 184232950Stheraven 185227825Stheraven#if !(__has_feature(cxx_decltype)) 186227825Stheraven#define _LIBCPP_HAS_NO_DECLTYPE 187227825Stheraven#endif 188227825Stheraven 189227825Stheraven#if __has_feature(cxx_attributes) 190241903Sdim# define _LIBCPP_NORETURN [[noreturn]] 191227825Stheraven#else 192241903Sdim# define _LIBCPP_NORETURN __attribute__ ((noreturn)) 193227825Stheraven#endif 194227825Stheraven 195227825Stheraven#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS 196227825Stheraven 197227825Stheraven#if !(__has_feature(cxx_deleted_functions)) 198227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 199227825Stheraven#endif // !(__has_feature(cxx_deleted_functions)) 200227825Stheraven 201227825Stheraven#if !(__has_feature(cxx_lambdas)) 202227825Stheraven#define _LIBCPP_HAS_NO_LAMBDAS 203227825Stheraven#endif 204227825Stheraven 205227825Stheraven#if !(__has_feature(cxx_nullptr)) 206227825Stheraven#define _LIBCPP_HAS_NO_NULLPTR 207227825Stheraven#endif 208227825Stheraven 209227825Stheraven#if !(__has_feature(cxx_rvalue_references)) 210227825Stheraven#define _LIBCPP_HAS_NO_RVALUE_REFERENCES 211227825Stheraven#endif 212227825Stheraven 213227825Stheraven#if !(__has_feature(cxx_static_assert)) 214227825Stheraven#define _LIBCPP_HAS_NO_STATIC_ASSERT 215227825Stheraven#endif 216227825Stheraven 217227825Stheraven#if !(__has_feature(cxx_auto_type)) 218227825Stheraven#define _LIBCPP_HAS_NO_AUTO_TYPE 219227825Stheraven#endif 220227825Stheraven 221227825Stheraven#if !(__has_feature(cxx_access_control_sfinae)) || !__has_feature(cxx_trailing_return) 222227825Stheraven#define _LIBCPP_HAS_NO_ADVANCED_SFINAE 223227825Stheraven#endif 224227825Stheraven 225227825Stheraven#if !(__has_feature(cxx_variadic_templates)) 226227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 227227825Stheraven#endif 228227825Stheraven 229227825Stheraven#if !(__has_feature(cxx_trailing_return)) 230227825Stheraven#define _LIBCPP_HAS_NO_TRAILING_RETURN 231227825Stheraven#endif 232227825Stheraven 233227825Stheraven#if !(__has_feature(cxx_generalized_initializers)) 234227825Stheraven#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS 235227825Stheraven#endif 236227825Stheraven 237227825Stheraven#if __has_feature(is_base_of) 238227825Stheraven# define _LIBCP_HAS_IS_BASE_OF 239227825Stheraven#endif 240227825Stheraven 241227825Stheraven// Objective-C++ features (opt-in) 242227825Stheraven#if __has_feature(objc_arc) 243227825Stheraven#define _LIBCPP_HAS_OBJC_ARC 244227825Stheraven#endif 245227825Stheraven 246227825Stheraven#if __has_feature(objc_arc_weak) 247227825Stheraven#define _LIBCPP_HAS_OBJC_ARC_WEAK 248232950Stheraven#define _LIBCPP_HAS_NO_STRONG_ENUMS 249227825Stheraven#endif 250227825Stheraven 251227825Stheraven#if !(__has_feature(cxx_constexpr)) 252227825Stheraven#define _LIBCPP_HAS_NO_CONSTEXPR 253227825Stheraven#endif 254227825Stheraven 255241903Sdim#if __FreeBSD__ && (__ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L) 256232972Stheraven#define _LIBCPP_HAS_QUICK_EXIT 257241903Sdim#define _LIBCPP_HAS_C11_FEATURES 258232972Stheraven#endif 259232972Stheraven 260227825Stheraven#if (__has_feature(cxx_noexcept)) 261227825Stheraven# define _NOEXCEPT noexcept 262227825Stheraven# define _NOEXCEPT_(x) noexcept(x) 263227825Stheraven#else 264227825Stheraven# define _NOEXCEPT throw() 265227825Stheraven# define _NOEXCEPT_(x) 266227825Stheraven#endif 267227825Stheraven 268227825Stheraven#if __has_feature(underlying_type) 269227825Stheraven# define _LIBCXX_UNDERLYING_TYPE(T) __underlying_type(T) 270227825Stheraven#endif 271227825Stheraven 272227825Stheraven// Inline namespaces are available in Clang regardless of C++ dialect. 273227825Stheraven#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE { 274227825Stheraven#define _LIBCPP_END_NAMESPACE_STD } } 275227825Stheraven#define _VSTD std::_LIBCPP_NAMESPACE 276227825Stheraven 277227825Stheravennamespace std { 278227825Stheraven inline namespace _LIBCPP_NAMESPACE { 279227825Stheraven } 280227825Stheraven} 281227825Stheraven 282227825Stheraven#elif defined(__GNUC__) 283227825Stheraven 284227825Stheraven#define _ALIGNAS(x) __attribute__((__aligned__(x))) 285241903Sdim#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))) 286227825Stheraven 287241903Sdim#define _LIBCPP_NORETURN __attribute__((noreturn)) 288227825Stheraven 289227825Stheraven#if !__EXCEPTIONS 290227825Stheraven#define _LIBCPP_NO_EXCEPTIONS 291227825Stheraven#endif 292227825Stheraven 293227825Stheraven#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES 294227825Stheraven#define _LIBCPP_HAS_NO_CONSTEXPR 295227825Stheraven 296227825Stheraven#define _NOEXCEPT throw() 297227825Stheraven#define _NOEXCEPT_(x) 298227825Stheraven 299227825Stheraven#ifndef __GXX_EXPERIMENTAL_CXX0X__ 300227825Stheraven 301227825Stheraven#define _LIBCPP_HAS_NO_ADVANCED_SFINAE 302227825Stheraven#define _LIBCPP_HAS_NO_DECLTYPE 303227825Stheraven#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS 304227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 305227825Stheraven#define _LIBCPP_HAS_NO_NULLPTR 306227825Stheraven#define _LIBCPP_HAS_NO_STATIC_ASSERT 307227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 308227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 309227825Stheraven#define _LIBCPP_HAS_NO_RVALUE_REFERENCES 310227825Stheraven#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS 311227825Stheraven 312227825Stheraven#else // __GXX_EXPERIMENTAL_CXX0X__ 313227825Stheraven 314227825Stheraven#define _LIBCPP_HAS_NO_TRAILING_RETURN 315227825Stheraven#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS 316227825Stheraven 317241903Sdim#if _GNUC_VER < 403 318227825Stheraven#define _LIBCPP_HAS_NO_RVALUE_REFERENCES 319227825Stheraven#endif 320227825Stheraven 321241903Sdim#if _GNUC_VER < 403 322227825Stheraven#define _LIBCPP_HAS_NO_STATIC_ASSERT 323227825Stheraven#endif 324227825Stheraven 325241903Sdim#if _GNUC_VER < 404 326227825Stheraven#define _LIBCPP_HAS_NO_ADVANCED_SFINAE 327227825Stheraven#define _LIBCPP_HAS_NO_DECLTYPE 328227825Stheraven#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS 329227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 330227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 331227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 332227825Stheraven#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS 333241903Sdim#endif // _GNUC_VER < 404 334227825Stheraven 335241903Sdim#if _GNUC_VER < 406 336227825Stheraven#define _LIBCPP_HAS_NO_NULLPTR 337227825Stheraven#endif 338227825Stheraven 339227825Stheraven#endif // __GXX_EXPERIMENTAL_CXX0X__ 340227825Stheraven 341227825Stheraven#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { namespace _LIBCPP_NAMESPACE { 342227825Stheraven#define _LIBCPP_END_NAMESPACE_STD } } 343227825Stheraven#define _VSTD std::_LIBCPP_NAMESPACE 344227825Stheraven 345227825Stheravennamespace std { 346227825Stheravennamespace _LIBCPP_NAMESPACE { 347227825Stheraven} 348227825Stheravenusing namespace _LIBCPP_NAMESPACE __attribute__((__strong__)); 349227825Stheraven} 350227825Stheraven 351227825Stheraven#elif defined(_MSC_VER) 352227825Stheraven 353227825Stheraven#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES 354227825Stheraven#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER 355227825Stheraven#define _LIBCPP_HAS_NO_CONSTEXPR 356227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 357227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 358227825Stheraven#define __alignof__ __alignof 359241903Sdim#define _LIBCPP_NORETURN __declspec(noreturn) 360227825Stheraven#define _ALIGNAS(x) __declspec(align(x)) 361227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 362227825Stheraven 363227825Stheraven#define _NOEXCEPT throw() 364227825Stheraven#define _NOEXCEPT_(x) 365227825Stheraven 366227825Stheraven#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { 367227825Stheraven#define _LIBCPP_END_NAMESPACE_STD } 368227825Stheraven#define _VSTD std 369227825Stheraven 370227825Stheravennamespace std { 371227825Stheraven} 372227825Stheraven 373227825Stheraven#endif // __clang__ || __GNUC___ || _MSC_VER 374227825Stheraven 375227825Stheraven#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS 376227825Stheraventypedef unsigned short char16_t; 377227825Stheraventypedef unsigned int char32_t; 378227825Stheraven#endif // _LIBCPP_HAS_NO_UNICODE_CHARS 379227825Stheraven 380227825Stheraven#ifdef _LIBCPP_HAS_NO_STATIC_ASSERT 381227825Stheraven 382227825Stheraventemplate <bool> struct __static_assert_test; 383227825Stheraventemplate <> struct __static_assert_test<true> {}; 384227825Stheraventemplate <unsigned> struct __static_assert_check {}; 385227825Stheraven#define static_assert(__b, __m) \ 386227825Stheraven typedef __static_assert_check<sizeof(__static_assert_test<(__b)>)> \ 387227825Stheraven _LIBCPP_CONCAT(__t, __LINE__) 388227825Stheraven 389227825Stheraven#endif // _LIBCPP_HAS_NO_STATIC_ASSERT 390227825Stheraven 391227825Stheraven#ifdef _LIBCPP_HAS_NO_DECLTYPE 392227825Stheraven#define decltype(x) __typeof__(x) 393227825Stheraven#endif 394227825Stheraven 395227825Stheraven#ifdef _LIBCPP_HAS_NO_CONSTEXPR 396234976Stheraven#define _LIBCPP_CONSTEXPR 397234976Stheraven#else 398234976Stheraven#define _LIBCPP_CONSTEXPR constexpr 399227825Stheraven#endif 400227825Stheraven 401241903Sdim#ifdef __GNUC__ 402241903Sdim#define _NOALIAS __attribute__((malloc)) 403241903Sdim#else 404241903Sdim#define _NOALIAS 405241903Sdim#endif 406241903Sdim 407227825Stheraven#ifndef __has_feature 408227825Stheraven#define __has_feature(__x) 0 409227825Stheraven#endif 410227825Stheraven 411232950Stheraven#if __has_feature(cxx_explicit_conversions) 412232950Stheraven# define _LIBCPP_EXPLICIT explicit 413232950Stheraven#else 414232950Stheraven# define _LIBCPP_EXPLICIT 415232950Stheraven#endif 416232950Stheraven 417232950Stheraven#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS 418232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_VISIBLE x { enum _ 419232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \ 420232950Stheraven _ __v_; \ 421232950Stheraven _LIBCPP_ALWAYS_INLINE x(_ __v) : __v_(__v) {} \ 422241903Sdim _LIBCPP_ALWAYS_INLINE explicit x(int __v) : __v_(static_cast<_>(__v)) {} \ 423232950Stheraven _LIBCPP_ALWAYS_INLINE operator int() const {return __v_;} \ 424232950Stheraven }; 425232950Stheraven#else // _LIBCPP_HAS_NO_STRONG_ENUMS 426232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_VISIBLE x 427232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) 428232950Stheraven#endif // _LIBCPP_HAS_NO_STRONG_ENUMS 429232950Stheraven 430232950Stheraven#if __APPLE__ || __FreeBSD__ || _WIN32 || __sun__ 431227825Stheraven#define _LIBCPP_LOCALE__L_EXTENSIONS 1 432227825Stheraven#endif 433227825Stheraven#if __FreeBSD__ 434227825Stheraven#define _DECLARE_C99_LDBL_MATH 1 435227825Stheraven#endif 436227825Stheraven 437227825Stheraven#if __APPLE__ || __FreeBSD__ 438227825Stheraven#define _LIBCPP_HAS_DEFAULTRUNELOCALE 439227825Stheraven#endif 440227825Stheraven 441232950Stheraven#if __APPLE__ || __FreeBSD__ || __sun__ 442227825Stheraven#define _LIBCPP_WCTYPE_IS_MASK 443227825Stheraven#endif 444227825Stheraven 445227825Stheraven#ifdef _LIBCPP_DEBUG2 446227825Stheraven# if _LIBCPP_DEBUG2 == 0 447227825Stheraven# define _LIBCPP_DEBUG_LEVEL 1 448227825Stheraven# elif _LIBCPP_DEBUG2 == 1 449227825Stheraven# define _LIBCPP_DEBUG_LEVEL 2 450227825Stheraven# else 451227825Stheraven# error Supported values for _LIBCPP_DEBUG2 are 0 and 1 452227825Stheraven# endif 453227825Stheraven#endif 454227825Stheraven 455227825Stheraven#ifdef _LIBCPP_DEBUG2 456227825Stheraven# include <__debug> 457227825Stheraven#else 458227825Stheraven# define _LIBCPP_ASSERT(x, m) ((void)0) 459227825Stheraven#endif 460227825Stheraven 461227825Stheraven#endif // _LIBCPP_CONFIG 462