/// <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(); }
/// <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);
/// <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);