Skip to content

Commit 9a02ba1

Browse files
feat: Doxygen API reference site + Batch 1 core header documentation (Phase E.1)
Add Doxygen infrastructure (Doxyfile, doxygen-awesome-css theme submodule, GitHub Pages CI workflow) and comprehensive /// documentation to the 5 core API headers: types.hpp, schema.hpp, error.hpp, writer.hpp, reader.hpp. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent b27a11d commit 9a02ba1

11 files changed

Lines changed: 1191 additions & 294 deletions

File tree

.github/workflows/docs.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Docs
2+
on:
3+
push:
4+
branches: [main]
5+
permissions:
6+
pages: write
7+
id-token: write
8+
concurrency:
9+
group: pages
10+
cancel-in-progress: false
11+
jobs:
12+
docs:
13+
runs-on: ubuntu-24.04
14+
environment:
15+
name: github-pages
16+
url: ${{ steps.deploy.outputs.page_url }}
17+
steps:
18+
- uses: actions/checkout@v4
19+
with:
20+
submodules: true
21+
- name: Install Doxygen
22+
run: sudo apt-get install -y doxygen
23+
- name: Build docs
24+
run: doxygen Doxyfile
25+
- name: Upload Pages artifact
26+
uses: actions/upload-pages-artifact@v3
27+
with:
28+
path: html
29+
- name: Deploy to GitHub Pages
30+
id: deploy
31+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,9 @@ benchmark_results.txt
8989
default.profraw
9090

9191
# ---------------------------------------------------------------------------
92-
# Doxygen (future Phase 11)
92+
# Doxygen output
9393
# ---------------------------------------------------------------------------
94+
html/
9495
docs/doxygen/
9596
docs/html/
9697
docs/latex/

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "doxygen-awesome-css"]
2+
path = doxygen-awesome-css
3+
url = https://github.com/jothepro/doxygen-awesome-css.git

Doxyfile

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Doxyfile — Signet Forge API Reference
2+
# Generated for Doxygen 1.16.x
3+
4+
PROJECT_NAME = "Signet Forge"
5+
PROJECT_BRIEF = "C++20 Parquet library with AI-native extensions"
6+
PROJECT_NUMBER = 0.1.0
7+
OUTPUT_DIRECTORY =
8+
INPUT = include/signet doxygen
9+
RECURSIVE = YES
10+
EXTRACT_ALL = YES
11+
JAVADOC_AUTOBRIEF = YES
12+
GENERATE_HTML = YES
13+
GENERATE_LATEX = NO
14+
HTML_OUTPUT = html
15+
HTML_EXTRA_STYLESHEET = doxygen-awesome-css/doxygen-awesome.css
16+
HTML_COLORSTYLE = LIGHT
17+
DISABLE_INDEX = NO
18+
GENERATE_TREEVIEW = YES
19+
FULL_SIDEBAR = NO
20+
USE_MDFILE_AS_MAINPAGE = doxygen/mainpage.md
21+
FILE_PATTERNS = *.hpp *.md
22+
EXCLUDE_PATTERNS = */detail/*
23+
SOURCE_BROWSER = YES
24+
INLINE_SOURCES = NO
25+
HAVE_DOT = NO
26+
SORT_MEMBER_DOCS = YES
27+
WARN_IF_UNDOCUMENTED = NO
28+
QUIET = YES

doxygen-awesome-css

Submodule doxygen-awesome-css added at 1f36200

doxygen/mainpage.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# Signet Forge {#mainpage}
2+
3+
**C++20 Parquet library with AI-native extensions — zero mandatory dependencies.**
4+
5+
[GitHub Repository](https://github.com/SIGNETSTACK/signet-forge)
6+
7+
---
8+
9+
## Features
10+
11+
- **Standalone C++20 Parquet** — no Arrow dependency, header-mostly, pure stdlib core
12+
- **All standard encodings** — PLAIN, RLE, DELTA_BINARY_PACKED, BYTE_STREAM_SPLIT, RLE_DICTIONARY
13+
- **Compression** — bundled Snappy; optional ZSTD, LZ4, Gzip
14+
- **Parquet Modular Encryption** — AES-256-GCM/CTR column-level encryption (PME)
15+
- **Post-quantum cryptography** — Kyber-768 KEM + Dilithium-3 signatures + X25519 hybrid
16+
- **AI-native vector columns**`FLOAT32_VECTOR(dim)` with INT8/INT4 quantization
17+
- **Zero-copy tensor bridge** — Parquet → ONNX OrtValue / Arrow / NumPy / DLPack
18+
- **Streaming WAL** — sub-microsecond append with mmap ring buffer
19+
- **Feature store** — point-in-time joins, versioned feature vectors, Parquet-backed
20+
- **MPMC event bus** — lock-free Vyukov ring + columnar batches
21+
- **Cryptographic audit chain** — SHA-256 hash chain across row groups
22+
- **Compliance reporters** — MiFID II RTS 24, EU AI Act Art. 12/13/19
23+
24+
---
25+
26+
## Modules
27+
28+
| Module | Namespace | Headers |
29+
|--------|-----------|---------|
30+
| **Core** | `signet::forge` | schema.hpp, types.hpp, error.hpp, writer.hpp, reader.hpp |
31+
| **Encodings** | `signet::forge` | encoding/rle.hpp, encoding/delta.hpp, encoding/dictionary.hpp, encoding/byte_stream_split.hpp |
32+
| **Compression** | `signet::forge` | compression/codec.hpp, compression/snappy.hpp, compression/zstd.hpp, compression/lz4.hpp, compression/gzip.hpp |
33+
| **Crypto** | `signet::forge::crypto` | crypto/aes_core.hpp, crypto/aes_gcm.hpp, crypto/aes_ctr.hpp, crypto/pme.hpp, crypto/key_metadata.hpp, crypto/post_quantum.hpp |
34+
| **Bloom Filters** | `signet::forge` | bloom/split_block.hpp, bloom/xxhash.hpp |
35+
| **Indexes** | `signet::forge` | column_index.hpp, mmap_reader.hpp |
36+
| **AI Vectors** | `signet::forge` | ai/vector_type.hpp, ai/quantized_vector.hpp, ai/tensor_bridge.hpp |
37+
| **Streaming** | `signet::forge` | ai/wal.hpp, ai/wal_mapped_segment.hpp, ai/streaming_sink.hpp |
38+
| **Feature Store** | `signet::forge` | ai/feature_writer.hpp, ai/feature_reader.hpp |
39+
| **Event Bus** | `signet::forge` | ai/mpmc_ring.hpp, ai/column_batch.hpp, ai/event_bus.hpp |
40+
| **Audit & Compliance** | `signet::forge` | ai/audit_chain.hpp, ai/decision_log.hpp, ai/inference_log.hpp, ai/compliance/* |
41+
| **Interop** | `signet::forge` | interop/arrow_bridge.hpp, interop/onnx_bridge.hpp, interop/numpy_bridge.hpp |
42+
43+
---
44+
45+
## Quick Start
46+
47+
```cpp
48+
#include <signet/forge.hpp>
49+
50+
using namespace signet::forge;
51+
52+
// Define schema
53+
auto schema = Schema::build("example",
54+
Column<int64_t>{"id"},
55+
Column<double>{"price"},
56+
Column<std::string>{"symbol"});
57+
58+
// Write
59+
auto writer = ParquetWriter::open("data.parquet", schema).value();
60+
int64_t ids[] = {1, 2, 3};
61+
double prices[] = {100.5, 200.75, 300.0};
62+
std::string symbols[] = {"AAPL", "GOOGL", "MSFT"};
63+
(void)writer.write_column(0, ids, 3);
64+
(void)writer.write_column(1, prices, 3);
65+
(void)writer.write_column(2, symbols, 3);
66+
(void)writer.close();
67+
68+
// Read
69+
auto reader = ParquetReader::open("data.parquet").value();
70+
auto col = reader.read_column<double>(0, 1).value(); // row group 0, column 1
71+
```
72+
73+
---
74+
75+
## Build
76+
77+
```cmake
78+
include(FetchContent)
79+
FetchContent_Declare(signet_forge
80+
GIT_REPOSITORY https://github.com/SIGNETSTACK/signet-forge.git
81+
GIT_TAG main)
82+
FetchContent_MakeAvailable(signet_forge)
83+
target_link_libraries(your_target PRIVATE signet::forge)
84+
```
85+
86+
---
87+
88+
## License
89+
90+
- **Core library** (Phases 1–9): Apache License 2.0
91+
- **AI Audit & Compliance tier**: Business Source License 1.1

0 commit comments

Comments
 (0)