| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 | //  (C) Copyright John Maddock 2001 - 2003.//  (C) Copyright David Abrahams 2002 - 2003.//  (C) Copyright Aleksey Gurtovoy 2002.//  Use, modification and distribution are subject to the//  Boost Software License, Version 1.0. (See accompanying file//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//  See http://www.boost.org for most recent version.//  Borland C++ compiler setup://// versions check:// we don't support Borland prior to version 5.4:#if __BORLANDC__ < 0x540#  error "Compiler not supported or configured - please reconfigure"#endif// last known compiler version:#if (__BORLANDC__ > 0x613)//#  if defined(BOOST_ASSERT_CONFIG)#     error "boost: Unknown compiler version - please run the configure tests and report the results"//#  else//#     pragma message( "boost: Unknown compiler version - please run the configure tests and report the results")//#  endif#elif (__BORLANDC__ == 0x600)#  error "CBuilderX preview compiler is no longer supported"#endif//// Support macros to help with standard library detection#if (__BORLANDC__ < 0x560) || defined(_USE_OLD_RW_STL)#  define BOOST_BCB_WITH_ROGUE_WAVE#elif __BORLANDC__ < 0x570#  define BOOST_BCB_WITH_STLPORT#else#  define BOOST_BCB_WITH_DINKUMWARE#endif//// Version 5.0 and below:#   if __BORLANDC__ <= 0x0550// Borland C++Builder 4 and 5:#     define BOOST_NO_MEMBER_TEMPLATE_FRIENDS#     if __BORLANDC__ == 0x0550// Borland C++Builder 5, command-line compiler 5.5:#       define BOOST_NO_OPERATORS_IN_NAMESPACE#     endif// Variadic macros do not exist for C++ Builder versions 5 and below#define BOOST_NO_CXX11_VARIADIC_MACROS#   endif// Version 5.51 and below:#if (__BORLANDC__ <= 0x551)#  define BOOST_NO_CV_SPECIALIZATIONS#  define BOOST_NO_CV_VOID_SPECIALIZATIONS#  define BOOST_NO_DEDUCED_TYPENAME// workaround for missing WCHAR_MAX/WCHAR_MIN:#ifdef __cplusplus#include <climits>#include <cwchar>#else#include <limits.h>#include <wchar.h>#endif // __cplusplus#ifndef WCHAR_MAX#  define WCHAR_MAX 0xffff#endif#ifndef WCHAR_MIN#  define WCHAR_MIN 0#endif#endif// Borland C++ Builder 6 and below:#if (__BORLANDC__ <= 0x564)#  if defined(NDEBUG) && defined(__cplusplus)      // fix broken <cstring> so that Boost.test works:#     include <cstring>#     undef strcmp#  endif   // fix broken errno declaration:#  include <errno.h>#  ifndef errno#     define errno errno#  endif#endif//// new bug in 5.61:#if (__BORLANDC__ >= 0x561) && (__BORLANDC__ <= 0x580)   // this seems to be needed by the command line compiler, but not the IDE:#  define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS#endif// Borland C++ Builder 2006 Update 2 and below:#if (__BORLANDC__ <= 0x582)#  define BOOST_NO_SFINAE#  define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG#  define BOOST_NO_TEMPLATE_TEMPLATES#  define BOOST_NO_PRIVATE_IN_AGGREGATE#  ifdef _WIN32#     define BOOST_NO_SWPRINTF#  elif defined(linux) || defined(__linux__) || defined(__linux)      // we should really be able to do without this      // but the wcs* functions aren't imported into std::#     define BOOST_NO_STDC_NAMESPACE      // _CPPUNWIND doesn't get automatically set for some reason:#     pragma defineonoption BOOST_CPPUNWIND -x#  endif#endif#if (__BORLANDC__ <= 0x613)  // Beman has asked Alisdair for more info   // we shouldn't really need this - but too many things choke   // without it, this needs more investigation:#  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS#  define BOOST_NO_IS_ABSTRACT#  define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS#  define BOOST_NO_USING_TEMPLATE#  define BOOST_SP_NO_SP_CONVERTIBLE// Temporary workaround#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS#endif// Borland C++ Builder 2008 and below:#  define BOOST_NO_INTEGRAL_INT64_T#  define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL#  define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS#  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS#  define BOOST_NO_TWO_PHASE_NAME_LOOKUP#  define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE#  define BOOST_NO_NESTED_FRIENDSHIP#  define BOOST_NO_TYPENAME_WITH_CTOR#if (__BORLANDC__ < 0x600)#  define BOOST_ILLEGAL_CV_REFERENCES#endif////  Positive Feature detection//// Borland C++ Builder 2008 and below:#if (__BORLANDC__ >= 0x599)#  pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax#endif//// C++0x Macros://#if !defined( BOOST_CODEGEAR_0X_SUPPORT ) || (__BORLANDC__ < 0x610)#  define BOOST_NO_CXX11_CHAR16_T#  define BOOST_NO_CXX11_CHAR32_T#  define BOOST_NO_CXX11_DECLTYPE#  define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS#  define BOOST_NO_CXX11_EXTERN_TEMPLATE#  define BOOST_NO_CXX11_RVALUE_REFERENCES#  define BOOST_NO_CXX11_SCOPED_ENUMS#  define BOOST_NO_CXX11_STATIC_ASSERT#else#  define BOOST_HAS_ALIGNOF#  define BOOST_HAS_CHAR16_T#  define BOOST_HAS_CHAR32_T#  define BOOST_HAS_DECLTYPE#  define BOOST_HAS_EXPLICIT_CONVERSION_OPS#  define BOOST_HAS_REF_QUALIFIER#  define BOOST_HAS_RVALUE_REFS#  define BOOST_HAS_STATIC_ASSERT#endif#define BOOST_NO_CXX11_AUTO_DECLARATIONS#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS#define BOOST_NO_CXX11_CONSTEXPR#define BOOST_NO_CXX11_DECLTYPE_N3276#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS#define BOOST_NO_CXX11_DEFAULTED_MOVES#define BOOST_NO_CXX11_DELETED_FUNCTIONS#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST#define BOOST_NO_CXX11_LAMBDAS#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS#define BOOST_NO_CXX11_NULLPTR#define BOOST_NO_CXX11_RANGE_BASED_FOR#define BOOST_NO_CXX11_RAW_LITERALS#define BOOST_NO_CXX11_RVALUE_REFERENCES#define BOOST_NO_CXX11_SCOPED_ENUMS#define BOOST_NO_SFINAE_EXPR#define BOOST_NO_CXX11_SFINAE_EXPR#define BOOST_NO_CXX11_TEMPLATE_ALIASES#define BOOST_NO_CXX11_UNICODE_LITERALS    // UTF-8 still not supported#define BOOST_NO_CXX11_VARIADIC_TEMPLATES#define BOOST_NO_CXX11_NOEXCEPT#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX#define BOOST_NO_CXX11_USER_DEFINED_LITERALS#define BOOST_NO_CXX11_ALIGNAS#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES#define BOOST_NO_CXX11_INLINE_NAMESPACES#define BOOST_NO_CXX11_REF_QUALIFIERS#define BOOST_NO_CXX11_FINAL#define BOOST_NO_CXX11_THREAD_LOCAL#define BOOST_NO_CXX11_UNRESTRICTED_UNION// C++ 14:#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)#  define BOOST_NO_CXX14_AGGREGATE_NSDMI#endif#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)#  define BOOST_NO_CXX14_BINARY_LITERALS#endif#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)#  define BOOST_NO_CXX14_CONSTEXPR#endif#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)#  define BOOST_NO_CXX14_DECLTYPE_AUTO#endif#if (__cplusplus < 201304) // There's no SD6 check for this....#  define BOOST_NO_CXX14_DIGIT_SEPARATORS#endif#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)#  define BOOST_NO_CXX14_GENERIC_LAMBDAS#endif#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)#  define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES#endif#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)#  define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION#endif#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)#  define BOOST_NO_CXX14_VARIABLE_TEMPLATES#endif// C++17#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)#  define BOOST_NO_CXX17_STRUCTURED_BINDINGS#endif#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)#  define BOOST_NO_CXX17_INLINE_VARIABLES#endif#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)#  define BOOST_NO_CXX17_FOLD_EXPRESSIONS#endif#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)#  define BOOST_NO_CXX17_IF_CONSTEXPR#endif#if __BORLANDC__ >= 0x590#  define BOOST_HAS_TR1_HASH#  define BOOST_HAS_MACRO_USE_FACET#endif//// Post 0x561 we have long long and stdint.h:#if __BORLANDC__ >= 0x561#  ifndef __NO_LONG_LONG#     define BOOST_HAS_LONG_LONG#  else#     define BOOST_NO_LONG_LONG#  endif   // On non-Win32 platforms let the platform config figure this out:#  ifdef _WIN32#      define BOOST_HAS_STDINT_H#  endif#endif// Borland C++Builder 6 defaults to using STLPort.  If _USE_OLD_RW_STL is// defined, then we have 0x560 or greater with the Rogue Wave implementation// which presumably has the std::DBL_MAX bug.#if defined( BOOST_BCB_WITH_ROGUE_WAVE )// <climits> is partly broken, some macros define symbols that are really in// namespace std, so you end up having to use illegal constructs like// std::DBL_MAX, as a fix we'll just include float.h and have done with:#include <float.h>#endif//// __int64://#if (__BORLANDC__ >= 0x530) && !defined(__STRICT_ANSI__)#  define BOOST_HAS_MS_INT64#endif//// check for exception handling support://#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)#  define BOOST_NO_EXCEPTIONS#endif//// all versions have a <dirent.h>://#ifndef __STRICT_ANSI__#  define BOOST_HAS_DIRENT_H#endif//// all versions support __declspec://#if defined(__STRICT_ANSI__)// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined#  define BOOST_SYMBOL_EXPORT#endif//// ABI fixing headers://#if __BORLANDC__ != 0x600 // not implemented for version 6 compiler yet#ifndef BOOST_ABI_PREFIX#  define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"#endif#ifndef BOOST_ABI_SUFFIX#  define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"#endif#endif//// Disable Win32 support in ANSI mode://#if __BORLANDC__ < 0x600#  pragma defineonoption BOOST_DISABLE_WIN32 -A#elif defined(__STRICT_ANSI__)#  define BOOST_DISABLE_WIN32#endif//// MSVC compatibility mode does some nasty things:// TODO: look up if this doesn't apply to the whole 12xx range//#if defined(_MSC_VER) && (_MSC_VER <= 1200)#  define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP#  define BOOST_NO_VOID_RETURNS#endif// Borland did not implement value-initialization completely, as I reported// in 2007, Borland Report 51854, "Value-initialization: POD struct should be// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues// (Niels Dekker, LKEB, April 2010)#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
 |