void Executive::addObservableToView(const std::string &model, const std::string &portname, const std::string &view) { vpz::BaseModel *mdl = cpled()->findModel(model); if (mdl == nullptr) { throw utils::DevsGraphError( (fmt(_("Executive error: unknown model `%1%'")) % model).str()); } if (mdl->isCoupled()) { throw utils::DevsGraphError( (fmt(_("Executive error: can not add observable to coupled " "model %1%")) % model) .str()); } vpz::AtomicModel *atom = mdl->toAtomic(); m_coordinator.addObservableToView(atom, portname, view); }
const vpz::AtomicModel * Executive::createModel(const std::string &name, const std::vector<std::string> &inputs, const std::vector<std::string> &outputs, const std::string &dynamics, const std::vector<std::string> &conds, const std::string &observable) { auto model = new vpz::AtomicModel(name, cpled()); std::vector<std::string>::const_iterator it; for (it = inputs.begin(); it != inputs.end(); ++it) { model->addInputPort(*it); } for (it = outputs.begin(); it != outputs.end(); ++it) { model->addOutputPort(*it); } m_coordinator.createModel( model, conditions(), dynamics, conds, observable); return model; }
const vpz::BaseModel* Executive::createModelFromClass(const std::string& classname, const std::string& modelname) { return m_coordinator.createModelFromClass(classname, cpled(), modelname); }