ttg 1.0.0
Template Task Graph (TTG): flowgraph-based programming model for high-performance distributed-memory algorithms
Loading...
Searching...
No Matches
config.hpp
Go to the documentation of this file.
1/*
2@Copyright Barrett Adair 2016-2017
3
4Distributed under the Boost Software License, Version 1.0.
5(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
6
7*/
8
9#ifndef BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP
10#define BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP
11
12#include <type_traits>
13#include <tuple>
14#include <utility>
15#include <cstdint>
16
17#define BOOST_CLBL_TRTS_EMPTY_
18#define BOOST_CLBL_TRTS_EMPTY BOOST_CLBL_TRTS_EMPTY_
19
20#ifdef __cpp_transactional_memory
21# define BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
22#endif
23
24#ifdef __cpp_inline_variables
25# define BOOST_CLBL_TRAITS_INLINE_VAR inline
26#else
27# define BOOST_CLBL_TRAITS_INLINE_VAR
28#endif
29
30#ifdef __cpp_noexcept_function_type
31# define BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
32#endif
33
34#ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
35# define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER transaction_safe
36#else
37# define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER
38#endif
39
40#ifndef __clang__
41# if defined(__GNUC__)
42# define BOOST_CLBL_TRTS_GCC
43# if __GNUC__ >= 6
44# define BOOST_CLBL_TRTS_GCC_AT_LEAST_6_0_0
45# endif
46# if __GNUC__ < 5
47# define BOOST_CLBL_TRTS_GCC_OLDER_THAN_5_0_0
48# endif
49# if __GNUC__ >= 5
50# define BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2
51# elif __GNUC__ == 4 && __GNUC_MINOR__ == 9 && __GNUC_PATCHLEVEL__ >= 2
52# define BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2
53# else
54# define BOOST_CLBL_TRTS_GCC_OLDER_THAN_4_9_2
55# endif //#if __GNUC__ >= 5
56# endif //#if defined __GNUC__
57#endif // #ifndef __clang__
58
59#ifdef _MSC_VER
60# ifdef __clang__
61# define BOOST_CLBL_TRTS_CLANG_C2
62# else
63# define BOOST_CLBL_TRTS_MSVC
64# endif // #ifdef __clang__
65#endif // #ifdef _MSC_VER
66
67#define BOOST_CLBL_TRTS_IX_SEQ(...) ::std::index_sequence< __VA_ARGS__ >
68#define BOOST_CLBL_TRTS_MAKE_IX_SEQ(...) ::std::make_index_sequence< __VA_ARGS__ >
69#define BOOST_CLBL_TRTS_DISJUNCTION(...) ::std::disjunction< __VA_ARGS__ >
70
71#ifndef __cpp_variable_templates
72# define BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES
73#endif
74
75#ifndef __cpp_lib_logical_traits
77#endif //__cpp_lib_logical_traits
78
79#ifndef __cpp_lib_integer_sequence
81#endif // __cpp_lib_integer_sequence
82
83#if defined(BOOST_CLBL_TRTS_MSVC) && !defined(BOOST_DISABLE_WIN32)
84# define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC __cdecl
85# define BOOST_CLBL_TRTS_PMF_VARGARGS_CDECL_DEFAULT
86#else
87# define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
88#endif // #if defined(BOOST_CLBL_TRTS_MSVC) && !defined(BOOST_DISABLE_WIN32))
89
90#if (defined(BOOST_CLBL_TRTS_GCC) && !defined(BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2)) || defined(__INTEL_COMPILER)
91# define BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS
92# define BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
93#endif // #if defined BOOST_CLBL_TRTS_GCC && !defined(BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2)
94
95#ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
96# define BOOST_CLBL_TRTS_ABOMINABLE_CONST BOOST_CLBL_TRTS_EMPTY
97# define BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE BOOST_CLBL_TRTS_EMPTY
98#else
99# define BOOST_CLBL_TRTS_ABOMINABLE_CONST const
100# define BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE volatile
101#endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
102
103#ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
104# define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER noexcept
105#else
106# define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER BOOST_CLBL_TRTS_EMPTY
107#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES
108
109#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP