12template<
typename ValueType>
 
   26    std::shared_ptr<DFTElement<ValueType>> 
clone()
 const override {
 
 
   55                    if (parent->id() != this->
id() && parent->isSpareGate()) {
 
 
   72            size_t uses = state.
uses(this->
mId);
 
   75                if (!claimingSuccessful) {
 
   76                    this->
fail(state, queues);
 
 
   91    std::vector<size_t> 
independentSubDft(
bool blockParents, 
bool sparesAsLeaves = 
false)
 const override {
 
   93        if (prelRes.empty()) {
 
   97        std::set<size_t> unit(prelRes.begin(), prelRes.end());
 
   98        std::vector<size_t> pids = this->
parentIds();
 
   99        if (!sparesAsLeaves) {
 
  100            for (
auto const& child : this->
children()) {
 
  101                child->extendSubDft(unit, pids, blockParents, sparesAsLeaves);
 
  108        return std::vector<size_t>(unit.begin(), unit.end());
 
 
  111    void extendSubDft(std::set<size_t>& elemsInSubtree, std::vector<size_t> 
const& parentsOfSubRoot, 
bool blockParents, 
bool sparesAsLeaves)
 const override {
 
  112        if (elemsInSubtree.count(this->id()) > 0)
 
  115        if (elemsInSubtree.empty()) {
 
  119        if (!sparesAsLeaves) {
 
  120            for (
auto const& child : this->
children()) {
 
  121                child->extendSubDft(elemsInSubtree, parentsOfSubRoot, blockParents, sparesAsLeaves);
 
  122                if (elemsInSubtree.empty()) {
 
 
 
bool claimNew(size_t spareId, size_t currentlyUses, std::vector< std::shared_ptr< storm::dft::storage::elements::DFTElement< ValueType > > > const &children)
Claim a new spare child for the given spare gate.
 
uint_fast64_t uses(size_t id) const
This method returns the id of the used child for a spare.
 
void finalizeUses(size_t spareId)
Sets the use for the spare to a default value to gain consistent states after failures.
 
bool isOperational(size_t id) const
 
bool isFailsafe(size_t id) const
 
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.
 
std::vector< size_t > parentIds() const
Return Ids of parents.
 
virtual void extendSubDft(std::set< size_t > &elemsInSubtree, std::vector< size_t > const &parentsOfSubRoot, bool blockParents, bool sparesAsLeaves) const
Helper to the independent subtree computation.
 
virtual std::vector< size_t > independentSubDft(bool blockParents, bool sparesAsLeaves=false) const
Computes independent subtrees starting with this element (this), that is, all elements (x) which are ...
 
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
 
void fail(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
 
void failsafe(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
 
std::shared_ptr< DFTElement< ValueType > > clone() const override
Create a shallow copy of the element.
 
void checkFails(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
Check failed status.
 
void checkFailsafe(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
Check failsafe status.
 
DFTSpare(size_t id, std::string const &name, std::vector< std::shared_ptr< DFTElement< ValueType > > > const &children={})
Constructor.
 
storm::dft::storage::elements::DFTElementType type() const override
Get type.
 
bool checkDontCareAnymore(storm::dft::storage::DFTState< ValueType > &state, storm::dft::storage::DFTStateSpaceGenerationQueues< ValueType > &queues) const override
 
std::vector< size_t > independentSubDft(bool blockParents, bool sparesAsLeaves=false) const override
Computes independent subtrees starting with this element (this), that is, all elements (x) which are ...
 
void extendSubDft(std::set< size_t > &elemsInSubtree, std::vector< size_t > const &parentsOfSubRoot, bool blockParents, bool sparesAsLeaves) const override
Helper to the independent subtree computation.
 
bool isSpareGate() const override
Check whether the element is a SPARE gate.
 
DFTElementType
Element types in a DFT.