Esempio n. 1
0
        public override PatchPattern GetInstance(ICollection disjunctStringCollection)
        {
            PatchRegex patchRegex = PatchRegex.GetInstance(disjunctStringCollection, this);

            if (Hashtable.ContainsKey(patchRegex.ToString()))
            {
                PatchPattern patchPattern = (PatchPattern)Hashtable[patchRegex.ToString()];
                return(patchPattern);
            }
            else
            {
                PatchPattern patchPattern = patchRegex;
                Hashtable.Add(patchPattern.ToString(), patchPattern);
                return(patchPattern);
            }
        }
Esempio n. 2
0
        private static PatchRegex FinishUp(SortedList rgDisjunct1, PatchRegexFactory patchRegexFactory)
        {
            SortedList rgDisjunct2 = RemoveSubsumedDisjuncts(rgDisjunct1);
            PatchRegex patchRegex  = new PatchRegex();

            patchRegex.DisjunctCollection = new Disjunct[rgDisjunct2.Count];
            rgDisjunct2.Values.CopyTo(patchRegex.DisjunctCollection, 0);

            SpecialFunctions.CheckCondition(rgDisjunct2.Count > 0);             //!!!raise error - just have at least one disjunct
            patchRegex.SetStringFromDisjunctCollection();
            patchRegex.SetEverythingElse(patchRegexFactory);

            if (patchRegexFactory.Hashtable.ContainsKey(patchRegex.ToString()))
            {
                return((PatchRegex)patchRegexFactory.Hashtable[patchRegex.ToString()]);
            }
            else
            {
                return(patchRegex);
            }
        }