21#include <unordered_map>
46 std::ostringstream
m_status{
" No 'Concurrent'/'Prompt' contradictions found" };
142 std::string
reply()
const;
145 [](
const auto& pr ) { return pr.second.size() == 1; } );
183 return m_scc.empty() ||
184 !std::any_of(
m_scc.begin(),
m_scc.end(), [](
const auto& pr ) { return pr.second.size() > 1; } );
194 m_status = std::ostringstream{
" No strongly connected components found in DF realm" };
204 std::unordered_map<AlgorithmNode*, std::pair<unsigned int, unsigned int>>
m_lowlinks;
205 std::map<unsigned int, std::vector<AlgorithmNode*>>
m_scc;
208 std::ostringstream
m_status{
" No strongly connected components found in DF realm" };
virtual bool reply() const
bool visitEnter(ConditionNode &) const override
const ControlFlowNode & m_startNode
bool visit(DecisionNode &) override
bool visitEnter(DataNode &) const override
ActiveLineageScout(const EventSlot *slot, const ControlFlowNode &node)
Constructor.
bool visitEnter(AlgorithmNode &) const override
virtual void visitParents(DecisionNode &)
std::string m_previousNodeName
bool visitEnter(DataNode &) const override
bool visitEnter(ConditionNode &) const override
bool visit(DecisionNode &) override
virtual bool visit(DecisionNode &)
virtual bool visitEnter(DecisionNode &) const
bool visitEnter(AlgorithmNode &) const override
bool visitEnter(ConditionNode &) const override
std::string reply() const
bool visit(DecisionNode &) override
std::ostringstream m_status
bool visitEnter(DataNode &) const override
bool visitEnter(AlgorithmNode &) const override
std::map< DataNode *, std::set< AlgorithmNode *, CompareNodes< AlgorithmNode * > >, CompareNodes< DataNode * > > visitor_book
std::string reply() const
visitor_book m_unconditionalProducers
visitor_book m_conditionalProducers
bool visit(DataNode &) override
bool visitEnter(DecisionNode &) const override
SubSlotScout(const EventSlot *slot, const ControlFlowNode &node)
Constructor.
bool reply() const override
void visitParents(DecisionNode &) override
The visitor implements the Tarjan algorithm for searching strongly connected components in the data f...
bool on_stack(const AlgorithmNode &node) const
unsigned int m_nodes_count
std::map< unsigned int, std::vector< AlgorithmNode * > > m_scc
std::unordered_map< AlgorithmNode *, std::pair< unsigned int, unsigned int > > m_lowlinks
bool visitEnter(AlgorithmNode &node) const override
bool visitEnter(DecisionNode &) const override
bool visit(AlgorithmNode &nodeAt) override
bool visitEnter(ConditionNode &) const override
std::vector< AlgorithmNode * > m_stack
std::ostringstream m_status
Class representing an event slot.