/* * CuddUtility.h * * Created on: 26.01.2013 * Author: Christian Dehnert */ #ifndef STORM_UTILITY_CUDDUTILITY_H_ #define STORM_UTILITY_CUDDUTILITY_H_ #include "cuddObj.hh" #include namespace storm { namespace utility { class CuddUtility { public: ~CuddUtility() { for (auto element : allDecisionDiagramVariables) { delete element; } } ADD* getNewAddVariable(); ADD* getAddVariable(int index) const; ADD* getOne() const; ADD* getZero() const; ADD* getConstantEncoding(uint_fast64_t constant, std::vector const& variables) const; void setValueAtIndex(ADD* add, uint_fast64_t index, std::vector const& variables, double value) const; void setValueAtIndices(ADD* add, uint_fast64_t rowIndex, uint_fast64_t columnIndex, std::vector const& rowVariables, std::vector const& columnVariables, double value) const; ADD* getConstant(double value) const; ADD* permuteVariables(ADD* add, std::vector fromVariables, std::vector toVariables, uint_fast64_t totalNumberOfVariables) const; void dumpDotToFile(ADD* add, std::string filename) const; Cudd const& getManager() const; friend CuddUtility* cuddUtilityInstance(); private: CuddUtility() : manager(), allDecisionDiagramVariables() { } Cudd manager; std::vector allDecisionDiagramVariables; static CuddUtility* instance; }; CuddUtility* cuddUtilityInstance(); } // namespace utility } // namespace storm #endif /* STORM_UTILITY_CUDDUTILITY_H_ */