aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Basic/SourceManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/Basic/SourceManager.h')
-rw-r--r--include/clang/Basic/SourceManager.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h
index 3164f874f1..f7fb1f5231 100644
--- a/include/clang/Basic/SourceManager.h
+++ b/include/clang/Basic/SourceManager.h
@@ -584,6 +584,9 @@ class SourceManager : public RefCountedBase<SourceManager> {
/// \brief The file ID for the precompiled preamble there is one.
FileID PreambleFileID;
+ /// \brief The file ID for the preprocessor's predefines.
+ FileID PredefinesFileID;
+
// Statistics for -print-stats.
mutable unsigned NumLinearScans, NumBinaryProbes;
@@ -628,6 +631,14 @@ public:
MainFileID = createFileIDForMemBuffer(Buffer);
return MainFileID;
}
+
+ /// \brief Create the FileID for a memory buffer that contains the
+ /// preprocessor's predefines.
+ FileID createPredefinesFileIDForMemBuffer(const llvm::MemoryBuffer *Buffer) {
+ assert(PredefinesFileID.isInvalid() && "PredefinesFileID already set!");
+ PredefinesFileID = createFileIDForMemBuffer(Buffer);
+ return PredefinesFileID;
+ }
//===--------------------------------------------------------------------===//
// MainFileID creation and querying methods.
@@ -636,6 +647,9 @@ public:
/// getMainFileID - Returns the FileID of the main source file.
FileID getMainFileID() const { return MainFileID; }
+ /// \brief Returns the FileID of the preprocessor predefines buffer.
+ FileID getPredefinesFileID() const { return PredefinesFileID; }
+
/// createMainFileID - Create the FileID for the main source file.
FileID createMainFileID(const FileEntry *SourceFile,
SrcMgr::CharacteristicKind Kind = SrcMgr::C_User) {
@@ -1113,6 +1127,12 @@ public:
return getFileID(Loc) == getMainFileID();
}
+ /// isFromPredefines - Returns true if the provided SourceLocation is
+ /// within the processor's predefines buffer.
+ bool isFromPredefines(SourceLocation Loc) const {
+ return getFileID(Loc) == getPredefinesFileID();
+ }
+
/// isInSystemHeader - Returns if a SourceLocation is in a system header.
bool isInSystemHeader(SourceLocation Loc) const {
return getFileCharacteristic(Loc) != SrcMgr::C_User;