289 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			289 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			C++
		
	
	
	
// -*- C++ -*-
 | 
						|
//===--------------------------- __config ---------------------------------===//
 | 
						|
//
 | 
						|
//                     The LLVM Compiler Infrastructure
 | 
						|
//
 | 
						|
// This file is dual licensed under the MIT and the University of Illinois Open
 | 
						|
// Source Licenses. See LICENSE.TXT for details.
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
 | 
						|
#ifndef _LIBCPP_CONFIG
 | 
						|
#define _LIBCPP_CONFIG
 | 
						|
 | 
						|
#pragma GCC system_header
 | 
						|
 | 
						|
#define _LIBCPP_VERSION 1000
 | 
						|
 | 
						|
#define _LIBCPP_ABI_VERSION 1
 | 
						|
 | 
						|
#define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y
 | 
						|
#define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y)
 | 
						|
 | 
						|
#define _LIBCPP_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION)
 | 
						|
 | 
						|
#ifdef __LITTLE_ENDIAN__
 | 
						|
#if __LITTLE_ENDIAN__
 | 
						|
#define _LIBCPP_LITTLE_ENDIAN 1
 | 
						|
#define _LIBCPP_BIG_ENDIAN    0
 | 
						|
#endif  // __LITTLE_ENDIAN__
 | 
						|
#endif  // __LITTLE_ENDIAN__
 | 
						|
 | 
						|
#ifdef __BIG_ENDIAN__
 | 
						|
#if __BIG_ENDIAN__
 | 
						|
#define _LIBCPP_LITTLE_ENDIAN 0
 | 
						|
#define _LIBCPP_BIG_ENDIAN    1
 | 
						|
#endif  // __BIG_ENDIAN__
 | 
						|
#endif  // __BIG_ENDIAN__
 | 
						|
 | 
						|
#ifdef __FreeBSD__
 | 
						|
# include <sys/endian.h>
 | 
						|
#  if _BYTE_ORDER == _LITTLE_ENDIAN
 | 
						|
#   define _LIBCPP_LITTLE_ENDIAN 1
 | 
						|
#   define _LIBCPP_BIG_ENDIAN    0
 | 
						|
# else  // _BYTE_ORDER == _LITTLE_ENDIAN
 | 
						|
#   define _LIBCPP_LITTLE_ENDIAN 0
 | 
						|
#   define _LIBCPP_BIG_ENDIAN    1
 | 
						|
# endif  // _BYTE_ORDER == _LITTLE_ENDIAN
 | 
						|
#endif  // __FreeBSD__
 | 
						|
 | 
						|
#ifdef _WIN32
 | 
						|
#  define _LIBCPP_LITTLE_ENDIAN 1
 | 
						|
#  define _LIBCPP_BIG_ENDIAN    0
 | 
						|
#endif  // _WIN32
 | 
						|
 | 
						|
#if !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN)
 | 
						|
# include <endian.h>
 | 
						|
# if __BYTE_ORDER == __LITTLE_ENDIAN
 | 
						|
#  define _LIBCPP_LITTLE_ENDIAN 1
 | 
						|
#  define _LIBCPP_BIG_ENDIAN    0
 | 
						|
# elif __BYTE_ORDER == __BIG_ENDIAN
 | 
						|
#  define _LIBCPP_LITTLE_ENDIAN 0
 | 
						|
#  define _LIBCPP_BIG_ENDIAN    1
 | 
						|
# else  // __BYTE_ORDER == __BIG_ENDIAN
 | 
						|
#  error unable to determine endian
 | 
						|
# endif
 | 
						|
#endif  // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN)
 | 
						|
 | 
						|
#ifndef _LIBCPP_VISIBILITY_TAG
 | 
						|
#define _LIBCPP_VISIBILITY_TAG 1
 | 
						|
#endif
 | 
						|
 | 
						|
#if _LIBCPP_VISIBILITY_TAG
 | 
						|
#define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden")))
 | 
						|
#define _LIBCPP_VISIBLE __attribute__ ((__visibility__("default")))
 | 
						|
#else  // _LIBCPP_VISIBILITY_TAG
 | 
						|
#define _LIBCPP_HIDDEN
 | 
						|
#define _LIBCPP_VISIBLE
 | 
						|
#endif  // _LIBCPP_VISIBILITY_TAG
 | 
						|
 | 
						|
#ifndef _LIBCPP_INLINE_VISIBILITY
 | 
						|
#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__))
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef _LIBCPP_EXCEPTION_ABI
 | 
						|
#define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default")))
 | 
						|
#endif
 | 
						|
 | 
						|
#define _LIBCPP_CANTTHROW __attribute__ ((__nothrow__))
 | 
						|
 | 
						|
#define _LIBCPP_ALWAYS_INLINE  __attribute__ ((__visibility__("hidden"), __always_inline__))
 | 
						|
 | 
						|
#if defined(__clang__)
 | 
						|
 | 
						|
#if !__has_feature(cxx_alias_templates)
 | 
						|
#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __GXX_EXPERIMENTAL_CXX0X__
 | 
						|
#ifdef __linux__
 | 
						|
#define _LIBCPP_HAS_NO_UNICODE_CHARS
 | 
						|
#else
 | 
						|
typedef __char16_t char16_t;
 | 
						|
typedef __char32_t char32_t;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__has_feature(cxx_exceptions))
 | 
						|
#define _LIBCPP_NO_EXCEPTIONS
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__has_feature(cxx_rtti))
 | 
						|
#define _LIBCPP_NO_RTTI
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__has_feature(cxx_decltype))
 | 
						|
#define _LIBCPP_HAS_NO_DECLTYPE
 | 
						|
#endif
 | 
						|
 | 
						|
#if __has_feature(cxx_attributes)
 | 
						|
#  define _ATTRIBUTE(x) [[x]]
 | 
						|
#else
 | 
						|
#  define _ATTRIBUTE(x) __attribute__ ((x))
 | 
						|
#endif
 | 
						|
 | 
						|
#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
 | 
						|
 | 
						|
#if !(__has_feature(cxx_deleted_functions))
 | 
						|
#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
 | 
						|
#endif  // !(__has_feature(cxx_deleted_functions))
 | 
						|
 | 
						|
#if !(__has_feature(cxx_lambdas))
 | 
						|
#define _LIBCPP_HAS_NO_LAMBDAS
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__has_feature(cxx_nullptr))
 | 
						|
#define _LIBCPP_HAS_NO_NULLPTR
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__has_feature(cxx_rvalue_references))
 | 
						|
#define _LIBCPP_HAS_NO_RVALUE_REFERENCES
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__has_feature(cxx_static_assert))
 | 
						|
#define _LIBCPP_HAS_NO_STATIC_ASSERT
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__has_feature(cxx_auto_type))
 | 
						|
#define _LIBCPP_HAS_NO_AUTO_TYPE
 | 
						|
#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__has_feature(cxx_variadic_templates))
 | 
						|
#define _LIBCPP_HAS_NO_VARIADICS
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__has_feature(cxx_trailing_return))
 | 
						|
#define _LIBCPP_HAS_NO_TRAILING_RETURN
 | 
						|
#endif
 | 
						|
 | 
						|
// Objective-C++ features (opt-in)
 | 
						|
#if __has_feature(objc_arc)
 | 
						|
#define _LIBCPP_HAS_OBJC_ARC
 | 
						|
#endif
 | 
						|
 | 
						|
#if __has_feature(objc_arc_weak)
 | 
						|
#define _LIBCPP_HAS_OBJC_ARC_WEAK
 | 
						|
#endif
 | 
						|
 | 
						|
// Inline namespaces are available in Clang regardless of C++ dialect.
 | 
						|
#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE {
 | 
						|
#define _LIBCPP_END_NAMESPACE_STD  } }
 | 
						|
#define _VSTD std::_LIBCPP_NAMESPACE
 | 
						|
 | 
						|
namespace std {
 | 
						|
  inline namespace _LIBCPP_NAMESPACE {
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
#if !(__has_feature(cxx_constexpr))
 | 
						|
#define _LIBCPP_HAS_NO_CONSTEXPR
 | 
						|
#endif
 | 
						|
 | 
						|
#if (__has_feature(cxx_noexcept))
 | 
						|
#  define _NOEXCEPT noexcept
 | 
						|
#  define _NOEXCEPT_(x) noexcept(x)
 | 
						|
#else
 | 
						|
#  define _NOEXCEPT throw()
 | 
						|
#  define _NOEXCEPT_(x)
 | 
						|
#endif
 | 
						|
 | 
						|
// end defined(__clang__)
 | 
						|
 | 
						|
#elif defined(__GNUC__)
 | 
						|
 | 
						|
#define _ATTRIBUTE(x) __attribute__((x))
 | 
						|
 | 
						|
#if !__EXCEPTIONS
 | 
						|
#define _LIBCPP_NO_EXCEPTIONS
 | 
						|
#endif
 | 
						|
 | 
						|
#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
 | 
						|
#define _LIBCPP_HAS_NO_CONSTEXPR
 | 
						|
 | 
						|
#define _NOEXCEPT throw()
 | 
						|
#define _NOEXCEPT_(x)
 | 
						|
 | 
						|
#ifndef __GXX_EXPERIMENTAL_CXX0X__
 | 
						|
 | 
						|
#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
 | 
						|
#define _LIBCPP_HAS_NO_DECLTYPE
 | 
						|
#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
 | 
						|
#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
 | 
						|
#define _LIBCPP_HAS_NO_NULLPTR
 | 
						|
#define _LIBCPP_HAS_NO_STATIC_ASSERT
 | 
						|
#define _LIBCPP_HAS_NO_UNICODE_CHARS
 | 
						|
#define _LIBCPP_HAS_NO_VARIADICS
 | 
						|
#define _LIBCPP_HAS_NO_RVALUE_REFERENCES
 | 
						|
#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS
 | 
						|
 | 
						|
#else  // __GXX_EXPERIMENTAL_CXX0X__
 | 
						|
 | 
						|
#define _LIBCPP_HAS_NO_TRAILING_RETURN
 | 
						|
#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS
 | 
						|
 | 
						|
#if !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 3)
 | 
						|
#define _LIBCPP_HAS_NO_RVALUE_REFERENCES
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 3)
 | 
						|
#define _LIBCPP_HAS_NO_STATIC_ASSERT
 | 
						|
#endif
 | 
						|
 | 
						|
#if !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 4)
 | 
						|
#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
 | 
						|
#define _LIBCPP_HAS_NO_DECLTYPE
 | 
						|
#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
 | 
						|
#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
 | 
						|
#define _LIBCPP_HAS_NO_UNICODE_CHARS
 | 
						|
#define _LIBCPP_HAS_NO_VARIADICS
 | 
						|
#endif  // !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 4)
 | 
						|
 | 
						|
#if !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 6)
 | 
						|
#define _LIBCPP_HAS_NO_NULLPTR
 | 
						|
#endif
 | 
						|
 | 
						|
#endif  // __GXX_EXPERIMENTAL_CXX0X__
 | 
						|
 | 
						|
#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { namespace _LIBCPP_NAMESPACE {
 | 
						|
#define _LIBCPP_END_NAMESPACE_STD  } }
 | 
						|
#define _VSTD std::_LIBCPP_NAMESPACE
 | 
						|
 | 
						|
namespace std {
 | 
						|
namespace _LIBCPP_NAMESPACE {
 | 
						|
}
 | 
						|
using namespace _LIBCPP_NAMESPACE __attribute__((__strong__));
 | 
						|
}
 | 
						|
 | 
						|
#endif  // defined(__GNUC__)
 | 
						|
 | 
						|
#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS
 | 
						|
typedef unsigned short char16_t;
 | 
						|
typedef unsigned int   char32_t;
 | 
						|
#endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
 | 
						|
 | 
						|
#ifdef _LIBCPP_HAS_NO_STATIC_ASSERT
 | 
						|
 | 
						|
template <bool> struct __static_assert_test;
 | 
						|
template <> struct __static_assert_test<true> {};
 | 
						|
template <unsigned> struct __static_assert_check {};
 | 
						|
#define static_assert(__b, __m) \
 | 
						|
    typedef __static_assert_check<sizeof(__static_assert_test<(__b)>)> \
 | 
						|
    _LIBCPP_CONCAT(__t, __LINE__)
 | 
						|
 | 
						|
#endif  // _LIBCPP_HAS_NO_STATIC_ASSERT
 | 
						|
 | 
						|
#ifdef _LIBCPP_HAS_NO_DECLTYPE
 | 
						|
#define decltype(x) __typeof__(x)
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef _LIBCPP_HAS_NO_CONSTEXPR
 | 
						|
#define constexpr const
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __has_feature
 | 
						|
#define __has_feature(__x) 0
 | 
						|
#endif
 | 
						|
 | 
						|
#endif  // _LIBCPP_CONFIG
 |