diff options
author | Krzysztof Kosiński <krzysio@google.com> | 2024-03-15 23:08:34 +0000 |
---|---|---|
committer | Krzysztof Kosiński <krzysio@google.com> | 2024-03-15 23:11:14 +0000 |
commit | f8423f6ee7dd0e5be9b63413c1f5a0cbcbced0f8 (patch) | |
tree | 5a7695c4ae775876a28bf4e9a604a914890110b1 /libjsonpb | |
parent | 0a775d8aead45c06dc1d2238901d5f4dc4089258 (diff) | |
download | extras-f8423f6ee7dd0e5be9b63413c1f5a0cbcbced0f8.tar.gz |
Fix incompatibilities with Protobuf 22.x.
- Add missing headers.
- Modify libjsonpb to be compatible with std::string_view usage
in Protobuf generated code.
Bug: 329747255
Test: presubmit
Change-Id: Ibeeb7b7dac66a7fb0189a1d13b36a853d3fcd3d4
Diffstat (limited to 'libjsonpb')
-rw-r--r-- | libjsonpb/parse/include/jsonpb/error_or.h | 11 | ||||
-rw-r--r-- | libjsonpb/parse/jsonpb.cpp | 6 |
2 files changed, 9 insertions, 8 deletions
diff --git a/libjsonpb/parse/include/jsonpb/error_or.h b/libjsonpb/parse/include/jsonpb/error_or.h index 3fd3e997..b012a1ea 100644 --- a/libjsonpb/parse/include/jsonpb/error_or.h +++ b/libjsonpb/parse/include/jsonpb/error_or.h @@ -17,6 +17,7 @@ #pragma once #include <string> +#include <utility> #include <variant> #include <android-base/logging.h> @@ -49,22 +50,22 @@ struct ErrorOr { return *std::get_if<0u>(&data_); } bool ok() const { return data_.index() != 0; } - static ErrorOr<T> MakeError(const std::string& message) { - return ErrorOr<T>(message, Tag::kDummy); + static ErrorOr<T> MakeError(std::string message) { + return ErrorOr<T>(std::move(message), Tag::kDummy); } private: enum class Tag { kDummy }; static constexpr std::in_place_index_t<0> kIndex0{}; static constexpr std::in_place_index_t<1> kIndex1{}; - ErrorOr(const std::string& msg, Tag) : data_(kIndex0, msg) {} + ErrorOr(std::string msg, Tag) : data_(kIndex0, std::move(msg)) {} std::variant<std::string, T> data_; }; template <typename T> -inline ErrorOr<T> MakeError(const std::string& message) { - return ErrorOr<T>::MakeError(message); +inline ErrorOr<T> MakeError(std::string message) { + return ErrorOr<T>::MakeError(std::move(message)); } } // namespace jsonpb diff --git a/libjsonpb/parse/jsonpb.cpp b/libjsonpb/parse/jsonpb.cpp index e65a39d1..6c428282 100644 --- a/libjsonpb/parse/jsonpb.cpp +++ b/libjsonpb/parse/jsonpb.cpp @@ -40,7 +40,7 @@ ErrorOr<std::string> MessageToJsonString(const Message& message) { std::unique_ptr<TypeResolver> resolver( NewTypeResolverForDescriptorPool(kTypeUrlPrefix, DescriptorPool::generated_pool())); - google::protobuf::util::JsonOptions options; + google::protobuf::util::JsonPrintOptions options; options.add_whitespace = true; std::string json; @@ -48,7 +48,7 @@ ErrorOr<std::string> MessageToJsonString(const Message& message) { &json, options); if (!status.ok()) { - return MakeError<std::string>(status.message().as_string()); + return MakeError<std::string>(std::string(status.message())); } return ErrorOr<std::string>(std::move(json)); } @@ -61,7 +61,7 @@ ErrorOr<std::monostate> JsonStringToMessage(const std::string& content, Message* std::string binary; auto status = JsonToBinaryString(resolver.get(), GetTypeUrl(*message), content, &binary); if (!status.ok()) { - return MakeError<std::monostate>(status.message().as_string()); + return MakeError<std::monostate>(std::string(status.message())); } if (!message->ParseFromString(binary)) { return MakeError<std::monostate>("Fail to parse."); |