diff options
author | kenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2009-04-16 22:43:40 +0000 |
---|---|---|
committer | kenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2009-04-16 22:43:40 +0000 |
commit | eb26a1efdef3f1f5e77807d456a08f3c76cc5207 (patch) | |
tree | 467213c4581c8a18683cd730dddad7951cf2c366 /src/google/protobuf/compiler | |
parent | e59427a62cdd93ac8b18396d19f6dc74e979df95 (diff) |
Commit Michael Poole's patch for explicitly constructing all class fields in
generated code.
Diffstat (limited to 'src/google/protobuf/compiler')
5 files changed, 13 insertions, 4 deletions
diff --git a/src/google/protobuf/compiler/cpp/cpp_enum_field.cc b/src/google/protobuf/compiler/cpp/cpp_enum_field.cc index 19779a8a..a78bf887 100644 --- a/src/google/protobuf/compiler/cpp/cpp_enum_field.cc +++ b/src/google/protobuf/compiler/cpp/cpp_enum_field.cc @@ -218,7 +218,11 @@ GenerateSwappingCode(io::Printer* printer) const { void RepeatedEnumFieldGenerator:: GenerateInitializer(io::Printer* printer) const { - // Not needed for repeated fields. + printer->Print(variables_, ",\n$name$_()"); + if (descriptor_->options().packed() && + descriptor_->file()->options().optimize_for() == FileOptions::SPEED) { + printer->Print(variables_, ",\n_$name$_cached_byte_size_()"); + } } void RepeatedEnumFieldGenerator:: diff --git a/src/google/protobuf/compiler/cpp/cpp_message.cc b/src/google/protobuf/compiler/cpp/cpp_message.cc index c6843e93..d2f76803 100644 --- a/src/google/protobuf/compiler/cpp/cpp_message.cc +++ b/src/google/protobuf/compiler/cpp/cpp_message.cc @@ -753,6 +753,7 @@ GenerateInitializerList(io::Printer* printer) { } printer->Print( + "_unknown_fields_(),\n" "_cached_size_(0)"); // Write the initializers for each field. diff --git a/src/google/protobuf/compiler/cpp/cpp_message_field.cc b/src/google/protobuf/compiler/cpp/cpp_message_field.cc index 7d57a6df..e2d2370b 100644 --- a/src/google/protobuf/compiler/cpp/cpp_message_field.cc +++ b/src/google/protobuf/compiler/cpp/cpp_message_field.cc @@ -213,7 +213,7 @@ GenerateSwappingCode(io::Printer* printer) const { void RepeatedMessageFieldGenerator:: GenerateInitializer(io::Printer* printer) const { - // Not needed for repeated fields. + printer->Print(variables_, ",\n$name$_()"); } void RepeatedMessageFieldGenerator:: diff --git a/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc b/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc index 768d30cc..57244c5d 100644 --- a/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc +++ b/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc @@ -283,7 +283,11 @@ GenerateSwappingCode(io::Printer* printer) const { void RepeatedPrimitiveFieldGenerator:: GenerateInitializer(io::Printer* printer) const { - // Not needed for repeated fields. + printer->Print(variables_, ",\n$name$_()"); + if (descriptor_->options().packed() && + descriptor_->file()->options().optimize_for() == FileOptions::SPEED) { + printer->Print(variables_, ",\n_$name$_cached_byte_size_()"); + } } void RepeatedPrimitiveFieldGenerator:: diff --git a/src/google/protobuf/compiler/cpp/cpp_string_field.cc b/src/google/protobuf/compiler/cpp/cpp_string_field.cc index 200e3d68..51c5c6f5 100644 --- a/src/google/protobuf/compiler/cpp/cpp_string_field.cc +++ b/src/google/protobuf/compiler/cpp/cpp_string_field.cc @@ -361,7 +361,7 @@ GenerateSwappingCode(io::Printer* printer) const { void RepeatedStringFieldGenerator:: GenerateInitializer(io::Printer* printer) const { - // Not needed for repeated fields. + printer->Print(variables_, ",\n$name$_()"); } void RepeatedStringFieldGenerator:: |