internal void RemoveEdge(VisibilityVertex v1, VisibilityVertex v2) { VisibilityEdge edge; if (!v1.TryGetEdge(v2, out edge)) { return; } edge.Source.RemoveOutEdge(edge); edge.Target.RemoveInEdge(edge); }
static internal VisibilityEdge AddEdge(VisibilityVertex source, VisibilityVertex target) { VisibilityEdge visEdge; if (source.TryGetEdge(target, out visEdge)) { return(visEdge); } Debug.Assert(source != target, "Self-edges are not allowed"); var edge = new VisibilityEdge(source, target); source.OutEdges.Insert(edge); target.InEdges.Add(edge); return(edge); }
static internal VisibilityEdge AddEdge(VisibilityVertex source, VisibilityVertex target) { VisibilityEdge visEdge; if (source.TryGetEdge(target, out visEdge)) { return(visEdge); } if (source == target) { Debug.Assert(false, "Self-edges are not allowed"); throw new InvalidOperationException("Self-edges are not allowed"); } var edge = new VisibilityEdge(source, target); source.OutEdges.Insert(edge); target.InEdges.Add(edge); return(edge); }