|
| 1 | +/// @defgroup GL Graph Library (GL) |
| 2 | +/// @brief The top-level module defining the general-purpose C++ template graph library. |
| 3 | +/// |
| 4 | +/// This module provides a comprehensive suite of memory-efficient graph representations, |
| 5 | +/// highly customizable algorithms, topology generators, and robust I/O facilities. Designed |
| 6 | +/// strictly around modern C++ paradigms, the library heavily leverages templates and concepts |
| 7 | +/// to deliver an API that is exceptionally fast, generic, and type-safe. |
| 8 | + |
| 9 | +/// @defgroup GL-Core Core Graph Components |
| 10 | +/// @ingroup GL |
| 11 | +/// @brief Fundamental graph data structures, element descriptors, and configuration tags. |
| 12 | +/// |
| 13 | +/// This group establishes the primary user interface for the library, centered around the highly |
| 14 | +/// configurable @ref gl::graph "graph" class. It provides the core data types, such as vertex |
| 15 | +/// and edge descriptors, required to safely navigate and manipulate graph elements. |
| 16 | +/// |
| 17 | +/// Furthermore, this module defines the declarative tags (e.g., directedness and backend |
| 18 | +/// implementation types) that dictate both the behavioral semantics and the underlying memory |
| 19 | +/// layout of the instantiated graphs. |
| 20 | + |
| 21 | +/// @defgroup GL-Algorithm Graph Algorithms |
| 22 | +/// @ingroup GL |
| 23 | +/// @brief Generic graph algorithms, foundational search templates, and related utilities. |
| 24 | +/// |
| 25 | +/// This module provides a dual-layered approach to graph algorithms. At its core, it features highly |
| 26 | +/// generic and extensible search templates (such as BFS, DFS, and Priority-First Search). These |
| 27 | +/// templates serve as the foundational building blocks of the library, empowering users to inject |
| 28 | +/// custom behavior via callbacks and predicates to build entirely new algorithms with minimal effort. |
| 29 | +/// |
| 30 | +/// Alongside these templates, the module offers a suite of concrete, ready-to-use algorithms. |
| 31 | +/// Rather than a flat list of functions, the algorithms are categorized into broad domains, |
| 32 | +/// including basic graph traversal, pathfinding, minimum spanning trees, and topological |
| 33 | +/// operations like sorting and coloring. All implementations are designed to operate seamlessly |
| 34 | +/// with generic graph types and property maps. |
| 35 | + |
| 36 | +/// @defgroup GL-Topology Graph Topologies |
| 37 | +/// @ingroup GL |
| 38 | +/// @brief Generators and evaluators for standard structural graph topologies. |
| 39 | +/// |
| 40 | +/// A collection of lightweight utilities designed to quickly instantiate classic graph topologies. |
| 41 | +/// Featuring out-of-the-box support for cliques (complete graphs), bipartite graphs, binary trees, |
| 42 | +/// paths, and cycles, these generators are ideal for rapid prototyping, algorithm benchmarking, |
| 43 | +/// and automated testing. |
| 44 | + |
| 45 | +/// @defgroup GL-IO I/O Utility |
| 46 | +/// @ingroup GL |
| 47 | +/// @brief Comprehensive I/O stream support, parsing algorithms, and range-based formatting. |
| 48 | +/// |
| 49 | +/// This group provides the necessary infrastructure to seamlessly serialize, deserialize, and |
| 50 | +/// visualize complex graph structures. By offering a robust set of stream manipulators, formatting |
| 51 | +/// traits, and configuration options, it allows users to easily translate in-memory graphs to |
| 52 | +/// and from standard streams, files, or custom string representations. |
| 53 | + |
| 54 | +/// @defgroup GL-Traits Traits & Concepts |
| 55 | +/// @ingroup GL |
| 56 | +/// @brief Type traits, template constraints, and compile-time metaprogramming utilities. |
| 57 | +/// |
| 58 | +/// Encapsulating the `gl::traits` namespace, these components form the strict conceptual backbone |
| 59 | +/// of the library. They are used extensively to constrain template parameters, safely query type |
| 60 | +/// properties at compile time, and ensure that user-provided graphs and property maps meet |
| 61 | +/// required structural and behavioral contracts. |
| 62 | +/// |
| 63 | +/// @section concepts_link Detailed Concept Specifications |
| 64 | +/// For a detailed list of all GL module's concepts and their formal requirements, please refer to |
| 65 | +/// the [GL Concepts Documentation](gl_concepts.md#gl-concepts-documentation) page. |
| 66 | + |
| 67 | +/// @defgroup GL-Types Generic Types |
| 68 | +/// @ingroup GL |
| 69 | +/// @brief Independent, high-performance data structures and utility types. |
| 70 | +/// |
| 71 | +/// This module houses a variety of general-purpose data structures and types. While it features |
| 72 | +/// highly optimized memory containers (such as @ref gl::flat_matrix "flat_matrix" and |
| 73 | +/// @ref gl::flat_jagged_vector "flat_jagged_vector") that serve as the contiguous-memory backbones |
| 74 | +/// for the library's graphs, it also encompasses other fundamental type utilities. Because all |
| 75 | +/// components in this group are carefully decoupled from graph-specific logic, they can be seamlessly |
| 76 | +/// extracted and utilized in broader C++ programming contexts. |
| 77 | + |
| 78 | +/// @defgroup GL-Util General Utilities |
| 79 | +/// @ingroup GL |
| 80 | +/// @brief Practical, domain-agnostic C++ helpers, mathematical functions, and polyfills. |
| 81 | +/// |
| 82 | +/// While originally engineered to support the library's internal algorithms and graph modeling |
| 83 | +/// operations, these utilities are completely independent of graph theory semantics. They provide |
| 84 | +/// a curated set of highly reusable, general-purpose tools that can smoothly integrate into any |
| 85 | +/// modern C++ codebase. |
0 commit comments