From b79acc9f60aabcc9ad203d65e758cb2445763854 Mon Sep 17 00:00:00 2001 From: David Reiss Date: Tue, 18 Mar 2008 18:21:58 +0000 Subject: [PATCH] Some optimizations to the C# generated code. git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665572 13f79535-47bb-0310-9956-ffa450edef68 --- .../cpp/src/generate/t_csharp_generator.cc | 118 +++++++++--------- 1 file changed, 60 insertions(+), 58 deletions(-) diff --git a/compiler/cpp/src/generate/t_csharp_generator.cc b/compiler/cpp/src/generate/t_csharp_generator.cc index 45370a4b..f9976302 100644 --- a/compiler/cpp/src/generate/t_csharp_generator.cc +++ b/compiler/cpp/src/generate/t_csharp_generator.cc @@ -452,36 +452,37 @@ void t_csharp_generator::generate_csharp_struct_writer(ofstream& out, t_struct* indent(out) << "TStruct struc = new TStruct(\"" << name << "\");" << endl; - indent(out) << - "TField field = new TField();" << endl; indent(out) << "oprot.WriteStructBegin(struc);" << endl; - for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) { - bool null_allowed = type_can_be_null((*f_iter)->get_type()); - if (null_allowed) { - indent(out) << - "if (this." << (*f_iter)->get_name() << " != null) {" << endl; - indent_up(); - } + if (fields.size() > 0) { + indent(out) << "TField field = new TField();" << endl; + for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) { + bool null_allowed = type_can_be_null((*f_iter)->get_type()); + if (null_allowed) { + indent(out) << + "if (this." << (*f_iter)->get_name() << " != null) {" << endl; + indent_up(); + } - indent(out) << - "field.Name = \"" << (*f_iter)->get_name() << "\";" << endl; - indent(out) << - "field.Type = " << type_to_enum((*f_iter)->get_type()) << ";" << endl; - indent(out) << - "field.ID = " << (*f_iter)->get_key() << ";" << endl; - indent(out) << - "oprot.WriteFieldBegin(field);" << endl; + indent(out) << + "field.Name = \"" << (*f_iter)->get_name() << "\";" << endl; + indent(out) << + "field.Type = " << type_to_enum((*f_iter)->get_type()) << ";" << endl; + indent(out) << + "field.ID = " << (*f_iter)->get_key() << ";" << endl; + indent(out) << + "oprot.WriteFieldBegin(field);" << endl; - generate_serialize_field(out, *f_iter, "this."); + generate_serialize_field(out, *f_iter, "this."); - indent(out) << - "oprot.WriteFieldEnd();" << endl; + indent(out) << + "oprot.WriteFieldEnd();" << endl; - if (null_allowed) { - indent_down(); - indent(out) << "}" << endl; + if (null_allowed) { + indent_down(); + indent(out) << "}" << endl; + } } } @@ -507,54 +508,55 @@ void t_csharp_generator::generate_csharp_struct_result_writer(ofstream& out, t_s indent(out) << "TStruct struc = new TStruct(\"" << name << "\");" << endl; - indent(out) << - "TField field = new TField();" << endl; indent(out) << "oprot.WriteStructBegin(struc);" << endl; - bool first = true; - for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) { - if (first) { - first = false; - out << - endl << indent() << "if "; - } else { + if (fields.size() > 0) { + indent(out) << "TField field = new TField();" << endl; + bool first = true; + for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) { + if (first) { + first = false; + out << + endl << indent() << "if "; + } else { + out << + " else if "; + } + out << - " else if "; - } + "(this.__isset." << (*f_iter)->get_name() << ") {" << endl; + indent_up(); - out << - "(this.__isset." << (*f_iter)->get_name() << ") {" << endl; - indent_up(); + bool null_allowed = type_can_be_null((*f_iter)->get_type()); + if (null_allowed) { + indent(out) << + "if (this." << (*f_iter)->get_name() << " != null) {" << endl; + indent_up(); + } - bool null_allowed = type_can_be_null((*f_iter)->get_type()); - if (null_allowed) { indent(out) << - "if (this." << (*f_iter)->get_name() << " != null) {" << endl; - indent_up(); - } + "field.Name = \"" << (*f_iter)->get_name() << "\";" << endl; + indent(out) << + "field.Type = " << type_to_enum((*f_iter)->get_type()) << ";" << endl; + indent(out) << + "field.ID = " << (*f_iter)->get_key() << ";" << endl; + indent(out) << + "oprot.WriteFieldBegin(field);" << endl; - indent(out) << - "field.Name = \"" << (*f_iter)->get_name() << "\";" << endl; - indent(out) << - "field.Type = " << type_to_enum((*f_iter)->get_type()) << ";" << endl; - indent(out) << - "field.ID = " << (*f_iter)->get_key() << ";" << endl; - indent(out) << - "oprot.WriteFieldBegin(field);" << endl; + generate_serialize_field(out, *f_iter, "this."); - generate_serialize_field(out, *f_iter, "this."); + indent(out) << + "oprot.WriteFieldEnd();" << endl; - indent(out) << - "oprot.WriteFieldEnd();" << endl; + if (null_allowed) { + indent_down(); + indent(out) << "}" << endl; + } - if (null_allowed) { indent_down(); - indent(out) << "}" << endl; + indent(out) << "}"; } - - indent_down(); - indent(out) << "}"; } out << -- 2.17.1