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