Go to the documentation of this file.
   24             << 
"  'Concurrent'/'Prompt' contradiction(s) found. Settings are mutually exclusive within a task group. " 
   25                "Discarding 'Prompt' for ";
 
   71       parent->accept( *
this );
 
   74       if ( this->
reply() ) 
break;
 
   94       parent->accept( *
this );
 
   97       if ( this->
reply() ) 
break;
 
  100     if ( oldSlot ) 
m_slot = oldSlot;
 
  107     propValidator.visit( node );
 
  121     for ( 
const auto& parent : node.
m_parents ) {
 
  122       this->
visit( *parent );
 
  135       this->
visit( *parent );
 
  153         producer->accept( scout );
 
  155         if ( scout.negative() ) {
 
  158           pr.first->second.
insert( producer );
 
  162           pr.first->second.
insert( producer );
 
  184         pr.first->second.
insert( producer );
 
  197       status << 
"  Conditional (C) and/or unconditional (U) topology violations found in the DF realm:\n\n";
 
  202         status << 
" (U): " << upr.first->name() << 
" <---- |";
 
  203         for ( 
const auto& algo : upr.second )
 
  204           status << 
" " << algo->name() << 
" (U)" 
  210           for ( 
const auto& algo : result->second )
 
  211             status << 
" " << algo->name() << 
" (C)" 
  223         status << 
" (C): " << cpr.first->name() << 
" <---- |";
 
  224         for ( 
const auto& algo : cpr.second )
 
  225           status << 
" " << algo->name() << 
" (C)" 
  246     m_lowlinks.insert( { &nodeAt, { lowlink_init, lowlink_init } } );
 
  250       for ( 
const auto& consumer : 
output->getConsumers() ) {
 
  251         consumer->accept( *
this );
 
  258           if ( consumer == &nodeAt ) 
m_scc.insert( { lowlink, { &nodeAt } } );
 
  264     if ( lowlink_init == lowlink ) {
 
  265       if ( 
m_scc.find( lowlink ) == 
m_scc.end() ) 
m_scc.insert( { lowlink, {} } );
 
  267       for ( 
auto stackNodeRIter = 
m_stack.rbegin(); stackNodeRIter != 
m_stack.rend(); ++stackNodeRIter ) {
 
  269         bool lastSCCNodeOnStack{ *stackNodeRIter == &nodeAt };
 
  273         if ( lastSCCNodeOnStack ) 
break;
 
  285       m_status << 
"  Strongly connected components found in DF realm:";
 
  287       for ( 
auto& pr : 
m_scc ) {
 
  288         if ( pr.second.size() > 1 ) {
 
  292           std::vector sortedSCC( pr.second.begin(), pr.second.end() );
 
  297           for ( 
const auto& algoPtr : pr.second ) 
m_status << 
" " << algoPtr->name() << 
" |";
 
  
 
visitor_book m_conditionalProducers
std::ostringstream m_status
Class representing an event slot.
std::string m_previousNodeName
const std::string & name() const
Get node name.
bool visit(DecisionNode &) override
const std::vector< DataNode * > & getOutputDataNodes() const
Get all supplier nodes.
bool m_modePromptDecision
Whether to evaluate the hub decision ASA its child decisions allow to do that.
virtual bool reply() const
const std::vector< DecisionNode * > & getParentDecisionHubs() const
Get all parent decision hubs.
bool visit(AlgorithmNode &nodeAt) override
std::string entryPoint
Event Views bookkeeping (TODO: optimize view bookkeeping)
std::vector< AlgorithmNode * > m_stack
bool visit(DataNode &) override
std::unordered_map< AlgorithmNode *, std::pair< unsigned int, unsigned int > > m_lowlinks
EventSlot * parentSlot
Pointer to parent slot (null for top level)
visitor_book m_unconditionalProducers
bool visit(DecisionNode &) override
bool m_modeConcurrent
Whether all daughters will be evaluated concurrently or sequentially.
const std::vector< ControlFlowNode * > & getDaughters() const
Get children nodes.
bool on_stack(const AlgorithmNode &node) const
virtual void visitParents(DecisionNode &)
std::map< unsigned int, std::vector< AlgorithmNode * > > m_scc
std::vector< int > controlFlowState
State of the control flow.
std::vector< DecisionNode * > m_parents
Direct parent nodes.
bool reply() const override
void visitParents(DecisionNode &) override
bool visit(DecisionNode &) override
std::string reply() const
std::ostringstream m_status
unsigned int m_nodes_count
const std::vector< AlgorithmNode * > & getProducers() const
Get all data object producers.
const unsigned int & getNodeIndex() const
Get node index.