#pragma once #include #include #include "simulator_base.hpp" #define INSERT_SIMULATOR(type) m_simulators.insert(std::make_pair(type().name(), std::make_unique())); class Simulators { public: Simulators(); void run(); void stop(); void switch_simulator(std::string name); std::vector list_simulators() const; Simulator_base* invoke_active_simulator() const; private: std::map> m_simulators; std::string m_current_simulator; };