diff options
author | Ed Tanous <ed@tanous.net> | 2024-03-26 23:19:52 +0300 |
---|---|---|
committer | Ed Tanous <ed@tanous.net> | 2024-04-29 22:15:32 +0300 |
commit | 95c6307a9b2c02f74b5f5c677d6983f996332ee6 (patch) | |
tree | 551ad48ec6f6ca607225b123543459dbd10e76f8 /http | |
parent | 3ad903a76521547d2372c56a34c9c2e2c30ec98d (diff) | |
download | bmcweb-95c6307a9b2c02f74b5f5c677d6983f996332ee6.tar.xz |
Break out formatters
In the change made to move to std::format, we defined some custom type
formatters in logging.hpp. This had the unintended effect of making
all compile units pull in the majority of boost::url, and nlohmann::json
as includes.
This commit breaks out boost and json formatters into their own separate
includes.
Tested: Code compiles. Logging changes only.
Change-Id: I6a788533169f10e19130a1910cd3be0cc729b020
Signed-off-by: Ed Tanous <ed@tanous.net>
Diffstat (limited to 'http')
-rw-r--r-- | http/complete_response_fields.hpp | 1 | ||||
-rw-r--r-- | http/logging.hpp | 91 |
2 files changed, 1 insertions, 91 deletions
diff --git a/http/complete_response_fields.hpp b/http/complete_response_fields.hpp index 1ac75ad8c2..bec33fc804 100644 --- a/http/complete_response_fields.hpp +++ b/http/complete_response_fields.hpp @@ -1,6 +1,7 @@ #pragma once #include "authentication.hpp" +#include "boost_formatters.hpp" #include "http_request.hpp" #include "http_response.hpp" #include "http_utility.hpp" diff --git a/http/logging.hpp b/http/logging.hpp index de14d99e8f..9b1a36b143 100644 --- a/http/logging.hpp +++ b/http/logging.hpp @@ -2,12 +2,6 @@ #include "bmcweb_config.h" -#include <boost/system/error_code.hpp> -#include <boost/url/pct_string_view.hpp> -#include <boost/url/string_view.hpp> -#include <boost/url/url_view_base.hpp> -#include <nlohmann/json.hpp> - #include <bit> #include <format> #include <iostream> @@ -15,64 +9,8 @@ #include <string_view> #include <system_error> -// Clang-tidy would rather these be static, but using static causes the template -// specialization to not function. Ignore the warning. // NOLINTBEGIN(readability-convert-member-functions-to-static, cert-dcl58-cpp) template <> -struct std::formatter<boost::system::error_code> -{ - constexpr auto parse(std::format_parse_context& ctx) - { - return ctx.begin(); - } - - auto format(const boost::system::error_code& ec, auto& ctx) const - { - return std::format_to(ctx.out(), "{}", ec.what()); - } -}; - -template <> -struct std::formatter<boost::urls::pct_string_view> -{ - constexpr auto parse(std::format_parse_context& ctx) - { - return ctx.begin(); - } - auto format(const boost::urls::pct_string_view& msg, auto& ctx) const - { - return std::format_to(ctx.out(), "{}", - std::string_view(msg.data(), msg.size())); - } -}; - -template <std::derived_from<boost::urls::url_view_base> URL> -struct std::formatter<URL> -{ - constexpr auto parse(std::format_parse_context& ctx) - { - return ctx.begin(); - } - auto format(const URL& msg, auto& ctx) const - { - return std::format_to(ctx.out(), "{}", std::string_view(msg.buffer())); - } -}; - -template <> -struct std::formatter<boost::core::string_view> -{ - constexpr auto parse(std::format_parse_context& ctx) - { - return ctx.begin(); - } - auto format(const boost::core::string_view& msg, auto& ctx) const - { - return std::format_to(ctx.out(), "{}", std::string_view(msg)); - } -}; - -template <> struct std::formatter<void*> { constexpr auto parse(std::format_parse_context& ctx) @@ -85,35 +23,6 @@ struct std::formatter<void*> std::to_string(std::bit_cast<size_t>(ptr))); } }; - -template <> -struct std::formatter<nlohmann::json::json_pointer> -{ - constexpr auto parse(std::format_parse_context& ctx) - { - return ctx.begin(); - } - auto format(const nlohmann::json::json_pointer& ptr, auto& ctx) const - { - return std::format_to(ctx.out(), "{}", ptr.to_string()); - } -}; - -template <> -struct std::formatter<nlohmann::json> -{ - static constexpr auto parse(std::format_parse_context& ctx) - { - return ctx.begin(); - } - auto format(const nlohmann::json& json, auto& ctx) const - { - return std::format_to( - ctx.out(), "{}", - json.dump(-1, ' ', false, - nlohmann::json::error_handler_t::replace)); - } -}; // NOLINTEND(readability-convert-member-functions-to-static, cert-dcl58-cpp) namespace crow |