* @param model Pointer to model
* @param list List of dependencies for this model (optional)
*/
- void add_model(std::shared_ptr<simgrid::kernel::resource::Model> model, std::vector<std::string>&& dep_models = {});
+ void add_model(std::shared_ptr<simgrid::kernel::resource::Model> model,
+ std::vector<kernel::resource::Model*>&& dependencies = {});
/** @brief Get list of all models managed by this engine */
const std::vector<simgrid::kernel::resource::Model*>& get_all_models() const;
default_function = code;
}
-void EngineImpl::add_model(std::shared_ptr<resource::Model> model, std::vector<std::string>&& dep_models)
+void EngineImpl::add_model(std::shared_ptr<resource::Model> model, std::vector<resource::Model*>&& dependencies)
{
auto model_name = model->get_name();
xbt_assert(models_prio_.find(model_name) == models_prio_.end(),
"Model %s already exists, use model.set_name() to change its name", model_name.c_str());
int order = -1;
- for (const auto& dep_name : dep_models) {
- xbt_assert(models_prio_.find(dep_name) != models_prio_.end(),
- "Model %s doesn't exists. Impossible to use it as dependency.", dep_name.c_str());
- if (models_prio_[dep_name].prio > order) {
- order = models_prio_[dep_name].prio;
+ for (const auto dep : dependencies) {
+ xbt_assert(models_prio_.find(dep->get_name()) != models_prio_.end(),
+ "Model %s doesn't exists. Impossible to use it as dependency.", dep->get_name().c_str());
+ if (models_prio_[dep->get_name()].prio > order) {
+ order = models_prio_[dep->get_name()].prio;
}
}
models_prio_[model_name] = {++order, std::move(model)};
* @param model Pointer to model
* @param list List of dependencies for this model
*/
- void add_model(std::shared_ptr<simgrid::kernel::resource::Model> model, std::vector<std::string>&& dep_models = {});
+ void add_model(std::shared_ptr<simgrid::kernel::resource::Model> model,
+ std::vector<resource::Model*>&& dep_models = {});
/** @brief Get list of all models managed by this engine */
const std::vector<resource::Model*>& get_all_models() const { return models_; }
auto vm_model = std::make_shared<simgrid::vm::VMModel>();
vm_model->set_name("VM_HL13");
- simgrid::kernel::EngineImpl::get_instance()->add_model(vm_model, {cpu_pm_model->get_name()});
+ simgrid::kernel::EngineImpl::get_instance()->add_model(vm_model, {cpu_pm_model});
std::shared_ptr<simgrid::kernel::resource::CpuModel> cpu_model_vm;
auto cpu_optim = simgrid::config::get_value<std::string>("cpu/optim");
cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>();
cpu_model_vm->set_name("VmCpu_Cas01");
}
- simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_vm,
- {cpu_pm_model->get_name(), vm_model->get_name()});
+ simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_vm, {cpu_pm_model, vm_model.get()});
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_vm_model(cpu_model_vm);
}
return SIMIX_get_clock();
}
-void Engine::add_model(std::shared_ptr<simgrid::kernel::resource::Model> model, std::vector<std::string>&& dep_models)
+void Engine::add_model(std::shared_ptr<kernel::resource::Model> model,
+ std::vector<kernel::resource::Model*>&& dependencies)
{
- simgrid::kernel::actor::simcall([this, &model, &dep_models] {
- pimpl->add_model(std::move(model), std::forward<decltype(dep_models)>(dep_models));
+ simgrid::kernel::actor::simcall([this, &model, &dependencies] {
+ pimpl->add_model(std::move(model), std::forward<decltype(dependencies)>(dependencies));
});
}