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); } }
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); } }