public void ClearEdgesForVertex(BindingGraph.Vertex v) { foreach (BindingGraph.Edge edge in v.OutgoingEdges.Concat <BindingGraph.Edge>(v.IncomingEdges).ToList <BindingGraph.Edge>()) { this.RemoveEdge(edge.Source.Item, edge.Target.Item, edge.Label); } }
public void RemoveEdge(object source, object target, string label) { BindingGraph.Vertex vertex = this.vertices[source]; BindingGraph.Vertex vertex2 = this.vertices[target]; BindingGraph.Edge item = new BindingGraph.Edge { Source = vertex, Target = vertex2, Label = label }; vertex.OutgoingEdges.Remove(item); vertex2.IncomingEdges.Remove(item); }
private IEnumerable <BindingGraph.Vertex> UnreachableVertices() { Queue <BindingGraph.Vertex> queue = new Queue <BindingGraph.Vertex>(); this.Root.Color = VertexColor.Gray; queue.Enqueue(this.Root); while (queue.Count != 0) { BindingGraph.Vertex vertex = queue.Dequeue(); foreach (BindingGraph.Edge edge in vertex.OutgoingEdges) { if (edge.Target.Color == VertexColor.White) { edge.Target.Color = VertexColor.Gray; queue.Enqueue(edge.Target); } } vertex.Color = VertexColor.Black; } return((from v in this.vertices.Values where v.Color == VertexColor.White select v).ToList <BindingGraph.Vertex>()); }
public BindingGraph.Vertex AddVertex(object item) { BindingGraph.Vertex vertex = new BindingGraph.Vertex(item); this.vertices.Add(item, vertex); return(vertex); }