#include "src/storage/dd/CuddDdMetaVariable.h" #include "src/storage/dd/CuddDdManager.h" namespace storm { namespace dd { DdMetaVariable::DdMetaVariable(std::string const& name, int_fast64_t low, int_fast64_t high, std::vector> const& ddVariables, std::shared_ptr> manager) : name(name), type(MetaVariableType::Int), low(low), high(high), ddVariables(ddVariables), cube(manager->getOne()), manager(manager) { // Create the cube of all variables of this meta variable. for (auto const& ddVariable : this->ddVariables) { this->cube *= ddVariable; } } DdMetaVariable::DdMetaVariable(std::string const& name, std::vector> const& ddVariables, std::shared_ptr> manager) : name(name), type(MetaVariableType::Bool), low(0), high(1), ddVariables(ddVariables), cube(manager->getOne()), manager(manager) { // Create the cube of all variables of this meta variable. for (auto const& ddVariable : this->ddVariables) { this->cube *= ddVariable; } } std::string const& DdMetaVariable::getName() const { return this->name; } DdMetaVariable::MetaVariableType DdMetaVariable::getType() const { return this->type; } int_fast64_t DdMetaVariable::getLow() const { return this->low; } int_fast64_t DdMetaVariable::getHigh() const { return this->high; } std::size_t DdMetaVariable::getNumberOfDdVariables() const { return this->ddVariables.size(); } std::shared_ptr> DdMetaVariable::getDdManager() const { return this->manager; } std::vector> const& DdMetaVariable::getDdVariables() const { return this->ddVariables; } Dd const& DdMetaVariable::getCube() const { return this->cube; } } }