33 log_statistics = 0x04,
40 log_mask = log_debug | log_info | log_statistics | log_trace | log_audit | log_warning | log_error | log_fatal,
42 log_level_default = log_audit | log_error | log_fatal,
43 log_level_fatal = log_audit | log_fatal,
44 log_level_error = log_trace | log_error | log_level_fatal,
45 log_level_warning = log_warning | log_level_error,
46 log_level_info = log_info | log_statistics | log_level_warning,
47 log_level_debug = log_debug | log_level_info,
49 log_is_running = 0x1'00,
50 time_stamp_utc_is_running = 0x2'00,
52 system_is_running = 0x1'000000'00,
53 system_is_shutting_down = 0x2'000000'00,
54 system_mask = system_is_running | system_is_shutting_down,
95 constexpr static bool is_always_lock_free = atomic_type::is_always_lock_free;
97 constexpr atomic()
noexcept =
default;
98 atomic(atomic
const&) =
delete;
100 atomic&
operator=(atomic
const&) =
delete;
103 constexpr atomic(value_type desired) noexcept : v(std::to_underlying(desired)) {}
107 return v.is_lock_free();
110 void store(value_type desired, std::memory_order order = std::memory_order::seq_cst)
noexcept
112 return v.store(std::to_underlying(desired), order);
115 [[nodiscard]] value_type
load(std::memory_order order = std::memory_order::seq_cst)
const noexcept
117 return static_cast<value_type
>(v.load(order));
120 [[nodiscard]] value_type
exchange(value_type desired, std::memory_order order = std::memory_order::seq_cst)
noexcept
122 return static_cast<value_type
>(v.exchange(std::to_underlying(desired), order));
126 compare_exchange_weak(value_type& expected, value_type desired, std::memory_order success, std::memory_order failure)
noexcept
128 return v.compare_exchange_weak(
129 reinterpret_cast<underlying_type_t<value_type>&
>(expected), std::to_underlying(desired), success, failure);
133 compare_exchange_weak(value_type& expected, value_type desired, std::memory_order order = std::memory_order::seq_cst)
noexcept
139 value_type& expected,
141 std::memory_order success,
142 std::memory_order failure)
noexcept
144 return v.compare_exchange_weak(
145 reinterpret_cast<underlying_type_t<value_type>&
>(expected), std::to_underlying(desired), success, failure);
149 value_type& expected,
151 std::memory_order order = std::memory_order::seq_cst)
noexcept
156 value_type
fetch_and(value_type arg, std::memory_order order = std::memory_order::seq_cst)
noexcept
158 return static_cast<value_type
>(v.fetch_and(std::to_underlying(arg), order));
161 value_type
fetch_or(value_type arg, std::memory_order order = std::memory_order::seq_cst)
noexcept
163 return static_cast<value_type
>(v.fetch_or(std::to_underlying(arg), order));
166 operator value_type()
const noexcept
171 value_type
operator=(value_type desired)
noexcept
177 value_type
operator|=(value_type arg)
noexcept
182 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:201