THRIFT-3146 Graphviz generates function name collisions between services
Client: Graphviz
Patch: Adam Beberg
diff --git a/compiler/cpp/src/generate/t_gv_generator.cc b/compiler/cpp/src/generate/t_gv_generator.cc
index 4511b29..59e06a0 100644
--- a/compiler/cpp/src/generate/t_gv_generator.cc
+++ b/compiler/cpp/src/generate/t_gv_generator.cc
@@ -298,10 +298,11 @@
for (; fn_iter != functions.end(); fn_iter++) {
string fn_name = (*fn_iter)->get_name();
- f_out_ << "function_" << fn_name;
+ f_out_ << "function_" << service_name << fn_name;
f_out_ << "[label=\"<return_type>function " << escape_string(fn_name);
f_out_ << " :: ";
- print_type((*fn_iter)->get_returntype(), "function_" + fn_name + ":return_type");
+ print_type((*fn_iter)->get_returntype(),
+ "function_" + service_name + fn_name + ":return_type");
vector<t_field*> args = (*fn_iter)->get_arglist()->get_members();
vector<t_field*>::iterator arg_iter = args.begin();
@@ -313,8 +314,8 @@
print_const_value((*arg_iter)->get_type(), (*arg_iter)->get_value());
}
f_out_ << " :: ";
- print_type((*arg_iter)->get_type(),
- "function_" + fn_name + ":param_" + (*arg_iter)->get_name());
+ print_type((*arg_iter)->get_type(), "function_" + service_name + fn_name
+ + ":param_" + (*arg_iter)->get_name());
}
// end of node
f_out_ << "\"];" << endl;
@@ -324,8 +325,8 @@
vector<t_field*> excepts = (*fn_iter)->get_xceptions()->get_members();
vector<t_field*>::iterator ex_iter = excepts.begin();
for (; ex_iter != excepts.end(); ex_iter++) {
- edges.push_back("function_" + fn_name + " -> " + (*ex_iter)->get_type()->get_name()
- + " [color=red]");
+ edges.push_back("function_" + service_name + fn_name + " -> "
+ + (*ex_iter)->get_type()->get_name() + " [color=red]");
}
}
}