12template<
typename ValueType>
14 using DFTElementPointer = std::shared_ptr<DFTElement<ValueType>>;
15 using DFTElementVector = std::vector<DFTElementPointer>;
33 virtual bool isGate()
const override {
40 for (
auto const& child : this->
children()) {
41 if (elementsInSpareModule.count(child->id()) == 0) {
42 elementsInSpareModule.insert(child->id());
43 child->extendSpareModule(elementsInSpareModule);
60 for (std::shared_ptr<DFTGate> parent : this->
mParents) {
73 for (std::shared_ptr<DFTGate> parent : this->
mParents) {
void setFailed(size_t id)
void setFailsafe(size_t id)
bool isOperational(size_t id) const
void checkRestrictionLater(DFTRestrictionPointer const &restr)
void propagateFailure(DFTGatePointer const &elem)
void propagateFailsafe(DFTGatePointer const &gate)
void propagateDontCare(DFTElementPointer const &elem)
Abstract base class for a DFT element with children.
DFTElementVector const & children() const
Get children.
Abstract base class for DFT elements.
virtual size_t id() const
Get id.
virtual std::string const & name() const
Get name.
DFTRestrictionVector mRestrictions
virtual bool isSpareGate() const
Check whether the element is a SPARE gate.
virtual void extendSpareModule(std::set< size_t > &elementsInModule) const
Abstract base class for gates.
void failsafe(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
DFTGate(size_t id, std::string const &name, DFTElementVector const &children)
Constructor.
void childrenDontCare(storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const
Propagate Don't Care to children.
virtual void extendSpareModule(std::set< size_t > &elementsInSpareModule) const override
virtual bool isGate() const override
Check whether the element is a gate.
virtual ~DFTGate()=default
Destructor.
virtual bool checkDontCareAnymore(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
void fail(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
Abstract base class for restrictions.