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 a654fc9..ba82fea 100644
--- a/compiler/cpp/src/generate/t_js_generator.cc
+++ b/compiler/cpp/src/generate/t_js_generator.cc
@@ -192,15 +192,14 @@
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 @@
* @param tenum The enumeration
*/
void t_js_generator::generate_enum(t_enum* tenum) {
- f_types_ << js_type_namespace(tenum)<<tenum->get_name()<<" = { "<<endl;
+ f_types_ << js_type_namespace(tenum->get_program())<<tenum->get_name()<<" = { "<<endl;
vector<t_enum_value*> constants = tenum->get_constants();
vector<t_enum_value*>::iterator c_iter;
@@ -359,7 +358,7 @@
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 @@
} 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<t_field*>& fields = ((t_struct*)type)->get_members();
vector<t_field*>::const_iterator f_iter;
@@ -727,10 +726,8 @@
}
- 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 @@
t_struct* tstruct,
string prefix) {
out <<
- indent() << prefix << " = new " << js_type_namespace(tstruct)<<tstruct->get_name() << "()" << endl <<
+ indent() << prefix << " = new " << js_type_namespace(tstruct->get_program())<<tstruct->get_name() << "()" << endl <<
indent() << prefix << ".read(input)" << endl;
}
@@ -1653,7 +1650,7 @@
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";
}