#include "dd.h" #include "storm/storage/dd/DdManager.h" #include "storm/storage/dd/DdMetaVariable.h" #include "storm/storage/dd/Dd.h" #include "storm/storage/dd/Bdd.h" #include "src/helpers.h" template void define_dd(py::module& m, std::string const& libstring) { py::class_> ddMetaVariable(m, (std::string("DdMetaVariable_") + libstring).c_str()); ddMetaVariable.def("compute_indices", &storm::dd::DdMetaVariable::getIndices, py::arg("sorted")=true); ddMetaVariable.def_property_readonly("name", &storm::dd::DdMetaVariable::getName); ddMetaVariable.def_property_readonly("lowest_value", &storm::dd::DdMetaVariable::getLow); ddMetaVariable.def_property_readonly("type", &storm::dd::DdMetaVariable::getType); ddMetaVariable.def("__str__", &storm::dd::DdMetaVariable::getName); py::class_, std::shared_ptr>> ddManager(m, (std::string("DdManager_") + libstring).c_str()); ddManager.def("get_meta_variable", [](storm::dd::DdManager const& manager, storm::expressions::Variable const& var) {return manager.getMetaVariable(var);}, py::arg("expression_variable")); py::class_> dd(m, (std::string("Dd_") + libstring).c_str(), "Dd"); dd.def_property_readonly("node_count", &storm::dd::Dd::getNodeCount, "get node count"); dd.def_property_readonly("dd_manager", &storm::dd::Dd::getDdManager, "get the manager"); dd.def_property_readonly("meta_variables", [](storm::dd::Dd const& dd) {return dd.getContainedMetaVariables();}, "the contained meta variables"); py::class_> bdd(m, (std::string("Bdd_") + libstring).c_str(), "Bdd", dd); bdd.def("to_expression", &storm::dd::Bdd::toExpression, py::arg("expression_manager")); } void define_dd_nt(py::module& m) { py::enum_(m, "DdMetaVariableType") .value("Int", storm::dd::MetaVariableType::Int) .value("Bool", storm::dd::MetaVariableType::Bool) .value("Bitvector", storm::dd::MetaVariableType::BitVector); } template void define_dd(py::module& m, std::string const& libstring);