Пример #1
0
        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);
        }
Пример #3
0
        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);
        }