#ifndef STATE_FACTORY_HPP #define STATE_FACTORY_HPP #include #include "state.hpp" template class StateFactory { using SharedState = std::shared_ptr>; public: void RegisterState(const std::string &id, SharedState state) { if (!state) return; states[id] = std::move(state); } SharedState Get(const std::string &id) const { auto it = states.find(id); return it != states.end() ? it->second : nullptr; } const std::unordered_map All() const { return states; } private: std::unordered_map states; }; #endif // STATE_FACTORY_HPP