diff options
author | Jie Luo <jieluo@google.com> | 2015-06-03 18:02:17 -0700 |
---|---|---|
committer | Jie Luo <jieluo@google.com> | 2015-06-04 11:39:13 -0700 |
commit | 90da3514cdc372b8221a32f9fc97da0d4e047e92 (patch) | |
tree | 4c77411dbd3cd0fae2121a0284287267d2ef244a /src/google/protobuf/compiler/csharp/csharp_primitive_field.cc | |
parent | a21a2cf7d39648fa8fe7e98789d0590e336a471f (diff) |
Migrate writer to io::Printer for C#
Diffstat (limited to 'src/google/protobuf/compiler/csharp/csharp_primitive_field.cc')
-rw-r--r-- | src/google/protobuf/compiler/csharp/csharp_primitive_field.cc | 313 |
1 files changed, 171 insertions, 142 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc b/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc index a54edfe3..652eb6b9 100644 --- a/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc +++ b/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc @@ -40,7 +40,6 @@ #include <google/protobuf/compiler/csharp/csharp_helpers.h> #include <google/protobuf/compiler/csharp/csharp_primitive_field.h> -#include <google/protobuf/compiler/csharp/csharp_writer.h> namespace google { namespace protobuf { @@ -50,202 +49,232 @@ namespace csharp { PrimitiveFieldGenerator::PrimitiveFieldGenerator( const FieldDescriptor* descriptor, int fieldOrdinal) : FieldGeneratorBase(descriptor, fieldOrdinal) { - if (SupportFieldPresence(descriptor_->file())) { - has_property_check = "has" + property_name(); - } else { - has_property_check = property_name() + " != " + default_value(); - } } PrimitiveFieldGenerator::~PrimitiveFieldGenerator() { } -void PrimitiveFieldGenerator::GenerateMembers(Writer* writer) { +void PrimitiveFieldGenerator::GenerateMembers(io::Printer* printer) { if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("private bool has$0$;", property_name()); + printer->Print(variables_, "private bool has$property_name$;\n"); } - writer->WriteLine("private $0$ $1$_$2$;", type_name(), name(), - has_default_value() ? " = " + default_value() : ""); - AddDeprecatedFlag(writer); + printer->Print( + variables_, + "private $type_name$ $name_def_message$;\n"); + AddDeprecatedFlag(printer); if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("public bool Has$0$ {", property_name()); - writer->WriteLine(" get { return has$0$; }", property_name()); - writer->WriteLine("}"); + printer->Print( + variables_, + "public bool Has$property_name$ {\n" + " get { return has$property_name$; }\n" + "}\n"); } - AddPublicMemberAttributes(writer); - writer->WriteLine("public $0$ $1$ {", type_name(), property_name()); - writer->WriteLine(" get { return $0$_; }", name()); - writer->WriteLine("}"); + AddPublicMemberAttributes(printer); + printer->Print( + variables_, + "public $type_name$ $property_name$ {\n" + " get { return $name$_; }\n" + "}\n"); } -void PrimitiveFieldGenerator::GenerateBuilderMembers(Writer* writer) { - AddDeprecatedFlag(writer); +void PrimitiveFieldGenerator::GenerateBuilderMembers(io::Printer* printer) { + AddDeprecatedFlag(printer); if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("public bool Has$0$ {", property_name()); - writer->WriteLine(" get { return result.has$0$; }", property_name()); - writer->WriteLine("}"); + printer->Print( + variables_, + "public bool Has$property_name$ {\n" + " get { return result.has$property_name$; }\n" + "}\n"); } - AddPublicMemberAttributes(writer); - writer->WriteLine("public $0$ $1$ {", type_name(), property_name()); - writer->WriteLine(" get { return result.$0$; }", property_name()); - writer->WriteLine(" set { Set$0$(value); }", property_name()); - writer->WriteLine("}"); - AddPublicMemberAttributes(writer); - writer->WriteLine("public Builder Set$0$($1$ value) {", property_name(), - type_name()); - AddNullCheck(writer); - writer->WriteLine(" PrepareBuilder();"); + AddPublicMemberAttributes(printer); + printer->Print( + variables_, + "public $type_name$ $property_name$ {\n" + " get { return result.$property_name$; }\n" + " set { Set$property_name$(value); }\n" + "}\n"); + AddPublicMemberAttributes(printer); + printer->Print( + variables_, + "public Builder Set$property_name$($type_name$ value) {\n"); + AddNullCheck(printer); + printer->Print(" PrepareBuilder();\n"); if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine(" result.has$0$ = true;", property_name()); + printer->Print( + variables_, + " result.has$property_name$ = true;\n"); } - writer->WriteLine(" result.$0$_ = value;", name()); - writer->WriteLine(" return this;"); - writer->WriteLine("}"); - AddDeprecatedFlag(writer); - writer->WriteLine("public Builder Clear$0$() {", property_name()); - writer->WriteLine(" PrepareBuilder();"); + printer->Print( + variables_, + " result.$name$_ = value;\n" + " return this;\n" + "}\n"); + AddDeprecatedFlag(printer); + printer->Print( + variables_, + "public Builder Clear$property_name$() {\n" + " PrepareBuilder();\n"); if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine(" result.has$0$ = false;", property_name()); + printer->Print( + variables_, + " result.has$property_name$ = false;\n"); } - writer->WriteLine(" result.$0$_ = $1$;", name(), default_value()); - writer->WriteLine(" return this;"); - writer->WriteLine("}"); + printer->Print( + variables_, + " result.$name$_ = $default_value$;\n" + " return this;\n" + "}\n"); } -void PrimitiveFieldGenerator::GenerateMergingCode(Writer* writer) { - if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("if (other.Has$0$) {", property_name()); - } else { - writer->WriteLine("if (other.$0$ != $1$) {", property_name(), default_value()); - } - writer->WriteLine(" $0$ = other.$0$;", property_name()); - writer->WriteLine("}"); +void PrimitiveFieldGenerator::GenerateMergingCode(io::Printer* printer) { + printer->Print( + variables_, + "if ($other_has_property_check$) {\n" + " $property_name$ = other.$property_name$;\n" + "}\n"); } -void PrimitiveFieldGenerator::GenerateBuildingCode(Writer* writer) { +void PrimitiveFieldGenerator::GenerateBuildingCode(io::Printer* printer) { // Nothing to do here for primitive types } -void PrimitiveFieldGenerator::GenerateParsingCode(Writer* writer) { +void PrimitiveFieldGenerator::GenerateParsingCode(io::Printer* printer) { if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("result.has$0$ = input.Read$1$(ref result.$2$_);", - property_name(), capitalized_type_name(), name()); + printer->Print( + variables_, + "result.has$property_name$ = input.Read$capitalized_type_name$(ref result.$name$_);\n"); } else { - writer->WriteLine("input.Read$0$(ref result.$1$_);", - capitalized_type_name(), name()); + printer->Print( + variables_, + "input.Read$capitalized_type_name$(ref result.$name$_);\n"); } } -void PrimitiveFieldGenerator::GenerateSerializationCode(Writer* writer) { - writer->WriteLine("if ($0$) {", has_property_check); - writer->WriteLine(" output.Write$0$($1$, field_names[$3$], $2$);", - capitalized_type_name(), number(), property_name(), - field_ordinal()); - writer->WriteLine("}"); +void PrimitiveFieldGenerator::GenerateSerializationCode(io::Printer* printer) { + printer->Print( + variables_, + "if ($has_property_check$) {\n" + " output.Write$capitalized_type_name$($number$, field_names[$field_ordinal$], $property_name$);\n" + "}\n"); } -void PrimitiveFieldGenerator::GenerateSerializedSizeCode(Writer* writer) { - writer->WriteLine("if ($0$) {", has_property_check); - writer->WriteLine(" size += pb::CodedOutputStream.Compute$0$Size($1$, $2$);", - capitalized_type_name(), number(), property_name()); - writer->WriteLine("}"); +void PrimitiveFieldGenerator::GenerateSerializedSizeCode(io::Printer* printer) { + printer->Print( + variables_, + "if ($has_property_check$) {\n" + " size += pb::CodedOutputStream.Compute$capitalized_type_name$Size($number$, $property_name$);\n" + "}\n"); } -void PrimitiveFieldGenerator::WriteHash(Writer* writer) { - writer->WriteLine("if ($0$) {", has_property_check); - writer->WriteLine(" hash ^= $0$_.GetHashCode();", name()); - writer->WriteLine("}"); +void PrimitiveFieldGenerator::WriteHash(io::Printer* printer) { + printer->Print( + variables_, + "if ($has_property_check$) {\n" + " hash ^= $name$_.GetHashCode();\n" + "}\n"); } -void PrimitiveFieldGenerator::WriteEquals(Writer* writer) { +void PrimitiveFieldGenerator::WriteEquals(io::Printer* printer) { if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine( - "if (has$0$ != other.has$0$ || (has$0$ && !$1$_.Equals(other.$1$_))) return false;", - property_name(), name()); + printer->Print( + variables_, + "if (has$property_name$ != other.has$property_name$ || (has$property_name$ && !$name$_.Equals(other.$name$_))) return false;\n"); } else { - writer->WriteLine( - "if (!$0$_.Equals(other.$0$_)) return false;", name()); + printer->Print( + variables_, + "if (!$name$_.Equals(other.$name$_)) return false;\n"); } } -void PrimitiveFieldGenerator::WriteToString(Writer* writer) { - writer->WriteLine("PrintField(\"$0$\", $1$, $2$_, writer);", - descriptor_->name(), has_property_check, name()); +void PrimitiveFieldGenerator::WriteToString(io::Printer* printer) { + printer->Print( + variables_, + "PrintField(\"$descriptor_name$\", $has_property_check$, $name$_, writer);\n"); } PrimitiveOneofFieldGenerator::PrimitiveOneofFieldGenerator( const FieldDescriptor* descriptor, int fieldOrdinal) : PrimitiveFieldGenerator(descriptor, fieldOrdinal) { - has_property_check = oneof_name() + "Case_ == " + oneof_property_name() + - "OneofCase." + property_name(); + SetCommonOneofFieldVariables(&variables_); } PrimitiveOneofFieldGenerator::~PrimitiveOneofFieldGenerator() { } -void PrimitiveOneofFieldGenerator::GenerateMembers(Writer* writer) { - AddDeprecatedFlag(writer); +void PrimitiveOneofFieldGenerator::GenerateMembers(io::Printer* printer) { + AddDeprecatedFlag(printer); if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("public bool Has$0$ {", property_name()); - writer->WriteLine(" get { return $0$; }", has_property_check); - writer->WriteLine("}"); + printer->Print( + variables_, + "public bool Has$property_name$ {\n" + " get { return $has_property_check$; }\n" + "}\n"); } - AddPublicMemberAttributes(writer); - writer->WriteLine("public $0$ $1$ {", type_name(), property_name()); - writer->WriteLine(" get { return $0$ ? ($1$) $2$_ : $3$; }", - has_property_check, type_name(), oneof_name(), default_value()); - writer->WriteLine("}"); + AddPublicMemberAttributes(printer); + printer->Print( + variables_, + "public $type_name$ $property_name$ {\n" + " get { return $has_property_check$ ? ($type_name$) $oneof_name$_ : $default_value$; }\n" + "}\n"); } -void PrimitiveOneofFieldGenerator::GenerateBuilderMembers(Writer* writer) { - AddDeprecatedFlag(writer); +void PrimitiveOneofFieldGenerator::GenerateBuilderMembers(io::Printer* printer) { + AddDeprecatedFlag(printer); if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("public bool Has$0$ {", property_name()); - writer->WriteLine(" get { return result.$0$; }", has_property_check); - writer->WriteLine("}"); + printer->Print( + variables_, + "public bool Has$property_name$ {\n" + " get { return result.$has_property_check$; }\n" + "}\n"); } - AddPublicMemberAttributes(writer); - writer->WriteLine("public $0$ $1$ {", type_name(), property_name()); - writer->WriteLine(" get { return result.$0$ ? ($1$) result.$2$_ : $3$; }", - has_property_check, type_name(), oneof_name(), default_value()); - writer->WriteLine(" set { Set$0$(value); }", property_name()); - writer->WriteLine("}"); - AddPublicMemberAttributes(writer); - writer->WriteLine("public Builder Set$0$($1$ value) {", property_name(), - type_name()); - AddNullCheck(writer); - writer->WriteLine(" PrepareBuilder();"); - writer->WriteLine(" result.$0$_ = value;", oneof_name()); - writer->WriteLine(" result.$0$Case_ = $1$OneofCase.$2$;", - oneof_name(), oneof_property_name(), property_name()); - writer->WriteLine(" return this;"); - writer->WriteLine("}"); - AddDeprecatedFlag(writer); - writer->WriteLine("public Builder Clear$0$() {", property_name()); - writer->WriteLine(" PrepareBuilder();"); - writer->WriteLine(" if (result.$0$) {", has_property_check); - writer->WriteLine(" result.$0$Case_ = $1$OneofCase.None;", - oneof_name(), oneof_property_name()); - writer->WriteLine(" }"); - writer->WriteLine(" return this;"); - writer->WriteLine("}"); -} - -void PrimitiveOneofFieldGenerator::WriteEquals(Writer* writer) { - writer->WriteLine("if (!$0$.Equals(other.$0$)) return false;", property_name()); -} -void PrimitiveOneofFieldGenerator::WriteToString(Writer* writer) { - writer->WriteLine("PrintField(\"$0$\", $1$, $2$_, writer);", - descriptor_->name(), has_property_check, oneof_name()); -} - -void PrimitiveOneofFieldGenerator::GenerateParsingCode(Writer* writer) { - writer->WriteLine("$0$ value = $1$;", type_name(), default_value()); - writer->WriteLine("if (input.Read$0$(ref value)) {", - capitalized_type_name()); - writer->WriteLine(" result.$0$_ = value;", oneof_name()); - writer->WriteLine(" result.$0$Case_ = $1$OneofCase.$2$;", - oneof_name(), oneof_property_name(), property_name()); - writer->WriteLine("}"); + AddPublicMemberAttributes(printer); + printer->Print( + variables_, + "public $type_name$ $property_name$ {\n" + " get { return result.$has_property_check$ ? ($type_name$) result.$oneof_name$_ : $default_value$; }\n" + " set { Set$property_name$(value); }\n" + "}\n"); + AddPublicMemberAttributes(printer); + printer->Print( + variables_, + "public Builder Set$property_name$($type_name$ value) {\n"); + AddNullCheck(printer); + printer->Print( + variables_, + " PrepareBuilder();\n" + " result.$oneof_name$_ = value;\n" + " result.$oneof_name$Case_ = $oneof_property_name$OneofCase.$property_name$;\n" + " return this;\n" + "}\n"); + AddDeprecatedFlag(printer); + printer->Print( + variables_, + "public Builder Clear$property_name$() {\n" + " PrepareBuilder();\n" + " if (result.$has_property_check$) {\n" + " result.$oneof_name$Case_ = $oneof_property_name$OneofCase.None;\n" + " }\n" + " return this;\n" + "}\n"); +} + +void PrimitiveOneofFieldGenerator::WriteEquals(io::Printer* printer) { + printer->Print( + variables_, + "if (!$property_name$.Equals(other.$property_name$)) return false;\n"); +} +void PrimitiveOneofFieldGenerator::WriteToString(io::Printer* printer) { + printer->Print(variables_, + "PrintField(\"$descriptor_name$\", $has_property_check$, $oneof_name$_, writer);\n"); +} + +void PrimitiveOneofFieldGenerator::GenerateParsingCode(io::Printer* printer) { + printer->Print( + variables_, + "$type_name$ value = $default_value$;\n" + "if (input.Read$capitalized_type_name$(ref value)) {\n" + " result.$oneof_name$_ = value;\n" + " result.$oneof_name$Case_ = $oneof_property_name$OneofCase.$property_name$;\n" + "}\n"); } } // namespace csharp |