/// <inheritdoc/>
        public override bool Get(Graph.Enumerator enumerator, out ushort value)
        {
            var edges   = enumerator.Edges;
            var pointer = enumerator.RawPointer + this.Offset + enumerator.EdgeSize;
            var bytes   = new[] { edges[pointer + 0], edges[pointer + 1] }; // allocations to do this, nooo.

            value = default;
            if (bytes[0] == byte.MaxValue && bytes[1] == byte.MaxValue)
            {
                return(false);
            }
            value = BitConverter.ToUInt16(bytes, 0);
            return(true);
        }
        /// <inheritdoc/>
        public override bool Set(Graph.Enumerator enumerator, ushort value)
        {
            var edges   = enumerator.Edges;
            var pointer = enumerator.RawPointer + this.Offset + enumerator.EdgeSize;
            var bytes   = BitConverter.GetBytes(value);

            if (bytes[0] == byte.MaxValue && bytes[1] == byte.MaxValue)
            {
                return(false);
            }

            edges[pointer + 0] = bytes[0];
            edges[pointer + 1] = bytes[1];

            return(true);
        }
        internal RouterDbEdgeEnumerator(RouterDb routerDb)
        {
            _routerDb = routerDb ?? throw new ArgumentNullException(nameof(routerDb));

            _enumerator = _routerDb.Network.GetEnumerator();
        }
 public EdgeEnumerator(Graph graph, IEnumerable <VertexId> vertices)
 {
     _vertexEnumerator = vertices.GetEnumerator();
     _graphEnumerator  = graph.GetEnumerator();
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Sets the data on the given edge.
 /// </summary>
 /// <param name="enumerator">The enumerator.</param>
 /// <param name="value">The value to store.</param>
 /// <returns>True when setting the value succeeds.</returns>
 public abstract bool Set(Graph.Enumerator enumerator, T value);
Ejemplo n.º 6
0
 /// <summary>
 /// Gets decoded that for the given edge.
 /// </summary>
 /// <param name="enumerator">The enumerator.</param>
 /// <param name="value">The decoded data.</param>
 /// <returns>True when getting the value succeeds.</returns>
 public abstract bool Get(Graph.Enumerator enumerator, out T value);