+
+/** @brief Returns the list of all hosts found in the platform */
+std::vector<Host*> Engine::getAllHosts()
+{
+ std::vector<Host*> res;
+ for (auto const& kv : pimpl->hosts_)
+ res.push_back(kv.second);
+ return res;
+}
+
+void Engine::addHost(std::string name, simgrid::s4u::Host* host)
+{
+ pimpl->hosts_[name] = host;
+}
+
+void Engine::delHost(std::string name)
+{
+ pimpl->hosts_.erase(name);
+}
+
+simgrid::s4u::Host* Engine::hostByName(std::string name)
+{
+ return pimpl->hosts_.at(name); // Will raise a std::out_of_range if the host does not exist
+}
+
+simgrid::s4u::Host* Engine::hostByNameOrNull(std::string name)
+{
+ auto host = pimpl->hosts_.find(name);
+ return host == pimpl->hosts_.end() ? nullptr : host->second;
+}
+
+/** @brief Returns the list of all storages found in the platform */
+std::vector<Storage*> Engine::getAllStorages()
+{
+ std::vector<Storage*> res;
+ for (auto const& kv : pimpl->storages_)
+ res.push_back(kv.second);
+ return res;
+}
+
+simgrid::s4u::Storage* Engine::storageByName(std::string name)
+{
+ return pimpl->storages_.at(name); // Will raise a std::out_of_range if the host does not exist
+}
+
+simgrid::s4u::Storage* Engine::storageByNameOrNull(std::string name)
+{
+ auto storage = pimpl->storages_.find(name);
+ return storage == pimpl->storages_.end() ? nullptr : storage->second;
+}
+
+void Engine::addStorage(std::string name, simgrid::s4u::Storage* storage)
+{
+ pimpl->storages_[name] = storage;
+}
+
+void Engine::delStorage(std::string name)
+{
+ pimpl->storages_.erase(name);
+}
+