]> granicus.if.org Git - clang/commitdiff
Fix a layering issue between Basic and FE by moving a utility class into Basic.
authorChandler Carruth <chandlerc@gmail.com>
Wed, 20 Jan 2010 03:59:11 +0000 (03:59 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Wed, 20 Jan 2010 03:59:11 +0000 (03:59 +0000)
This isn't entirely satisfactory, as it seems an implementation detail, and
with nothing to do with TargetInfo. Suggestions on where to put this are
welcome.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93974 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/TargetInfo.h
include/clang/Frontend/Utils.h

index 97e0495bfbe20d7d400b87e6d781623ad632911a..45c3b9732b9657c6a5fe1caf528a8f0239f34f65 100644 (file)
@@ -17,6 +17,8 @@
 // FIXME: Daniel isn't smart enough to use a prototype for this.
 #include "llvm/ADT/StringMap.h"
 #include "llvm/ADT/Triple.h"
+#include "llvm/ADT/Twine.h"
+#include "llvm/Support/raw_ostream.h"
 #include "llvm/System/DataTypes.h"
 #include <cassert>
 #include <vector>
@@ -30,13 +32,34 @@ class StringRef;
 namespace clang {
 class Diagnostic;
 class LangOptions;
-class MacroBuilder;
 class SourceLocation;
 class SourceManager;
 class TargetOptions;
 
 namespace Builtin { struct Info; }
 
+class MacroBuilder {
+  llvm::raw_ostream &Out;
+public:
+  MacroBuilder(llvm::raw_ostream &Output) : Out(Output) {}
+
+  /// Append a #define line for macro of the form "#define Name Value\n".
+  void defineMacro(const llvm::Twine &Name, const llvm::Twine &Value = "1") {
+    Out << "#define " << Name << ' ' << Value << '\n';
+  }
+
+  /// Append a #undef line for Name.  Name should be of the form XXX
+  /// and we emit "#undef XXX".
+  void undefineMacro(const llvm::Twine &Name) {
+    Out << "#undef " << Name << '\n';
+  }
+
+  /// Directly append Str and a newline to the underlying buffer.
+  void append(const llvm::Twine &Str) {
+    Out << Str << '\n';
+  }
+};
+
 /// TargetInfo - This class exposes information about the current target.
 ///
 class TargetInfo {
index c8df4941cc213be442a33048654b11f5eab524db..7f43b2ad80ff4809c32a40a18d1c4f637c39f451 100644 (file)
@@ -15,7 +15,6 @@
 #define LLVM_CLANG_FRONTEND_UTILS_H
 
 #include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/Twine.h"
 #include "llvm/Support/raw_ostream.h"
 
 namespace llvm {
@@ -41,28 +40,6 @@ class Stmt;
 class TargetInfo;
 class FrontendOptions;
 
-class MacroBuilder {
-  llvm::raw_ostream &Out;
-public:
-  MacroBuilder(llvm::raw_ostream &Output) : Out(Output) {}
-
-  /// Append a #define line for macro of the form "#define Name Value\n".
-  void defineMacro(const llvm::Twine &Name, const llvm::Twine &Value = "1") {
-    Out << "#define " << Name << ' ' << Value << '\n';
-  }
-
-  /// Append a #undef line for Name.  Name should be of the form XXX
-  /// and we emit "#undef XXX".
-  void undefineMacro(const llvm::Twine &Name) {
-    Out << "#undef " << Name << '\n';
-  }
-
-  /// Directly append Str and a newline to the underlying buffer.
-  void append(const llvm::Twine &Str) {
-    Out << Str << '\n';
-  }
-};
-
 /// Normalize \arg File for use in a user defined #include directive (in the
 /// predefines buffer).
 std::string NormalizeDashIncludePath(llvm::StringRef File);