[cfe-commits] r93974 - in /cfe/trunk/include/clang: Basic/TargetInfo.h Frontend/Utils.h
Chandler Carruth
chandlerc at gmail.com
Tue Jan 19 19:59:11 PST 2010
Author: chandlerc
Date: Tue Jan 19 21:59:11 2010
New Revision: 93974
URL: http://llvm.org/viewvc/llvm-project?rev=93974&view=rev
Log:
Fix a layering issue between Basic and FE by moving a utility class into Basic.
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.
Modified:
cfe/trunk/include/clang/Basic/TargetInfo.h
cfe/trunk/include/clang/Frontend/Utils.h
Modified: cfe/trunk/include/clang/Basic/TargetInfo.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=93974&r1=93973&r2=93974&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/TargetInfo.h (original)
+++ cfe/trunk/include/clang/Basic/TargetInfo.h Tue Jan 19 21:59:11 2010
@@ -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 @@
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 {
Modified: cfe/trunk/include/clang/Frontend/Utils.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/Utils.h?rev=93974&r1=93973&r2=93974&view=diff
==============================================================================
--- cfe/trunk/include/clang/Frontend/Utils.h (original)
+++ cfe/trunk/include/clang/Frontend/Utils.h Tue Jan 19 21:59:11 2010
@@ -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 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);
More information about the cfe-commits
mailing list