#pragma once #include #include #include #include #include class Alias { BAN_NON_COPYABLE(Alias); BAN_NON_MOVABLE(Alias); public: Alias() = default; static Alias& get() { static Alias s_instance; return s_instance; } BAN::ErrorOr set_alias(BAN::StringView name, BAN::StringView value); // NOTE: `const BAN::String&` instead of `BAN::StringView` to avoid BAN::String construction // for hashmap accesses BAN::Optional get_alias(const BAN::String& name) const; void for_each_alias(BAN::Function) const; private: BAN::HashMap m_aliases; };