Skip to content

Commit 5ea42f0

Browse files
author
Jack Dermody
committed
graph refactor
1 parent e494352 commit 5ea42f0

File tree

12 files changed

+377
-237
lines changed

12 files changed

+377
-237
lines changed

BrightData/BrightData.xml

Lines changed: 57 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -19318,63 +19318,6 @@
1931819318
<member name="M:BrightData.Types.FixedSizeSortedDescending32Array`2.ToString">
1931919319
<inheritdoc />
1932019320
</member>
19321-
<member name="T:BrightData.Types.Graph.DirectedGraph`1">
19322-
<summary>
19323-
Directed graph
19324-
</summary>
19325-
<typeparam name="T"></typeparam>
19326-
</member>
19327-
<member name="M:BrightData.Types.Graph.DirectedGraph`1.#ctor(System.ReadOnlySpan{System.Byte})">
19328-
<summary>
19329-
Creates a directed graph from graph data
19330-
</summary>
19331-
<param name="data"></param>
19332-
</member>
19333-
<member name="P:BrightData.Types.Graph.DirectedGraph`1.Size">
19334-
<inheritdoc />
19335-
</member>
19336-
<member name="M:BrightData.Types.Graph.DirectedGraph`1.TryGetValue(System.UInt32,System.Nullable{`0}@)">
19337-
<summary>
19338-
Returns the value associated with the node
19339-
</summary>
19340-
<param name="nodeIndex"></param>
19341-
<param name="value"></param>
19342-
<returns></returns>
19343-
</member>
19344-
<member name="M:BrightData.Types.Graph.DirectedGraph`1.EnumerateConnectedNodes(System.UInt32)">
19345-
<summary>
19346-
Enumerates the connected nodes from a single node
19347-
</summary>
19348-
<param name="nodeIndex"></param>
19349-
<returns></returns>
19350-
</member>
19351-
<member name="T:BrightData.Types.Graph.DirectedGraphBuilder`1">
19352-
<summary>
19353-
Builds a directed graph
19354-
</summary>
19355-
<typeparam name="T"></typeparam>
19356-
</member>
19357-
<member name="M:BrightData.Types.Graph.DirectedGraphBuilder`1.Add(`0)">
19358-
<summary>
19359-
Add a new node
19360-
</summary>
19361-
<param name="node"></param>
19362-
<returns></returns>
19363-
</member>
19364-
<member name="M:BrightData.Types.Graph.DirectedGraphBuilder`1.AddEdge(System.UInt32,System.UInt32)">
19365-
<summary>
19366-
Adds an edge between two nodes
19367-
</summary>
19368-
<param name="fromNodeIndex"></param>
19369-
<param name="toNodeIndex"></param>
19370-
<returns></returns>
19371-
</member>
19372-
<member name="M:BrightData.Types.Graph.DirectedGraphBuilder`1.Build">
19373-
<summary>
19374-
Builds the graph
19375-
</summary>
19376-
<returns></returns>
19377-
</member>
1937819321
<member name="T:BrightData.Types.Graph.FixedSizeWeightedDynamicGraph`3">
1937919322
<summary>
1938019323
A fixed size weighted graph
@@ -19638,6 +19581,63 @@
1963819581
<param name="index">Start node index</param>
1963919582
<returns></returns>
1964019583
</member>
19584+
<member name="T:BrightData.Types.Graph.SparseGraph`1">
19585+
<summary>
19586+
Directed graph
19587+
</summary>
19588+
<typeparam name="T"></typeparam>
19589+
</member>
19590+
<member name="M:BrightData.Types.Graph.SparseGraph`1.#ctor(System.ReadOnlySpan{System.Byte})">
19591+
<summary>
19592+
Creates a directed graph from graph data
19593+
</summary>
19594+
<param name="data"></param>
19595+
</member>
19596+
<member name="P:BrightData.Types.Graph.SparseGraph`1.Size">
19597+
<inheritdoc />
19598+
</member>
19599+
<member name="M:BrightData.Types.Graph.SparseGraph`1.TryGetValue(System.UInt32,System.Nullable{`0}@)">
19600+
<summary>
19601+
Returns the value associated with the node
19602+
</summary>
19603+
<param name="nodeIndex"></param>
19604+
<param name="value"></param>
19605+
<returns></returns>
19606+
</member>
19607+
<member name="M:BrightData.Types.Graph.SparseGraph`1.EnumerateDirectlyConnectedNodes(System.UInt32)">
19608+
<summary>
19609+
Enumerates the connected nodes from a single node
19610+
</summary>
19611+
<param name="nodeIndex"></param>
19612+
<returns></returns>
19613+
</member>
19614+
<member name="T:BrightData.Types.Graph.SparseGraphBuilder`1">
19615+
<summary>
19616+
Builds a directed graph
19617+
</summary>
19618+
<typeparam name="T"></typeparam>
19619+
</member>
19620+
<member name="M:BrightData.Types.Graph.SparseGraphBuilder`1.Add(`0)">
19621+
<summary>
19622+
Add a new node
19623+
</summary>
19624+
<param name="node"></param>
19625+
<returns></returns>
19626+
</member>
19627+
<member name="M:BrightData.Types.Graph.SparseGraphBuilder`1.AddEdge(System.UInt32,System.UInt32)">
19628+
<summary>
19629+
Adds an edge between two nodes
19630+
</summary>
19631+
<param name="fromNodeIndex"></param>
19632+
<param name="toNodeIndex"></param>
19633+
<returns></returns>
19634+
</member>
19635+
<member name="M:BrightData.Types.Graph.SparseGraphBuilder`1.Build">
19636+
<summary>
19637+
Builds the graph
19638+
</summary>
19639+
<returns></returns>
19640+
</member>
1964119641
<member name="T:BrightData.Types.Helper.SortedArrayHelper">
1964219642
<summary>
1964319643
Fixed size array helper methods

BrightData/Interfaces.Graphs.cs

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,48 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Diagnostics.CodeAnalysis;
34
using System.Numerics;
45

56
namespace BrightData
67
{
8+
public interface IGraph : IHaveSize
9+
{
10+
11+
}
12+
13+
public interface IGraph<out T> : IGraph
14+
where T: unmanaged
15+
{
16+
/// <summary>
17+
/// Returns the value associated with the node
18+
/// </summary>
19+
/// <param name="nodeIndex"></param>
20+
/// <param name="value"></param>
21+
/// <returns></returns>
22+
//bool TryGetValue(uint nodeIndex, [NotNullWhen(true)] out T? value);
23+
}
24+
25+
public interface IBuildGraphs<T>
26+
where T: unmanaged
27+
{
28+
/// <summary>
29+
/// Add a new node
30+
/// </summary>
31+
/// <param name="node"></param>
32+
/// <returns></returns>
33+
uint Add(T node);
34+
35+
/// <summary>
36+
/// Adds an edge between two nodes
37+
/// </summary>
38+
/// <param name="fromNodeIndex"></param>
39+
/// <param name="toNodeIndex"></param>
40+
/// <returns></returns>
41+
bool AddEdge(uint fromNodeIndex, uint toNodeIndex);
42+
43+
44+
}
45+
746
/// <summary>
847
/// A graph node
948
/// </summary>
@@ -69,8 +108,8 @@ public interface ICalculateNodeWeights<out W>
69108
/// </summary>
70109
/// <typeparam name="T"></typeparam>
71110
/// <typeparam name="W"></typeparam>
72-
public interface IWeightedGraph<out T, W> : IHaveSize
73-
where T: IHaveSingleIndex
111+
public interface IWeightedGraph<out T, W> : IGraph<T>
112+
where T: unmanaged, IHaveSingleIndex
74113
where W : unmanaged, INumber<W>, IMinMaxValue<W>
75114
{
76115
/// <summary>
@@ -131,7 +170,7 @@ RAT ProbabilisticSearch<RAT, CAT>(uint q, uint entryPoint, ICalculateNodeWeights
131170
/// <typeparam name="T"></typeparam>
132171
/// <typeparam name="W"></typeparam>
133172
public interface IWeightedDynamicGraph<T, W> : IWeightedGraph<T, W>
134-
where T: IHaveSingleIndex
173+
where T : unmanaged, IHaveSingleIndex
135174
where W : unmanaged, INumber<W>, IMinMaxValue<W>
136175
{
137176
/// <summary>

BrightData/Interfaces.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ public interface IHaveOffset
615615
uint Offset { get; }
616616
}
617617

618-
public interface IBitVector : IHaveSize
618+
public interface IBitVector : IHaveSize, IHaveDataAsReadOnlyByteSpan
619619
{
620620
/// <summary>
621621
/// Gets the value of a bit within the vector

BrightData/Types/BitVector.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Numerics;
55
using System.Text;
66
using System.Threading;
7+
using CommunityToolkit.HighPerformance;
78

89
namespace BrightData.Types
910
{
@@ -91,6 +92,17 @@ public bool this[int bitIndex]
9192
}
9293
}
9394

95+
/// <summary>
96+
/// Gets or sets an item in the vector
97+
/// </summary>
98+
/// <param name="bitIndex"></param>
99+
/// <exception cref="ArgumentException"></exception>
100+
public bool this[uint bitIndex]
101+
{
102+
get => this[(int)bitIndex];
103+
set => this[(int)bitIndex] = value;
104+
}
105+
94106
/// <summary>
95107
/// Sets a range of bits
96108
/// </summary>
@@ -154,5 +166,8 @@ public override string ToString()
154166
sb.Append("...");
155167
return sb.ToString();
156168
}
169+
170+
/// <inheritdoc />
171+
public ReadOnlySpan<byte> DataAsBytes => AsSpan().AsBytes();
157172
}
158173
}

0 commit comments

Comments
 (0)