Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 09:34:23

0001 /*
0002 @Copyright Barrett Adair 2016-2021
0003 
0004 Distributed under the Boost Software License, Version 1.0.
0005 (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
0006 
0007 */
0008 
0009 #ifndef BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP
0010 #define BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP
0011 
0012 #include <type_traits>
0013 #include <tuple>
0014 #include <utility>
0015 #include <cstdint>
0016 
0017 #define BOOST_CLBL_TRTS_EMPTY_
0018 #define BOOST_CLBL_TRTS_EMPTY BOOST_CLBL_TRTS_EMPTY_
0019 
0020 #ifdef __cpp_transactional_memory
0021 # define BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
0022 #endif
0023 
0024 #ifdef __cpp_inline_variables
0025 # define BOOST_CLBL_TRAITS_INLINE_VAR inline
0026 #else
0027 # define BOOST_CLBL_TRAITS_INLINE_VAR
0028 #endif
0029 
0030 #ifdef __cpp_noexcept_function_type
0031 # define BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
0032 #endif
0033 
0034 #ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
0035 #  define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER transaction_safe
0036 #else
0037 #  define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER
0038 #endif
0039 
0040 #ifndef __clang__
0041 #  if defined(__GNUC__)
0042 #    define BOOST_CLBL_TRTS_GCC
0043 #    if __GNUC__ >= 6
0044 #        define BOOST_CLBL_TRTS_GCC_AT_LEAST_6_0_0
0045 #    endif
0046 #    if __GNUC__ < 5
0047 #        define BOOST_CLBL_TRTS_GCC_OLDER_THAN_5_0_0
0048 #    endif
0049 #    if __GNUC__ >= 5
0050 #      define BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2
0051 #    elif __GNUC__ == 4 && __GNUC_MINOR__ == 9 && __GNUC_PATCHLEVEL__ >= 2
0052 #      define BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2
0053 #    else
0054 #      define BOOST_CLBL_TRTS_GCC_OLDER_THAN_4_9_2
0055 #    endif //#if __GNUC__ >= 5
0056 #  endif //#if defined __GNUC__
0057 #endif // #ifndef __clang__
0058 
0059 #ifdef _MSC_VER
0060 #  if !defined( __clang__ )
0061 #    define BOOST_CLBL_TRTS_MSVC
0062 #    if _MSC_VER < 1920
0063 #      define BOOST_CLBL_TRTS_OLD_MSVC
0064 #    endif // #if _MSC_VER < 1920
0065 #  endif // #if !defined( __clang__ )
0066 #endif // #ifdef _MSC_VER
0067 
0068 #define BOOST_CLBL_TRTS_IX_SEQ(...) ::std::index_sequence< __VA_ARGS__ >
0069 #define BOOST_CLBL_TRTS_MAKE_IX_SEQ(...) ::std::make_index_sequence< __VA_ARGS__ >
0070 #define BOOST_CLBL_TRTS_DISJUNCTION(...) ::std::disjunction< __VA_ARGS__ >
0071 
0072 #ifndef __cpp_variable_templates
0073 #  define BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES
0074 #endif
0075 
0076 #ifndef __cpp_lib_logical_traits
0077 #  include <boost/callable_traits/detail/polyfills/disjunction.hpp>
0078 #endif //__cpp_lib_logical_traits
0079 
0080 #ifndef __cpp_lib_integer_sequence
0081 #  include <boost/callable_traits/detail/polyfills/make_index_sequence.hpp>
0082 #endif // __cpp_lib_integer_sequence
0083 
0084 #if defined(BOOST_CLBL_TRTS_MSVC) && !defined(BOOST_DISABLE_WIN32)
0085 #  define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC __cdecl
0086 #  define BOOST_CLBL_TRTS_PMF_VARGARGS_CDECL_DEFAULT
0087 #else
0088 #  define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
0089 #endif // #if defined(BOOST_CLBL_TRTS_MSVC) && !defined(BOOST_DISABLE_WIN32))
0090 
0091 #if (defined(BOOST_CLBL_TRTS_GCC) && !defined(BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2)) || defined(__INTEL_COMPILER)
0092 #  define BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS
0093 #  define BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
0094 #endif // #if defined BOOST_CLBL_TRTS_GCC && !defined(BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2)
0095 
0096 #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
0097 #  define BOOST_CLBL_TRTS_ABOMINABLE_CONST BOOST_CLBL_TRTS_EMPTY
0098 #  define BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE BOOST_CLBL_TRTS_EMPTY
0099 #else
0100 #  define BOOST_CLBL_TRTS_ABOMINABLE_CONST const
0101 #  define BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE volatile
0102 #endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
0103 
0104 #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
0105 #  define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER noexcept
0106 #else
0107 #  define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER BOOST_CLBL_TRTS_EMPTY
0108 #endif // #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
0109 
0110 #endif // #ifndef BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP