#include #include "storm/utility/builder.h" #include "storm/models/sparse/Dtmc.h" #include "storm/models/sparse/Ctmc.h" #include "storm/models/sparse/Mdp.h" #include "storm/models/sparse/Pomdp.h" #include "storm/models/sparse/MarkovAutomaton.h" #include "storm/models/sparse/Smg.h" #include "storm/exceptions/InvalidModelException.h" namespace storm { namespace utility { namespace builder { template std::shared_ptr> buildModelFromComponents(storm::models::ModelType modelType, storm::storage::sparse::ModelComponents&& components) { switch (modelType) { case storm::models::ModelType::Dtmc: return std::make_shared>(std::move(components)); case storm::models::ModelType::Ctmc: return std::make_shared>(std::move(components)); case storm::models::ModelType::Mdp: return std::make_shared>(std::move(components)); case storm::models::ModelType::Pomdp: return std::make_shared>(std::move(components)); case storm::models::ModelType::MarkovAutomaton: return std::make_shared>(std::move(components)); case storm::models::ModelType::S2pg: return std::make_shared>(std::move(components)); case storm::models::ModelType::Smg: return std::make_shared>(std::move(components)); } STORM_LOG_THROW(false, storm::exceptions::InvalidModelException, "Unknown model type"); } template std::shared_ptr> buildModelFromComponents(storm::models::ModelType modelType, storm::storage::sparse::ModelComponents&& components); template std::shared_ptr>> buildModelFromComponents(storm::models::ModelType modelType, storm::storage::sparse::ModelComponents>&& components); template std::shared_ptr> buildModelFromComponents(storm::models::ModelType modelType, storm::storage::sparse::ModelComponents&& components); template std::shared_ptr> buildModelFromComponents(storm::models::ModelType modelType, storm::storage::sparse::ModelComponents&& components); } } }