From: Roger Meier Date: Wed, 16 Feb 2011 19:25:05 +0000 (+0000) Subject: THRIFT-1045 Support "included"ed thrift files X-Git-Tag: 0.7.0~186 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=dd0c328a45d6ccedfd63b4dcf8ac5e525907d11b;p=common%2Fthrift.git THRIFT-1045 Support "included"ed thrift files Patch: Henrique Mendonca git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1071366 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/compiler/cpp/src/generate/t_js_generator.cc b/compiler/cpp/src/generate/t_js_generator.cc index a654fc98..ba82feab 100644 --- a/compiler/cpp/src/generate/t_js_generator.cc +++ b/compiler/cpp/src/generate/t_js_generator.cc @@ -192,15 +192,14 @@ class t_js_generator : public t_oop_generator { return pieces; } - std::string js_type_namespace(t_type* ttype) { - t_program* program = ttype->get_program(); + std::string js_type_namespace(t_program* p) { if (gen_node_) { - if (program != NULL && program != program_) { - return program->get_name() + "_ttypes."; + if (p != NULL && p != program_) { + return p->get_name() + "_ttypes."; } return "ttypes."; } - return js_namespace(program); + return js_namespace(p); } std::string js_export_namespace(t_program* p) { @@ -336,7 +335,7 @@ void t_js_generator::generate_typedef(t_typedef* ttypedef) { * @param tenum The enumeration */ void t_js_generator::generate_enum(t_enum* tenum) { - f_types_ << js_type_namespace(tenum)<get_name()<<" = { "<get_program())<get_name()<<" = { "< constants = tenum->get_constants(); vector::iterator c_iter; @@ -359,7 +358,7 @@ void t_js_generator::generate_const(t_const* tconst) { string name = tconst->get_name(); t_const_value* value = tconst->get_value(); - f_types_ << js_type_namespace(type) << name << " = "; + f_types_ << js_type_namespace(program_) << name << " = "; f_types_ << render_const_value(type, value) << endl; } @@ -401,7 +400,7 @@ string t_js_generator::render_const_value(t_type* type, t_const_value* value) { } else if (type->is_enum()) { out << value->get_integer(); } else if (type->is_struct() || type->is_xception()) { - out << "new " << js_type_namespace(type) << type->get_name() << "({" << endl; + out << "new " << js_type_namespace(type->get_program()) << type->get_name() << "({" << endl; indent_up(); const vector& fields = ((t_struct*)type)->get_members(); vector::const_iterator f_iter; @@ -727,10 +726,8 @@ void t_js_generator::generate_service(t_service* tservice) { } - if (gen_node_) { - f_service_ << - "var ttypes = require('./" + program_->get_name() + "_types');" << endl; - } + f_service_ << + "var ttypes = require('./" + program_->get_name() + "_types');" << endl; } generate_service_helpers(tservice); @@ -1259,7 +1256,7 @@ void t_js_generator::generate_deserialize_struct(ofstream &out, t_struct* tstruct, string prefix) { out << - indent() << prefix << " = new " << js_type_namespace(tstruct)<get_name() << "()" << endl << + indent() << prefix << " = new " << js_type_namespace(tstruct->get_program())<get_name() << "()" << endl << indent() << prefix << ".read(input)" << endl; } @@ -1653,7 +1650,7 @@ string t_js_generator::declare_field(t_field* tfield, bool init, bool obj) { result += " = null"; } else if (type->is_struct() || type->is_xception()) { if (obj) { - result += " = new " +js_type_namespace(type) + type->get_name() + "()"; + result += " = new " +js_type_namespace(type->get_program()) + type->get_name() + "()"; } else { result += " = null"; }