104 {
105
108 const int decision = [
state]() {
109 switch ( state ) {
110 case AState::EVTACCEPTED:
111 return 1;
112 case AState::EVTREJECTED:
113 return 0;
114 default:
115 return -1;
116 };
117 }();
118
119 if ( -1 == decision ) { return false; }
120
122
124 for ( const auto& output : node.getOutputDataNodes() )
125 for (
auto& consumer :
output->getConsumers() ) consumer->accept( promoter );
126
127
129 auto& parents = node.getParentDecisionHubs();
130 if ( parents.size() == 1 ) {
131 parents[0]->accept( vis );
134 for ( auto& p : parents ) {
135 p->accept( scout );
136 if ( scout.reply() ) p->accept( vis );
137 scout.reset();
138 }
139 } else {
141 for ( auto& p : parents ) {
142 p->accept( scout );
143 if ( scout.reply() ) p->accept( vis );
144 scout.reset();
145 }
146 }
147
148 return true;
149 }
ActiveLineageScout(const EventSlot *slot, const ControlFlowNode &node)
Constructor.
SubSlotScout(const EventSlot *slot, const ControlFlowNode &node)
Constructor.
AlgsExecutionStates::State AState
EventSlot * parentSlot
Pointer to parent slot (null for top level).
AlgsExecutionStates algsStates
Vector of algorithms states.
std::vector< int > controlFlowState
State of the control flow.