AK: Add the SetOnce class

The SetOnce class is meant to be used as one-time set boolean flag,
which is useful for flags that change only once and then stay immutable
forever.
This commit is contained in:
Liav A. 2024-01-26 16:43:01 +02:00 committed by Andrew Kaster
parent de2cad02aa
commit 122c82a2a1
Notes: sideshowbarker 2024-07-17 03:27:40 +09:00

36
AK/SetOnce.h Normal file
View file

@ -0,0 +1,36 @@
/*
* Copyright (c) 2024, Liav A. <liavalb@hotmail.co.il>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Noncopyable.h>
#include <AK/Types.h>
namespace AK {
class SetOnce {
AK_MAKE_NONCOPYABLE(SetOnce);
AK_MAKE_NONMOVABLE(SetOnce);
public:
SetOnce() = default;
void set()
{
m_value = true;
}
bool was_set() const { return m_value; }
private:
bool m_value { false };
};
}
#if USING_AK_GLOBALLY
using AK::SetOnce;
#endif