From 150c792f76e60d8a709a9c3e4cb2244bc6363daa Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Sat, 28 Sep 2024 21:38:46 +0200 Subject: [PATCH] Try to get rid of std::variant in json_container.hpp --- include/util/json_container.hpp | 65 ++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/include/util/json_container.hpp b/include/util/json_container.hpp index b709fa5ca1..662735a8aa 100644 --- a/include/util/json_container.hpp +++ b/include/util/json_container.hpp @@ -117,9 +117,10 @@ struct Array std::vector values; }; - -struct Value { - enum class Type { +struct Value +{ + enum class Type + { Invalid, String, Number, @@ -136,9 +137,9 @@ struct Value { Type type; Value() noexcept : type(Type::Invalid) {} - Value(const Null&) noexcept : type(Type::Null) {} - Value(const True&) noexcept : type(Type::True) {} - Value(const False&) noexcept : type(Type::False) {} + Value(const Null &) noexcept : type(Type::Null) {} + Value(const True &) noexcept : type(Type::True) {} + Value(const False &) noexcept : type(Type::False) {} Value(String &&string_) noexcept : string(std::move(string_)), type(Type::String) {} Value(const Number &number_) noexcept : number(number_), type(Type::Number) {} Value(const Object &object_) noexcept : object(object_), type(Type::Object) {} @@ -146,62 +147,68 @@ struct Value { Value(double number) noexcept : number(number), type(Type::Number) {} Value(std::string string) noexcept : string(std::move(string)), type(Type::String) {} - Value(const char* string) noexcept : string(string), type(Type::String) {} + Value(const char *string) noexcept : string(string), type(Type::String) {} }; } // namespace osrm::util::json -namespace std { -template -inline T& get(osrm::util::json::Value& value) noexcept; +namespace std +{ +template inline T &get(osrm::util::json::Value &value) noexcept; -template<> -inline osrm::util::json::String& get(osrm::util::json::Value& value) noexcept +template <> +inline osrm::util::json::String & +get(osrm::util::json::Value &value) noexcept { return value.string; } -template<> -inline osrm::util::json::Number& get(osrm::util::json::Value& value) noexcept +template <> +inline osrm::util::json::Number & +get(osrm::util::json::Value &value) noexcept { return value.number; } -template<> -inline osrm::util::json::Object& get(osrm::util::json::Value& value) noexcept +template <> +inline osrm::util::json::Object & +get(osrm::util::json::Value &value) noexcept { return value.object; } -template<> -inline osrm::util::json::Array& get(osrm::util::json::Value& value) noexcept +template <> +inline osrm::util::json::Array & +get(osrm::util::json::Value &value) noexcept { return value.array; } -template -inline const T& get(const osrm::util::json::Value& value) noexcept; +template inline const T &get(const osrm::util::json::Value &value) noexcept; -template<> -inline const osrm::util::json::String& get(const osrm::util::json::Value& value) noexcept +template <> +inline const osrm::util::json::String & +get(const osrm::util::json::Value &value) noexcept { return value.string; } -template<> -inline const osrm::util::json::Number& get(const osrm::util::json::Value& value) noexcept +template <> +inline const osrm::util::json::Number & +get(const osrm::util::json::Value &value) noexcept { return value.number; } -template<> -inline const osrm::util::json::Object& get(const osrm::util::json::Value& value) noexcept +template <> +inline const osrm::util::json::Object & +get(const osrm::util::json::Value &value) noexcept { return value.object; } -template -inline void visit(Visitor&& visitor, const osrm::util::json::Value& value) +template +inline void visit(Visitor &&visitor, const osrm::util::json::Value &value) { switch (value.type) { @@ -231,5 +238,5 @@ inline void visit(Visitor&& visitor, const osrm::util::json::Value& value) } } -}// namespace std +} // namespace std #endif // JSON_CONTAINER_HPP