这个项目能做什么

StormByte Base 是 StormByte 套件中所有其他库链接的 C++26 基础模块。公共头文件位于 `StormByte/` 下,命名空间根为 `StormByte`。它需要 C++26 编译器和 CMake 3.28 或更高版本,并支持在 Linux、Windows 和 macOS 上构建。 README 中记录的核心功能: - **异常** — `StormByte::Exception` 构建分层消息,如 `StormByte.Crypto.Crypter: …`;`what()` 返回 `CString`。每个命名类型在模块 `.cxx` 中定义其析构函数,以便 `catch` 跨 DLL 边界匹配。 - **错误** — 用于 `std::error_code` 的 `Domain`、`Category`、`Code` 和 `Fault`;`Fault::what()` 返回 `CString` 以支持跨 DLL 使用。 - **Expected** — 基于 `std::expected` 的 `Expected<T, E>`,错误以 `Shared<E>` 形式保存在 Base 的堆上,并可转换为 `std::shared_ptr<E>`。 - **序列化** — `Serializable<T>` 到 `BinaryData`,始终为小端序,无 BOM 或版本标签;自定义类型特化 `Detail::Codec<T>`。宽字符串以 UTF-8 传输,带有 `uint64` 长度。 - **CString / WCString** — 拥有 NUL 结尾的窄和宽缓冲区,可安全跨 DLL 边界,支持内容相等性、排序、`swap` 和 `std::hash`。 - **BinaryData** — 拥有连续 `std::byte` 序列,具有类似 `std::vector<std::byte>` 的 API、`HexDump` 输出,以及与 `std::span` 和 `std::vector` 的互操作性。 - **Size / ByteSize** — 基于 `uint64_t` 的单位计数和八位字节长度类型,带有 IEC/SI 常量和人类可读格式;面积乘积已删除。 - **UUID** — RFC 4122 版本 4 生成。 - **位掩码** — 基于无符号作用域枚举的 CRTP 标志。 - **安全指针** — `Shared`、`Unique` 和 `Weak` 补充标准智能指针,用于必须在 Base 堆上释放的对象;`Heap` 是私有的,不安装。 - **Clonable** — 多态 `Clone` / `Move` 返回 `Shared` 或 `Unique` 指针。 - **ThreadLock** — 所有者线程可重入锁。 - **类型概念** — `StormByte::Type::*` 概念,如 `String`、`Container`、`Optional`、`Pair`、`Numeral` 和 `Array`。 - **平台 / 可见性** — 用于 `WINDOWS` / `LINUX` / `MACOS`、`BIT32` / `BIT64` 以及 `CLANG` / `GCC` / `MSVC` 的宏。 README 强调公共 Base API 使用 `Size` 表示计数,使用 `ByteSize` 表示八位字节,而不是原始 `std::size_t` / `std::uint64_t`。该套件有意拆分:Buffer、Config、Crypto、Database、Logger、Multimedia、Network、String 和 System 是依赖此库的独立仓库。许可为 LGPL v3 或商业许可。