162 bool foundNonResolvedChild =
false;
163 bool foundNegativeChild =
false;
164 bool foundPositiveChild =
false;
177 bool breakout =
false;
178 for (
unsigned int slotIndex : searchResult->second ) {
183 for (
auto child : node.getDaughters() ) {
187 if ( childDecision == -1 )
188 foundNonResolvedChild =
true;
189 else if ( childDecision == 1 )
190 foundPositiveChild =
true;
192 foundNegativeChild =
true;
194 if ( node.m_modePromptDecision ) {
195 if ( node.m_modeOR && foundPositiveChild ) {
199 }
else if ( !node.m_modeOR && foundNegativeChild ) {
205 if ( foundNonResolvedChild ) {
214 if ( breakout )
break;
217 for (
auto child : node.getDaughters() ) {
220 if ( childDecision == -1 )
221 foundNonResolvedChild =
true;
222 else if ( childDecision == 1 )
223 foundPositiveChild =
true;
225 foundNegativeChild =
true;
227 if ( node.m_modePromptDecision ) {
228 if ( node.m_modeOR && foundPositiveChild ) {
231 }
else if ( !node.m_modeOR && foundNegativeChild ) {
236 if ( foundNonResolvedChild )
break;
241 if ( !foundNonResolvedChild && decision == -1 ) {
242 if ( node.m_modeOR ) {
243 if ( foundPositiveChild )
248 if ( foundNegativeChild )
255 if ( node.m_inverted && decision == 1 )
257 else if ( node.m_inverted && decision == 0 )
260 if ( node.m_allPass && !foundNonResolvedChild ) decision = 1;
262 if ( decision != -1 ) {
266 if ( node.m_parents.size() == 1 ) {
267 node.m_parents[0]->accept( *
this );
269 auto scout = SubSlotScout(
m_slot, node );
270 for (
auto& p : node.m_parents ) {
272 if ( scout.reply() ) p->accept( *
this );
276 auto scout = ActiveLineageScout(
m_slot, node );
277 for (
auto& p : node.m_parents ) {
279 if ( scout.reply() ) p->accept( *
this );
284 if ( oldSlot )
m_slot = oldSlot;
291 for (
unsigned int slotIndex : searchResult->second ) {
296 for (
auto child : node.getDaughters() ) {
297 bool result = child->accept( *
this );
298 if ( !node.m_modeConcurrent )
309 for (
auto child : node.getDaughters() ) {
310 bool result = child->accept( *
this );
311 if ( !node.m_modeConcurrent )
319 if ( oldSlot )
m_slot = oldSlot;