Skip to content

Commit d40bdd7

Browse files
committed
gl groups
1 parent e9816a0 commit d40bdd7

5 files changed

Lines changed: 66 additions & 14 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
# documentation files
1111
documentation/
1212
site/
13+
mike-*.yml
1314

1415
# python temporary files
1516
**/__pycache__/

docs/groups.dox

Lines changed: 57 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,62 @@
11
/// @defgroup gl Graph Library (GL)
2-
/// @brief Core graph models, structures, and utilities.
2+
/// @brief The main module containing the general-purpose template graph library implementation.
33
///
4-
/// @defgroup hgl Hypergraph Library (HGL)
5-
/// @brief Core hypergraph models, structures, and utilities.
4+
/// This module encapsulates all standard graph representations, traversal algorithms, topology
5+
/// generators, and I/O utilities. It is heavily reliant on modern C++ paradigms, leveraging
6+
/// templates and concepts to provide a fast, generic, and type-safe graph API.
7+
8+
/// @defgroup gl_core Core Graph Components
9+
/// @ingroup gl
10+
/// @brief Fundamental graph data structures, descriptors, and configuration tags.
11+
///
12+
/// This group contains the primary building blocks of the library, including the main `gl::graph` class,
13+
/// graph element descriptors and the structural tags (i.e., directed vs. undirected and backend
14+
/// implementation tags) used to dictate graph behavior and memory layout.
15+
16+
/// @defgroup gl_alg Graph Algorithms
17+
/// @ingroup gl
18+
/// @brief Common graph algorithms and algorithm-related utility.
19+
///
20+
/// Provides generic, highly customizable implementations of classic graph algorithms.
21+
/// This includes standard search templates (BFS, DFS, PFS), shortest path finders
22+
/// (Dijkstra), minimum spanning trees (Prim), and topological sorting. Algorithms
23+
/// are designed to operate seamlessly via callbacks and property maps.
24+
25+
/// @defgroup gl_topo Graph Topology Generators
26+
/// @ingroup gl
27+
/// @brief Generators and evaluators for standard graph topologies.
28+
///
29+
/// A collection of utilities for quickly generating commong graph topologies.
30+
/// This includes cliques (complete graphs), bipartite graphs, binary trees, paths, and cycles.
31+
32+
/// @defgroup gl_io Input/Output Utility
33+
/// @ingroup gl
34+
/// @brief I/O stream support, parsing, and range-based formatting.
35+
///
36+
/// Facilities for reading, writing, and formatting graph data. This group provides the stream
37+
/// manipulators, configuration options, and format traits necessary to seamlessly serialize and
38+
/// visualize graph structures, and parse data from standard streams or files.
39+
40+
/// @defgroup gl_traits Traits & Concepts
41+
/// @ingroup gl
42+
/// @brief Type traits, constraints, and metaprogramming utilities.
43+
///
44+
/// Encapsulates the `gl::traits` namespace. These components are used extensively throughout the
45+
/// library to constrain template parameters and interrogate types at compile time (e.g., deducing
46+
/// underlying vertex/edge types, querying graph directedness, or enforcing structural constraints).
47+
48+
/// @defgroup gl_types Generic Data Types
49+
/// @ingroup gl
50+
/// @brief Independent, reusable structures and containers.
651
///
7-
/// @defgroup gl_alg GL Algorithms
52+
/// Contains highly generic data structures like `flat_matrix` and `flat_jagged_vector`.
53+
/// While these form the memory backbone of the graph implementations, they are completely
54+
/// decoupled from the graph logic and can be safely utilized in general-purpose programming contexts.
55+
56+
/// @defgroup gl_util General Utilities
857
/// @ingroup gl
9-
/// @brief Algorithms for standard graphs.
58+
/// @brief Practical, domain-agnostic C++ helpers and polyfills.
1059
///
11-
/// @defgroup hgl_alg HGL Algorithms
12-
/// @ingroup hgl
13-
/// @brief Algorithms for hypergraphs.
60+
/// While these utilities were built to facilitate the library's internal graph modeling
61+
/// and algorithms, they are completely decoupled from graph theory. They offer highly useful,
62+
/// reusable functionality that can be easily leveraged in any general C++ programming context.

include/gl/util/ranges.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@ template <std::ranges::forward_range R>
3636
return std::ranges::all_of(range, [&k](const auto& val) { return val == k; });
3737
}
3838

39-
inline constexpr auto deref_view =
40-
std::views::transform([](auto&& p) -> decltype(auto) { return *p; });
41-
4239
/// @brief A view concatenating two ranges sequentially (C++20 polyfill for C++26 `std::views::concat`).
4340
///
4441
/// @warning **GCC 13/14 Bug:** Using branching views (like this or `std::ranges::filter_view`)

include/hgl/util.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ namespace hgl::util {
1111
using gl::util::all_equal;
1212
using gl::util::concat;
1313
using gl::util::concat_view;
14-
using gl::util::deref_view;
1514
using gl::util::is_constant;
1615
using gl::util::range_size;
1716

mkdocs.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,15 @@ repo_url: "https://github.com/SpectraL519/cpp-gl"
44

55
nav:
66
- Home: index.md
7-
- GL:
8-
- Overview: cpp-gl/group__gl.md
7+
- Graph Library (GL):
8+
# TODO: Overview/Tutorial
9+
- Core: cpp-gl/group__gl__core.md
910
- Algorithms: cpp-gl/group__gl__alg.md
11+
- Topologies: cpp-gl/group__gl__topo.md
12+
- I/O: cpp-gl/group__gl__io.md
13+
- Traits & Concepts: cpp-gl/group__gl__traits.md
14+
- Generic Types: cpp-gl/group__gl__types.md
15+
- Utilities: cpp-gl/group__gl__util.md
1016
- HGL:
1117
- Overview: cpp-gl/group__hgl.md
1218
- Algorithms: cpp-gl/group__hgl__alg.md

0 commit comments

Comments
 (0)