public void RemoveInEdgeIf(IVertex u, IEdgePredicate pred) { if (u == null) { throw new ArgumentNullException("vertex u"); } if (pred == null) { throw new ArgumentNullException("predicate"); } EdgeCollection edges = this.VertexInEdges.get_Item(u); EdgeCollection edges2 = new EdgeCollection(); EdgeCollection.Enumerator enumerator = edges.GetEnumerator(); while (enumerator.MoveNext()) { IEdge edge = enumerator.get_Current(); if (pred.Test(edge)) { edges2.Add(edge); } } EdgeCollection.Enumerator enumerator2 = edges2.GetEnumerator(); while (enumerator2.MoveNext()) { IEdge e = enumerator2.get_Current(); this.RemoveEdge(e); } }
public override void RemoveEdge(IVertex u, IVertex v) { if (u == null) { throw new ArgumentNullException("source vertex"); } if (v == null) { throw new ArgumentNullException("targetvertex"); } EdgeCollection edges = base.VertexOutEdges.get_Item(u); EdgeCollection edges2 = this.VertexInEdges.get_Item(v); EdgeCollection edges3 = new EdgeCollection(); EdgeCollection.Enumerator enumerator = edges.GetEnumerator(); while (enumerator.MoveNext()) { IEdge edge = enumerator.get_Current(); if (edge.get_Target() == v) { edges3.Add(edge); } } EdgeCollection.Enumerator enumerator2 = edges2.GetEnumerator(); while (enumerator2.MoveNext()) { IEdge edge2 = enumerator2.get_Current(); if (edge2.get_Source() == u) { edges3.Add(edge2); } } EdgeCollection.Enumerator enumerator3 = edges3.GetEnumerator(); while (enumerator3.MoveNext()) { IEdge e = enumerator3.get_Current(); this.RemoveEdge(e); } }
public virtual void RemoveEdge(IVertex u, IVertex v) { if (u == null) { throw new ArgumentNullException("source vertex"); } if (v == null) { throw new ArgumentNullException("targetvertex"); } EdgeCollection edges = this.VertexOutEdges.get_Item(u); if (edges == null) { throw new EdgeNotFoundException(); } EdgeCollection edges2 = new EdgeCollection(); EdgeCollection.Enumerator enumerator = edges.GetEnumerator(); while (enumerator.MoveNext()) { IEdge edge = enumerator.get_Current(); if (edge.get_Target() == v) { edges2.Add(edge); } } EdgeCollection.Enumerator enumerator2 = edges2.GetEnumerator(); while (enumerator2.MoveNext()) { IEdge edge2 = enumerator2.get_Current(); edges.Remove(edge2); } }
public virtual void RemoveEdgeIf(IEdgePredicate pred) { if (pred == null) { throw new ArgumentNullException("predicate"); } EdgeCollection edges = new EdgeCollection(); VertexEdgesEnumerator enumerator = this.Edges.GetEnumerator(); while (enumerator.MoveNext()) { IEdge edge = enumerator.get_Current(); if (pred.Test(edge)) { edges.Add(edge); } } EdgeCollection.Enumerator enumerator2 = edges.GetEnumerator(); while (enumerator2.MoveNext()) { IEdge e = enumerator2.get_Current(); this.RemoveEdge(e); } }
public void AddReversedEdges() { if (this.Augmented) { throw new InvalidOperationException("Graph already augmented"); } EdgeCollection edges = new EdgeCollection(); IEdgeEnumerator enumerator = this.VisitedGraph.get_Edges().GetEnumerator(); while (enumerator.MoveNext()) { IEdge edge = enumerator.get_Current(); if (!this.reversedEdges.Contains(edge)) { IEdge edge2 = this.FindReversedEdge(edge); if (edge2 != null) { this.reversedEdges.set_Item(edge, edge2); if (!this.reversedEdges.Contains(edge2)) { this.reversedEdges.set_Item(edge2, edge); } } else { edges.Add(edge); } } } EdgeCollection.Enumerator enumerator2 = edges.GetEnumerator(); while (enumerator2.MoveNext()) { IEdge edge3 = enumerator2.get_Current(); if (!this.reversedEdges.Contains(edge3)) { IEdge edge4 = this.FindReversedEdge(edge3); if (edge4 != null) { this.reversedEdges.set_Item(edge3, edge4); } else { edge4 = this.VisitedGraph.AddEdge(edge3.get_Target(), edge3.get_Source()); this.augmentedEgdes.Add(edge4); this.reversedEdges.set_Item(edge3, edge4); this.reversedEdges.set_Item(edge4, edge3); this.OnReservedEdgeAdded(new EdgeEventArgs(edge4)); } } } this.augmented = true; }