Make the C++ generator use non-hardcoded namespaces.
- Make the C++ generator use program->get_namespace("cpp")
instead of program->get_cpp_namespace()
- Eliminate the explicit "cpp_namespace" in t_program.
- Deprecate the cpp_namespace token.
- Update example .thrift files and syntax files.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665513 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_cpp_generator.cc b/compiler/cpp/src/generate/t_cpp_generator.cc
index b43a4bc..0f77b90 100644
--- a/compiler/cpp/src/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/generate/t_cpp_generator.cc
@@ -297,8 +297,8 @@
}
// Open namespace
- ns_open_ = namespace_open(program_->get_cpp_namespace());
- ns_close_ = namespace_close(program_->get_cpp_namespace());
+ ns_open_ = namespace_open(program_->get_namespace("cpp"));
+ ns_close_ = namespace_close(program_->get_namespace("cpp"));
f_types_ <<
ns_open_ << endl <<
@@ -2293,7 +2293,7 @@
// Service implementation file includes
string f_skeleton_name = get_out_dir()+svcname+"_server.skeleton.cpp";
- string ns = namespace_prefix(tservice->get_program()->get_cpp_namespace());
+ string ns = namespace_prefix(tservice->get_program()->get_namespace("cpp"));
ofstream f_skeleton;
f_skeleton.open(f_skeleton_name.c_str());
@@ -2885,7 +2885,7 @@
if (program != NULL && program != program_) {
pname =
class_prefix +
- namespace_prefix(program->get_cpp_namespace()) +
+ namespace_prefix(program->get_namespace("cpp")) +
ttype->get_name();
} else {
pname = class_prefix + ttype->get_name();
@@ -3119,7 +3119,7 @@
if (external &&
ttype->get_program() != NULL &&
ttype->get_program() != program_) {
- nspace = namespace_prefix(ttype->get_program()->get_cpp_namespace());
+ nspace = namespace_prefix(ttype->get_program()->get_namespace("cpp"));
}
return nspace + "trlo_" + prefix + "_" + prog + "_" + name;
diff --git a/compiler/cpp/src/parse/t_program.h b/compiler/cpp/src/parse/t_program.h
index d788e2b..ef9db49 100644
--- a/compiler/cpp/src/parse/t_program.h
+++ b/compiler/cpp/src/parse/t_program.h
@@ -160,14 +160,6 @@
// Language specific namespace / packaging
- void set_cpp_namespace(std::string cpp_namespace) {
- cpp_namespace_ = cpp_namespace;
- }
-
- const std::string& get_cpp_namespace() const {
- return cpp_namespace_;
- }
-
void add_cpp_include(std::string path) {
cpp_includes_.push_back(path);
}
@@ -291,9 +283,6 @@
// Dynamic namespaces
std::map<std::string, std::string> namespaces_;
- // C++ namespace
- std::string cpp_namespace_;
-
// C++ extra includes
std::vector<std::string> cpp_includes_;
diff --git a/compiler/cpp/src/thrifty.yy b/compiler/cpp/src/thrifty.yy
index 7bd189f..bb68358 100644
--- a/compiler/cpp/src/thrifty.yy
+++ b/compiler/cpp/src/thrifty.yy
@@ -254,11 +254,13 @@
g_program->set_namespace($2, $3);
}
}
+/* TODO(dreiss): Get rid of this once everyone is using the new hotness. */
| tok_cpp_namespace tok_identifier
{
+ pwarning(1, "'cpp_namespace' is deprecated. Use 'namespace cpp' instead");
pdebug("Header -> tok_cpp_namespace tok_identifier");
if (g_parse_mode == PROGRAM) {
- g_program->set_cpp_namespace($2);
+ g_program->set_namespace("cpp", $2);
}
}
| tok_cpp_include tok_literal