12 #include "../../AlgsExecutionStates.h" 
   38       result = dataNode->accept( *
this );
 
   69     for ( 
auto algoNode : producers ) {
 
   71       if ( AState::EVTACCEPTED == 
state || AState::EVTREJECTED == 
state ) {
 
   96     for ( 
auto condAlg : node.
getProducers() ) condAlg->accept( promoter );
 
  108     const int     decision = [
state]() {
 
  110       case AState::EVTACCEPTED:
 
  112       case AState::EVTREJECTED:
 
  119     if ( -1 == decision ) { 
return false; }
 
  125       for ( 
auto& consumer : 
output->getConsumers() ) consumer->accept( promoter );
 
  130     if ( parents.size() == 1 ) {
 
  131       parents[0]->accept( vis );
 
  134       for ( 
auto& p : parents ) {
 
  136         if ( scout.reply() ) p->accept( vis );
 
  141       for ( 
auto& p : parents ) {
 
  143         if ( scout.reply() ) p->accept( vis );
 
  161     bool foundNonResolvedChild = 
false;
 
  162     bool foundNegativeChild    = 
false;
 
  163     bool foundPositiveChild    = 
false;
 
  176       bool breakout = 
false;
 
  177       for ( 
unsigned int slotIndex : searchResult->second ) {
 
  186           if ( childDecision == -1 )
 
  187             foundNonResolvedChild = 
true;
 
  188           else if ( childDecision == 1 )
 
  189             foundPositiveChild = 
true;
 
  191             foundNegativeChild = 
true;
 
  194             if ( node.
m_modeOR && foundPositiveChild ) {
 
  198             } 
else if ( !node.
m_modeOR && foundNegativeChild ) {
 
  204             if ( foundNonResolvedChild ) {
 
  213         if ( breakout ) 
break;
 
  219         if ( childDecision == -1 )
 
  220           foundNonResolvedChild = 
true;
 
  221         else if ( childDecision == 1 )
 
  222           foundPositiveChild = 
true;
 
  224           foundNegativeChild = 
true;
 
  227           if ( node.
m_modeOR && foundPositiveChild ) {
 
  230           } 
else if ( !node.
m_modeOR && foundNegativeChild ) {
 
  235           if ( foundNonResolvedChild ) 
break;
 
  240     if ( !foundNonResolvedChild && decision == -1 ) {
 
  242         if ( foundPositiveChild )
 
  247         if ( foundNegativeChild )
 
  259     if ( node.
m_allPass && !foundNonResolvedChild ) decision = 1;
 
  261     if ( decision != -1 ) {
 
  271           if ( scout.reply() ) p->accept( *
this );
 
  278           if ( scout.reply() ) p->accept( *
this );
 
  283       if ( oldSlot ) 
m_slot = oldSlot;
 
  290       for ( 
unsigned int slotIndex : searchResult->second ) {
 
  296           bool result = child->accept( *
this );
 
  309         bool result = child->accept( *
this );
 
  318     if ( oldSlot ) 
m_slot = oldSlot;
 
  338     if ( AState::INITIAL == 
state ) states.set( node.
getAlgoIndex(), AState::CONTROLREADY ).ignore();
 
  341     if ( AState::CONTROLREADY == 
state ) {
 
  343       result        = promoter.visit( node );
 
  363     bool allChildDecisionsResolved = 
true;
 
  367       child->accept( *
this );
 
  370       if ( childDecision == -1 ) allChildDecisionsResolved = 
false;
 
  379         for ( 
auto parent : node.
m_parents ) { parent->accept( *
this ); }
 
  384     if ( allChildDecisionsResolved ) {
 
  388       for ( 
auto parent : node.
m_parents ) { parent->accept( *
this ); }
 
  391     return allChildDecisionsResolved;
 
  410       states.set( node.
getAlgoIndex(), AState::CONTROLREADY ).ignore(  );
 
  411       if ( dataPromoter.visit( node ) ) {
 
  412         states.set( node.
getAlgoIndex(), AState::SCHEDULED ).ignore(  );
 
  413         states.set( node.
getAlgoIndex(), AState::EVTACCEPTED ).ignore(  );
 
  419     } 
else if ( AState::CONTROLREADY == states[node.
getAlgoIndex()] && dataPromoter.visit( node ) ) {
 
  420       states.set( node.
getAlgoIndex(), AState::SCHEDULED ).ignore(  );
 
  421       states.set( node.
getAlgoIndex(), AState::EVTACCEPTED ).ignore(  );