// End-state may have less events then the termination state public bool CompareTerminationStateToEndState( RowRecogNFAStateEntry terminationState, RowRecogNFAStateEntry endState) { if (terminationState.MatchBeginEventSeqNo != endState.MatchBeginEventSeqNo) { return false; } foreach (var entry in variableStreams) { var stream = entry.Value.First; var multi = entry.Value.Second; if (multi) { var termStreamEvents = RowRecogNFAViewUtil.GetMultimatchArray( multimatchStreamNumToVariable, terminationState, stream); var endStreamEvents = RowRecogNFAViewUtil.GetMultimatchArray( multimatchStreamNumToVariable, endState, stream); if (endStreamEvents != null) { if (termStreamEvents == null) { return false; } for (var i = 0; i < endStreamEvents.Length; i++) { if (termStreamEvents.Length > i && !EventBeanUtility.EventsAreEqualsAllowNull( endStreamEvents[i], termStreamEvents[i])) { return false; } } } } else { var termStreamEvent = terminationState.EventsPerStream[stream]; var endStreamEvent = endState.EventsPerStream[stream]; if (!EventBeanUtility.EventsAreEqualsAllowNull(endStreamEvent, termStreamEvent)) { return false; } } } return true; }
// End-state may have less events then the termination state public bool CompareTerminationStateToEndState(RegexNFAStateEntry terminationState, RegexNFAStateEntry endState) { if (terminationState.MatchBeginEventSeqNo != endState.MatchBeginEventSeqNo) { return(false); } foreach (var entry in _variableStreams) { int stream = entry.Value.First; bool multi = entry.Value.Second; if (multi) { EventBean[] termStreamEvents = EventRowRegexNFAViewUtil.GetMultimatchArray(_multimatchStreamNumToVariable, terminationState, stream); EventBean[] endStreamEvents = EventRowRegexNFAViewUtil.GetMultimatchArray(_multimatchStreamNumToVariable, endState, stream); if (endStreamEvents != null) { if (termStreamEvents == null) { return(false); } for (int i = 0; i < endStreamEvents.Length; i++) { if (termStreamEvents.Length > i && !EventBeanUtility.EventsAreEqualsAllowNull(endStreamEvents[i], termStreamEvents[i])) { return(false); } } } } else { EventBean termStreamEvent = terminationState.EventsPerStream[stream]; EventBean endStreamEvent = endState.EventsPerStream[stream]; if (!EventBeanUtility.EventsAreEqualsAllowNull(endStreamEvent, termStreamEvent)) { return(false); } } } return(true); }