comparison DEPENDENCIES/generic/include/boost/atomic/capabilities.hpp @ 102:f46d142149f5

Whoops, finish that update
author Chris Cannam
date Mon, 07 Sep 2015 11:13:41 +0100
parents
children
comparison
equal deleted inserted replaced
101:c530137014c0 102:f46d142149f5
1 /*
2 * Distributed under the Boost Software License, Version 1.0.
3 * (See accompanying file LICENSE_1_0.txt or copy at
4 * http://www.boost.org/LICENSE_1_0.txt)
5 *
6 * Copyright (c) 2014 Andrey Semashev
7 */
8 /*!
9 * \file atomic/capabilities.hpp
10 *
11 * This header defines feature capabilities macros.
12 */
13
14 #ifndef BOOST_ATOMIC_CAPABILITIES_HPP_INCLUDED_
15 #define BOOST_ATOMIC_CAPABILITIES_HPP_INCLUDED_
16
17 #include <boost/atomic/detail/config.hpp>
18 #include <boost/atomic/detail/platform.hpp>
19 #include <boost/atomic/detail/int_sizes.hpp>
20
21 #if !defined(BOOST_ATOMIC_EMULATED)
22 #include BOOST_ATOMIC_DETAIL_HEADER(boost/atomic/detail/caps_)
23 #endif
24
25 #ifdef BOOST_HAS_PRAGMA_ONCE
26 #pragma once
27 #endif
28
29 #ifndef BOOST_ATOMIC_INT8_LOCK_FREE
30 #define BOOST_ATOMIC_INT8_LOCK_FREE 0
31 #endif
32
33 #ifndef BOOST_ATOMIC_INT16_LOCK_FREE
34 #define BOOST_ATOMIC_INT16_LOCK_FREE 0
35 #endif
36
37 #ifndef BOOST_ATOMIC_INT32_LOCK_FREE
38 #define BOOST_ATOMIC_INT32_LOCK_FREE 0
39 #endif
40
41 #ifndef BOOST_ATOMIC_INT64_LOCK_FREE
42 #define BOOST_ATOMIC_INT64_LOCK_FREE 0
43 #endif
44
45 #ifndef BOOST_ATOMIC_INT128_LOCK_FREE
46 #define BOOST_ATOMIC_INT128_LOCK_FREE 0
47 #endif
48
49
50 #ifndef BOOST_ATOMIC_CHAR_LOCK_FREE
51 #define BOOST_ATOMIC_CHAR_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE
52 #endif
53
54 #ifndef BOOST_ATOMIC_CHAR16_T_LOCK_FREE
55 #define BOOST_ATOMIC_CHAR16_T_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE
56 #endif
57
58 #ifndef BOOST_ATOMIC_CHAR32_T_LOCK_FREE
59 #define BOOST_ATOMIC_CHAR32_T_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE
60 #endif
61
62 #ifndef BOOST_ATOMIC_WCHAR_T_LOCK_FREE
63 #if BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 1
64 #define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE
65 #elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 2
66 #define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE
67 #elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 4
68 #define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE
69 #elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 8
70 #define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE
71 #else
72 #define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 0
73 #endif
74 #endif
75
76 #ifndef BOOST_ATOMIC_SHORT_LOCK_FREE
77 #if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 1
78 #define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE
79 #elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 2
80 #define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE
81 #elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 4
82 #define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE
83 #elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 8
84 #define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE
85 #else
86 #define BOOST_ATOMIC_SHORT_LOCK_FREE 0
87 #endif
88 #endif
89
90 #ifndef BOOST_ATOMIC_INT_LOCK_FREE
91 #if BOOST_ATOMIC_DETAIL_SIZEOF_INT == 1
92 #define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE
93 #elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 2
94 #define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE
95 #elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 4
96 #define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE
97 #elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 8
98 #define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE
99 #else
100 #define BOOST_ATOMIC_INT_LOCK_FREE 0
101 #endif
102 #endif
103
104 #ifndef BOOST_ATOMIC_LONG_LOCK_FREE
105 #if BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 1
106 #define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE
107 #elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 2
108 #define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE
109 #elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 4
110 #define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE
111 #elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 8
112 #define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE
113 #else
114 #define BOOST_ATOMIC_LONG_LOCK_FREE 0
115 #endif
116 #endif
117
118 #ifndef BOOST_ATOMIC_LLONG_LOCK_FREE
119 #if BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 1
120 #define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE
121 #elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 2
122 #define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE
123 #elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 4
124 #define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE
125 #elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 8
126 #define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE
127 #else
128 #define BOOST_ATOMIC_LLONG_LOCK_FREE 0
129 #endif
130 #endif
131
132 #ifndef BOOST_ATOMIC_POINTER_LOCK_FREE
133 #if (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER + 0) == 8
134 #define BOOST_ATOMIC_POINTER_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE
135 #elif (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER + 0) == 4
136 #define BOOST_ATOMIC_POINTER_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE
137 #else
138 #define BOOST_ATOMIC_POINTER_LOCK_FREE 0
139 #endif
140 #endif
141
142 #define BOOST_ATOMIC_ADDRESS_LOCK_FREE BOOST_ATOMIC_POINTER_LOCK_FREE
143
144 #ifndef BOOST_ATOMIC_BOOL_LOCK_FREE
145 // We store bools in 1-byte storage in all backends
146 #define BOOST_ATOMIC_BOOL_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE
147 #endif
148
149 #ifndef BOOST_ATOMIC_FLAG_LOCK_FREE
150 #define BOOST_ATOMIC_FLAG_LOCK_FREE BOOST_ATOMIC_BOOL_LOCK_FREE
151 #endif
152
153 #ifndef BOOST_ATOMIC_THREAD_FENCE
154 #define BOOST_ATOMIC_THREAD_FENCE 0
155 #endif
156
157 #ifndef BOOST_ATOMIC_SIGNAL_FENCE
158 #define BOOST_ATOMIC_SIGNAL_FENCE 0
159 #endif
160
161 #endif // BOOST_ATOMIC_CAPABILITIES_HPP_INCLUDED_