SHA256
32 lines
1.0 KiB
C++
32 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include <array>
|
|
#include <limits>
|
|
|
|
namespace flog
|
|
{
|
|
typedef uint32_t MessageFlag;
|
|
|
|
class MessageFlagManager
|
|
{
|
|
public:
|
|
MessageFlagManager() noexcept = default;
|
|
~MessageFlagManager() = default;
|
|
|
|
MessageFlagManager(const MessageFlagManager&) noexcept = default;
|
|
MessageFlagManager& operator=(const MessageFlagManager&) noexcept = default;
|
|
MessageFlagManager(MessageFlagManager&&) noexcept = default;
|
|
MessageFlagManager& operator=(MessageFlagManager&&) noexcept = default;
|
|
|
|
_NODISCARD bool isFull() const noexcept { return flagCount >= std::numeric_limits<MessageFlag>::digits; }
|
|
_NODISCARD bool pushable() const noexcept { return !isFull(); }
|
|
_NODISCARD bool isEmpty() const noexcept { return flagCount == 0; }
|
|
|
|
_NODISCARD bool contains(std::string_view name) const noexcept;
|
|
|
|
private:
|
|
std::array<std::string, std::numeric_limits<MessageFlag>::digits> m_flagMap{};
|
|
size_t flagCount { 0 };
|
|
};
|
|
}
|