github.com/searKing/golang/go@v1.2.117/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_ALIGNOF
   198  #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
   199  #define BOOST_NO_CXX11_INLINE_NAMESPACES
   200  #define BOOST_NO_CXX11_REF_QUALIFIERS
   201  #define BOOST_NO_CXX11_FINAL
   202  #define BOOST_NO_CXX11_OVERRIDE
   203  #define BOOST_NO_CXX11_THREAD_LOCAL
   204  #define BOOST_NO_CXX11_UNRESTRICTED_UNION
   205  
   206  // C++ 14:
   207  #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
   208  #  define BOOST_NO_CXX14_AGGREGATE_NSDMI
   209  #endif
   210  #if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
   211  #  define BOOST_NO_CXX14_BINARY_LITERALS
   212  #endif
   213  #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
   214  #  define BOOST_NO_CXX14_CONSTEXPR
   215  #endif
   216  #if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
   217  #  define BOOST_NO_CXX14_DECLTYPE_AUTO
   218  #endif
   219  #if (__cplusplus < 201304) // There's no SD6 check for this....
   220  #  define BOOST_NO_CXX14_DIGIT_SEPARATORS
   221  #endif
   222  #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
   223  #  define BOOST_NO_CXX14_GENERIC_LAMBDAS
   224  #endif
   225  #if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
   226  #  define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
   227  #endif
   228  #if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
   229  #  define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
   230  #endif
   231  #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
   232  #  define BOOST_NO_CXX14_VARIABLE_TEMPLATES
   233  #endif
   234  
   235  // C++17
   236  #if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
   237  #  define BOOST_NO_CXX17_STRUCTURED_BINDINGS
   238  #endif
   239  #if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
   240  #  define BOOST_NO_CXX17_INLINE_VARIABLES
   241  #endif
   242  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
   243  #  define BOOST_NO_CXX17_FOLD_EXPRESSIONS
   244  #endif
   245  #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
   246  #  define BOOST_NO_CXX17_IF_CONSTEXPR
   247  #endif
   248  
   249  #if __BORLANDC__ >= 0x590
   250  #  define BOOST_HAS_TR1_HASH
   251  
   252  #  define BOOST_HAS_MACRO_USE_FACET
   253  #endif
   254  
   255  //
   256  // Post 0x561 we have long long and stdint.h:
   257  #if __BORLANDC__ >= 0x561
   258  #  ifndef __NO_LONG_LONG
   259  #     define BOOST_HAS_LONG_LONG
   260  #  else
   261  #     define BOOST_NO_LONG_LONG
   262  #  endif
   263     // On non-Win32 platforms let the platform config figure this out:
   264  #  ifdef _WIN32
   265  #      define BOOST_HAS_STDINT_H
   266  #  endif
   267  #endif
   268  
   269  // Borland C++Builder 6 defaults to using STLPort.  If _USE_OLD_RW_STL is
   270  // defined, then we have 0x560 or greater with the Rogue Wave implementation
   271  // which presumably has the std::DBL_MAX bug.
   272  #if defined( BOOST_BCB_WITH_ROGUE_WAVE )
   273  // <climits> is partly broken, some macros define symbols that are really in
   274  // namespace std, so you end up having to use illegal constructs like
   275  // std::DBL_MAX, as a fix we'll just include float.h and have done with:
   276  #include <float.h>
   277  #endif
   278  //
   279  // __int64:
   280  //
   281  #if (__BORLANDC__ >= 0x530) && !defined(__STRICT_ANSI__)
   282  #  define BOOST_HAS_MS_INT64
   283  #endif
   284  //
   285  // check for exception handling support:
   286  //
   287  #if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
   288  #  define BOOST_NO_EXCEPTIONS
   289  #endif
   290  //
   291  // all versions have a <dirent.h>:
   292  //
   293  #ifndef __STRICT_ANSI__
   294  #  define BOOST_HAS_DIRENT_H
   295  #endif
   296  //
   297  // all versions support __declspec:
   298  //
   299  #if defined(__STRICT_ANSI__)
   300  // config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
   301  #  define BOOST_SYMBOL_EXPORT
   302  #endif
   303  //
   304  // ABI fixing headers:
   305  //
   306  #if __BORLANDC__ != 0x600 // not implemented for version 6 compiler yet
   307  #ifndef BOOST_ABI_PREFIX
   308  #  define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
   309  #endif
   310  #ifndef BOOST_ABI_SUFFIX
   311  #  define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
   312  #endif
   313  #endif
   314  //
   315  // Disable Win32 support in ANSI mode:
   316  //
   317  #if __BORLANDC__ < 0x600
   318  #  pragma defineonoption BOOST_DISABLE_WIN32 -A
   319  #elif defined(__STRICT_ANSI__)
   320  #  define BOOST_DISABLE_WIN32
   321  #endif
   322  //
   323  // MSVC compatibility mode does some nasty things:
   324  // TODO: look up if this doesn't apply to the whole 12xx range
   325  //
   326  #if defined(_MSC_VER) && (_MSC_VER <= 1200)
   327  #  define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
   328  #  define BOOST_NO_VOID_RETURNS
   329  #endif
   330  
   331  // Borland did not implement value-initialization completely, as I reported
   332  // in 2007, Borland Report 51854, "Value-initialization: POD struct should be
   333  // zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854
   334  // See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
   335  // (Niels Dekker, LKEB, April 2010)
   336  #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
   337  
   338  #define BOOST_BORLANDC __BORLANDC__
   339  #define BOOST_COMPILER "Classic Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)