161 bool foundNonResolvedChild =
false;
162 bool foundNegativeChild =
false;
163 bool foundPositiveChild =
false;
176 bool breakout =
false;
177 for (
unsigned int slotIndex : searchResult->second ) {
182 for (
auto child : node.getDaughters() ) {
186 if ( childDecision == -1 )
187 foundNonResolvedChild =
true;
188 else if ( childDecision == 1 )
189 foundPositiveChild =
true;
191 foundNegativeChild =
true;
193 if ( node.m_modePromptDecision ) {
194 if ( node.m_modeOR && foundPositiveChild ) {
198 }
else if ( !node.m_modeOR && foundNegativeChild ) {
204 if ( foundNonResolvedChild ) {
213 if ( breakout )
break;
216 for (
auto child : node.getDaughters() ) {
219 if ( childDecision == -1 )
220 foundNonResolvedChild =
true;
221 else if ( childDecision == 1 )
222 foundPositiveChild =
true;
224 foundNegativeChild =
true;
226 if ( node.m_modePromptDecision ) {
227 if ( node.m_modeOR && foundPositiveChild ) {
230 }
else if ( !node.m_modeOR && foundNegativeChild ) {
235 if ( foundNonResolvedChild )
break;
240 if ( !foundNonResolvedChild && decision == -1 ) {
241 if ( node.m_modeOR ) {
242 if ( foundPositiveChild )
247 if ( foundNegativeChild )
254 if ( node.m_inverted && decision == 1 )
256 else if ( node.m_inverted && decision == 0 )
259 if ( node.m_allPass && !foundNonResolvedChild ) decision = 1;
261 if ( decision != -1 ) {
265 if ( node.m_parents.size() == 1 ) {
266 node.m_parents[0]->accept( *
this );
268 auto scout = SubSlotScout(
m_slot, node );
269 for (
auto& p : node.m_parents ) {
271 if ( scout.reply() ) p->accept( *
this );
275 auto scout = ActiveLineageScout(
m_slot, node );
276 for (
auto& p : node.m_parents ) {
278 if ( scout.reply() ) p->accept( *
this );
283 if ( oldSlot )
m_slot = oldSlot;
290 for (
unsigned int slotIndex : searchResult->second ) {
295 for (
auto child : node.getDaughters() ) {
296 bool result = child->accept( *
this );
297 if ( !node.m_modeConcurrent )
308 for (
auto child : node.getDaughters() ) {
309 bool result = child->accept( *
this );
310 if ( !node.m_modeConcurrent )
318 if ( oldSlot )
m_slot = oldSlot;