forked from OSchip/llvm-project
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. llvm-svn: 93974
This commit is contained in:
parent
00c6046a81
commit
b0af340592
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue