Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Normalize text files and keep LF in this repository.
* text=auto eol=lf

# Source and build files
*.c text eol=lf
*.cc text eol=lf
*.cpp text eol=lf
*.cxx text eol=lf
*.h text eol=lf
*.hh text eol=lf
*.hpp text eol=lf
*.hxx text eol=lf
*.ixx text eol=lf
*.cmake text eol=lf
CMakeLists.txt text eol=lf

# Scripts
*.sh text eol=lf
*.ps1 text eol=lf

# Docs and config
*.md text eol=lf
*.dot text eol=lf
*.svg text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.json text eol=lf
*.toml text eol=lf
*.txt text eol=lf

# Keep common binary assets untouched
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.webp binary
*.pdf binary
16 changes: 8 additions & 8 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"cmake.configureOnOpen": false,
"cmake.preferredGenerators": [
"Ninja"
],
"cmake.generator": "Ninja",
"cmake.cmakePath": "cmake"
}
{
"cmake.configureOnOpen": false,
"cmake.preferredGenerators": [
"Ninja"
],
"cmake.generator": "Ninja",
"cmake.cmakePath": "cmake"
}
36 changes: 18 additions & 18 deletions docs/assets/adjacency_list_concepts.dot
Original file line number Diff line number Diff line change
Expand Up @@ -11,43 +11,43 @@ digraph ConceptHierarchy {

node [fillcolor="#cce5ff"] // light blue

basic_edge_c [label="basic_edge<G,E>\nsource_id · target_id\n(shared with edge_list)"]
edge_c [label="edge<G,E>\nbasic_edge\n+ source · target"]
vertex_c [label="vertex<G,V>\nvertex_descriptor\nvertex_id · find_vertex"]
hashable_vertex_id [label="hashable_vertex_id<G>\nhash(vertex_id_t<G>)"]
basic_edge_c [label="basic_edge<G,E>\nsource_id(g, e)\ntarget_id(g, e)\n(shared with edge_list)"]
edge_c [label="edge<G,E>\nbasic_edge<G,E>\nsource(g, e)\ntarget(g, e)"]
vertex_c [label="vertex<G,V>\nis_vertex_descriptor_v<V>\nvertex_id(g, u)\nfind_vertex(g, uid)"]
hashable_vertex_id [label="hashable_vertex_id<G>\nhash<vertex_id_t<G>>{}(uid) → size_t"]

// ── Range concepts ────────────────────────────────────────────────────────
// Built from primitives; parameterised on a range type R

node [fillcolor="#d4edda"] // light green

out_edge_range [label="out_edge_range<R,G>\nforward_range of edge<G,·>"]
in_edge_range [label="in_edge_range<R,G>\nforward_range of edge<G,·>"]
vertex_range [label="vertex_range<R,G>\nforward_range + sized_range\nof vertex<G,·>"]
out_edge_range [label="out_edge_range<R,G>\nforward_range<R>\nedge<G, range_value_t<R>>"]
in_edge_range [label="in_edge_range<R,G>\nforward_range<R>\nedge<G, range_value_t<R>>"]
vertex_range [label="vertex_range<R,G>\nforward_range<R> ∧ sized_range<R>\nvertex<G, range_value_t<R>>"]

// ── Vertex range refinements ──────────────────────────────────────────────

node [fillcolor="#fff3cd"] // light yellow

index_vertex_range [label="index_vertex_range<G>\nintegral vid\nintegral storage_type"]
mapped_vertex_range [label="mapped_vertex_range<G>\n!index_vertex_range\nhashable_vertex_id\nfind_vertex"]
index_vertex_range [label="index_vertex_range<G>\nintegral<vertex_id_t<G>>\nintegral<vertex_range_t<G>::storage_type>"]
mapped_vertex_range [label="mapped_vertex_range<G>\n¬index_vertex_range<G>\nhashable_vertex_id<G>\nfind_vertex(g, uid)"]

// ── Core graph concepts ───────────────────────────────────────────────────

node [fillcolor="#f8d7da"] // light red/salmon

adjacency_list [label="adjacency_list<G>\nvertex_range + out_edge_range"]
ordered_vertex_edges [label="ordered_vertex_edges<G>\nadjacency_list\n+ edges sorted by target_id"]
bidirectional_adjacency_list [label="bidirectional_adjacency_list<G>\nadjacency_list\n+ in_edge_range"]
adjacency_list [label="adjacency_list<G>\nvertices(g) → vertex_range<G>\nout_edges(g, u) → out_edge_range<G>"]
ordered_vertex_edges [label="ordered_vertex_edges<G>\nadjacency_list<G>\nout_edges(g, u) sorted by target_id"]
bidirectional_adjacency_list [label="bidirectional_adjacency_list<G>\nadjacency_list<G>\nin_edges(g, u) → in_edge_range<G>"]

// ── Compound / specialised concepts ──────────────────────────────────────
// ── Compound / specialised concepts ──────────────────────────────────────

node [fillcolor="#e2d9f3"] // light purple

index_adjacency_list [label="index_adjacency_list<G>\nadjacency_list\n+ index_vertex_range"]
mapped_adjacency_list [label="mapped_adjacency_list<G>\nadjacency_list\n+ mapped_vertex_range"]
index_bidirectional_adjacency_list [label="index_bidirectional\n_adjacency_list<G>\nbidirectional\n+ index_vertex_range"]
mapped_bidirectional_adjacency_list [label="mapped_bidirectional\n_adjacency_list<G>\nbidirectional\n+ mapped_vertex_range"]
index_adjacency_list [label="index_adjacency_list<G>\nadjacency_list<G> ∧ index_vertex_range<G>"]
mapped_adjacency_list [label="mapped_adjacency_list<G>\nadjacency_list<G> ∧ mapped_vertex_range<G>"]
index_bidirectional_adjacency_list [label="index_bidirectional\n_adjacency_list<G>\nbidirectional_adjacency_list<G> ∧ index_vertex_range<G>"]
mapped_bidirectional_adjacency_list [label="mapped_bidirectional\n_adjacency_list<G>\nbidirectional_adjacency_list<G> ∧ mapped_vertex_range<G>"]

// ── Edges (arrows = "is required by" / "refines") ─────────────────────────

Expand Down Expand Up @@ -77,7 +77,7 @@ digraph ConceptHierarchy {
adjacency_list -> index_adjacency_list
index_vertex_range -> index_adjacency_list

adjacency_list -> mapped_adjacency_list
adjacency_list -> mapped_adjacency_list
mapped_vertex_range -> mapped_adjacency_list

bidirectional_adjacency_list -> index_bidirectional_adjacency_list
Expand Down
Loading
Loading