Introduce and migrate to hpb::interop::upb::GetArena from protos::internal::GetArena

PiperOrigin-RevId: 668955137
pull/17984/head
Hong Shin 6 months ago committed by Copybara-Service
parent 897be0c738
commit fa15d09055
  1. 10
      hpb/backend/upb/interop.h
  2. 14
      hpb/hpb.h
  3. 2
      hpb/repeated_field.h
  4. 10
      hpb_generator/gen_messages.cc
  5. 2
      hpb_generator/tests/test_generated.cc
  6. 1
      protos/protos.h

@ -28,6 +28,16 @@ const upb_MiniTable* GetMiniTable(Ptr<T>) {
return T::minitable();
}
template <typename T>
upb_Arena* GetArena(Ptr<T> message) {
return static_cast<upb_Arena*>(message->GetInternalArena());
}
template <typename T>
upb_Arena* GetArena(T* message) {
return static_cast<upb_Arena*>(message->GetInternalArena());
}
/**
* Creates a const Handle to a upb message.
*

@ -79,16 +79,6 @@ absl::Status MessageEncodeError(upb_EncodeStatus status,
namespace internal {
template <typename T>
upb_Arena* GetArena(Ptr<T> message) {
return static_cast<upb_Arena*>(message->GetInternalArena());
}
template <typename T>
upb_Arena* GetArena(T* message) {
return static_cast<upb_Arena*>(message->GetInternalArena());
}
absl::StatusOr<absl::string_view> Serialize(const upb_Message* message,
const upb_MiniTable* mini_table,
upb_Arena* arena, int options);
@ -232,13 +222,13 @@ absl::StatusOr<Ptr<const Extension>> GetExtension(
upb_MessageValue value;
const bool ok = ::hpb::internal::GetOrPromoteExtension(
const_cast<upb_Message*>(::hpb::internal::GetInternalMsg(message)),
id.mini_table_ext(), ::hpb::internal::GetArena(message), &value);
id.mini_table_ext(), hpb::interop::upb::GetArena(message), &value);
if (!ok) {
return ExtensionNotFoundError(
upb_MiniTableExtension_Number(id.mini_table_ext()));
}
return Ptr<const Extension>(::hpb::interop::upb::MakeCHandle<Extension>(
(upb_Message*)value.msg_val, ::hpb::internal::GetArena(message)));
(upb_Message*)value.msg_val, hpb::interop::upb::GetArena(message)));
}
template <typename T, typename Extendee, typename Extension,

@ -131,7 +131,7 @@ class RepeatedFieldProxy
upb_MessageValue message_value;
message_value.msg_val =
::hpb::internal::PrivateAccess::GetInternalMsg(&msg);
upb_Arena_Fuse(::hpb::internal::GetArena(&msg), this->arena_);
upb_Arena_Fuse(hpb::interop::upb::GetArena(&msg), this->arena_);
upb_Array_Append(this->arr_, message_value, this->arena_);
T moved_msg = std::move(msg);
}

@ -251,8 +251,8 @@ void WriteModelPublicDeclaration(
friend absl::StatusOr<$2>(::hpb::Parse<$2>(
absl::string_view bytes,
const ::hpb::ExtensionRegistry& extension_registry, int options));
friend upb_Arena* ::hpb::internal::GetArena<$0>($0* message);
friend upb_Arena* ::hpb::internal::GetArena<$0>(::hpb::Ptr<$0> message);
friend upb_Arena* hpb::interop::upb::GetArena<$0>($0* message);
friend upb_Arena* hpb::interop::upb::GetArena<$0>(::hpb::Ptr<$0> message);
friend $0(::hpb::internal::MoveMessage<$0>(upb_Message* msg, upb_Arena* arena));
)cc",
ClassName(descriptor), MessageName(descriptor),
@ -310,8 +310,8 @@ void WriteModelProxyDeclaration(const protobuf::Descriptor* descriptor,
const $0Proxy* message);
friend const upb_MiniTable* ::hpb::interop::upb::GetMiniTable<$0Proxy>(
::hpb::Ptr<$0Proxy> message);
friend upb_Arena* ::hpb::internal::GetArena<$2>($2* message);
friend upb_Arena* ::hpb::internal::GetArena<$2>(::hpb::Ptr<$2> message);
friend upb_Arena* hpb::interop::upb::GetArena<$2>($2* message);
friend upb_Arena* hpb::interop::upb::GetArena<$2>(::hpb::Ptr<$2> message);
static void Rebind($0Proxy& lhs, const $0Proxy& rhs) {
lhs.msg_ = rhs.msg_;
lhs.arena_ = rhs.arena_;
@ -332,7 +332,7 @@ void WriteModelCProxyDeclaration(const protobuf::Descriptor* descriptor,
public:
$0CProxy() = delete;
$0CProxy(const $0* m)
: internal::$0Access(m->msg_, ::hpb::internal::GetArena(m)) {}
: internal::$0Access(m->msg_, hpb::interop::upb::GetArena(m)) {}
$0CProxy($0Proxy m);
using $0Access::GetInternalArena;
)cc",

@ -795,7 +795,7 @@ TEST(CppGeneratedCode, SetExtensionFusingFailureShouldCopy) {
ThemeExtension extension1;
extension1.set_ext_name("Hello World");
ASSERT_FALSE(
upb_Arena_Fuse(arena.ptr(), ::hpb::internal::GetArena(&extension1)));
upb_Arena_Fuse(arena.ptr(), hpb::interop::upb::GetArena(&extension1)));
EXPECT_FALSE(::hpb::HasExtension(model, theme));
auto status = ::hpb::SetExtension(model, theme, std::move(extension1));
EXPECT_TRUE(status.ok());

@ -10,7 +10,6 @@
namespace protos {
namespace internal {
using hpb::internal::ExtensionIdentifier;
using hpb::internal::GetArena;
using hpb::internal::GetInternalMsg;
using hpb::internal::PrivateAccess;
using hpb::internal::Serialize;

Loading…
Cancel
Save