From aaff6802c32e45d784a5f4b426d81add7cbf0bc1 Mon Sep 17 00:00:00 2001 From: Sander Speetjens Date: Thu, 22 Aug 2024 10:10:27 +0200 Subject: [PATCH] simulators change prefix p to m add list_simulators --- tools/simulators.cpp | 40 +++++++++++++++++++++++++--------------- tools/simulators.hpp | 7 ++++--- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/tools/simulators.cpp b/tools/simulators.cpp index b187de7..451c2d6 100644 --- a/tools/simulators.cpp +++ b/tools/simulators.cpp @@ -8,57 +8,67 @@ Simulators::Simulators() void Simulators::run() { - if (this->p_simulators.empty()) + if (this->m_simulators.empty()) { return; } - if (this->p_current_simulator.empty()) + if (this->m_current_simulator.empty()) { return; } - this->p_simulators.at(p_current_simulator)->run(); + this->m_simulators.at(m_current_simulator)->run(); } void Simulators::stop() { - if (this->p_simulators.empty()) + if (this->m_simulators.empty()) { return; } - if (this->p_current_simulator.empty()) + if (this->m_current_simulator.empty()) { return; } - this->p_simulators.at(p_current_simulator)->stop(); + this->m_simulators.at(m_current_simulator)->stop(); } void Simulators::switch_simulator(std::string name) { - if (this->p_simulators.empty()) + if (this->m_simulators.empty()) { return; } - if (!this->p_current_simulator.empty()) + if (!this->m_current_simulator.empty()) { - this->p_simulators.at(p_current_simulator)->stop(); + this->m_simulators.at(m_current_simulator)->stop(); } - this->p_current_simulator = name; - this->p_simulators.at(p_current_simulator)->run(); + this->m_current_simulator = name; + this->m_simulators.at(m_current_simulator)->run(); +} + +std::vector Simulators::list_simulators() const +{ + std::vector names; + for (const auto& simulator : this->m_simulators) + { + names.push_back(simulator.first); + } + return names; } Simulator_base* Simulators::invoke_active_simulator() const { - if (this->p_simulators.empty()) + if (this->m_simulators.empty()) { return nullptr; } - if (this->p_current_simulator.empty()) + if (this->m_current_simulator.empty()) { return nullptr; } - - return this->p_simulators.at(p_current_simulator).get(); + + return this->m_simulators.at(m_current_simulator).get(); } \ No newline at end of file diff --git a/tools/simulators.hpp b/tools/simulators.hpp index 6e78c8e..74a41e0 100644 --- a/tools/simulators.hpp +++ b/tools/simulators.hpp @@ -4,7 +4,7 @@ #include "simulator_base.hpp" -#define INSERT_SIMULATOR(type) p_simulators.insert(std::make_pair(type().name(), std::make_unique())); +#define INSERT_SIMULATOR(type) m_simulators.insert(std::make_pair(type().name(), std::make_unique())); class Simulators { public: @@ -12,8 +12,9 @@ class 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> p_simulators; - std::string p_current_simulator; + std::map> m_simulators; + std::string m_current_simulator; }; \ No newline at end of file