diff options
| author | Stefan Boberg <[email protected]> | 2026-03-27 16:25:21 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-03-27 16:25:21 +0100 |
| commit | 86c95e3291542433190e48fd7e7ad0a414644bc1 (patch) | |
| tree | c8c05200e2889a4c4bc87cbd3fd47ee3021bc24f /src/zencore/include | |
| parent | 5.8.0-pre0 (diff) | |
| download | zen-86c95e3291542433190e48fd7e7ad0a414644bc1.tar.xz zen-86c95e3291542433190e48fd7e7ad0a414644bc1.zip | |
Misc small fixes (#897)
- **Eliminate `<regex>` usage** — Replaced `std::regex`-based URL parsing in `jupiterbuildstorage.cpp` with manual `string_view` parsing. Added `CXXOPTS_NO_REGEX` to disable regex in cxxopts. Includes comprehensive tests for the new URL parser.
- **Add missing HTTP response codes** — Added `102`, `103`, `203`, `207`, `208`, `226`, `306`, `421`, `425`, `451` to the enum and reason string lookup.
- **Add `ForceColor` support to zen CLI** — Plumbed the `ForceColor` logging option through to the zen client.
- **Add `.clangd` config** — Strips MSVC-specific flags clangd can't handle and suppresses noisy clang-tidy checks.
- **Generic `fmt::formatter` for `ToString`** — Concept-based formatter that auto-formats any type with a free `ToString()` function, removing the need for per-type specializations.
- **Fix OpenSSL dependency** — Changed `zenhorde` to use `openssl3` package on Linux/macOS.
- **Add `<cmath>` include** — Missing include in `hyperloglog.h`.
- **GCC compile fix** — Moved `static constinit` variable inside lambda in `logging.cpp`.
Diffstat (limited to 'src/zencore/include')
| -rw-r--r-- | src/zencore/include/zencore/fmtutils.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/zencore/include/zencore/fmtutils.h b/src/zencore/include/zencore/fmtutils.h index 404e570fd..4ec05f901 100644 --- a/src/zencore/include/zencore/fmtutils.h +++ b/src/zencore/include/zencore/fmtutils.h @@ -15,6 +15,29 @@ ZEN_THIRD_PARTY_INCLUDES_END #include <chrono> #include <string_view> +// Generic formatter for any type with a free ToString(T) function returning a +// string-like type. This covers enum-to-string conversions (HttpResponseCode, +// SessionState, etc.) without needing per-type fmt::formatter specializations. +// ADL is used to find ToString, so it works across namespaces. + +template<typename T> +concept HasFreeToString = requires(const T& v) +{ + { + ToString(v) + } -> std::convertible_to<std::string_view>; +}; + +template<HasFreeToString T> +struct fmt::formatter<T> : fmt::formatter<std::string_view> +{ + template<typename FormatContext> + auto format(const T& Value, FormatContext& Ctx) const + { + return fmt::formatter<std::string_view>::format(ToString(Value), Ctx); + } +}; + // Custom formatting for some zencore types template<typename T> |