1// -*- C++ -*- 2//===----------------------------------------------------------------------===// 3// 4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5// See https://llvm.org/LICENSE.txt for license information. 6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7// 8//===----------------------------------------------------------------------===// 9 10export namespace std { 11 12 // [atomics.order], order and consistency 13 using std::memory_order; 14 using std::memory_order_acq_rel; 15 using std::memory_order_acquire; 16 using std::memory_order_consume; 17 using std::memory_order_relaxed; 18 using std::memory_order_release; 19 using std::memory_order_seq_cst; 20 21 using std::kill_dependency; 22 23 // [atomics.ref.generic], class template atomic_ref 24 // [atomics.ref.pointer], partial specialization for pointers 25 // using std::atomic_ref; 26 27 // [atomics.types.generic], class template atomic 28 using std::atomic; 29 30 // [atomics.nonmembers], non-member functions 31 using std::atomic_compare_exchange_strong; 32 using std::atomic_compare_exchange_strong_explicit; 33 using std::atomic_compare_exchange_weak; 34 using std::atomic_compare_exchange_weak_explicit; 35 using std::atomic_exchange; 36 using std::atomic_exchange_explicit; 37 using std::atomic_is_lock_free; 38 using std::atomic_load; 39 using std::atomic_load_explicit; 40 using std::atomic_store; 41 using std::atomic_store_explicit; 42 43 using std::atomic_fetch_add; 44 using std::atomic_fetch_add_explicit; 45 using std::atomic_fetch_and; 46 using std::atomic_fetch_and_explicit; 47 using std::atomic_fetch_or; 48 using std::atomic_fetch_or_explicit; 49 using std::atomic_fetch_sub; 50 using std::atomic_fetch_sub_explicit; 51 using std::atomic_fetch_xor; 52 using std::atomic_fetch_xor_explicit; 53 using std::atomic_notify_all; 54 using std::atomic_notify_one; 55 using std::atomic_wait; 56 using std::atomic_wait_explicit; 57 58 // [atomics.alias], type aliases 59 using std::atomic_bool; 60 using std::atomic_char; 61 using std::atomic_char16_t; 62 using std::atomic_char32_t; 63#ifndef _LIBCPP_HAS_NO_CHAR8_T 64 using std::atomic_char8_t; 65#endif 66 using std::atomic_int; 67 using std::atomic_llong; 68 using std::atomic_long; 69 using std::atomic_schar; 70 using std::atomic_short; 71 using std::atomic_uchar; 72 using std::atomic_uint; 73 using std::atomic_ullong; 74 using std::atomic_ulong; 75 using std::atomic_ushort; 76#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 77 using std::atomic_wchar_t; 78#endif 79 80 using std::atomic_int16_t; 81 using std::atomic_int32_t; 82 using std::atomic_int64_t; 83 using std::atomic_int8_t; 84 using std::atomic_uint16_t; 85 using std::atomic_uint32_t; 86 using std::atomic_uint64_t; 87 using std::atomic_uint8_t; 88 89 using std::atomic_int_least16_t; 90 using std::atomic_int_least32_t; 91 using std::atomic_int_least64_t; 92 using std::atomic_int_least8_t; 93 using std::atomic_uint_least16_t; 94 using std::atomic_uint_least32_t; 95 using std::atomic_uint_least64_t; 96 using std::atomic_uint_least8_t; 97 98 using std::atomic_int_fast16_t; 99 using std::atomic_int_fast32_t; 100 using std::atomic_int_fast64_t; 101 using std::atomic_int_fast8_t; 102 using std::atomic_uint_fast16_t; 103 using std::atomic_uint_fast32_t; 104 using std::atomic_uint_fast64_t; 105 using std::atomic_uint_fast8_t; 106 107 using std::atomic_intmax_t; 108 using std::atomic_intptr_t; 109 using std::atomic_ptrdiff_t; 110 using std::atomic_size_t; 111 using std::atomic_uintmax_t; 112 using std::atomic_uintptr_t; 113 114 using std::atomic_signed_lock_free; 115 using std::atomic_unsigned_lock_free; 116 117 // [atomics.flag], flag type and operations 118 using std::atomic_flag; 119 120 using std::atomic_flag_clear; 121 using std::atomic_flag_clear_explicit; 122 using std::atomic_flag_test; 123 using std::atomic_flag_test_and_set; 124 using std::atomic_flag_test_and_set_explicit; 125 using std::atomic_flag_test_explicit; 126 127 using std::atomic_flag_notify_all; 128 using std::atomic_flag_notify_one; 129 using std::atomic_flag_wait; 130 using std::atomic_flag_wait_explicit; 131 132 // [atomics.fences], fences 133 using std::atomic_signal_fence; 134 using std::atomic_thread_fence; 135 136 // [depr.atomics.nonmembers] 137 using std::atomic_init; 138 139} // namespace std 140