|
|
|
@ -358,6 +358,24 @@ bool Parse(T& message, absl::string_view bytes) { |
|
|
|
|
arena) == kUpb_DecodeStatus_Ok; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename T> |
|
|
|
|
bool Parse(std::unique_ptr<T>& message, absl::string_view bytes) { |
|
|
|
|
_upb_Message_Clear(message->msg(), T::minitable()); |
|
|
|
|
auto* arena = static_cast<upb_Arena*>(message->GetInternalArena()); |
|
|
|
|
return upb_Decode(bytes.data(), bytes.size(), message->msg(), T::minitable(), |
|
|
|
|
/* extreg= */ nullptr, /* options= */ 0, |
|
|
|
|
arena) == kUpb_DecodeStatus_Ok; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename T> |
|
|
|
|
bool Parse(std::shared_ptr<T>& message, absl::string_view bytes) { |
|
|
|
|
_upb_Message_Clear(message->msg(), T::minitable()); |
|
|
|
|
auto* arena = static_cast<upb_Arena*>(message->GetInternalArena()); |
|
|
|
|
return upb_Decode(bytes.data(), bytes.size(), message->msg(), T::minitable(), |
|
|
|
|
/* extreg= */ nullptr, /* options= */ 0, |
|
|
|
|
arena) == kUpb_DecodeStatus_Ok; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename T> |
|
|
|
|
absl::StatusOr<T> Parse(absl::string_view bytes, int options = 0) { |
|
|
|
|
T message; |
|
|
|
@ -390,7 +408,24 @@ absl::StatusOr<T> Parse(absl::string_view bytes, |
|
|
|
|
template <typename T> |
|
|
|
|
absl::StatusOr<absl::string_view> Serialize(const T& message, upb::Arena& arena, |
|
|
|
|
int options = 0) { |
|
|
|
|
return ::protos::internal::Serialize(message.msg(), T::minitable(), |
|
|
|
|
return ::protos::internal::Serialize( |
|
|
|
|
::protos::internal::GetInternalMsg(message), T::minitable(), arena.ptr(), |
|
|
|
|
options); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename T> |
|
|
|
|
absl::StatusOr<absl::string_view> Serialize(std::unique_ptr<T>& message, |
|
|
|
|
upb::Arena& arena, |
|
|
|
|
int options = 0) { |
|
|
|
|
return ::protos::internal::Serialize(message->msg(), T::minitable(), |
|
|
|
|
arena.ptr(), options); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename T> |
|
|
|
|
absl::StatusOr<absl::string_view> Serialize(std::shared_ptr<T>& message, |
|
|
|
|
upb::Arena& arena, |
|
|
|
|
int options = 0) { |
|
|
|
|
return ::protos::internal::Serialize(message->msg(), T::minitable(), |
|
|
|
|
arena.ptr(), options); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|