llvmc: Cut global namespace pollution.
authorMikhail Glushenkov <foldr@codedgers.com>
Fri, 20 Aug 2010 11:24:44 +0000 (11:24 +0000)
committerMikhail Glushenkov <foldr@codedgers.com>
Fri, 20 Aug 2010 11:24:44 +0000 (11:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111619 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CompilerDriver/BuiltinOptions.h
lib/CompilerDriver/BuiltinOptions.cpp
tools/llvmc/examples/mcc16/Hooks.cpp
utils/TableGen/LLVMCConfigurationEmitter.cpp

index 0c1bbe2582d07a36950ad9c04566b695a3587a9a..7b9c15c52f7fe6ae0d3ab8a639d4fac8e08632ac 100644 (file)
@@ -18,6 +18,8 @@
 
 #include <string>
 
+namespace llvmc {
+
 namespace SaveTempsEnum { enum Values { Cwd, Obj, Unset }; }
 
 extern llvm::cl::list<std::string> InputFilenames;
@@ -32,4 +34,6 @@ extern llvm::cl::opt<bool> ViewGraph;
 extern llvm::cl::opt<bool> WriteGraph;
 extern llvm::cl::opt<SaveTempsEnum::Values> SaveTemps;
 
+} // End namespace llvmc.
+
 #endif // LLVM_INCLUDE_COMPILER_DRIVER_BUILTIN_OPTIONS_H
index d1ac8c98322c17ad6f12aa1831a27c692765b9fa..38442038d73853cf60b44d263823cc4cd86e2911 100644 (file)
@@ -19,7 +19,7 @@
 
 namespace cl = llvm::cl;
 
-// External linkage here is intentional.
+namespace llvmc {
 
 cl::list<std::string> InputFilenames(cl::Positional, cl::desc("<input file>"),
                                      cl::ZeroOrMore);
@@ -57,3 +57,5 @@ cl::opt<SaveTempsEnum::Values> SaveTemps
             clEnumValN(SaveTempsEnum::Obj, "", "Same as 'cwd'"),
             clEnumValEnd),
  cl::ValueOptional);
+
+}  // End namespace llvmc.
index aa31c89c8f736436a254c9c3048bdd2bf9d87fbf..dea97e3ae471ec451ef8e7696f665624f3dc3cd9 100644 (file)
@@ -4,13 +4,16 @@
 
 #include <string>
 
-using namespace llvm;
-
 namespace llvmc {
   extern char *ProgramName;
+
+  namespace autogenerated {
+    extern llvm::cl::opt<std::string> AutoGeneratedParameter_p;
+  }
 }
 
-extern cl::opt<std::string> AutoGeneratedParameter_p;
+using namespace llvm;
+using namespace llvmc;
 
 // Returns the platform specific directory separator via #ifdefs.
 // FIXME: This currently work on linux and windows only. It does not
@@ -29,10 +32,10 @@ namespace hooks {
 std::string
 GetLowerCasePartDefine(void) {
   std::string Partname;
-  if (AutoGeneratedParameter_p.empty()) {
+  if (autogenerated::AutoGeneratedParameter_p.empty()) {
     Partname = "16f1xxx";
   } else {
-    Partname = AutoGeneratedParameter_p;
+    Partname = autogenerated::AutoGeneratedParameter_p;
   }
 
   std::string LowerCase;
@@ -46,10 +49,10 @@ GetLowerCasePartDefine(void) {
 std::string
 GetUpperCasePartDefine(void) {
   std::string Partname;
-  if (AutoGeneratedParameter_p.empty()) {
+  if (autogenerated::AutoGeneratedParameter_p.empty()) {
     Partname = "16f1xxx";
   } else {
-    Partname = AutoGeneratedParameter_p;
+    Partname = autogenerated::AutoGeneratedParameter_p;
   }
 
   std::string UpperCase;
index b091419f91e546dc826039dfba178b483b218a13..48c7cc375f001e0c17bcc2a434c222e2576de4b2 100644 (file)
@@ -2909,7 +2909,6 @@ void EmitHookDeclarations(const ToolDescriptions& ToolDescs,
   if (HookNames.empty())
     return;
 
-  O << "namespace hooks {\n";
   for (HookInfoMap::const_iterator B = HookNames.begin(),
          E = HookNames.end(); B != E; ++B) {
     const char* HookName = B->first();
@@ -2928,7 +2927,6 @@ void EmitHookDeclarations(const ToolDescriptions& ToolDescs,
 
     O <<");\n";
   }
-  O << "}\n\n";
 }
 
 /// EmitIncludes - Emit necessary #include directives and some
@@ -3013,12 +3011,19 @@ void EmitPluginCode(const PluginData& Data, raw_ostream& O) {
   EmitIncludes(O);
 
   // Emit global option registration code.
+  O << "namespace llvmc {\n"
+    << "namespace autogenerated {\n\n";
   EmitOptionDefinitions(Data.OptDescs, Data.HasSink, O);
+  O << "} // End namespace autogenerated.\n"
+    << "} // End namespace llvmc.\n\n";
 
   // Emit hook declarations.
+  O << "namespace hooks {\n";
   EmitHookDeclarations(Data.ToolDescs, Data.OptDescs, O);
+  O << "} // End namespace hooks.\n\n";
 
   O << "namespace {\n\n";
+  O << "using namespace llvmc::autogenerated;\n\n";
 
   // Emit Tool classes.
   for (ToolDescriptions::const_iterator B = Data.ToolDescs.begin(),