27 using DFTElementPointer = std::shared_ptr<storm::dft::storage::elements::DFTElement<ValueType>>;
28 using DFTElementVector = std::vector<DFTElementPointer>;
29 using DFTGatePointer = std::shared_ptr<storm::dft::storage::elements::DFTGate<ValueType>>;
30 using DFTGateVector = std::vector<DFTGatePointer>;
31 using DFTRestrictionPointer = std::shared_ptr<storm::dft::storage::elements::DFTRestriction<ValueType>>;
32 using DFTRestrictionVector = std::vector<DFTRestrictionPointer>;
34 std::priority_queue<DFTGatePointer, DFTGateVector, OrderElementsByRank<ValueType>> failurePropagation;
35 DFTGateVector failsafePropagation;
36 DFTElementVector dontcarePropagation;
37 DFTElementVector activatePropagation;
38 DFTRestrictionVector restrictionChecks;
42 failurePropagation.push(elem);
46 return failurePropagation.empty();
50 DFTGatePointer next = failurePropagation.top();
51 failurePropagation.pop();
56 return restrictionChecks.empty();
61 DFTRestrictionPointer next = restrictionChecks.back();
62 restrictionChecks.pop_back();
67 restrictionChecks.push_back(restr);
71 return failsafePropagation.empty();
75 failsafePropagation.push_back(gate);
79 DFTGatePointer next = failsafePropagation.back();
80 failsafePropagation.pop_back();
85 return dontcarePropagation.empty();
89 dontcarePropagation.push_back(elem);
93 dontcarePropagation.insert(dontcarePropagation.end(), elems.begin(), elems.end());
97 DFTElementPointer next = dontcarePropagation.back();
98 dontcarePropagation.pop_back();