13template<
typename ValueType>
29 std::shared_ptr<DFTElement<ValueType>>
clone()
const override {
55 unsigned nrFailedChildren = 0;
56 for (
auto const& child : this->
children()) {
59 if (nrFailedChildren >= mThreshold) {
60 this->
fail(state, queues);
71 unsigned nrFailsafeChildren = 0;
72 for (
auto const& child : this->
children()) {
75 if (nrFailsafeChildren > this->
nrChildren() - mThreshold) {
bool hasFailed(size_t id) const
bool isOperational(size_t id) const
bool isFailsafe(size_t id) const
bool hasFailsafeChild(storm::dft::storage::DFTState< ValueType > &state) const
Check whether it has a failsafe child.
DFTElementVector const & children() const
Get children.
size_t nrChildren() const override
Get number of children.
Abstract base class for DFT elements.
virtual size_t id() const
Get id.
virtual std::string const & name() const
Get name.
Abstract base class for gates.
void failsafe(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
void childrenDontCare(storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const
Propagate Don't Care to children.
void fail(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
VOT gate with threshold k.
DFTVot(size_t id, std::string const &name, unsigned threshold, std::vector< std::shared_ptr< DFTElement< ValueType > > > const &children={})
Constructor.
bool isTypeEqualTo(DFTElement< ValueType > const &other) const override
Check whether two elements have the same type.
void checkFails(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
Check failed status.
storm::dft::storage::elements::DFTElementType type() const override
Get type.
void checkFailsafe(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
Check failsafe status.
std::shared_ptr< DFTElement< ValueType > > clone() const override
Create a shallow copy of the element.
bool isStaticElement() const override
Check whether the element is static, ie a BE or a static gate (AND, OR, VOT).
unsigned threshold() const
Get the threshold k.
std::string typestring() const override
Get type as string.
#define STORM_LOG_ASSERT(cond, message)
DFTElementType
Element types in a DFT.
std::string toString(DFTElementType const &type)