#include "storm/utility/file.h" #include "storm/utility/macros.h" #include "storm/exceptions/NotSupportedException.h" #include "storm/analysis/GraphConditions.h" namespace storm { namespace api { template void exportParametricResultToFile(boost::optional , storm::analysis::ConstraintCollector const& constraintCollector, std::string const& path) { STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Cannot export non-parametric result."); } template <> inline void exportParametricResultToFile(boost::optional result, storm::analysis::ConstraintCollector const& constraintCollector, std::string const& path) { std::ofstream filestream; storm::utility::openFile(path, filestream); filestream << "$Parameters: "; auto const& vars = constraintCollector.getVariables(); std::copy(vars.begin(), vars.end(), std::ostream_iterator(filestream, "; ")); filestream << std::endl; if(result) { filestream << "$Result: " << result->toString(false, true) << std::endl; } filestream << "$Well-formed Constraints: " << std::endl; std::vector stringConstraints; std::transform(constraintCollector.getWellformedConstraints().begin(), constraintCollector.getWellformedConstraints().end(), std::back_inserter(stringConstraints), [](carl::Formula const& c) -> std::string { return c.toString();}); std::copy(stringConstraints.begin(), stringConstraints.end(), std::ostream_iterator(filestream, "\n")); filestream << "$Graph-preserving Constraints: " << std::endl; stringConstraints.clear(); std::transform(constraintCollector.getGraphPreservingConstraints().begin(), constraintCollector.getGraphPreservingConstraints().end(), std::back_inserter(stringConstraints), [](carl::Formula const& c) -> std::string { return c.toString();}); std::copy(stringConstraints.begin(), stringConstraints.end(), std::ostream_iterator(filestream, "\n")); storm::utility::closeFile(filestream); } } }