示例#1
0
        /// <summary>
        /// Converts the given edge enumerator to an array of key-value pairs.
        /// </summary>
        /// <typeparam name="TEdgeData"></typeparam>
        /// <param name="enumerator"></param>
        /// <returns></returns>
        public static KeyValuePair <uint, TEdgeData>[] ToKeyValuePairs <TEdgeData>(this EdgeEnumerator <TEdgeData> enumerator)
            where TEdgeData : IGraphEdgeData
        {
            enumerator.Reset();
            var pairs = new List <KeyValuePair <uint, TEdgeData> >();

            while (enumerator.MoveNext())
            {
                pairs.Add(new KeyValuePair <uint, TEdgeData>(enumerator.Neighbour, enumerator.EdgeData));
            }
            return(pairs.ToArray());
        }
示例#2
0
        /// <summary>
        /// Returns all arcs starting at the given vertex.
        /// </summary>
        /// <param name="vertex"></param>
        /// <returns></returns>
        public override EdgeEnumerator <TEdgeData> GetEdges(uint vertex)
        {
            if (_nextVertexId <= vertex)
            {
                throw new ArgumentOutOfRangeException("vertex", "vertex is not part of this graph.");
            }

            var enumerator = new EdgeEnumerator(this);

            enumerator.MoveTo(vertex);
            return(enumerator);
        }
示例#3
0
        /// <summary>
        /// Converts the given edge enumerator to an array of key-value pairs.
        /// </summary>
        /// <typeparam name="TEdgeData"></typeparam>
        /// <param name="enumerator"></param>
        /// <returns></returns>
        public static KeyValuePair <uint, KeyValuePair <TEdgeData, ICoordinateCollection> >[] ToKeyValuePairsAndShapes <TEdgeData>(this EdgeEnumerator <TEdgeData> enumerator)
            where TEdgeData : IGraphEdgeData
        {
            enumerator.Reset();
            var pairs = new List <KeyValuePair <uint, KeyValuePair <TEdgeData, ICoordinateCollection> > >();

            while (enumerator.MoveNext())
            {
                pairs.Add(new KeyValuePair <uint, KeyValuePair <TEdgeData, ICoordinateCollection> >(enumerator.Neighbour,
                                                                                                    new KeyValuePair <TEdgeData, ICoordinateCollection>(enumerator.EdgeData, enumerator.Intermediates)));
            }
            return(pairs.ToArray());
        }
示例#4
0
 /// <summary>
 /// Creates a new edge keeping the current state of the given enumerator.
 /// </summary>
 /// <param name="enumerator"></param>
 public Edge(EdgeEnumerator <TEdgeData> enumerator)
 {
     this.Neighbour     = enumerator.Neighbour;
     this.EdgeData      = enumerator.EdgeData;
     this.Intermediates = enumerator.Intermediates;
 }