Skip to content

Commit c147b71

Browse files
committed
index update
1 parent f6b6075 commit c147b71

2 files changed

Lines changed: 42 additions & 25 deletions

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ target_link_libraries(my_project PRIVATE cpp-gl)
101101
| GNU G++ | 14 |
102102
| Clang | 18 |
103103

104-
> [!NOTE]
104+
> [!NOTE] C++23 Support
105+
>
105106
> Although currently the project has been properly verified using only the G++ and Clang compilers it should work fine with other compilers with C++23 support like MSVC.
106107
107108
<br />

docs/index.md

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,15 @@
1212

1313
[![G++](https://github.com/SpectraL519/cpp-gl/actions/workflows/gpp.yaml/badge.svg)](https://github.com/SpectraL519/cpp-gl/actions/workflows/gpp.yaml)
1414
[![Clang++](https://github.com/SpectraL519/cpp-gl/actions/workflows/clang.yaml/badge.svg)](https://github.com/SpectraL519/cpp-gl/actions/workflows/clang.yaml)
15+
16+
17+
</div>
18+
19+
<div align="center" markdown="1">
20+
1521
[![Code Formatting](https://github.com/SpectraL519/cpp-gl/actions/workflows/format.yaml/badge.svg)](https://github.com/SpectraL519/cpp-gl/actions/workflows/format.yaml)
1622
[![Benchmarks Smoke Test](https://github.com/SpectraL519/cpp-gl/actions/workflows/benchmarks.yaml/badge.svg)](https://github.com/SpectraL519/cpp-gl/actions/workflows/benchmarks.yaml)
23+
[![changelog](https://img.shields.io/badge/changelog-blue.svg?logo=github)](https://github.com/SpectraL519/cpp-gl/releases)
1724

1825
</div>
1926

@@ -31,17 +38,34 @@ Designed strictly around modern C++ paradigms, the library heavily leverages tem
3138

3239
To accommodate different mathematical models without compromising API clarity or performance, the library is strictly partitioned into two primary modules:
3340

34-
- **GL (Graph Library):** The core module dedicated to standard graphs. It handles both directed and undirected topologies where edges represent connections between two vertices. It provides a comprehensive suite of utilities including structural generators, graph modifiers, and a broad spectrum of classical graph algorithms.
35-
- **HGL (Hypergraph Library):** A specialized module dedicated to hypergraphs, where a single hyperedge represent higher-order connections. It features generalized traversal algorithms and incidence-based memory models tailored for complex, multi-way relationships.
41+
- **GL (Graph Library):** The core module dedicated to standard graphs. It handles both directed and undirected topologies where edges represent connections between exactly two vertices. It provides a comprehensive suite of utilities including structural generators, graph modifiers, and a broad spectrum of classical graph algorithms.
42+
- **HGL (Hypergraph Library):** A specialized module dedicated to hypergraphs, where a single hyperedge represents a higher-order connection between an arbitrary number of vertices. It features generalized traversal algorithms and incidence-based memory models tailored for complex, multi-way relationships.
43+
44+
---
3645

37-
## GL: Core Features
46+
## Core Features
3847

39-
- **Unified API:** The `gl::graph` class offers a single, consistent interface that completely abstracts away the underlying data structures. Users can seamlessly swap between different backend representations without needing to rewrite any of their traversal logic, property accesses, or algorithm calls.
40-
- **Flexible Memory Layouts:** The library provides a comprehensive suite of memory-efficient representations tailored to different graph types and access patterns. Users can choose between standard container-based layouts (Adjacency Lists and Matrices) and highly optimized, cache-friendly contiguous array structures (Flat Lists and Flat Matrices).
41-
- **Customizable Element Properties:** Vertices and edges can carry arbitrary, user-defined payloads. Whether you are assigning standard metric weights and colors or attaching complex, application-specific data structures, the library's traits system ensures that property injection and access remain strictly type-safe and performant.
42-
- **Zero-Cost Abstractions:** By relying on C++20 concepts instead of virtual interfaces and dynamic dispatch, CPP-GL eliminates vtable overhead while enforcing strict compile-time contracts.
43-
- **Extensible Engines & Concrete Algorithms:** CPP-GL features a dual-layered algorithmic architecture. At its core, it provides highly generic search templates (such as BFS, DFS and Priority-First Search) that act as foundational engines, allowing users to build entirely new algorithms by injecting custom callbacks. Built upon these engines is a robust suite of concrete, ready-to-use algorithms for immediate application.
44-
- **Robust I/O Facilities:** Built-in serialization and formatting tools allow for seamless translation of in-memory graphs to and from standard streams and files, utilizing a shared global state for consistent formatting.
48+
Because both modules share the same fundamental design philosophy, they offer a unified, symmetrical feature set tailored to their respective mathematical domains:
49+
50+
- **Shared Zero-Cost Infrastructure:** By relying on C++20 concepts instead of virtual interfaces and dynamic dispatch, CPP-GL eliminates vtable overhead while enforcing strict compile-time contracts. Crucially, the **HGL module is built strictly on top of the GL module**, directly reusing its core infrastructure (ID types, traits, memory structures) to ensure maximum code reuse, while allowing the GL module to remain completely standalone for standard graph use cases.
51+
- **Unified Topology APIs:** The `gl::graph` and `hgl::hypergraph` classes offer consistent interfaces that completely abstract away the underlying memory models. Users can seamlessly swap between different backend representations without rewriting their traversal logic, property accesses, or algorithm calls.
52+
- **Flexible Memory Layouts:** The library provides a comprehensive suite of memory-efficient representations. Users can choose between dynamic container-based layouts (Lists and Matrices) and highly optimized, cache-friendly contiguous array structures (Flat Lists and Flat Matrices). The HGL module further extends this by allowing users to specify the orientation of the memory models to optimize generalized incidence queries.
53+
- **Customizable Element Properties:** Vertices, edges, and hyperedges can carry arbitrary, user-defined payloads. Whether you are assigning standard metric weights and colors or attaching complex, application-specific data structures, the library's traits system ensures that property injection and access remain strictly type-safe and performant.
54+
- **Dual-Layered Algorithmic Architecture:** CPP-GL cleanly separates traversal mechanics from specific problem-solving logic. At the foundation, highly generic search engines (like BFS and DFS) empower users to construct completely custom algorithms via injected callbacks. Layered seamlessly above this is a comprehensive suite of ready-to-use concrete algorithms, ranging from standard graph pathfinding to specialized hypergraph reachability (such as B-Searches and F-Searches).
55+
- **Robust I/O Facilities:** Native serialization and formatting tools make it simple to pipe topologies directly to and from standard C++ streams and files. Both the GL and HGL modules share a unified set of stream options for visual output, while relying on dedicated, easily parsable flat-text formats (GSF and HGSF) to ensure fast and predictable data serialization.
56+
57+
---
58+
59+
## Compiler support
60+
61+
| Compiler | Min version |
62+
| :-: | :-: |
63+
| GNU G++ | 14 |
64+
| Clang | 18 |
65+
66+
> [!NOTE] C++23 Support
67+
>
68+
> Although currently the project has been properly verified using only the G++ and Clang compilers it should work fine with other compilers with C++23 support like MSVC.
4569
4670
---
4771

@@ -61,34 +85,26 @@ include(FetchContent)
6185
6286
FetchContent_Declare(
6387
cpp-gl
64-
GIT_REPOSITORY [https://github.com/SpectraL519/cpp-gl.git](https://github.com/SpectraL519/cpp-gl.git)
65-
GIT_TAG <tag> # Spcify the desired version tag, branch, or specific commit
88+
GIT_REPOSITORY https://github.com/SpectraL519/cpp-gl.git
89+
GIT_TAG <tag> # (1)!
6690
)
6791
6892
FetchContent_MakeAvailable(cpp-gl)
6993
7094
add_executable(my_project main.cpp)
7195
7296
set_target_properties(my_project PROPERTIES
73-
CXX_STANDARD 23 # (1)!
97+
CXX_STANDARD 23 # (2)!
7498
CXX_STANDARD_REQUIRED YES
7599
)
76100
77101
target_link_libraries(my_project PRIVATE cpp-gl)
78102
```
79103

80-
1. The CPP-GL library requires C++23
81-
82-
### Option B: CMake `find_package`
83-
84-
If you have already downloaded or installed the library locally, you can add the <cpp-gl-root>/include path to your system and link it using `find_package`:
85-
86-
```cmake
87-
find_package(cpp-gl REQUIRED)
88-
target_link_libraries(my_project PRIVATE cpp-gl::cpp-gl)
89-
```
104+
1. Specify the desired version tag, branch, or specific commit
105+
2. The CPP-GL library requires C++23
90106

91-
### Option C: Including the Headers Directly
107+
### Option B: Including the Headers Directly
92108

93109
If you do not wish to use CMake, you can simply download the desired version of the library from the [Releases Page](https://github.com/SpectraL519/cpp-gl/releases) and add the `include` directory of the library to your project via the `-I<cpp-gl-dir>/include` flag.
94110

@@ -99,4 +115,4 @@ If you do not wish to use CMake, you can simply download the desired version of
99115
Ready to write some code? Choose a module below to view its Quick Start guide and dive into the tutorials:
100116

101117
* [**Get Started with GL (Standard Graphs)**](gl/quick_start.md) - Master the core concepts, build custom topologies, and explore the robust suite of generic traversal engines and classical algorithms.
102-
* **Get Started with HGL (Hypergraphs)** - *(Coming Soon)*
118+
* [**Get Started with HGL (Hypergraphs)**](hgl/quick_start.md) - Master generalized incidence, configure complex memory layouts, and evaluate higher-order reachability across hypergraph networks.

0 commit comments

Comments
 (0)