You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by he...@apache.org on 2014/04/09 20:57:37 UTC

git commit: THRIFT-2421: Tree/Recursive struct support in thrift Client: cpp

Repository: thrift
Updated Branches:
  refs/heads/master 524b924f6 -> bcc0f1aa7


THRIFT-2421: Tree/Recursive struct support in thrift
Client: cpp

also fix mixed tabs and ignore RecursiveTest binary


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/bcc0f1aa
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/bcc0f1aa
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/bcc0f1aa

Branch: refs/heads/master
Commit: bcc0f1aa732974aaf14a88b5ba1e180c66440949
Parents: 524b924
Author: henrique <he...@apache.org>
Authored: Wed Apr 9 20:52:11 2014 +0200
Committer: henrique <he...@apache.org>
Committed: Wed Apr 9 20:57:17 2014 +0200

----------------------------------------------------------------------
 .gitignore                                   |  6 ++-
 compiler/cpp/src/generate/t_cpp_generator.cc | 46 +++++++++++------------
 2 files changed, 27 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/bcc0f1aa/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 90d5308..bff0826 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,14 +19,15 @@
 *.swp
 *.m4
 *~
+
+.*project
+junit*.properties
 gen-*
 Makefile
 Makefile.in
 autom4te.cache
 node_modules
 
-.project
-.pydevproject
 .sonar
 .DS_Store
 .svn
@@ -75,6 +76,7 @@ node_modules
 /lib/cpp/test/OptionalRequiredTest
 /lib/cpp/test/SpecializationTest
 /lib/cpp/test/ReflectionTest
+/lib/cpp/test/RecursiveTest
 /lib/cpp/test/TFDTransportTest
 /lib/cpp/test/TFileTransportTest
 /lib/cpp/test/TPipedTransportTest

http://git-wip-us.apache.org/repos/asf/thrift/blob/bcc0f1aa/compiler/cpp/src/generate/t_cpp_generator.cc
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/generate/t_cpp_generator.cc b/compiler/cpp/src/generate/t_cpp_generator.cc
index c9a44ef..92eab2f 100755
--- a/compiler/cpp/src/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/generate/t_cpp_generator.cc
@@ -157,7 +157,7 @@ class t_cpp_generator : public t_oop_generator {
   void generate_deserialize_struct       (std::ofstream& out,
                                           t_struct*   tstruct,
                                           std::string prefix="",
-					  bool pointer=false);
+                                          bool pointer=false);
   
   void generate_deserialize_container    (std::ofstream& out,
                                           t_type*     ttype,
@@ -185,7 +185,7 @@ class t_cpp_generator : public t_oop_generator {
   void generate_serialize_struct         (std::ofstream& out,
                                           t_struct*   tstruct,
                                           std::string prefix="",
-					  bool pointer=false);
+                                          bool pointer=false);
 
   void generate_serialize_container      (std::ofstream& out,
                                           t_type*     ttype,
@@ -864,7 +864,7 @@ void t_cpp_generator::generate_assignment_operator(
       indent(out) << "if (this == &" << tmp_name << ") return *this;" << endl;
       indent(out) << "if (" << (*f_iter)->get_name() << ") {" << endl;
       indent(out) << "  *" << (*f_iter)->get_name() << " = *" << tmp_name << "." << 
-	(*f_iter)->get_name() << ";" << endl;
+        (*f_iter)->get_name() << ";" << endl;
       indent(out) << "} else {" << endl;
       indent(out) << "  " << (*f_iter)->get_name() << " = new " << type << "(*" << tmp_name << "." <<
         (*f_iter)->get_name() << ");" << endl;
@@ -1137,8 +1137,8 @@ void t_cpp_generator::generate_struct_declaration(ofstream& out,
 }
 
 void t_cpp_generator::generate_struct_definition(ofstream& out,
-						 t_struct* tstruct,
-						 bool setters) {
+                                                 t_struct* tstruct,
+                                                 bool setters) {
   // Get members
   vector<t_field*>::const_iterator m_iter;
   const vector<t_field*>& members = tstruct->get_members();
@@ -1153,8 +1153,8 @@ void t_cpp_generator::generate_struct_definition(ofstream& out,
 
     for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
       if (is_reference(*m_iter)) {
-	out << indent() <<
-	  "delete " << (*m_iter)->get_name() << ";" << endl;
+        out << indent() <<
+          "delete " << (*m_iter)->get_name() << ";" << endl;
       }
     }    
 
@@ -1166,20 +1166,20 @@ void t_cpp_generator::generate_struct_definition(ofstream& out,
   if (setters) {
     for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
       out <<
-	endl <<
-	indent() << "void " << tstruct->get_name() << "::__set_" << (*m_iter)->get_name() <<
+        endl <<
+        indent() << "void " << tstruct->get_name() << "::__set_" << (*m_iter)->get_name() <<
         "(" << type_name((*m_iter)->get_type(), false, true);
       out << " val) {" << endl;
       indent_up();
       if (is_reference((*m_iter))) {
-	std::string type = type_name((*m_iter)->get_type());
-	indent(out) << "if (" << (*m_iter)->get_name() << ") {" << endl;
-	indent(out) << "  *" << (*m_iter)->get_name() << " = val;" << endl;
-	indent(out) << "} else {" << endl;
-	indent(out) << "  " << (*m_iter)->get_name() << " = new " << type << "(val);" << endl;
-	indent(out) << "}" << endl;
+        std::string type = type_name((*m_iter)->get_type());
+        indent(out) << "if (" << (*m_iter)->get_name() << ") {" << endl;
+        indent(out) << "  *" << (*m_iter)->get_name() << " = val;" << endl;
+        indent(out) << "} else {" << endl;
+        indent(out) << "  " << (*m_iter)->get_name() << " = new " << type << "(val);" << endl;
+        indent(out) << "}" << endl;
       } else {
-	out << indent() << (*m_iter)->get_name() << " = val;" << endl;
+        out << indent() << (*m_iter)->get_name() << " = val;" << endl;
       }
       indent_down();
 
@@ -1187,12 +1187,12 @@ void t_cpp_generator::generate_struct_definition(ofstream& out,
       // for optional fields change __isset.name to true
       bool is_optional = (*m_iter)->get_req() == t_field::T_OPTIONAL;
       if (is_optional) {
-	out <<
-	  indent() <<
-	  indent() << "__isset." << (*m_iter)->get_name() << " = true;" << endl;
+        out <<
+          indent() <<
+          indent() << "__isset." << (*m_iter)->get_name() << " = true;" << endl;
       }
       out <<
-	indent()<< "}" << endl;
+        indent()<< "}" << endl;
     }
   }
   out << endl;
@@ -4075,7 +4075,7 @@ void t_cpp_generator::generate_deserialize_field(ofstream& out,
 void t_cpp_generator::generate_deserialize_struct(ofstream& out,
                                                   t_struct* tstruct,
                                                   string prefix,
-						  bool pointer) {
+                                                  bool pointer) {
   if (pointer) {
     indent(out) << "if (!" << prefix << ") { " << endl;
     indent(out) << "  " << prefix << " = new " << type_name(tstruct) << ";" << endl;
@@ -4247,7 +4247,7 @@ void t_cpp_generator::generate_serialize_field(ofstream& out,
     generate_serialize_struct(out,
                               (t_struct*)type,
                               name, 
-			      is_reference(tfield));
+                              is_reference(tfield));
   } else if (type->is_container()) {
     generate_serialize_container(out, type, name);
   } else if (type->is_base_type() || type->is_enum()) {
@@ -4311,7 +4311,7 @@ void t_cpp_generator::generate_serialize_field(ofstream& out,
 void t_cpp_generator::generate_serialize_struct(ofstream& out,
                                                 t_struct* tstruct,
                                                 string prefix,
-						bool pointer) {
+                                                bool pointer) {
   if (pointer) {
     indent(out) << "if (" << prefix << ") {" << endl;
     indent(out) << "  xfer += " << prefix << "->write(oprot); " << endl;