|
StormByte C++ Library: Config module 1.0.1.9999
StormByte-Config is the configuration module of the StormByte C++ suite.
|
This repository is StormByte Config: human-readable text and versioned binary documents for the StormByte C++ suite.
It depends on StormByte Base. Public headers live under StormByte/config/ and cover the document, items (values, comments, groups, lists), Save / Load, and collision / hook policy.
The suite is split on purpose. Base, Buffer, Crypto, Database, Logger, Multimedia, Network and System are other repositories. This one does not implement them.
Save / Load with Mode::Text or Mode::Binary on any std::ostream / std::istream. Stream operators stay text-only.STBTCF + format version. Older layouts load; newer ones are rejected; save always writes the current version.std::vector<std::byte>: Base64 b"..." in text, raw bytes on the wire).#, //, /* */.[] and groups {}.AddHookBeforeRead / AddHookAfterRead.Keep, Overwrite, or ThrowException (default).| Module | Role | API |
|---|---|---|
| Base | Exceptions, Expected, serialization, strings, UUID, concepts | /StormByte |
| Buffer | FIFO, SharedFIFO, Ring, Producer/Consumer and multi-stage pipelines | /StormByte-Buffer |
| Config | This repository | /StormByte-Config |
| Crypto | Hash, compress, encrypt, sign and key agreement — Crypto++ never leaves the private tree | /StormByte-Crypto |
| Database | One API over SQLite, PostgreSQL and MariaDB | /StormByte-Database |
| Logger | Stream logger with levels, headers, human-readable sizes and redaction (ThreadedLog) | /StormByte-Logger |
| Multimedia | Decode, encode and containers without raw FFmpeg types; codecs enabled only if present | /StormByte-Multimedia |
| Network | Framed packets, Client/Server, IPv4/IPv6 TCP and Buffer pipelines (compress/encrypt) | /StormByte-Network |
| System | Processes, pipes and environment variables across Linux, Windows and macOS | /StormByte-System |
Needs a C++26 compiler, CMake 3.28 or newer, and StormByte Base ≥ 1.0.0.
Headers are #include <StormByte/config/….hxx>. Namespace root is StormByte::Config.
Hooks: AddHookBeforeRead / AddHookAfterRead. Existing keys: OnExistingAction (Keep, Overwrite, ThrowException; default is throw).
Binary values are std::vector<std::byte>. Text form is Base64 with b"..."; the binary document stores raw bytes.
Issues only on this repository. Fork and open a pull request against master.
GNU Lesser General Public License version 3 or later. See [LICENSE](LICENSE) and https://www.gnu.org/licenses/lgpl-3.0.html.