Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
            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>());
            }
Ejemplo n.º 4
0
 public BindingGraph.Vertex AddVertex(object item)
 {
     BindingGraph.Vertex vertex = new BindingGraph.Vertex(item);
     this.vertices.Add(item, vertex);
     return(vertex);
 }