29 AddIterator(AddIterator<DdType::Sylvan, ValueType> const& other) = delete;
30 AddIterator& operator=(AddIterator<DdType::Sylvan, ValueType> const& other) = delete;
33 AddIterator(AddIterator<DdType::Sylvan, ValueType>&& other) = default;
34 AddIterator& operator=(AddIterator<DdType::Sylvan, ValueType>&& other) = default;
39 AddIterator<DdType::Sylvan, ValueType>& operator++();
47 std::pair<storm::expressions::SimpleValuation, ValueType> operator*() const;
56 bool operator==(AddIterator<DdType::Sylvan, ValueType> const& other) const;
65 bool operator!=(AddIterator<DdType::Sylvan, ValueType> const& other) const;
81 AddIterator(DdManager<DdType::Sylvan> const& ddManager, sylvan::Mtbdd mtbdd, sylvan::Bdd variables, uint_fast64_t numberOfDdVariables, bool isAtEnd,
82 std::set<storm::expressions::Variable> const* metaVariables, bool enumerateDontCareMetaVariables);
95 static
AddIterator createBeginIterator(DdManager<DdType::Sylvan> const& ddManager, sylvan::Mtbdd mtbdd, sylvan::Bdd variables,
96 uint_fast64_t numberOfDdVariables, std::set<storm::expressions::Variable> const* metaVariables,
97 bool enumerateDontCareMetaVariables = true);
104 static
AddIterator createEndIterator(DdManager<DdType::Sylvan> const& ddManager);
114 void treatNextInCube();
119 void createGlobalToLocalIndexMapping();
122 DdManager<DdType::Sylvan> const* ddManager;
128 sylvan::Bdd variables;
131 std::vector<uint8_t> cube;
141 std::set<storm::expressions::Variable> const* metaVariables;
144 std::unordered_map<uint_fast64_t, uint_fast64_t> globalToLocalIndexMap;
148 bool enumerateDontCareMetaVariables;
152 uint_fast64_t cubeCounter;
155 std::vector<std::tuple<storm::expressions::Variable, uint_fast64_t>> relevantDontCareDdVariables;