public static GrowOnlySet <TValue> AddWithReferenceEquality <TKey, TValue>(GrowOnlyHashTable <TKey, GrowOnlySet <TValue> > ht, TKey key, TValue value) where TValue : class { GrowOnlySet <TValue> set = CreateWithReferenceEquality(ht, key); set.Insert(value); return(set); }
public static GrowOnlySet <TValue> Add <TKey, TValue>(GrowOnlyHashTable <TKey, GrowOnlySet <TValue> > ht, TKey key, TValue value) { GrowOnlySet <TValue> set = Create(ht, key); set.Insert(value); return(set); }
protected void Visit(ITreeNode <FC> node) { ProcessBefore(node); m_visited.Insert(node); for (int pass = 0; pass < 2; pass++) { foreach (ITreeEdge <FC> edge in node.Successors) { var bbSucc = edge.Successor; // // On the first pass, follow only non-dead branches. // // Dead branches are almost always exception-throwing branches, // following them after the other branches ensures that they don't show up in TreeEdges. // if (pass == 0 == (bbSucc.FlowControl is IDeadBranch)) { continue; } if (m_visited.Contains(bbSucc) == false) { ProcessEdgeBefore(edge); Visit(bbSucc); ProcessEdgeAfter(edge); } else { ProcessEdgeNotTaken(edge); } } } ProcessAfter(node); }