Bring in {UpbStrToStringView, UpbStrFromStringView}, MessageAlloc/Decode/Encode, and some internal template helpers into hpb

PiperOrigin-RevId: 655136424
diff --git a/hpb/hpb.cc b/hpb/hpb.cc
index d63c7d9..3437a5f 100644
--- a/hpb/hpb.cc
+++ b/hpb/hpb.cc
@@ -27,7 +27,7 @@
 #include "upb/wire/decode.h"
 #include "upb/wire/encode.h"
 
-namespace protos {
+namespace hpb {
 
 // begin:google_only
 absl::Status MessageAllocationError(SourceLocation loc) {
@@ -80,7 +80,9 @@
 //   return absl::Status(absl::StatusCode::kUnknown, "Upb message parse error");
 // }
 // end:github_only
+}  // namespace hpb
 
+namespace protos {
 namespace internal {
 
 using ::hpb::internal::upb_extension_locker_global;
diff --git a/hpb/hpb.h b/hpb/hpb.h
index 171da78..73221b0 100644
--- a/hpb/hpb.h
+++ b/hpb/hpb.h
@@ -82,13 +82,7 @@
 template <typename T>
 Ptr(T* m) -> Ptr<T>;
 
-}  // namespace hpb
-
-namespace protos {
-using hpb::Arena;
-using hpb::Ptr;
-class ExtensionRegistry;
-
+// TODO: b/354766950 - Move upb-specific chunks out of hpb header
 inline absl::string_view UpbStrToStringView(upb_StringView str) {
   return absl::string_view(str.data, str.size);
 }
@@ -102,12 +96,6 @@
   return upb_StringView_FromDataAndSize(buffer, str_size);
 }
 
-template <typename T>
-typename T::Proxy CreateMessage(::hpb::Arena& arena) {
-  return typename T::Proxy(upb_Message_New(T::minitable(), arena.ptr()),
-                           arena.ptr());
-}
-
 // begin:github_only
 // // This type exists to work around an absl type that has not yet been
 // // released.
@@ -135,6 +123,48 @@
                                 SourceLocation loc = SourceLocation::current());
 
 namespace internal {
+template <typename T>
+struct RemovePtr;
+
+template <typename T>
+struct RemovePtr<Ptr<T>> {
+  using type = T;
+};
+
+template <typename T>
+struct RemovePtr<T*> {
+  using type = T;
+};
+
+template <typename T>
+using RemovePtrT = typename RemovePtr<T>::type;
+
+template <typename T, typename U = RemovePtrT<T>,
+          typename = std::enable_if_t<!std::is_const_v<U>>>
+using PtrOrRaw = T;
+
+template <typename T>
+using EnableIfHpbClass = std::enable_if_t<
+    std::is_base_of<typename T::Access, T>::value &&
+    std::is_base_of<typename T::Access, typename T::ExtendableType>::value>;
+
+template <typename T>
+using EnableIfMutableProto = std::enable_if_t<!std::is_const<T>::value>;
+}  // namespace internal
+
+}  // namespace hpb
+
+namespace protos {
+using hpb::Arena;
+using hpb::ExtensionNotFoundError;
+using hpb::MessageAllocationError;
+using hpb::MessageDecodeError;
+using hpb::MessageEncodeError;
+using hpb::Ptr;
+using hpb::SourceLocation;
+class ExtensionRegistry;
+
+namespace internal {
 struct PrivateAccess {
   template <typename T>
   static auto* GetInternalMsg(T&& message) {
@@ -261,38 +291,15 @@
 absl::Status SetExtension(upb_Message* message, upb_Arena* message_arena,
                           const upb_MiniTableExtension* ext,
                           const upb_Message* extension);
-
-template <typename T>
-struct RemovePtr;
-
-template <typename T>
-struct RemovePtr<Ptr<T>> {
-  using type = T;
-};
-
-template <typename T>
-struct RemovePtr<T*> {
-  using type = T;
-};
-
-template <typename T>
-using RemovePtrT = typename RemovePtr<T>::type;
-
-template <typename T, typename U = RemovePtrT<T>,
-          typename = std::enable_if_t<!std::is_const_v<U>>>
-using PtrOrRaw = T;
-
-template <typename T>
-using EnableIfHpbClass = std::enable_if_t<
-    std::is_base_of<typename T::Access, T>::value &&
-    std::is_base_of<typename T::Access, typename T::ExtendableType>::value>;
-
-template <typename T>
-using EnableIfMutableProto = std::enable_if_t<!std::is_const<T>::value>;
-
 }  // namespace internal
 
 template <typename T>
+typename T::Proxy CreateMessage(::hpb::Arena& arena) {
+  return typename T::Proxy(upb_Message_New(T::minitable(), arena.ptr()),
+                           arena.ptr());
+}
+
+template <typename T>
 void DeepCopy(Ptr<const T> source_message, Ptr<T> target_message) {
   static_assert(!std::is_const_v<T>);
   ::protos::internal::DeepCopy(
@@ -328,7 +335,7 @@
 }
 
 template <typename T>
-void ClearMessage(internal::PtrOrRaw<T> message) {
+void ClearMessage(hpb::internal::PtrOrRaw<T> message) {
   auto ptr = Ptr(message);
   auto minitable = internal::GetMiniTable(ptr);
   upb_Message_Clear(internal::GetInternalMsg(ptr), minitable);
@@ -360,7 +367,7 @@
 };
 
 template <typename T, typename Extendee, typename Extension,
-          typename = internal::EnableIfHpbClass<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>>
 ABSL_MUST_USE_RESULT bool HasExtension(
     Ptr<T> message,
     const ::protos::internal::ExtensionIdentifier<Extendee, Extension>& id) {
@@ -369,7 +376,7 @@
 }
 
 template <typename T, typename Extendee, typename Extension,
-          typename = internal::EnableIfHpbClass<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>>
 ABSL_MUST_USE_RESULT bool HasExtension(
     const T* message,
     const ::protos::internal::ExtensionIdentifier<Extendee, Extension>& id) {
@@ -377,8 +384,8 @@
 }
 
 template <typename T, typename Extension,
-          typename = internal::EnableIfHpbClass<T>,
-          typename = internal::EnableIfMutableProto<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>,
+          typename = hpb::internal::EnableIfMutableProto<T>>
 void ClearExtension(
     Ptr<T> message,
     const ::protos::internal::ExtensionIdentifier<T, Extension>& id) {
@@ -388,7 +395,7 @@
 }
 
 template <typename T, typename Extension,
-          typename = internal::EnableIfHpbClass<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>>
 void ClearExtension(
     T* message,
     const ::protos::internal::ExtensionIdentifier<T, Extension>& id) {
@@ -396,8 +403,8 @@
 }
 
 template <typename T, typename Extension,
-          typename = internal::EnableIfHpbClass<T>,
-          typename = internal::EnableIfMutableProto<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>,
+          typename = hpb::internal::EnableIfMutableProto<T>>
 absl::Status SetExtension(
     Ptr<T> message,
     const ::protos::internal::ExtensionIdentifier<T, Extension>& id,
@@ -410,8 +417,8 @@
 }
 
 template <typename T, typename Extension,
-          typename = internal::EnableIfHpbClass<T>,
-          typename = internal::EnableIfMutableProto<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>,
+          typename = hpb::internal::EnableIfMutableProto<T>>
 absl::Status SetExtension(
     Ptr<T> message,
     const ::protos::internal::ExtensionIdentifier<T, Extension>& id,
@@ -424,8 +431,8 @@
 }
 
 template <typename T, typename Extension,
-          typename = internal::EnableIfHpbClass<T>,
-          typename = internal::EnableIfMutableProto<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>,
+          typename = hpb::internal::EnableIfMutableProto<T>>
 absl::Status SetExtension(
     Ptr<T> message,
     const ::protos::internal::ExtensionIdentifier<T, Extension>& id,
@@ -440,7 +447,7 @@
 }
 
 template <typename T, typename Extension,
-          typename = internal::EnableIfHpbClass<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>>
 absl::Status SetExtension(
     T* message, const ::protos::internal::ExtensionIdentifier<T, Extension>& id,
     const Extension& value) {
@@ -448,7 +455,7 @@
 }
 
 template <typename T, typename Extension,
-          typename = internal::EnableIfHpbClass<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>>
 absl::Status SetExtension(
     T* message, const ::protos::internal::ExtensionIdentifier<T, Extension>& id,
     Extension&& value) {
@@ -457,7 +464,7 @@
 }
 
 template <typename T, typename Extension,
-          typename = internal::EnableIfHpbClass<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>>
 absl::Status SetExtension(
     T* message, const ::protos::internal::ExtensionIdentifier<T, Extension>& id,
     Ptr<Extension> value) {
@@ -465,7 +472,7 @@
 }
 
 template <typename T, typename Extendee, typename Extension,
-          typename = internal::EnableIfHpbClass<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>>
 absl::StatusOr<Ptr<const Extension>> GetExtension(
     Ptr<T> message,
     const ::protos::internal::ExtensionIdentifier<Extendee, Extension>& id) {
@@ -483,7 +490,7 @@
 }
 
 template <typename T, typename Extendee, typename Extension,
-          typename = internal::EnableIfHpbClass<T>>
+          typename = hpb::internal::EnableIfHpbClass<T>>
 absl::StatusOr<Ptr<const Extension>> GetExtension(
     const T* message,
     const ::protos::internal::ExtensionIdentifier<Extendee, Extension>& id) {
diff --git a/hpb_generator/gen_accessors.cc b/hpb_generator/gen_accessors.cc
index 048efcd..d6eb5da 100644
--- a/hpb_generator/gen_accessors.cc
+++ b/hpb_generator/gen_accessors.cc
@@ -222,7 +222,7 @@
         output(
             R"cc(
               $1 $0::$2() const {
-                return ::protos::UpbStrToStringView($3_$4(msg_));
+                return ::hpb::UpbStrToStringView($3_$4(msg_));
               }
             )cc",
             class_name, CppConstType(field), resolved_field_name,
@@ -231,7 +231,7 @@
         output(
             R"cc(
               void $0::set_$2($1 value) {
-                $4_set_$3(msg_, ::protos::UpbStrFromStringView(value, $5));
+                $4_set_$3(msg_, ::hpb::UpbStrFromStringView(value, $5));
               }
             )cc",
             class_name, CppConstType(field), resolved_field_name,
@@ -347,9 +347,8 @@
     output(
         R"cc(
           bool $0::set_$1($2 key, $3 value) {
-            $5return $4_$7_set(msg_, $6,
-                               ::protos::UpbStrFromStringView(value, arena_),
-                               arena_);
+            $5return $4_$7_set(
+                msg_, $6, ::hpb::UpbStrFromStringView(value, arena_), arena_);
           }
         )cc",
         class_name, resolved_field_name, CppConstType(key), CppConstType(val),
diff --git a/hpb_generator/gen_repeated_fields.cc b/hpb_generator/gen_repeated_fields.cc
index 163648e..3ea3014 100644
--- a/hpb_generator/gen_repeated_fields.cc
+++ b/hpb_generator/gen_repeated_fields.cc
@@ -205,7 +205,7 @@
           size_t len;
           auto* ptr = $3_mutable_$4(msg_, &len);
           assert(index < len);
-          return ::protos::UpbStrToStringView(*(ptr + index));
+          return ::hpb::UpbStrToStringView(*(ptr + index));
         }
       )cc",
       class_name, CppConstType(field), resolved_field_name,
@@ -220,7 +220,7 @@
   output(
       R"cc(
         bool $0::add_$2($1 val) {
-          return $3_add_$4(msg_, ::protos::UpbStrFromStringView(val, arena_), arena_);
+          return $3_add_$4(msg_, ::hpb::UpbStrFromStringView(val, arena_), arena_);
         }
       )cc",
       class_name, CppConstType(field), resolved_field_name,
@@ -231,7 +231,7 @@
           size_t len;
           auto* ptr = $3_mutable_$4(msg_, &len);
           assert(index < len);
-          *(ptr + index) = ::protos::UpbStrFromStringView(val, arena_);
+          *(ptr + index) = ::hpb::UpbStrFromStringView(val, arena_);
         }
       )cc",
       class_name, CppConstType(field), resolved_field_name,