diff options
Diffstat (limited to 'include/clang/Basic/SourceManager.h')
-rw-r--r-- | include/clang/Basic/SourceManager.h | 20 |
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; |