Move GetExtension and ExtensionNumber from hpb.h to extension.h

PiperOrigin-RevId: 684118480
pull/18670/head
Hong Shin 5 months ago committed by Copybara-Service
parent 4cbd8ca1bc
commit 6ecaefc628
  1. 32
      hpb/extension.h
  2. 31
      hpb/hpb.h

@ -16,6 +16,7 @@
#include "google/protobuf/hpb/internal/message_lock.h"
#include "google/protobuf/hpb/internal/template_help.h"
#include "google/protobuf/hpb/ptr.h"
#include "google/protobuf/hpb/status.h"
#include "upb/mem/arena.hpp"
#include "upb/mini_table/extension.h"
#include "upb/mini_table/extension_registry.h"
@ -205,6 +206,37 @@ absl::Status SetExtension(
return ::hpb::SetExtension(Ptr(message), id, value);
}
template <typename T, typename Extendee, typename Extension,
typename = hpb::internal::EnableIfHpbClass<T>>
absl::StatusOr<Ptr<const Extension>> GetExtension(
Ptr<T> message,
const ::hpb::internal::ExtensionIdentifier<Extendee, Extension>& id) {
upb_MessageValue value;
const bool ok = ::hpb::internal::GetOrPromoteExtension(
hpb::interop::upb::GetMessage(message), 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::interop::upb::GetArena(message)));
}
template <typename T, typename Extendee, typename Extension,
typename = hpb::internal::EnableIfHpbClass<T>>
absl::StatusOr<Ptr<const Extension>> GetExtension(
const T* message,
const ::hpb::internal::ExtensionIdentifier<Extendee, Extension>& id) {
return GetExtension(Ptr(message), id);
}
template <typename T, typename Extension>
constexpr uint32_t ExtensionNumber(
::hpb::internal::ExtensionIdentifier<T, Extension> id) {
return ::hpb::internal::PrivateAccess::GetExtensionNumber(id);
}
} // namespace hpb
#endif // GOOGLE_PROTOBUF_HPB_EXTENSION_H__

@ -36,37 +36,6 @@ namespace hpb {
namespace backend = ::hpb::internal::backend::upb;
#endif
template <typename T, typename Extendee, typename Extension,
typename = hpb::internal::EnableIfHpbClass<T>>
absl::StatusOr<Ptr<const Extension>> GetExtension(
Ptr<T> message,
const ::hpb::internal::ExtensionIdentifier<Extendee, Extension>& id) {
upb_MessageValue value;
const bool ok = ::hpb::internal::GetOrPromoteExtension(
hpb::interop::upb::GetMessage(message), 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::interop::upb::GetArena(message)));
}
template <typename T, typename Extendee, typename Extension,
typename = hpb::internal::EnableIfHpbClass<T>>
absl::StatusOr<Ptr<const Extension>> GetExtension(
const T* message,
const ::hpb::internal::ExtensionIdentifier<Extendee, Extension>& id) {
return GetExtension(Ptr(message), id);
}
template <typename T, typename Extension>
constexpr uint32_t ExtensionNumber(
::hpb::internal::ExtensionIdentifier<T, Extension> id) {
return ::hpb::internal::PrivateAccess::GetExtensionNumber(id);
}
template <typename T>
typename T::Proxy CreateMessage(hpb::Arena& arena) {
return typename T::Proxy(upb_Message_New(T::minitable(), arena.ptr()),

Loading…
Cancel
Save