/*
|
|
|
|
Helper class to set the boolean exactly when setting multiple times in a row
|
|
(as an alternative to checking input every time before setting)
|
|
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
struct OnceFlag {
|
|
OnceFlag() = default;
|
|
OnceFlag(const OnceFlag&) = delete;
|
|
OnceFlag(OnceFlag&&) = delete;
|
|
|
|
explicit operator bool() const {
|
|
return _value;
|
|
}
|
|
|
|
OnceFlag& operator=(bool value) {
|
|
if (!_value) {
|
|
_value = value;
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
void set() {
|
|
_value = true;
|
|
}
|
|
|
|
bool get() const {
|
|
return _value;
|
|
}
|
|
|
|
private:
|
|
bool _value { false };
|
|
};
|
|
|