35 log_statistics = 0x04,
42 log_mask = log_debug | log_info | log_statistics | log_trace | log_audit | log_warning | log_error | log_fatal,
44 log_level_default = log_audit | log_error | log_fatal,
45 log_level_fatal = log_audit | log_fatal,
46 log_level_error = log_trace | log_error | log_level_fatal,
47 log_level_warning = log_warning | log_level_error,
48 log_level_info = log_info | log_statistics | log_level_warning,
49 log_level_debug = log_debug | log_level_info,
51 log_is_running = 0x1'00,
52 time_stamp_utc_is_running = 0x2'00,
54 system_is_running = 0x1'000000'00,
55 system_is_shutting_down = 0x2'000000'00,
56 system_mask = system_is_running | system_is_shutting_down,
97 constexpr static bool is_always_lock_free = atomic_type::is_always_lock_free;
99 constexpr atomic()
noexcept =
default;
100 atomic(atomic
const&) =
delete;
101 atomic(atomic&&) =
delete;
102 atomic&
operator=(atomic
const&) =
delete;
105 constexpr atomic(value_type desired) noexcept : v(std::to_underlying(desired)) {}
109 return v.is_lock_free();
112 void store(value_type desired, std::memory_order order = std::memory_order::seq_cst)
noexcept
114 return v.store(std::to_underlying(desired), order);
117 [[nodiscard]] value_type
load(std::memory_order order = std::memory_order::seq_cst)
const noexcept
119 return static_cast<value_type
>(v.load(order));
122 [[nodiscard]] value_type
exchange(value_type desired, std::memory_order order = std::memory_order::seq_cst)
noexcept
124 return static_cast<value_type
>(v.exchange(std::to_underlying(desired), order));
128 compare_exchange_weak(value_type& expected, value_type desired, std::memory_order success, std::memory_order failure)
noexcept
130 return v.compare_exchange_weak(
131 reinterpret_cast<underlying_type_t<value_type>&
>(expected), std::to_underlying(desired), success, failure);
135 compare_exchange_weak(value_type& expected, value_type desired, std::memory_order order = std::memory_order::seq_cst)
noexcept
141 value_type& expected,
143 std::memory_order success,
144 std::memory_order failure)
noexcept
146 return v.compare_exchange_strong(
147 reinterpret_cast<underlying_type_t<value_type>&
>(expected), std::to_underlying(desired), success, failure);
151 value_type& expected,
153 std::memory_order order = std::memory_order::seq_cst)
noexcept
158 value_type
fetch_and(value_type arg, std::memory_order order = std::memory_order::seq_cst)
noexcept
160 return static_cast<value_type
>(v.fetch_and(std::to_underlying(arg), order));
163 value_type
fetch_or(value_type arg, std::memory_order order = std::memory_order::seq_cst)
noexcept
165 return static_cast<value_type
>(v.fetch_or(std::to_underlying(arg), order));
168 operator value_type()
const noexcept
173 value_type
operator=(value_type desired)
noexcept
179 value_type
operator|=(value_type arg)
noexcept
184 value_type
operator&=(value_type arg)
noexcept
std::atomic< global_state_type > global_state
The global state of the hikogui framework.
Definition global_state.hpp:203