github.com/searKing/golang/go@v1.2.74/os/signal/cgo/include/boost/config/compiler/borland.hpp (about)

     1  //  (C) Copyright John Maddock 2001 - 2003.
     2  //  (C) Copyright David Abrahams 2002 - 2003.
     3  //  (C) Copyright Aleksey Gurtovoy 2002.
     4  //  Use, modification and distribution are subject to the
     5  //  Boost Software License, Version 1.0. (See accompanying file
     6  //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
     7  
     8  //  See http://www.boost.org for most recent version.
     9  
    10  //  Borland C++ compiler setup:
    11  
    12  //
    13  // versions check:
    14  // we don't support Borland prior to version 5.4:
    15  #if __BORLANDC__ < 0x540
    16  #  error "Compiler not supported or configured - please reconfigure"
    17  #endif
    18  
    19  // last known compiler version:
    20  #if (__BORLANDC__ > 0x613)
    21  //#  if defined(BOOST_ASSERT_CONFIG)
    22  #     error "boost: Unknown compiler version - please run the configure tests and report the results"
    23  //#  else
    24  //#     pragma message( "boost: Unknown compiler version - please run the configure tests and report the results")
    25  //#  endif
    26  #elif (__BORLANDC__ == 0x600)
    27  #  error "CBuilderX preview compiler is no longer supported"
    28  #endif
    29  
    30  //
    31  // Support macros to help with standard library detection
    32  #if (__BORLANDC__ < 0x560) || defined(_USE_OLD_RW_STL)
    33  #  define BOOST_BCB_WITH_ROGUE_WAVE
    34  #elif __BORLANDC__ < 0x570
    35  #  define BOOST_BCB_WITH_STLPORT
    36  #else
    37  #  define BOOST_BCB_WITH_DINKUMWARE
    38  #endif
    39  
    40  //
    41  // Version 5.0 and below:
    42  #   if __BORLANDC__ <= 0x0550
    43  // Borland C++Builder 4 and 5:
    44  #     define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
    45  #     if __BORLANDC__ == 0x0550
    46  // Borland C++Builder 5, command-line compiler 5.5:
    47  #       define BOOST_NO_OPERATORS_IN_NAMESPACE
    48  #     endif
    49  // Variadic macros do not exist for C++ Builder versions 5 and below
    50  #define BOOST_NO_CXX11_VARIADIC_MACROS
    51  #   endif
    52  
    53  // Version 5.51 and below:
    54  #if (__BORLANDC__ <= 0x551)
    55  #  define BOOST_NO_CV_SPECIALIZATIONS
    56  #  define BOOST_NO_CV_VOID_SPECIALIZATIONS
    57  #  define BOOST_NO_DEDUCED_TYPENAME
    58  // workaround for missing WCHAR_MAX/WCHAR_MIN:
    59  #ifdef __cplusplus
    60  #include <climits>
    61  #include <cwchar>
    62  #else
    63  #include <limits.h>
    64  #include <wchar.h>
    65  #endif // __cplusplus
    66  #ifndef WCHAR_MAX
    67  #  define WCHAR_MAX 0xffff
    68  #endif
    69  #ifndef WCHAR_MIN
    70  #  define WCHAR_MIN 0
    71  #endif
    72  #endif
    73  
    74  // Borland C++ Builder 6 and below:
    75  #if (__BORLANDC__ <= 0x564)
    76  
    77  #  if defined(NDEBUG) && defined(__cplusplus)
    78        // fix broken <cstring> so that Boost.test works:
    79  #     include <cstring>
    80  #     undef strcmp
    81  #  endif
    82     // fix broken errno declaration:
    83  #  include <errno.h>
    84  #  ifndef errno
    85  #     define errno errno
    86  #  endif
    87  
    88  #endif
    89  
    90  //
    91  // new bug in 5.61:
    92  #if (__BORLANDC__ >= 0x561) && (__BORLANDC__ <= 0x580)
    93     // this seems to be needed by the command line compiler, but not the IDE:
    94  #  define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
    95  #endif
    96  
    97  // Borland C++ Builder 2006 Update 2 and below:
    98  #if (__BORLANDC__ <= 0x582)
    99  #  define BOOST_NO_SFINAE
   100  #  define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
   101  #  define BOOST_NO_TEMPLATE_TEMPLATES
   102  
   103  #  define BOOST_NO_PRIVATE_IN_AGGREGATE
   104  
   105  #  ifdef _WIN32
   106  #     define BOOST_NO_SWPRINTF
   107  #  elif defined(linux) || defined(__linux__) || defined(__linux)
   108        // we should really be able to do without this
   109        // but the wcs* functions aren't imported into std::
   110  #     define BOOST_NO_STDC_NAMESPACE
   111        // _CPPUNWIND doesn't get automatically set for some reason:
   112  #     pragma defineonoption BOOST_CPPUNWIND -x
   113  #  endif
   114  #endif
   115  
   116  #if (__BORLANDC__ <= 0x613)  // Beman has asked Alisdair for more info
   117     // we shouldn't really need this - but too many things choke
   118     // without it, this needs more investigation:
   119  #  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
   120  #  define BOOST_NO_IS_ABSTRACT
   121  #  define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
   122  #  define BOOST_NO_USING_TEMPLATE
   123  #  define BOOST_SP_NO_SP_CONVERTIBLE
   124  
   125  // Temporary workaround
   126  #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
   127  #endif
   128  
   129  // Borland C++ Builder 2008 and below:
   130  #  define BOOST_NO_INTEGRAL_INT64_T
   131  #  define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
   132  #  define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
   133  #  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
   134  #  define BOOST_NO_TWO_PHASE_NAME_LOOKUP
   135  #  define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
   136  #  define BOOST_NO_NESTED_FRIENDSHIP
   137  #  define BOOST_NO_TYPENAME_WITH_CTOR
   138  #if (__BORLANDC__ < 0x600)
   139  #  define BOOST_ILLEGAL_CV_REFERENCES
   140  #endif
   141  
   142  //
   143  //  Positive Feature detection
   144  //
   145  // Borland C++ Builder 2008 and below:
   146  #if (__BORLANDC__ >= 0x599)
   147  #  pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax
   148  #endif
   149  //
   150  // C++0x Macros:
   151  //
   152  #if !defined( BOOST_CODEGEAR_0X_SUPPORT ) || (__BORLANDC__ < 0x610)
   153  #  define BOOST_NO_CXX11_CHAR16_T
   154  #  define BOOST_NO_CXX11_CHAR32_T
   155  #  define BOOST_NO_CXX11_DECLTYPE
   156  #  define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
   157  #  define BOOST_NO_CXX11_EXTERN_TEMPLATE
   158  #  define BOOST_NO_CXX11_RVALUE_REFERENCES
   159  #  define BOOST_NO_CXX11_SCOPED_ENUMS
   160  #  define BOOST_NO_CXX11_STATIC_ASSERT
   161  #else
   162  #  define BOOST_HAS_ALIGNOF
   163  #  define BOOST_HAS_CHAR16_T
   164  #  define BOOST_HAS_CHAR32_T
   165  #  define BOOST_HAS_DECLTYPE
   166  #  define BOOST_HAS_EXPLICIT_CONVERSION_OPS
   167  #  define BOOST_HAS_REF_QUALIFIER
   168  #  define BOOST_HAS_RVALUE_REFS
   169  #  define BOOST_HAS_STATIC_ASSERT
   170  #endif
   171  
   172  #define BOOST_NO_CXX11_AUTO_DECLARATIONS
   173  #define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
   174  #define BOOST_NO_CXX11_CONSTEXPR
   175  #define BOOST_NO_CXX11_DECLTYPE_N3276
   176  #define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
   177  #define BOOST_NO_CXX11_DEFAULTED_MOVES
   178  #define BOOST_NO_CXX11_DELETED_FUNCTIONS
   179  #define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
   180  #define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
   181  #define BOOST_NO_CXX11_LAMBDAS
   182  #define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
   183  #define BOOST_NO_CXX11_NULLPTR
   184  #define BOOST_NO_CXX11_RANGE_BASED_FOR
   185  #define BOOST_NO_CXX11_RAW_LITERALS
   186  #define BOOST_NO_CXX11_RVALUE_REFERENCES
   187  #define BOOST_NO_CXX11_SCOPED_ENUMS
   188  #define BOOST_NO_SFINAE_EXPR
   189  #define BOOST_NO_CXX11_SFINAE_EXPR
   190  #define BOOST_NO_CXX11_TEMPLATE_ALIASES
   191  #define BOOST_NO_CXX11_UNICODE_LITERALS    // UTF-8 still not supported
   192  #define BOOST_NO_CXX11_VARIADIC_TEMPLATES
   193  #define BOOST_NO_CXX11_NOEXCEPT
   194  #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
   195  #define BOOST_NO_CXX11_USER_DEFINED_LITERALS
   196  #define BOOST_NO_CXX11_ALIGNAS
   197  #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
   198  #define BOOST_NO_CXX11_INLINE_NAMESPACES
   199  #define BOOST_NO_CXX11_REF_QUALIFIERS
   200  #define BOOST_NO_CXX11_FINAL
   201  #define BOOST_NO_CXX11_THREAD_LOCAL
   202  
   203  // C++ 14:
   204  #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
   205  #  define BOOST_NO_CXX14_AGGREGATE_NSDMI
   206  #endif
   207  #if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
   208  #  define BOOST_NO_CXX14_BINARY_LITERALS
   209  #endif
   210  #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
   211  #  define BOOST_NO_CXX14_CONSTEXPR
   212  #endif
   213  #if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
   214  #  define BOOST_NO_CXX14_DECLTYPE_AUTO
   215  #endif
   216  #if (__cplusplus < 201304) // There's no SD6 check for this....
   217  #  define BOOST_NO_CXX14_DIGIT_SEPARATORS
   218  #endif
   219  #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
   220  #  define BOOST_NO_CXX14_GENERIC_LAMBDAS
   221  #endif
   222  #if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
   223  #  define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
   224  #endif
   225  #if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
   226  #  define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
   227  #endif
   228  #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
   229  #  define BOOST_NO_CXX14_VARIABLE_TEMPLATES
   230  #endif
   231  
   232  // C++17
   233  #if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
   234  #  define BOOST_NO_CXX17_STRUCTURED_BINDINGS
   235  #endif
   236  #if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
   237  #  define BOOST_NO_CXX17_INLINE_VARIABLES
   238  #endif
   239  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
   240  #  define BOOST_NO_CXX17_FOLD_EXPRESSIONS
   241  #endif
   242  #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
   243  #  define BOOST_NO_CXX17_IF_CONSTEXPR
   244  #endif
   245  
   246  #if __BORLANDC__ >= 0x590
   247  #  define BOOST_HAS_TR1_HASH
   248  
   249  #  define BOOST_HAS_MACRO_USE_FACET
   250  #endif
   251  
   252  //
   253  // Post 0x561 we have long long and stdint.h:
   254  #if __BORLANDC__ >= 0x561
   255  #  ifndef __NO_LONG_LONG
   256  #     define BOOST_HAS_LONG_LONG
   257  #  else
   258  #     define BOOST_NO_LONG_LONG
   259  #  endif
   260     // On non-Win32 platforms let the platform config figure this out:
   261  #  ifdef _WIN32
   262  #      define BOOST_HAS_STDINT_H
   263  #  endif
   264  #endif
   265  
   266  // Borland C++Builder 6 defaults to using STLPort.  If _USE_OLD_RW_STL is
   267  // defined, then we have 0x560 or greater with the Rogue Wave implementation
   268  // which presumably has the std::DBL_MAX bug.
   269  #if defined( BOOST_BCB_WITH_ROGUE_WAVE )
   270  // <climits> is partly broken, some macros define symbols that are really in
   271  // namespace std, so you end up having to use illegal constructs like
   272  // std::DBL_MAX, as a fix we'll just include float.h and have done with:
   273  #include <float.h>
   274  #endif
   275  //
   276  // __int64:
   277  //
   278  #if (__BORLANDC__ >= 0x530) && !defined(__STRICT_ANSI__)
   279  #  define BOOST_HAS_MS_INT64
   280  #endif
   281  //
   282  // check for exception handling support:
   283  //
   284  #if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
   285  #  define BOOST_NO_EXCEPTIONS
   286  #endif
   287  //
   288  // all versions have a <dirent.h>:
   289  //
   290  #ifndef __STRICT_ANSI__
   291  #  define BOOST_HAS_DIRENT_H
   292  #endif
   293  //
   294  // all versions support __declspec:
   295  //
   296  #if defined(__STRICT_ANSI__)
   297  // config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
   298  #  define BOOST_SYMBOL_EXPORT
   299  #endif
   300  //
   301  // ABI fixing headers:
   302  //
   303  #if __BORLANDC__ != 0x600 // not implemented for version 6 compiler yet
   304  #ifndef BOOST_ABI_PREFIX
   305  #  define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
   306  #endif
   307  #ifndef BOOST_ABI_SUFFIX
   308  #  define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
   309  #endif
   310  #endif
   311  //
   312  // Disable Win32 support in ANSI mode:
   313  //
   314  #if __BORLANDC__ < 0x600
   315  #  pragma defineonoption BOOST_DISABLE_WIN32 -A
   316  #elif defined(__STRICT_ANSI__)
   317  #  define BOOST_DISABLE_WIN32
   318  #endif
   319  //
   320  // MSVC compatibility mode does some nasty things:
   321  // TODO: look up if this doesn't apply to the whole 12xx range
   322  //
   323  #if defined(_MSC_VER) && (_MSC_VER <= 1200)
   324  #  define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
   325  #  define BOOST_NO_VOID_RETURNS
   326  #endif
   327  
   328  // Borland did not implement value-initialization completely, as I reported
   329  // in 2007, Borland Report 51854, "Value-initialization: POD struct should be
   330  // zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854
   331  // See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
   332  // (Niels Dekker, LKEB, April 2010)
   333  #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
   334  
   335  #define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)