GetSuccessorNForReplay() public méthode

public GetSuccessorNForReplay ( int n, bool MustFingerprint ) : TraversalInfo
n int
MustFingerprint bool
Résultat TraversalInfo
        /// <summary>
        /// Executes the model checker from the model initial state to the state represented by the given trace.
        /// Sets the initial state for algorithms not using reduction.
        /// </summary>
        /// <param name="trace">The trace that the model checker follows to set the initial TraversalInfo state. Can be null.</param>
        /// <returns>The transition depth of the resultant state.</returns>
        private TraversalInfo GetTraversalInfoForTrace(Trace trace, int threadId, StateImpl iState)
        {
            TraversalInfo ti = new ExecutionState((StateImpl)iState.Clone(threadId), null, null);
            int Step = 0;
            if (trace != null)
            {
                #region Trace Count greater than zero

                if (trace.Count > 0)
                {
                    while (Step < trace.Count)
                    {
                        if (ZingerConfiguration.CompactTraces && ti.HasMultipleSuccessors)
                        {
                            ti = ti.GetSuccessorNForReplay((int)trace[Step++].Selection, false);
                        }
                        else if (ZingerConfiguration.CompactTraces)
                        {
                            while (!ti.HasMultipleSuccessors && ZingerConfiguration.CompactTraces)
                            {
                                int n = 0;
                                if (ti.stateType.Equals(TraversalInfo.StateType.ExecutionState))
                                {
                                    int i = 0;
                                    while (i < ti.NumProcesses)
                                    {
                                        if (ti.ProcessInfo[i].Status.Equals(ProcessStatus.Runnable))
                                        {
                                            n = i;
                                            break;
                                        }
                                        i++;
                                    }
                                }
                                ti = ti.GetSuccessorNForReplay(n, false);
                            }
                        }
                        else
                        {
                            ti = ti.GetSuccessorNForReplay((int)trace[Step++].Selection, false);
                        }
                    }
                }

                #endregion Trace Count greater than zero

                #region Traversing the tail

                while (!ti.HasMultipleSuccessors && ZingerConfiguration.CompactTraces)
                {
                    int n = 0;
                    if (ti.stateType.Equals(TraversalInfo.StateType.ExecutionState))
                    {
                        int i = 0;
                        while (i < ti.NumProcesses)
                        {
                            if (ti.ProcessInfo[i].Status.Equals(ProcessStatus.Runnable))
                            {
                                n = i;
                                break;
                            }
                            i++;
                        }
                    }
                    ti = ti.GetSuccessorNForReplay(n, false);
                }

                #endregion Traversing the tail
            }
            return ti;
        }