SHA256
41 lines
1.4 KiB
C++
41 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <array>
|
|
#include <limits>
|
|
|
|
namespace flog
|
|
{
|
|
typedef uint32_t LogMessageFlag;
|
|
typedef LogMessageFlag MessageFlag;
|
|
|
|
typedef class LogMessageFlagManager
|
|
{
|
|
public:
|
|
static constexpr MessageFlag ADD_FAILED = 0;
|
|
|
|
static constexpr size_t FLAG_ARRAY_SIZE = std::numeric_limits<MessageFlag>::digits;
|
|
|
|
LogMessageFlagManager() noexcept = default;
|
|
~LogMessageFlagManager() = default;
|
|
|
|
LogMessageFlagManager(const LogMessageFlagManager&) noexcept = default;
|
|
LogMessageFlagManager& operator=(const LogMessageFlagManager&) noexcept = default;
|
|
LogMessageFlagManager(LogMessageFlagManager&&) noexcept = default;
|
|
LogMessageFlagManager& operator=(LogMessageFlagManager&&) noexcept = default;
|
|
|
|
NODISCARD bool isFull() const noexcept { return flagCount >= FLAG_ARRAY_SIZE; }
|
|
NODISCARD bool pushable() const noexcept { return !isFull(); }
|
|
NODISCARD bool isEmpty() const noexcept { return flagCount == 0; }
|
|
NODISCARD bool empty() const noexcept { return isEmpty(); }
|
|
|
|
NODISCARD bool contains(std::string_view name) const noexcept;
|
|
|
|
NODISCARD MessageFlag addFlag (std::string_view name);
|
|
NODISCARD MessageFlag findFlag(std::string_view name) const;
|
|
|
|
private:
|
|
std::array<std::string, FLAG_ARRAY_SIZE> m_flagMap{};
|
|
size_t flagCount { 0 };
|
|
} MessageFlagManager;
|
|
}
|