
This adds the cppm files of D144994. These files by themselves will do nothing. The goal is to reduce the size of D144994 and making it easier to review the real changes of the patch. Implements parts of - P2465R3 Standard Library Modules std and std.compat Reviewed By: ldionne, ChuanqiXu, aaronmondal, #libc Differential Revision: https://reviews.llvm.org/D151030
145 lines
4.1 KiB
C++
145 lines
4.1 KiB
C++
// -*- C++ -*-
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
module;
|
|
#include <atomic>
|
|
|
|
export module std:atomic;
|
|
export namespace std {
|
|
|
|
// [atomics.order], order and consistency
|
|
using std::memory_order;
|
|
using std::memory_order_acq_rel;
|
|
using std::memory_order_acquire;
|
|
using std::memory_order_consume;
|
|
using std::memory_order_relaxed;
|
|
using std::memory_order_release;
|
|
using std::memory_order_seq_cst;
|
|
|
|
using std::kill_dependency;
|
|
} // namespace std
|
|
|
|
namespace std {
|
|
|
|
// [atomics.ref.generic], class template atomic_ref
|
|
// [atomics.ref.pointer], partial specialization for pointers
|
|
// using std::atomic_ref;
|
|
|
|
// [atomics.types.generic], class template atomic
|
|
using std::atomic;
|
|
|
|
// [atomics.nonmembers], non-member functions
|
|
using std::atomic_compare_exchange_strong;
|
|
using std::atomic_compare_exchange_strong_explicit;
|
|
using std::atomic_compare_exchange_weak;
|
|
using std::atomic_compare_exchange_weak_explicit;
|
|
using std::atomic_exchange;
|
|
using std::atomic_exchange_explicit;
|
|
using std::atomic_is_lock_free;
|
|
using std::atomic_load;
|
|
using std::atomic_load_explicit;
|
|
using std::atomic_store;
|
|
using std::atomic_store_explicit;
|
|
|
|
using std::atomic_fetch_add;
|
|
using std::atomic_fetch_add_explicit;
|
|
using std::atomic_fetch_and;
|
|
using std::atomic_fetch_and_explicit;
|
|
using std::atomic_fetch_or;
|
|
using std::atomic_fetch_or_explicit;
|
|
using std::atomic_fetch_sub;
|
|
using std::atomic_fetch_sub_explicit;
|
|
using std::atomic_fetch_xor;
|
|
using std::atomic_fetch_xor_explicit;
|
|
using std::atomic_notify_all;
|
|
using std::atomic_notify_one;
|
|
using std::atomic_wait;
|
|
using std::atomic_wait_explicit;
|
|
|
|
// [atomics.alias], type aliases
|
|
using std::atomic_bool;
|
|
using std::atomic_char;
|
|
using std::atomic_char16_t;
|
|
using std::atomic_char32_t;
|
|
using std::atomic_char8_t;
|
|
using std::atomic_int;
|
|
using std::atomic_llong;
|
|
using std::atomic_long;
|
|
using std::atomic_schar;
|
|
using std::atomic_short;
|
|
using std::atomic_uchar;
|
|
using std::atomic_uint;
|
|
using std::atomic_ullong;
|
|
using std::atomic_ulong;
|
|
using std::atomic_ushort;
|
|
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
|
|
using std::atomic_wchar_t;
|
|
#endif
|
|
|
|
using std::atomic_int16_t;
|
|
using std::atomic_int32_t;
|
|
using std::atomic_int64_t;
|
|
using std::atomic_int8_t;
|
|
using std::atomic_uint16_t;
|
|
using std::atomic_uint32_t;
|
|
using std::atomic_uint64_t;
|
|
using std::atomic_uint8_t;
|
|
|
|
using std::atomic_int_least16_t;
|
|
using std::atomic_int_least32_t;
|
|
using std::atomic_int_least64_t;
|
|
using std::atomic_int_least8_t;
|
|
using std::atomic_uint_least16_t;
|
|
using std::atomic_uint_least32_t;
|
|
using std::atomic_uint_least64_t;
|
|
using std::atomic_uint_least8_t;
|
|
|
|
using std::atomic_int_fast16_t;
|
|
using std::atomic_int_fast32_t;
|
|
using std::atomic_int_fast64_t;
|
|
using std::atomic_int_fast8_t;
|
|
using std::atomic_uint_fast16_t;
|
|
using std::atomic_uint_fast32_t;
|
|
using std::atomic_uint_fast64_t;
|
|
using std::atomic_uint_fast8_t;
|
|
|
|
using std::atomic_intmax_t;
|
|
using std::atomic_intptr_t;
|
|
using std::atomic_ptrdiff_t;
|
|
using std::atomic_size_t;
|
|
using std::atomic_uintmax_t;
|
|
using std::atomic_uintptr_t;
|
|
|
|
using std::atomic_signed_lock_free;
|
|
using std::atomic_unsigned_lock_free;
|
|
|
|
// [atomics.flag], flag type and operations
|
|
using std::atomic_flag;
|
|
|
|
using std::atomic_flag_clear;
|
|
using std::atomic_flag_clear_explicit;
|
|
using std::atomic_flag_test;
|
|
using std::atomic_flag_test_and_set;
|
|
using std::atomic_flag_test_and_set_explicit;
|
|
using std::atomic_flag_test_explicit;
|
|
|
|
using std::atomic_flag_notify_all;
|
|
using std::atomic_flag_notify_one;
|
|
using std::atomic_flag_wait;
|
|
using std::atomic_flag_wait_explicit;
|
|
|
|
// [atomics.fences], fences
|
|
using std::atomic_signal_fence;
|
|
using std::atomic_thread_fence;
|
|
|
|
// [depr.atomics.nonmembers]
|
|
using std::atomic_init;
|
|
|
|
} // namespace std
|