Mega-cleanup for atomic_t<> and named bit-sets bs_t<>

Remove "atomic operator" classes
Remove test, test_and_set, test_and_reset, test_and_complement global functions
Simplify atomic_t<> with constexpr if, remove some garbage
Redesign bs_t<> to use class, mark its methods constexpr
Implement atomic_bs_t<> for optimizations
Remove unused __bitwise_ops concept (should be in other header anyway)
Bitsets can now be tested via safe bool conversion
This commit is contained in:
Nekotekina 2018-09-02 20:22:35 +03:00
parent a6d06b2e20
commit 8abe6489ed
23 changed files with 604 additions and 1090 deletions

View file

@ -94,7 +94,7 @@ struct gui_listener : logs::listener
void pop()
{
if (const auto head = read->next.exchange(nullptr))
if (const auto head = read.load()->next.exchange(nullptr))
{
delete read.exchange(head);
}
@ -102,7 +102,7 @@ struct gui_listener : logs::listener
void clear()
{
while (read->next)
while (read.load()->next)
{
pop();
}
@ -502,7 +502,7 @@ void log_frame::UpdateUI()
}
// Check main logs
while (const auto packet = s_gui_listener.read->next.load())
while (const auto packet = s_gui_listener.read.load()->next.load())
{
// Confirm log level
if (packet->sev <= s_gui_listener.enabled)