diff options
author | Jon Skeet <jonskeet@google.com> | 2015-07-01 17:11:17 +0100 |
---|---|---|
committer | Jon Skeet <jonskeet@google.com> | 2015-07-09 08:26:04 +0100 |
commit | 493e3db98532e99a53cec914d8f4827a556ee408 (patch) | |
tree | 4ea197b6188713b8905e8390719c6b9f0e4a54c6 /src/google/protobuf/compiler/csharp/csharp_message.cc | |
parent | 462d569ec0eb8f6a7b81f0423566cba20fb2bf9f (diff) |
Codegen changes to support descriptor runtime changes
- Add a partial method called by all constructors
- Generate internal classes for descriptor.proto (only)
- Forbid proto2 descriptors except for descriptor.proto
Diffstat (limited to 'src/google/protobuf/compiler/csharp/csharp_message.cc')
-rw-r--r-- | src/google/protobuf/compiler/csharp/csharp_message.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_message.cc b/src/google/protobuf/compiler/csharp/csharp_message.cc index c7a1e290..13544b26 100644 --- a/src/google/protobuf/compiler/csharp/csharp_message.cc +++ b/src/google/protobuf/compiler/csharp/csharp_message.cc @@ -221,10 +221,13 @@ void MessageGenerator::Generate(io::Printer* printer) { "private bool _frozen = false;\n" "public bool IsFrozen { get { return _frozen; } }\n\n"); - // Parameterless constructor + // Parameterless constructor and partial OnConstruction method. printer->Print( vars, - "public $class_name$() { }\n\n"); + "public $class_name$() {\n" + " OnConstruction();\n" + "}\n\n" + "partial void OnConstruction();\n\n"); GenerateCloningCode(printer); GenerateFreezingCode(printer); @@ -311,7 +314,7 @@ void MessageGenerator::GenerateCloningCode(io::Printer* printer) { vars["class_name"] = class_name(); printer->Print( vars, - "public $class_name$($class_name$ other) {\n"); + "public $class_name$($class_name$ other) : this() {\n"); printer->Indent(); // Clone non-oneof fields first for (int i = 0; i < descriptor_->field_count(); i++) { |