Remove extension_scope bifurcation in gen_extension_cc and adopt .Emit over .EmitLegacy

PiperOrigin-RevId: 689441553
pull/18976/head
Hong Shin 4 months ago committed by Copybara-Service
parent 33bbbebf20
commit 3c918201f9
  1. 38
      hpb_generator/gen_extensions.cc

@ -7,6 +7,8 @@
#include "google/protobuf/compiler/hpb/gen_extensions.h" #include "google/protobuf/compiler/hpb/gen_extensions.h"
#include <string>
#include "absl/strings/str_cat.h" #include "absl/strings/str_cat.h"
#include "google/protobuf/compiler/hpb/context.h" #include "google/protobuf/compiler/hpb/context.h"
#include "google/protobuf/compiler/hpb/names.h" #include "google/protobuf/compiler/hpb/names.h"
@ -65,25 +67,23 @@ void WriteExtensionIdentifier(const protobuf::FieldDescriptor* ext,
Context& ctx) { Context& ctx) {
std::string mini_table_name = std::string mini_table_name =
absl::StrCat(ExtensionIdentifierBase(ext), "_", ext->name(), "_ext"); absl::StrCat(ExtensionIdentifierBase(ext), "_", ext->name(), "_ext");
if (ext->extension_scope()) { std::string class_prefix =
ctx.EmitLegacy( ext->extension_scope() ? ClassName(ext->extension_scope()) + "::" : "";
R"cc( ctx.Emit(
constexpr ::hpb::internal::ExtensionIdentifier<$0, $3> $4::$2 = {{"containing_type_name", ContainingTypeName(ext)},
::hpb::internal::PrivateAccess::InvokeConstructor< {"mini_table_name", mini_table_name},
::hpb::internal::ExtensionIdentifier<$0, $3>>(&$1); {"ext_name", ext->name()},
)cc", {"ext_type", CppTypeParameterName(ext)},
ContainingTypeName(ext), mini_table_name, ext->name(), {"class_prefix", class_prefix}},
CppTypeParameterName(ext), ClassName(ext->extension_scope())); R"cc(
} else { constexpr ::hpb::internal::ExtensionIdentifier<$containing_type_name$,
ctx.EmitLegacy( $ext_type$>
R"cc( $class_prefix$$ext_name$ =
constexpr ::hpb::internal::ExtensionIdentifier<$0, $3> $2 = ::hpb::internal::PrivateAccess::InvokeConstructor<
::hpb::internal::PrivateAccess::InvokeConstructor< ::hpb::internal::ExtensionIdentifier<$containing_type_name$,
::hpb::internal::ExtensionIdentifier<$0, $3>>(&$1); $ext_type$>>(
)cc", &$mini_table_name$);
ContainingTypeName(ext), mini_table_name, ext->name(), )cc");
CppTypeParameterName(ext));
}
} }
void WriteExtensionIdentifiers( void WriteExtensionIdentifiers(

Loading…
Cancel
Save