Incremental migration of message.cc to Emit

PiperOrigin-RevId: 556917345
pull/13533/head
Matt Kulukundis 2 years ago committed by Copybara-Service
parent 6d03f9b19b
commit 395e9529bb
  1. 56
      src/google/protobuf/compiler/cpp/field_generators/message_field.cc

@ -544,35 +544,33 @@ class OneofMessage : public SingularMessage {
}; };
void OneofMessage::GenerateNonInlineAccessorDefinitions(io::Printer* p) const { void OneofMessage::GenerateNonInlineAccessorDefinitions(io::Printer* p) const {
p->Emit( p->Emit({{"casted_name",
"void $Msg$::set_allocated_$name$($Submsg$* $name$) {\n" [&] {
" $pb$::Arena* message_arena = GetArenaForAllocation();\n" if (field_->file() != field_->message_type()->file()) {
" clear_$oneof_name$();\n" // We have to read the arena through the virtual method, because
" if ($name$) {\n"); // the type isn't defined in this file.
if (field_->file() != field_->message_type()->file()) { p->Emit(R"cc(reinterpret_cast<$pb$::MessageLite*>($name$))cc");
// We have to read the arena through the virtual method, because the type } else {
// isn't defined in this file. p->Emit(R"cc($name$)cc");
p->Emit( }
" $pb$::Arena* submessage_arena =\n" }}},
" $pb$::Arena::InternalGetOwningArena(\n" R"cc(
" reinterpret_cast<$pb$::MessageLite*>(" void $Msg$::set_allocated_$name$($Submsg$* $name$) {
"$name$));\n"); $pb$::Arena* message_arena = GetArenaForAllocation();
} else { clear_$oneof_name$();
p->Emit( if ($name$) {
" $pb$::Arena* submessage_arena =\n" $pb$::Arena* submessage_arena =
" $pb$::Arena::InternalGetOwningArena($name$);\n"); $pb$::Arena::InternalGetOwningArena($casted_name$);
} if (message_arena != submessage_arena) {
p->Emit( $name$ = $pbi$::GetOwnedMessage(message_arena, $name$, submessage_arena);
" if (message_arena != submessage_arena) {\n" }
" $name$ = $pbi$::GetOwnedMessage(\n" set_has_$name$();
" message_arena, $name$, submessage_arena);\n" $field_$ = $name$;
" }\n" }
" set_has_$name$();\n" $annotate_set$;
" $field_$ = $name$;\n" // @@protoc_insertion_point(field_set_allocated:$pkg.Msg.field$)
" }\n" }
"$annotate_set$" )cc");
" // @@protoc_insertion_point(field_set_allocated:$pkg.Msg.field$)\n"
"}\n");
} }
void OneofMessage::GenerateInlineAccessorDefinitions(io::Printer* p) const { void OneofMessage::GenerateInlineAccessorDefinitions(io::Printer* p) const {

Loading…
Cancel
Save