#pragma once #include #include 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::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::digits> m_flagMap{}; size_t flagCount { 0 }; }; }