Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
f1829f3
YT-CPPHGL-1: Prepare the repository for the HGL module implementation
SpectraL519 Oct 26, 2025
e220490
YT-CPPHGL-2: Cleanup of the CPP-GL module implementation and document…
SpectraL519 Nov 1, 2025
54efe67
YT-CPPGL-56: Replace the usage of pointers for vertex and edge stora…
SpectraL519 Nov 2, 2025
eff9569
YT-CPPGL-56: Replace the usage of pointers for vertex and edge stora…
SpectraL519 Nov 4, 2025
2b1c04c
YT-CPPGL-56: Replace the usage of pointers for vertex and edge storag…
SpectraL519 Nov 12, 2025
22c989c
YT-CPPHGL-3: Define the vertex and edge descriptor types
SpectraL519 Nov 25, 2025
0aaabce
YT-CPPHGL-4: Create the hypergraph traits structure
SpectraL519 Nov 26, 2025
04a53ef
YT-CPPHGL-5: Create a basic hypergraph class
SpectraL519 Nov 30, 2025
afa3fc9
YT-CPPGHL-6: Implement the undirected hyperedge-list model
SpectraL519 Dec 5, 2025
d64e1c2
YT-CPPHGL-7: Implement the undirected vertex-list model
SpectraL519 Dec 5, 2025
c5d8e93
YT-CPPHGL-8: Implement the undirected incidence-matrix model
SpectraL519 Dec 5, 2025
3a8f0bc
YT-CPPHGL-9: Introduce storage layout tags to define the layout of in…
SpectraL519 Dec 6, 2025
bcbe88d
YT-CPPHGL-10: Implement the remaining methods of the hypergraph class…
SpectraL519 Dec 8, 2025
174a0c4
YT-CPPHL-11: Implement the bf-directed incidence-matrix model
SpectraL519 Dec 25, 2025
fcd9db3
YT-CPPHGL-12: Implement the bf-directed incidence-list model
SpectraL519 Dec 29, 2025
faa4c69
YT-CPPHGL-14: Implement the remaining methods of the hypergraph class…
SpectraL519 Dec 30, 2025
6069d5c
YT-CPPHGL-15: Validate bf-directed hypergraph binding operations for …
SpectraL519 Dec 30, 2025
a139d1f
YT-CPPHGL-16: Rename the n_vertices and n_edges method to use the sam…
SpectraL519 Dec 30, 2025
4e4d698
YT-CPPHGL-22: Implement basic hypergraph utility functions
SpectraL519 Jan 7, 2026
bb3b901
NONE: Added a project logo
SpectraL519 Jan 7, 2026
c4988c0
YT-CPPHGL-17: Implement basic hypergraph converters
SpectraL519 Mar 15, 2026
173d55b
YT-CPPGL-57: Add missing in/out edge getter methods
SpectraL519 Mar 15, 2026
25e609d
YT-CPPHGL-25: Implement the bidirectional incidence list model
SpectraL519 Mar 16, 2026
866ca84
YT-CPPHGL-26: Implement a flattened 2D vector data structure
SpectraL519 Mar 17, 2026
10ad047
[NONE] segment_vector class alignment
SpectraL519 Mar 17, 2026
cefe450
YT-CPPGL-59: Implement the flat list representation models
SpectraL519 Mar 18, 2026
abe4a4e
YT-CPPGL-62: Implement graph representation model converters
SpectraL519 Mar 19, 2026
6644fc8
NONE: Renamed segment_vector to segmented_vector
SpectraL519 Mar 19, 2026
dac7fb1
YT-CPPHGL-26: Implement flat list hypergraph representation models
SpectraL519 Mar 20, 2026
b501aea
YT-CPPHGL-Implement hypergraph conversion and cloning functions
SpectraL519 Mar 22, 2026
d5c73db
YT-CPPGL-60: Implement graph cloning functions
SpectraL519 Mar 22, 2026
6a03a40
YT-CPPGL-58: Cleanup the file structure, namespaces, and utility elem…
SpectraL519 Mar 23, 2026
3444485
NONE: Renamed the segmented_vector structure to flat_jagged_vector
SpectraL519 Mar 24, 2026
e91aecb
YT-CPPGL-58: Cleanup the file structure, namespaces, and utility elem…
SpectraL519 Mar 26, 2026
f3f2d03
YT-CPPGL-66: Replace the concrete id_type with a configurable graph t…
SpectraL519 Mar 26, 2026
99daa4c
YT-CPPHGL-33: Replace the concrete id_type with a configurable hyperg…
SpectraL519 Mar 28, 2026
1271c55
YT-CPPHGL-30: Implement a flat matrix data structure
SpectraL519 Mar 30, 2026
507f8fd
YT-CPPGL-64: Implement the flat matrix graph representation models
SpectraL519 Mar 31, 2026
2ad5a98
NONE: Prepare the library benchmarking subproject layout
SpectraL519 Apr 1, 2026
112a859
NONE: Testing compilation flags fix
SpectraL519 Apr 4, 2026
fbc251b
YT-CPPHGL-31: Implement flat matrix hypergraph representation models
SpectraL519 Apr 4, 2026
4abb3ae
NONE: Imporve the benchmarks subproject structure
SpectraL519 Apr 7, 2026
9f50cc5
YT-CPPHGL-18: Implement hypergraph traversal algorithms
SpectraL519 Apr 10, 2026
16e51d6
YT-CPPGL-71: Align the naming of edge getter methods
SpectraL519 Apr 10, 2026
4ff0b14
YT-CPPGL-68: Implement missing vertex view getters
SpectraL519 Apr 10, 2026
11cd6c3
YT-CPPHGL-23: Implement hypergraph I/O functionality
SpectraL519 Apr 13, 2026
1d5e2fa
YT-CPPHGL-35: Implement range-based and hyperedge adding and binding …
SpectraL519 Apr 13, 2026
06b7ff2
YT-CPPGL-75: GL module API refinement
SpectraL519 Apr 16, 2026
24f417b
YT-CPPHGL-37: HGL module API refinement
SpectraL519 Apr 19, 2026
56c8060
YT-CPPHGL-32: Refactor element properties storage
SpectraL519 Apr 19, 2026
0027f14
YT-CPPGL-74: Refactor element properties storage
SpectraL519 Apr 19, 2026
d2f4b51
YT-CPPGL-61: Prepare the GL module's documentation
SpectraL519 Apr 27, 2026
e838684
YT-CPPHGL-24: Prepare the HGL module documentation
SpectraL519 Apr 29, 2026
0072f5d
CPP-GL: version 2.0.0
SpectraL519 Apr 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
47 changes: 47 additions & 0 deletions .clangd
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
CompileFlags:
CompilationDatabase: build
Add:
- -std=c++23
- -xc++-header
- -Iinclude
- -Wall
- -Wextra
- -Wcast-align
- -Wconversion
- -Wsign-conversion
- -Wunreachable-code
- -Wuninitialized
- -Wunused
- -pedantic
- -ftemplate-depth=512

Diagnostics:
UnusedIncludes: None
ClangTidy:
Add:
- bugprone-*
- modernize-*
- performance-*
Remove:
- modernize-use-trailing-return-type

Index:
Background: Build

---

If:
PathMatch: tests/.*
CompileFlags:
Add:
- -Itests/include
- -Itests/external

---

If:
PathMatch: benchmarks/.*
CompileFlags:
CompilationDatabase: build_bench
Add:
- -Ibenchmarks/include
45 changes: 45 additions & 0 deletions .github/workflows/benchmarks.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Benchmarks Smoke Test
on:
push:
branches:
- "*"
paths:
- .github/workflows/benchmarks.yaml
- CMakeLists.txt
- cmake/
- include/**
- benchmarks/**

jobs:
build:
name: Build and Run Benchmarks (Smoke Test)
runs-on: ubuntu-24.04

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Dependencies (Boost)
run: |
sudo apt-get update
sudo apt-get install -y libboost-graph-dev

- name: Prepare
env:
CC: gcc-14
CXX: g++-14
run: |
cmake -B build_bench -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_C_COMPILER=$CC \
-DBUILD_BENCHMARKS=ON -DBENCH_INCLUDE_BGL=ON -DCMAKE_BUILD_TYPE=Release
continue-on-error: false

- name: Build the Benchmarks
run: |
cmake --build build_bench/ -j$(nproc)
continue-on-error: false

- name: Execute the Smoke Test
run: |
./build_bench/benchmarks/cpp-gl-bench \
--benchmark_repetitions=1 --benchmark_display_aggregates_only=true \
--bip-v 100
24 changes: 13 additions & 11 deletions .github/workflows/clang.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
name: clang++
name: Clang++
on:
push:
branches:
- '*'
- "*"
paths:
- .github/workflows/clang.yaml
- CMakeLists.txt
- cmake/
- include/**
- tests/**

jobs:
build:
name: Build and run tests
name: Build and Run Tests (Clang)
runs-on: ubuntu-24.04

steps:
Expand All @@ -19,18 +21,18 @@ jobs:

- name: Prepare
env:
CC: clang-17
CXX: clang++-17
CC: clang-18
CXX: clang++-18
run: |
cmake -B build -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_C_COMPILER=$CC
cmake -B build_clang -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_C_COMPILER=$CC
continue-on-error: false

- name: Build test executable
- name: Build Tests
run: |
cd build && make -j 4
cmake --build build_clang/ -j$(nproc)
continue-on-error: false

- name: Run tests
- name: Run Tests
run: |
./build/tests/run
continue-on-error: false
./build_clang/tests/gl
./build_clang/tests/hgl
88 changes: 88 additions & 0 deletions .github/workflows/documentation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Documentation

on:
pull_request:
branches:
- "*"
push:
tags:
- "v*"

permissions:
contents: write

jobs:
build-and-deploy:
name: Build & Deploy Documentation
runs-on: ubuntu-24.04

steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.14"

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install doxygen -y

- name: Install Python dependencies (uv)
run: |
pip install uv
uv sync

- name: Validate Internal Project Versions
run: |
VERSION=$(uv run python scripts/check_version.py)
echo "project version = $VERSION"
echo "VERSION=$VERSION" >> $GITHUB_ENV

- name: Validate Git Tag (Deploy Only)
if: github.event_name == 'push'
run: |
VERSION_TAG="${GITHUB_REF_NAME}"
echo "git version tag = $VERSION_TAG"
if [[ "$VERSION_TAG" != "v$VERSION" ]]; then
echo "Error: Tag mismatch: git version tag = $VERSION_TAG, project version: v$VERSION"
exit 1
fi

- name: Build Docs (PR Validation Only)
if: github.event_name == 'pull_request'
run: make build-docs

# See: https://api.github.com/users/github-actions%5Bbot%5D
- name: Configure Git (Deploy Only)
if: github.event_name == 'push'
run: |
git config --local user.name "github-actions[bot]"
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Determine if Latest Tag (Deploy Only)
if: github.event_name == 'push'
run: |
CURRENT_VERSION="v${VERSION}"
git fetch --tags --force
ALL_TAGS=$(git tag | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | sort -V)
LATEST_TAG=$(echo "$ALL_TAGS" | tail -n 1)

if [ "$CURRENT_VERSION" = "$LATEST_TAG" ]; then
echo "DEPLOY_LATEST=true" >> $GITHUB_ENV
else
echo "DEPLOY_LATEST=false" >> $GITHUB_ENV
fi

- name: Deploy with mike (Latest)
if: github.event_name == 'push' && env.DEPLOY_LATEST == 'true'
run: |
make docs TAGS="--push --update-aliases v${VERSION} latest"
uv run mike set-default --push latest

- name: Deploy with mike (Older Version)
if: github.event_name == 'push' && env.DEPLOY_LATEST == 'false'
run: make docs TAGS="--push v${VERSION}"
11 changes: 6 additions & 5 deletions .github/workflows/format.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
name: format
name: Code Formatting
on:
push:
branches:
- '*'
- "*"
paths:
- .github/workflows/format.yaml
- scripts/common.py
- scripts/format.py
- include/**
- tests/include/**
- tests/source/**
- tests/app/**

- benchmarks/**

jobs:
build:
Expand All @@ -24,9 +25,9 @@ jobs:
- name: Set up python
uses: actions/setup-python@v5
with:
python-version: "3.12"
python-version: "3.14"

- name: Test formatting
shell: bash
run: |
python3 scripts/format.py --check
python3 scripts/format.py --check --clang-format-executable clang-format-18
24 changes: 13 additions & 11 deletions .github/workflows/gpp.yaml
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
name: g++
name: G++
on:
push:
branches:
- '*'
- "*"
paths:
- .github/workflows/gpp.yaml
- CMakeLists.txt
- cmake/
- include/**
- tests/**


jobs:
build:
name: Build and run tests
name: Build and Run Tests (G++)
runs-on: ubuntu-24.04

steps:
Expand All @@ -20,17 +21,18 @@ jobs:

- name: Prepare
env:
CC: gcc-13
CXX: g++-13
CC: gcc-14
CXX: g++-14
run: |
cmake -B build -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_C_COMPILER=$CC
cmake -B build_gcc -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_C_COMPILER=$CC
continue-on-error: false

- name: Build test executable
- name: Build Tests
run: |
cd build && make -j 4
cmake --build build_gcc/ -j$(nproc)
continue-on-error: false

- name: Run tests
- name: Run Tests
run: |
./build/tests/run
./build_gcc/tests/gl
./build_gcc/tests/hgl
10 changes: 5 additions & 5 deletions .github/workflows/licence.yaml
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
name: licence
name: Licence
on:
push:
branches:
- '*'
- "*"
paths:
- .github/workflows/licence.yaml
- scripts/common.py
- scripts/check_licence.py
- include/**


jobs:
build:
name: Test code formatting
name: Test License Comments
runs-on: ubuntu-24.04

steps:
Expand All @@ -23,7 +23,7 @@ jobs:
with:
python-version: "3.12"

- name: Test formatting
- name: Validate Licence Comments
shell: bash
run: |
python3 scripts/check_licence.py
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
# editor files
.vscode/
.idea/
.zed/

# build files
*.exe
*build*/

# documentation files
documentation/
site/
mike-*.yml
docs/cpp-gl/

# python temporary files
**/__pycache__/
.ruff_cache/
.venv/

# other
*tmp*/
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.14
Loading
Loading