File indexing completed on 2026-05-03 08:14:08
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef _LIBCPP_STDATOMIC_H
0011 #define _LIBCPP_STDATOMIC_H
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120 #if defined(__cplusplus) && __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
0121 # include <__cxx03/stdatomic.h>
0122 #else
0123 # include <__config>
0124
0125 # if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
0126 # pragma GCC system_header
0127 # endif
0128
0129 # if defined(__cplusplus) && _LIBCPP_STD_VER >= 23
0130
0131 # include <atomic>
0132 # include <version>
0133
0134 # ifdef _Atomic
0135 # undef _Atomic
0136 # endif
0137
0138 # define _Atomic(_Tp) ::std::atomic<_Tp>
0139
0140 using std::memory_order _LIBCPP_USING_IF_EXISTS;
0141 using std::memory_order_relaxed _LIBCPP_USING_IF_EXISTS;
0142 using std::memory_order_consume _LIBCPP_USING_IF_EXISTS;
0143 using std::memory_order_acquire _LIBCPP_USING_IF_EXISTS;
0144 using std::memory_order_release _LIBCPP_USING_IF_EXISTS;
0145 using std::memory_order_acq_rel _LIBCPP_USING_IF_EXISTS;
0146 using std::memory_order_seq_cst _LIBCPP_USING_IF_EXISTS;
0147
0148 using std::atomic_flag _LIBCPP_USING_IF_EXISTS;
0149
0150 using std::atomic_bool _LIBCPP_USING_IF_EXISTS;
0151 using std::atomic_char _LIBCPP_USING_IF_EXISTS;
0152 using std::atomic_schar _LIBCPP_USING_IF_EXISTS;
0153 using std::atomic_uchar _LIBCPP_USING_IF_EXISTS;
0154 using std::atomic_short _LIBCPP_USING_IF_EXISTS;
0155 using std::atomic_ushort _LIBCPP_USING_IF_EXISTS;
0156 using std::atomic_int _LIBCPP_USING_IF_EXISTS;
0157 using std::atomic_uint _LIBCPP_USING_IF_EXISTS;
0158 using std::atomic_long _LIBCPP_USING_IF_EXISTS;
0159 using std::atomic_ulong _LIBCPP_USING_IF_EXISTS;
0160 using std::atomic_llong _LIBCPP_USING_IF_EXISTS;
0161 using std::atomic_ullong _LIBCPP_USING_IF_EXISTS;
0162 # if _LIBCPP_HAS_CHAR8_T
0163 using std::atomic_char8_t _LIBCPP_USING_IF_EXISTS;
0164 # endif
0165 using std::atomic_char16_t _LIBCPP_USING_IF_EXISTS;
0166 using std::atomic_char32_t _LIBCPP_USING_IF_EXISTS;
0167 # if _LIBCPP_HAS_WIDE_CHARACTERS
0168 using std::atomic_wchar_t _LIBCPP_USING_IF_EXISTS;
0169 # endif
0170
0171 using std::atomic_int8_t _LIBCPP_USING_IF_EXISTS;
0172 using std::atomic_uint8_t _LIBCPP_USING_IF_EXISTS;
0173 using std::atomic_int16_t _LIBCPP_USING_IF_EXISTS;
0174 using std::atomic_uint16_t _LIBCPP_USING_IF_EXISTS;
0175 using std::atomic_int32_t _LIBCPP_USING_IF_EXISTS;
0176 using std::atomic_uint32_t _LIBCPP_USING_IF_EXISTS;
0177 using std::atomic_int64_t _LIBCPP_USING_IF_EXISTS;
0178 using std::atomic_uint64_t _LIBCPP_USING_IF_EXISTS;
0179
0180 using std::atomic_int_least8_t _LIBCPP_USING_IF_EXISTS;
0181 using std::atomic_uint_least8_t _LIBCPP_USING_IF_EXISTS;
0182 using std::atomic_int_least16_t _LIBCPP_USING_IF_EXISTS;
0183 using std::atomic_uint_least16_t _LIBCPP_USING_IF_EXISTS;
0184 using std::atomic_int_least32_t _LIBCPP_USING_IF_EXISTS;
0185 using std::atomic_uint_least32_t _LIBCPP_USING_IF_EXISTS;
0186 using std::atomic_int_least64_t _LIBCPP_USING_IF_EXISTS;
0187 using std::atomic_uint_least64_t _LIBCPP_USING_IF_EXISTS;
0188
0189 using std::atomic_int_fast8_t _LIBCPP_USING_IF_EXISTS;
0190 using std::atomic_uint_fast8_t _LIBCPP_USING_IF_EXISTS;
0191 using std::atomic_int_fast16_t _LIBCPP_USING_IF_EXISTS;
0192 using std::atomic_uint_fast16_t _LIBCPP_USING_IF_EXISTS;
0193 using std::atomic_int_fast32_t _LIBCPP_USING_IF_EXISTS;
0194 using std::atomic_uint_fast32_t _LIBCPP_USING_IF_EXISTS;
0195 using std::atomic_int_fast64_t _LIBCPP_USING_IF_EXISTS;
0196 using std::atomic_uint_fast64_t _LIBCPP_USING_IF_EXISTS;
0197
0198 using std::atomic_intptr_t _LIBCPP_USING_IF_EXISTS;
0199 using std::atomic_uintptr_t _LIBCPP_USING_IF_EXISTS;
0200 using std::atomic_size_t _LIBCPP_USING_IF_EXISTS;
0201 using std::atomic_ptrdiff_t _LIBCPP_USING_IF_EXISTS;
0202 using std::atomic_intmax_t _LIBCPP_USING_IF_EXISTS;
0203 using std::atomic_uintmax_t _LIBCPP_USING_IF_EXISTS;
0204
0205 using std::atomic_compare_exchange_strong _LIBCPP_USING_IF_EXISTS;
0206 using std::atomic_compare_exchange_strong_explicit _LIBCPP_USING_IF_EXISTS;
0207 using std::atomic_compare_exchange_weak _LIBCPP_USING_IF_EXISTS;
0208 using std::atomic_compare_exchange_weak_explicit _LIBCPP_USING_IF_EXISTS;
0209 using std::atomic_exchange _LIBCPP_USING_IF_EXISTS;
0210 using std::atomic_exchange_explicit _LIBCPP_USING_IF_EXISTS;
0211 using std::atomic_fetch_add _LIBCPP_USING_IF_EXISTS;
0212 using std::atomic_fetch_add_explicit _LIBCPP_USING_IF_EXISTS;
0213 using std::atomic_fetch_and _LIBCPP_USING_IF_EXISTS;
0214 using std::atomic_fetch_and_explicit _LIBCPP_USING_IF_EXISTS;
0215 using std::atomic_fetch_or _LIBCPP_USING_IF_EXISTS;
0216 using std::atomic_fetch_xor_explicit _LIBCPP_USING_IF_EXISTS;
0217 using std::atomic_fetch_xor _LIBCPP_USING_IF_EXISTS;
0218 using std::atomic_fetch_or_explicit _LIBCPP_USING_IF_EXISTS;
0219 using std::atomic_fetch_sub _LIBCPP_USING_IF_EXISTS;
0220 using std::atomic_fetch_sub_explicit _LIBCPP_USING_IF_EXISTS;
0221 using std::atomic_flag_clear _LIBCPP_USING_IF_EXISTS;
0222 using std::atomic_flag_clear_explicit _LIBCPP_USING_IF_EXISTS;
0223 using std::atomic_flag_test_and_set _LIBCPP_USING_IF_EXISTS;
0224 using std::atomic_flag_test_and_set_explicit _LIBCPP_USING_IF_EXISTS;
0225 using std::atomic_is_lock_free _LIBCPP_USING_IF_EXISTS;
0226 using std::atomic_load _LIBCPP_USING_IF_EXISTS;
0227 using std::atomic_load_explicit _LIBCPP_USING_IF_EXISTS;
0228 using std::atomic_store _LIBCPP_USING_IF_EXISTS;
0229 using std::atomic_store_explicit _LIBCPP_USING_IF_EXISTS;
0230
0231 using std::atomic_signal_fence _LIBCPP_USING_IF_EXISTS;
0232 using std::atomic_thread_fence _LIBCPP_USING_IF_EXISTS;
0233
0234 # elif defined(_LIBCPP_COMPILER_CLANG_BASED)
0235
0236
0237
0238
0239
0240 # if __has_include_next(<stdatomic.h>)
0241 # include_next <stdatomic.h>
0242 # endif
0243
0244 # endif
0245 #endif
0246
0247 #endif