|
2405 | 2405 | }
|
2406 | 2406 |
|
2407 | 2407 | // \ref{atomics.lockfree}, lock-free property
|
2408 |
| -#define ATOMIC_BOOL_LOCK_FREE @\unspecnc@ // freestanding |
2409 |
| -#define ATOMIC_CHAR_LOCK_FREE @\unspecnc@ // freestanding |
2410 |
| -#define ATOMIC_CHAR8_T_LOCK_FREE @\unspecnc@ // freestanding |
2411 |
| -#define ATOMIC_CHAR16_T_LOCK_FREE @\unspecnc@ // freestanding |
2412 |
| -#define ATOMIC_CHAR32_T_LOCK_FREE @\unspecnc@ // freestanding |
2413 |
| -#define ATOMIC_WCHAR_T_LOCK_FREE @\unspecnc@ // freestanding |
2414 |
| -#define ATOMIC_SHORT_LOCK_FREE @\unspecnc@ // freestanding |
2415 |
| -#define ATOMIC_INT_LOCK_FREE @\unspecnc@ // freestanding |
2416 |
| -#define ATOMIC_LONG_LOCK_FREE @\unspecnc@ // freestanding |
2417 |
| -#define ATOMIC_LLONG_LOCK_FREE @\unspecnc@ // freestanding |
2418 |
| -#define ATOMIC_POINTER_LOCK_FREE @\unspecnc@ // freestanding |
| 2408 | +#define @\libmacro{ATOMIC_BOOL_LOCK_FREE}@ @\unspecnc@ // freestanding |
| 2409 | +#define @\libmacro{ATOMIC_CHAR_LOCK_FREE}@ @\unspecnc@ // freestanding |
| 2410 | +#define @\libmacro{ATOMIC_CHAR8_T_LOCK_FREE}@ @\unspecnc@ // freestanding |
| 2411 | +#define @\libmacro{ATOMIC_CHAR16_T_LOCK_FREE}@ @\unspecnc@ // freestanding |
| 2412 | +#define @\libmacro{ATOMIC_CHAR32_T_LOCK_FREE}@ @\unspecnc@ // freestanding |
| 2413 | +#define @\libmacro{ATOMIC_WCHAR_T_LOCK_FREE}@ @\unspecnc@ // freestanding |
| 2414 | +#define @\libmacro{ATOMIC_SHORT_LOCK_FREE}@ @\unspecnc@ // freestanding |
| 2415 | +#define @\libmacro{ATOMIC_INT_LOCK_FREE}@ @\unspecnc@ // freestanding |
| 2416 | +#define @\libmacro{ATOMIC_LONG_LOCK_FREE}@ @\unspecnc@ // freestanding |
| 2417 | +#define @\libmacro{ATOMIC_LLONG_LOCK_FREE}@ @\unspecnc@ // freestanding |
| 2418 | +#define @\libmacro{ATOMIC_POINTER_LOCK_FREE}@ @\unspecnc@ // freestanding |
2419 | 2419 |
|
2420 | 2420 | namespace std {
|
2421 | 2421 | // \ref{atomics.ref.generic}, class template \tcode{atomic_ref}
|
|
2709 | 2709 | constexpr void atomic_flag_notify_one(atomic_flag*) noexcept; // freestanding
|
2710 | 2710 | void atomic_flag_notify_all(volatile atomic_flag*) noexcept; // freestanding
|
2711 | 2711 | constexpr void atomic_flag_notify_all(atomic_flag*) noexcept; // freestanding
|
2712 |
| - #define ATOMIC_FLAG_INIT @\seebelownc@ // freestanding |
| 2712 | + #define @\libmacro{ATOMIC_FLAG_INIT}@ @\seebelownc@ // freestanding |
2713 | 2713 |
|
2714 | 2714 | // \ref{atomics.fences}, fences
|
2715 | 2715 | extern "C" constexpr void atomic_thread_fence(memory_order) noexcept; // freestanding
|
|
3010 | 3010 |
|
3011 | 3011 | \rSec2[atomics.lockfree]{Lock-free property}
|
3012 | 3012 |
|
3013 |
| -\indexlibraryglobal{ATOMIC_BOOL_LOCK_FREE}% |
3014 |
| -\indexlibraryglobal{ATOMIC_CHAR_LOCK_FREE}% |
3015 |
| -\indexlibraryglobal{ATOMIC_CHAR8_T_LOCK_FREE}% |
3016 |
| -\indexlibraryglobal{ATOMIC_CHAR16_T_LOCK_FREE}% |
3017 |
| -\indexlibraryglobal{ATOMIC_CHAR32_T_LOCK_FREE}% |
3018 |
| -\indexlibraryglobal{ATOMIC_WCHAR_T_LOCK_FREE}% |
3019 |
| -\indexlibraryglobal{ATOMIC_SHORT_LOCK_FREE}% |
3020 |
| -\indexlibraryglobal{ATOMIC_INT_LOCK_FREE}% |
3021 |
| -\indexlibraryglobal{ATOMIC_LONG_LOCK_FREE}% |
3022 |
| -\indexlibraryglobal{ATOMIC_LLONG_LOCK_FREE}% |
3023 |
| -\indexlibraryglobal{ATOMIC_POINTER_LOCK_FREE}% |
3024 | 3013 | \indeximpldef{values of various \tcode{ATOMIC_..._LOCK_FREE} macros}
|
3025 | 3014 | \begin{codeblock}
|
3026 |
| -#define ATOMIC_BOOL_LOCK_FREE @\unspec@ |
3027 |
| -#define ATOMIC_CHAR_LOCK_FREE @\unspec@ |
3028 |
| -#define ATOMIC_CHAR8_T_LOCK_FREE @\unspec@ |
3029 |
| -#define ATOMIC_CHAR16_T_LOCK_FREE @\unspec@ |
3030 |
| -#define ATOMIC_CHAR32_T_LOCK_FREE @\unspec@ |
3031 |
| -#define ATOMIC_WCHAR_T_LOCK_FREE @\unspec@ |
3032 |
| -#define ATOMIC_SHORT_LOCK_FREE @\unspec@ |
3033 |
| -#define ATOMIC_INT_LOCK_FREE @\unspec@ |
3034 |
| -#define ATOMIC_LONG_LOCK_FREE @\unspec@ |
3035 |
| -#define ATOMIC_LLONG_LOCK_FREE @\unspec@ |
3036 |
| -#define ATOMIC_POINTER_LOCK_FREE @\unspec@ |
| 3015 | +#define @\libmacro{ATOMIC_BOOL_LOCK_FREE}@ @\unspec@ |
| 3016 | +#define @\libmacro{ATOMIC_CHAR_LOCK_FREE}@ @\unspec@ |
| 3017 | +#define @\libmacro{ATOMIC_CHAR8_T_LOCK_FREE}@ @\unspec@ |
| 3018 | +#define @\libmacro{ATOMIC_CHAR16_T_LOCK_FREE}@ @\unspec@ |
| 3019 | +#define @\libmacro{ATOMIC_CHAR32_T_LOCK_FREE}@ @\unspec@ |
| 3020 | +#define @\libmacro{ATOMIC_WCHAR_T_LOCK_FREE}@ @\unspec@ |
| 3021 | +#define @\libmacro{ATOMIC_SHORT_LOCK_FREE}@ @\unspec@ |
| 3022 | +#define @\libmacro{ATOMIC_INT_LOCK_FREE}@ @\unspec@ |
| 3023 | +#define @\libmacro{ATOMIC_LONG_LOCK_FREE}@ @\unspec@ |
| 3024 | +#define @\libmacro{ATOMIC_LLONG_LOCK_FREE}@ @\unspec@ |
| 3025 | +#define @\libmacro{ATOMIC_POINTER_LOCK_FREE}@ @\unspec@ |
3037 | 3026 | \end{codeblock}
|
3038 | 3027 |
|
3039 | 3028 | \pnum
|
|
6326 | 6315 | This function is an atomic notifying operation\iref{atomics.wait}.
|
6327 | 6316 | \end{itemdescr}
|
6328 | 6317 |
|
6329 |
| -\indexlibraryglobal{ATOMIC_FLAG_INIT}% |
6330 | 6318 | \begin{itemdecl}
|
6331 |
| -#define ATOMIC_FLAG_INIT @\seebelow@ |
| 6319 | +#define @\libmacro{ATOMIC_FLAG_INIT}@ @\seebelow@ |
6332 | 6320 | \end{itemdecl}
|
6333 | 6321 |
|
6334 | 6322 | \begin{itemdescr}
|
|
6429 | 6417 | template<class T>
|
6430 | 6418 | using @\exposid{std-atomic}@ = std::atomic<T>; // \expos
|
6431 | 6419 |
|
6432 |
| -#define _Atomic(T) @\exposid{std-atomic}@<T> |
| 6420 | +#define @\libmacro{_Atomic}@(T) @\exposid{std-atomic}@<T> |
6433 | 6421 |
|
6434 |
| -#define ATOMIC_BOOL_LOCK_FREE @\seebelow@ |
6435 |
| -#define ATOMIC_CHAR_LOCK_FREE @\seebelow@ |
6436 |
| -#define ATOMIC_CHAR16_T_LOCK_FREE @\seebelow@ |
6437 |
| -#define ATOMIC_CHAR32_T_LOCK_FREE @\seebelow@ |
6438 |
| -#define ATOMIC_WCHAR_T_LOCK_FREE @\seebelow@ |
6439 |
| -#define ATOMIC_SHORT_LOCK_FREE @\seebelow@ |
6440 |
| -#define ATOMIC_INT_LOCK_FREE @\seebelow@ |
6441 |
| -#define ATOMIC_LONG_LOCK_FREE @\seebelow@ |
6442 |
| -#define ATOMIC_LLONG_LOCK_FREE @\seebelow@ |
6443 |
| -#define ATOMIC_POINTER_LOCK_FREE @\seebelow@ |
| 6422 | +#define @\libmacro{ATOMIC_BOOL_LOCK_FREE}@ @\seebelow@ |
| 6423 | +#define @\libmacro{ATOMIC_CHAR_LOCK_FREE}@ @\seebelow@ |
| 6424 | +#define @\libmacro{ATOMIC_CHAR16_T_LOCK_FREE}@ @\seebelow@ |
| 6425 | +#define @\libmacro{ATOMIC_CHAR32_T_LOCK_FREE}@ @\seebelow@ |
| 6426 | +#define @\libmacro{ATOMIC_WCHAR_T_LOCK_FREE}@ @\seebelow@ |
| 6427 | +#define @\libmacro{ATOMIC_SHORT_LOCK_FREE}@ @\seebelow@ |
| 6428 | +#define @\libmacro{ATOMIC_INT_LOCK_FREE}@ @\seebelow@ |
| 6429 | +#define @\libmacro{ATOMIC_LONG_LOCK_FREE}@ @\seebelow@ |
| 6430 | +#define @\libmacro{ATOMIC_LLONG_LOCK_FREE}@ @\seebelow@ |
| 6431 | +#define @\libmacro{ATOMIC_POINTER_LOCK_FREE}@ @\seebelow@ |
6444 | 6432 |
|
6445 | 6433 | using std::@\libglobal{memory_order}@; // \seebelow
|
6446 | 6434 | using std::@\libglobal{memory_order_relaxed}@; // \seebelow
|
|
6524 | 6512 | using std::@\libglobal{atomic_flag_test_and_set_explicit}@; // \seebelow
|
6525 | 6513 | using std::@\libglobal{atomic_flag_clear}@; // \seebelow
|
6526 | 6514 | using std::@\libglobal{atomic_flag_clear_explicit}@; // \seebelow
|
6527 |
| -#define ATOMIC_FLAG_INIT @\seebelow@ |
| 6515 | +#define @\libmacro{ATOMIC_FLAG_INIT}@ @\seebelow@ |
6528 | 6516 |
|
6529 | 6517 | using std::@\libglobal{atomic_thread_fence}@; // \seebelow
|
6530 | 6518 | using std::@\libglobal{atomic_signal_fence}@; // \seebelow
|
|
6534 | 6522 | Each \grammarterm{using-declaration} for some name $A$ in the synopsis above
|
6535 | 6523 | makes available the same entity as \tcode{std::$A$}
|
6536 | 6524 | declared in \libheaderrefx{atomic}{atomics.syn}.
|
6537 |
| -Each macro listed above other than \tcode{_Atomic(T)} |
| 6525 | +Each macro listed above other than \tcode{\libmacro{_Atomic}(T)} |
6538 | 6526 | is defined as in \libheader{atomic}.
|
6539 | 6527 | It is unspecified whether \libheader{stdatomic.h} makes available
|
6540 | 6528 | any declarations in namespace \tcode{std}.
|
|
0 commit comments