From 9e38dce6165d5e3f6ce402d4ff687bfa3d88bcb0 Mon Sep 17 00:00:00 2001 From: Hong Shin Date: Mon, 22 Jul 2024 11:32:26 -0700 Subject: [PATCH] fold Ptr into hpb namespace PiperOrigin-RevId: 654835437 --- hpb/hpb.h | 34 +++++++++-------- hpb/repeated_field.h | 12 +++--- hpb_generator/gen_messages.cc | 24 ++++++------ hpb_generator/gen_repeated_fields.cc | 12 +++--- hpb_generator/names.cc | 5 ++- hpb_generator/tests/test_generated.cc | 55 +++++++++++++-------------- 6 files changed, 72 insertions(+), 70 deletions(-) diff --git a/hpb/hpb.h b/hpb/hpb.h index 9e18057638..171da7896e 100644 --- a/hpb/hpb.h +++ b/hpb/hpb.h @@ -24,11 +24,6 @@ namespace hpb { using Arena = ::upb::Arena; -} - -namespace protos { -using hpb::Arena; -class ExtensionRegistry; template using Proxy = std::conditional_t::value, @@ -87,6 +82,13 @@ class Ptr final { template Ptr(T* m) -> Ptr; +} // namespace hpb + +namespace protos { +using hpb::Arena; +using hpb::Ptr; +class ExtensionRegistry; + inline absl::string_view UpbStrToStringView(upb_StringView str) { return absl::string_view(str.data, str.size); } @@ -101,7 +103,7 @@ inline upb_StringView UpbStrFromStringView(absl::string_view str, } template -typename T::Proxy CreateMessage(::protos::Arena& arena) { +typename T::Proxy CreateMessage(::hpb::Arena& arena) { return typename T::Proxy(upb_Message_New(T::minitable(), arena.ptr()), arena.ptr()); } @@ -310,19 +312,19 @@ typename T::Proxy CloneMessage(Ptr message, upb_Arena* arena) { template void DeepCopy(Ptr source_message, T* target_message) { static_assert(!std::is_const_v); - DeepCopy(source_message, protos::Ptr(target_message)); + DeepCopy(source_message, Ptr(target_message)); } template void DeepCopy(const T* source_message, Ptr target_message) { static_assert(!std::is_const_v); - DeepCopy(protos::Ptr(source_message), target_message); + DeepCopy(Ptr(source_message), target_message); } template void DeepCopy(const T* source_message, T* target_message) { static_assert(!std::is_const_v); - DeepCopy(protos::Ptr(source_message), protos::Ptr(target_message)); + DeepCopy(Ptr(source_message), Ptr(target_message)); } template @@ -371,7 +373,7 @@ template & id) { - return HasExtension(protos::Ptr(message), id); + return HasExtension(Ptr(message), id); } template & id) { - ClearExtension(::protos::Ptr(message), id); + ClearExtension(Ptr(message), id); } template & id, const Extension& value) { - return ::protos::SetExtension(::protos::Ptr(message), id, value); + return ::protos::SetExtension(Ptr(message), id, value); } template & id, Extension&& value) { - return ::protos::SetExtension(::protos::Ptr(message), id, + return ::protos::SetExtension(Ptr(message), id, std::forward(value)); } @@ -459,7 +461,7 @@ template & id, Ptr value) { - return ::protos::SetExtension(::protos::Ptr(message), id, value); + return ::protos::SetExtension(Ptr(message), id, value); } template > GetExtension( const T* message, const ::protos::internal::ExtensionIdentifier& id) { - return GetExtension(protos::Ptr(message), id); + return GetExtension(Ptr(message), id); } template @@ -522,7 +524,7 @@ ABSL_MUST_USE_RESULT bool Parse( T* message, absl::string_view bytes, const ::protos::ExtensionRegistry& extension_registry) { static_assert(!std::is_const_v); - return Parse(protos::Ptr(message, bytes, extension_registry)); + return Parse(Ptr(message, bytes, extension_registry)); } template diff --git a/hpb/repeated_field.h b/hpb/repeated_field.h index 3162f6a9d7..396dc3a3ff 100644 --- a/hpb/repeated_field.h +++ b/hpb/repeated_field.h @@ -94,7 +94,7 @@ class RepeatedFieldProxy : RepeatedFieldProxyBase(arr, arena) {} RepeatedFieldProxy(upb_Array* arr, upb_Arena* arena) : RepeatedFieldProxyMutableBase(arr, arena) {} - // Constructor used by ::protos::Ptr. + // Constructor used by ::hpb::Ptr. RepeatedFieldProxy(const RepeatedFieldProxy&) = default; // T::CProxy [] operator specialization. @@ -147,7 +147,7 @@ class RepeatedFieldProxy reverse_iterator rend() const { return reverse_iterator(begin()); } private: - friend class ::protos::Ptr; + friend class ::hpb::Ptr; }; // RepeatedField proxy for repeated strings. @@ -175,7 +175,7 @@ class RepeatedFieldStringProxy // Mutable constructor. RepeatedFieldStringProxy(upb_Array* arr, upb_Arena* arena) : RepeatedFieldProxyMutableBase(arr, arena) {} - // Constructor used by ::protos::Ptr. + // Constructor used by ::hpb::Ptr. RepeatedFieldStringProxy(const RepeatedFieldStringProxy&) = default; reference operator[](size_t n) const { return begin()[n]; } @@ -222,7 +222,7 @@ class RepeatedFieldScalarProxy : RepeatedFieldProxyBase(arr, arena) {} RepeatedFieldScalarProxy(upb_Array* arr, upb_Arena* arena) : RepeatedFieldProxyMutableBase(arr, arena) {} - // Constructor used by ::protos::Ptr. + // Constructor used by ::hpb::Ptr. RepeatedFieldScalarProxy(const RepeatedFieldScalarProxy&) = default; T operator[](size_t n) const { @@ -285,10 +285,10 @@ class RepeatedField { // We would like to reference T::CProxy. Validate forwarding header design. using ValueProxy = std::conditional_t< kIsScalar, T, - std::conditional_t>>; + std::conditional_t>>; using ValueCProxy = std::conditional_t< kIsScalar, const T, - std::conditional_t>>; + std::conditional_t>>; using Access = std::conditional_t< kIsScalar, internal::RepeatedFieldScalarProxy, std::conditional_t, diff --git a/hpb_generator/gen_messages.cc b/hpb_generator/gen_messages.cc index d2576743c4..ed0ff87100 100644 --- a/hpb_generator/gen_messages.cc +++ b/hpb_generator/gen_messages.cc @@ -237,7 +237,7 @@ void WriteModelPublicDeclaration( arena_ = owned_arena_.ptr(); upb_Arena_Fuse(arena_, arena); } - ::protos::Arena owned_arena_; + ::hpb::Arena owned_arena_; friend struct ::protos::internal::PrivateAccess; friend Proxy; friend CProxy; @@ -248,7 +248,7 @@ void WriteModelPublicDeclaration( const ::protos::ExtensionRegistry& extension_registry, int options)); friend upb_Arena* ::protos::internal::GetArena<$0>($0* message); - friend upb_Arena* ::protos::internal::GetArena<$0>(::protos::Ptr<$0> message); + friend upb_Arena* ::protos::internal::GetArena<$0>(::hpb::Ptr<$0> message); friend $0(::hpb::internal::MoveMessage<$0>(upb_Message* msg, upb_Arena* arena)); )cc", ClassName(descriptor), MessageName(descriptor), @@ -293,22 +293,22 @@ void WriteModelProxyDeclaration(const protobuf::Descriptor* descriptor, $0Proxy(upb_Message* msg, upb_Arena* arena) : internal::$0Access(($1*)msg, arena) {} - friend $0::Proxy(::protos::CreateMessage<$0>(::protos::Arena& arena)); + friend $0::Proxy(::protos::CreateMessage<$0>(::hpb::Arena& arena)); friend $0::Proxy(::protos::internal::CreateMessageProxy<$0>( upb_Message*, upb_Arena*)); friend struct ::protos::internal::PrivateAccess; friend class RepeatedFieldProxy; friend class $0CProxy; friend class $0Access; - friend class ::protos::Ptr<$0>; - friend class ::protos::Ptr; + friend class ::hpb::Ptr<$0>; + friend class ::hpb::Ptr; static const upb_MiniTable* minitable() { return $0::minitable(); } friend const upb_MiniTable* ::protos::internal::GetMiniTable<$0Proxy>( const $0Proxy* message); friend const upb_MiniTable* ::protos::internal::GetMiniTable<$0Proxy>( - ::protos::Ptr<$0Proxy> message); + ::hpb::Ptr<$0Proxy> message); friend upb_Arena* ::protos::internal::GetArena<$2>($2* message); - friend upb_Arena* ::protos::internal::GetArena<$2>(::protos::Ptr<$2> message); + friend upb_Arena* ::protos::internal::GetArena<$2>(::hpb::Ptr<$2> message); static void Rebind($0Proxy& lhs, const $0Proxy& rhs) { lhs.msg_ = rhs.msg_; lhs.arena_ = rhs.arena_; @@ -349,13 +349,13 @@ void WriteModelCProxyDeclaration(const protobuf::Descriptor* descriptor, : internal::$0Access(($1*)msg, arena){}; friend struct ::protos::internal::PrivateAccess; friend class RepeatedFieldProxy; - friend class ::protos::Ptr<$0>; - friend class ::protos::Ptr; + friend class ::hpb::Ptr<$0>; + friend class ::hpb::Ptr; static const upb_MiniTable* minitable() { return $0::minitable(); } friend const upb_MiniTable* ::protos::internal::GetMiniTable<$0CProxy>( const $0CProxy* message); friend const upb_MiniTable* ::protos::internal::GetMiniTable<$0CProxy>( - ::protos::Ptr<$0CProxy> message); + ::hpb::Ptr<$0CProxy> message); static void Rebind($0CProxy& lhs, const $0CProxy& rhs) { lhs.msg_ = rhs.msg_; @@ -369,7 +369,7 @@ void WriteModelCProxyDeclaration(const protobuf::Descriptor* descriptor, void WriteDefaultInstanceHeader(const protobuf::Descriptor* message, Output& output) { - output(" static ::protos::Ptr default_instance();\n", + output(" static ::hpb::Ptr default_instance();\n", ClassName(message)); } @@ -445,7 +445,7 @@ void WriteMessageImplementation( output( R"cc( - ::protos::Ptr $0::default_instance() { + ::hpb::Ptr $0::default_instance() { return ::protos::internal::CreateMessage<$0>( (upb_Message *)_$0_default_instance_.msg, _$0_default_instance_.arena); diff --git a/hpb_generator/gen_repeated_fields.cc b/hpb_generator/gen_repeated_fields.cc index f010294d43..163648e3a8 100644 --- a/hpb_generator/gen_repeated_fields.cc +++ b/hpb_generator/gen_repeated_fields.cc @@ -87,7 +87,7 @@ void WriteRepeatedFieldsInMessageHeader(const protobuf::Descriptor* desc, R"cc( $1 $2(size_t index) const; const ::protos::RepeatedField::CProxy $2() const; - ::protos::Ptr<::protos::RepeatedField<$4>> mutable_$2(); + ::hpb::Ptr<::protos::RepeatedField<$4>> mutable_$2(); absl::StatusOr<$0> add_$2(); $0 mutable_$2(size_t index) const; )cc", @@ -102,7 +102,7 @@ void WriteRepeatedFieldsInMessageHeader(const protobuf::Descriptor* desc, R"cc( $0 $1(size_t index) const; const ::protos::RepeatedField<$0>::CProxy $1() const; - ::protos::Ptr<::protos::RepeatedField<$0>> mutable_$1(); + ::hpb::Ptr<::protos::RepeatedField<$0>> mutable_$1(); bool add_$1($0 val); void set_$1(size_t index, $0 val); bool resize_$1(size_t len); @@ -113,7 +113,7 @@ void WriteRepeatedFieldsInMessageHeader(const protobuf::Descriptor* desc, R"cc( $0 $1(size_t index) const; const ::protos::RepeatedField<$0>::CProxy $1() const; - ::protos::Ptr<::protos::RepeatedField<$0>> mutable_$1(); + ::hpb::Ptr<::protos::RepeatedField<$0>> mutable_$1(); bool add_$1($0 val); void set_$1(size_t index, $0 val); bool resize_$1(size_t len); @@ -177,7 +177,7 @@ void WriteRepeatedMessageAccessor(const protobuf::Descriptor* message, const upb_Array* arr = _$3_$4_$5(msg_, &size); return ::protos::RepeatedField::CProxy(arr, arena_); }; - ::protos::Ptr<::protos::RepeatedField<$1>> $0::mutable_$2() { + ::hpb::Ptr<::protos::RepeatedField<$1>> $0::mutable_$2() { size_t size; upb_Array* arr = _$3_$4_$6(msg_, &size, arena_); return ::protos::RepeatedField<$1>::Proxy(arr, arena_); @@ -243,7 +243,7 @@ void WriteRepeatedStringAccessor(const protobuf::Descriptor* message, const upb_Array* arr = _$3_$4_$5(msg_, &size); return ::protos::RepeatedField<$1>::CProxy(arr, arena_); }; - ::protos::Ptr<::protos::RepeatedField<$1>> $0::mutable_$2() { + ::hpb::Ptr<::protos::RepeatedField<$1>> $0::mutable_$2() { size_t size; upb_Array* arr = _$3_$4_$6(msg_, &size, arena_); return ::protos::RepeatedField<$1>::Proxy(arr, arena_); @@ -307,7 +307,7 @@ void WriteRepeatedScalarAccessor(const protobuf::Descriptor* message, const upb_Array* arr = _$3_$4_$5(msg_, &size); return ::protos::RepeatedField<$1>::CProxy(arr, arena_); }; - ::protos::Ptr<::protos::RepeatedField<$1>> $0::mutable_$2() { + ::hpb::Ptr<::protos::RepeatedField<$1>> $0::mutable_$2() { size_t size; upb_Array* arr = _$3_$4_$6(msg_, &size, arena_); return ::protos::RepeatedField<$1>::Proxy(arr, arena_); diff --git a/hpb_generator/names.cc b/hpb_generator/names.cc index 5ea3da9d6a..864eca5aaf 100644 --- a/hpb_generator/names.cc +++ b/hpb_generator/names.cc @@ -17,6 +17,7 @@ namespace protobuf = ::proto2; namespace { +// TODO: b/346865271 append ::hpb instead of ::protos after namespace swap std::string NamespaceFromPackageName(absl::string_view package_name) { return absl::StrCat(absl::StrReplaceAll(package_name, {{".", "::"}}), "::protos"); @@ -82,7 +83,7 @@ std::string ClassName(const protobuf::Descriptor* descriptor) { const protobuf::Descriptor* parent = descriptor->containing_type(); std::string res; // Classes in global namespace without package names are prefixed - // by protos_ to avoid collision with C compiler structs defined in + // by hpb_ to avoid collision with C compiler structs defined in // proto.upb.h. if ((parent && parent->file()->package().empty()) || descriptor->file()->package().empty()) { @@ -155,7 +156,7 @@ std::string MessagePtrConstType(const protobuf::FieldDescriptor* field, bool is_const) { ABSL_DCHECK(field->cpp_type() == protobuf::FieldDescriptor::CPPTYPE_MESSAGE); std::string maybe_const = is_const ? "const " : ""; - return "::protos::Ptr<" + maybe_const + + return "::hpb::Ptr<" + maybe_const + QualifiedClassName(field->message_type()) + ">"; } diff --git a/hpb_generator/tests/test_generated.cc b/hpb_generator/tests/test_generated.cc index 578f2d8b8d..eb6ca07300 100644 --- a/hpb_generator/tests/test_generated.cc +++ b/hpb_generator/tests/test_generated.cc @@ -700,7 +700,7 @@ TEST(CppGeneratedCode, ClearExtensionWithEmptyExtension) { TEST(CppGeneratedCode, ClearExtensionWithEmptyExtensionPtr) { TestModel model; - ::protos::Ptr recursive_child = model.mutable_recursive_child(); + ::hpb::Ptr recursive_child = model.mutable_recursive_child(); ::protos::ClearExtension(recursive_child, theme); EXPECT_EQ(false, ::protos::HasExtension(recursive_child, theme)); } @@ -726,13 +726,12 @@ TEST(CppGeneratedCode, SetExtension) { TEST(CppGeneratedCode, SetExtensionWithPtr) { ::hpb::Arena arena_model; - ::protos::Ptr model = - ::protos::CreateMessage(arena_model); + ::hpb::Ptr model = ::protos::CreateMessage(arena_model); void* prior_message; { // Use a nested scope to make sure the arenas are fused correctly. ::hpb::Arena arena; - ::protos::Ptr extension1 = + ::hpb::Ptr extension1 = ::protos::CreateMessage(arena); extension1->set_ext_name("Hello World"); prior_message = ::protos::internal::GetInternalMsg(extension1); @@ -749,7 +748,7 @@ TEST(CppGeneratedCode, SetExtensionWithPtr) { #ifndef _MSC_VER TEST(CppGeneratedCode, SetExtensionShouldNotCompileForWrongType) { ::hpb::Arena arena; - ::protos::Ptr model = ::protos::CreateMessage(arena); + ::hpb::Ptr model = ::protos::CreateMessage(arena); ThemeExtension extension1; ContainerExtension extension2; @@ -770,11 +769,11 @@ TEST(CppGeneratedCode, SetExtensionShouldNotCompileForWrongType) { TEST(CppGeneratedCode, SetExtensionWithPtrSameArena) { ::hpb::Arena arena; - ::protos::Ptr model = ::protos::CreateMessage(arena); + ::hpb::Ptr model = ::protos::CreateMessage(arena); void* prior_message; { // Use a nested scope to make sure the arenas are fused correctly. - ::protos::Ptr extension1 = + ::hpb::Ptr extension1 = ::protos::CreateMessage(arena); extension1->set_ext_name("Hello World"); prior_message = ::protos::internal::GetInternalMsg(extension1); @@ -791,9 +790,9 @@ TEST(CppGeneratedCode, SetExtensionWithPtrSameArena) { TEST(CppGeneratedCode, SetExtensionFusingFailureShouldCopy) { // Use an initial block to disallow fusing. char initial_block[1000]; - protos::Arena arena(initial_block, sizeof(initial_block)); + hpb::Arena arena(initial_block, sizeof(initial_block)); - protos::Ptr model = protos::CreateMessage(arena); + hpb::Ptr model = ::protos::CreateMessage(arena); ThemeExtension extension1; extension1.set_ext_name("Hello World"); @@ -861,7 +860,7 @@ TEST(CppGeneratedCode, GetExtensionOnMutableChild) { TestModel model; ThemeExtension extension1; extension1.set_ext_name("Hello World"); - ::protos::Ptr mutable_recursive_child = + ::hpb::Ptr mutable_recursive_child = model.mutable_recursive_child(); EXPECT_EQ(false, ::protos::HasExtension(mutable_recursive_child, theme)); EXPECT_EQ( @@ -877,13 +876,13 @@ TEST(CppGeneratedCode, GetExtensionOnImmutableChild) { TestModel model; ThemeExtension extension1; extension1.set_ext_name("Hello World"); - ::protos::Ptr mutable_recursive_child = + ::hpb::Ptr mutable_recursive_child = model.mutable_recursive_child(); EXPECT_EQ(false, ::protos::HasExtension(mutable_recursive_child, theme)); EXPECT_EQ( true, ::protos::SetExtension(mutable_recursive_child, theme, extension1).ok()); - ::protos::Ptr recursive_child = model.recursive_child(); + ::hpb::Ptr recursive_child = model.recursive_child(); EXPECT_EQ("Hello World", ::protos::GetExtension(recursive_child, theme).value()->ext_name()); } @@ -915,7 +914,7 @@ TEST(CppGeneratedCode, SerializeNestedMessageUsingArena) { TestModel model; model.mutable_recursive_child()->set_str1("Hello World"); ::upb::Arena arena; - ::protos::Ptr child = model.recursive_child(); + ::hpb::Ptr child = model.recursive_child(); absl::StatusOr bytes = ::protos::Serialize(child, arena); EXPECT_EQ(true, bytes.ok()); TestModel parsed_model = ::protos::Parse(bytes.value()).value(); @@ -945,7 +944,7 @@ TEST(CppGeneratedCode, ParseIntoPtrToModel) { ::upb::Arena arena; auto bytes = ::protos::Serialize(&model, arena); EXPECT_EQ(true, bytes.ok()); - ::protos::Ptr parsed_model = + ::hpb::Ptr parsed_model = ::protos::CreateMessage(arena); EXPECT_TRUE(::protos::Parse(parsed_model, bytes.value())); EXPECT_EQ("Test123", parsed_model->str1()); @@ -992,15 +991,15 @@ TEST(CppGeneratedCode, NameCollisions) { TEST(CppGeneratedCode, SharedPointer) { std::shared_ptr model = std::make_shared(); ::upb::Arena arena; - auto bytes = protos::Serialize(model.get(), arena); - EXPECT_TRUE(protos::Parse(model.get(), bytes.value())); + auto bytes = ::protos::Serialize(model.get(), arena); + EXPECT_TRUE(::protos::Parse(model.get(), bytes.value())); } TEST(CppGeneratedCode, UniquePointer) { auto model = std::make_unique(); ::upb::Arena arena; - auto bytes = protos::Serialize(model.get(), arena); - EXPECT_TRUE(protos::Parse(model.get(), bytes.value())); + auto bytes = ::protos::Serialize(model.get(), arena); + EXPECT_TRUE(::protos::Parse(model.get(), bytes.value())); } TEST(CppGeneratedCode, Assignment) { @@ -1039,21 +1038,21 @@ TEST(CppGeneratedCode, PtrConstructor) { TEST(CppGeneratedCode, MutableToProxy) { TestModel model; - ::protos::Ptr child = model.mutable_child_model_1(); + ::hpb::Ptr child = model.mutable_child_model_1(); (void)child; } TEST(CppGeneratedCode, ProxyToCProxy) { TestModel model; - ::protos::Ptr child = model.mutable_child_model_1(); - ::protos::Ptr child2 = child; + ::hpb::Ptr child = model.mutable_child_model_1(); + ::hpb::Ptr child2 = child; (void)child2; } TEST(CppGeneratedCode, MutableAccessorsAreHiddenInCProxy) { TestModel model; - ::protos::Ptr proxy = &model; - ::protos::Ptr cproxy = proxy; + ::hpb::Ptr proxy = &model; + ::hpb::Ptr cproxy = proxy; const auto test_const_accessors = [](auto p) { // We don't want to run it, just check it compiles. @@ -1105,7 +1104,7 @@ TEST(CppGeneratedCode, MutableAccessorsAreHiddenInCProxy) { test_mutable_accessors(cproxy, false); } -bool ProxyToCProxyMethod(::protos::Ptr child) { +bool ProxyToCProxyMethod(::hpb::Ptr child) { return child->child_str1() == "text in child"; } @@ -1118,7 +1117,7 @@ TEST(CppGeneratedCode, PassProxyToCProxy) { TEST(CppGeneratedCode, PtrImplicitConversion) { TestModel model; model.set_int64(5); - ::protos::Ptr model_ptr = &model; + ::hpb::Ptr model_ptr = &model; EXPECT_EQ(model_ptr->int64(), 5); } @@ -1163,7 +1162,7 @@ TEST(CppGeneratedCode, CanInvokeClearMessageWithPtr) { model.set_int64(5); auto new_child = model.add_child_models(); // Clear using Ptr - auto ptr = ::protos::Ptr(&model); + auto ptr = ::hpb::Ptr(&model); ::protos::ClearMessage(ptr); // Successful clear EXPECT_FALSE(model.has_int64()); @@ -1186,8 +1185,8 @@ bool CanCallClearMessage() { } TEST(CppGeneratedCode, CannotInvokeClearMessageWithConstPtr) { - EXPECT_TRUE(CanCallClearMessage<::protos::Ptr>()); - EXPECT_FALSE(CanCallClearMessage<::protos::Ptr>()); + EXPECT_TRUE(CanCallClearMessage<::hpb::Ptr>()); + EXPECT_FALSE(CanCallClearMessage<::hpb::Ptr>()); } TEST(CppGeneratedCode, CannotInvokeClearMessageWithConstRawPtr) {