170 bool foundNonResolvedChild =
false;
171 bool foundNegativeChild =
false;
172 bool foundPositiveChild =
false;
185 bool breakout =
false;
186 for (
unsigned int slotIndex : searchResult->second ) {
191 for (
auto child : node.getDaughters() ) {
195 if ( childDecision == -1 )
196 foundNonResolvedChild =
true;
197 else if ( childDecision == 1 )
198 foundPositiveChild =
true;
200 foundNegativeChild =
true;
202 if ( node.m_modePromptDecision ) {
203 if ( node.m_modeOR && foundPositiveChild ) {
207 }
else if ( !node.m_modeOR && foundNegativeChild ) {
213 if ( foundNonResolvedChild ) {
222 if ( breakout )
break;
225 for (
auto child : node.getDaughters() ) {
228 if ( childDecision == -1 )
229 foundNonResolvedChild =
true;
230 else if ( childDecision == 1 )
231 foundPositiveChild =
true;
233 foundNegativeChild =
true;
235 if ( node.m_modePromptDecision ) {
236 if ( node.m_modeOR && foundPositiveChild ) {
239 }
else if ( !node.m_modeOR && foundNegativeChild ) {
244 if ( foundNonResolvedChild )
break;
249 if ( !foundNonResolvedChild && decision == -1 ) {
250 if ( node.m_modeOR ) {
251 if ( foundPositiveChild )
256 if ( foundNegativeChild )
263 if ( node.m_inverted && decision == 1 )
265 else if ( node.m_inverted && decision == 0 )
268 if ( node.m_allPass && !foundNonResolvedChild ) decision = 1;
270 if ( decision != -1 ) {
274 for (
auto parent : node.m_parents ) { parent->accept( *
this ); }
276 if ( oldSlot )
m_slot = oldSlot;
283 for (
unsigned int slotIndex : searchResult->second ) {
288 for (
auto child : node.getDaughters() ) {
289 bool result = child->accept( *
this );
290 if ( !node.m_modeConcurrent )
298 for (
auto child : node.getDaughters() ) {
299 bool result = child->accept( *
this );
300 if ( !node.m_modeConcurrent )
305 if ( oldSlot )
m_slot = oldSlot;
std::string entryPoint
Event Views bookkeeping (TODO: optimize view bookkeeping)
Class representing an event slot.
std::vector< int > controlFlowState
State of the control flow.
std::vector< EventSlot > allSubSlots
Actual sub-slot instances.
EventSlot * parentSlot
Pointer to parent slot (null for top level)
std::unordered_map< std::string, std::vector< unsigned int > > subSlotsByNode
Listing of sub-slots by the node (name) they are attached to.