コード例 #1
0
        private void AnalyzeMarkingState()
        {
            foreach (int legalMarking in this.m_Reachability.LegalMarkings)
            {
                Marking m = this.m_Reachability.GetMarkingFromMarkingName(legalMarking);
                foreach (int t in this.m_Reachability.TransitionNames)
                {
                    if (!this.m_TGoodMarkings.ContainsKey(t))
                    {
                        this.m_TGoodMarkings.Add(t, new HashSet <int>());
                    }
                    if (m.CanFireTransition(t))
                    {
                        int nextM = this.m_Reachability.Graph[legalMarking][t];
                        if (this.m_Reachability.LegalMarkings.Contains(nextM))
                        {
                            this.m_TGoodMarkings[t].Add(legalMarking);
                            if (!this.m_TEnabledGoodMarkings.ContainsKey(t))
                            {
                                this.m_TEnabledGoodMarkings.Add(t, new HashSet <int>());
                            }
                            this.m_TEnabledGoodMarkings[t].Add(legalMarking);
                        }
                        else
                        {
                            if (!this.m_TDangerousMarkings.ContainsKey(t))
                            {
                                this.m_TDangerousMarkings.Add(t, new HashSet <int>());
                            }
                            this.m_TDangerousMarkings[t].Add(legalMarking);

                            if (!this.m_TCriticalMTSIs.ContainsKey(t))
                            {
                                this.m_TCriticalMTSIs.Add(t, new HashSet <int>());
                            }
                            this.m_TCriticalMTSIs[t].Add(legalMarking);
                        }
                    }
                    else
                    {
                        this.m_TGoodMarkings[t].Add(legalMarking);
                        if (!this.m_TDisabledGoodMarkings.ContainsKey(t))
                        {
                            this.m_TDisabledGoodMarkings.Add(t, new HashSet <int>());
                        }
                        this.m_TDisabledGoodMarkings[t].Add(legalMarking);
                    }
                }
            }
        }