aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/include
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-03-27 16:25:21 +0100
committerGitHub Enterprise <[email protected]>2026-03-27 16:25:21 +0100
commit86c95e3291542433190e48fd7e7ad0a414644bc1 (patch)
treec8c05200e2889a4c4bc87cbd3fd47ee3021bc24f /src/zencore/include
parent5.8.0-pre0 (diff)
downloadzen-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.h23
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>