diff options
author | Chris Lattner <sabre@nondot.org> | 2009-01-17 06:22:33 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-01-17 06:22:33 +0000 |
commit | d32480d3db582186355d575db0421dd2823080b6 (patch) | |
tree | d0eec11f7cf221334aba2016cb3c39c5b6d2710f /clang/lib/Lex/PreprocessorLexer.cpp | |
parent | d250ef911f62cb317596ba0aef9e3d75ca056d36 (diff) | |
download | bcm5719-llvm-d32480d3db582186355d575db0421dd2823080b6.tar.gz bcm5719-llvm-d32480d3db582186355d575db0421dd2823080b6.zip |
this massive patch introduces a simple new abstraction: it makes
"FileID" a concept that is now enforced by the compiler's type checker
instead of yet-another-random-unsigned floating around.
This is an important distinction from the "FileID" currently tracked by
SourceLocation. *That* FileID may refer to the start of a file or to a
chunk within it. The new FileID *only* refers to the file (and its
#include stack and eventually #line data), it cannot refer to a chunk.
FileID is a completely opaque datatype to all clients, only SourceManager
is allowed to poke and prod it.
llvm-svn: 62407
Diffstat (limited to 'clang/lib/Lex/PreprocessorLexer.cpp')
-rw-r--r-- | clang/lib/Lex/PreprocessorLexer.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/clang/lib/Lex/PreprocessorLexer.cpp b/clang/lib/Lex/PreprocessorLexer.cpp index 07329e0cc78..e98afccbba0 100644 --- a/clang/lib/Lex/PreprocessorLexer.cpp +++ b/clang/lib/Lex/PreprocessorLexer.cpp @@ -17,14 +17,6 @@ #include "clang/Basic/SourceManager.h" using namespace clang; -PreprocessorLexer::PreprocessorLexer(Preprocessor* pp, SourceLocation L) - : PP(pp), FileID(pp->getSourceManager().getSpellingLoc(L).getFileID()), - ParsingPreprocessorDirective(false), - ParsingFilename(false), - LexingRawMode(false) {} - -PreprocessorLexer::~PreprocessorLexer() {} - /// LexIncludeFilename - After the preprocessor has parsed a #include, lex and /// (potentially) macro expand the filename. void PreprocessorLexer::LexIncludeFilename(Token &FilenameTok) { @@ -45,3 +37,9 @@ void PreprocessorLexer::LexIncludeFilename(Token &FilenameTok) { if (FilenameTok.is(tok::eom)) PP->Diag(FilenameTok.getLocation(), diag::err_pp_expects_filename); } + +/// getFileEntry - Return the FileEntry corresponding to this FileID. Like +/// getFileID(), this only works for lexers with attached preprocessors. +const FileEntry *PreprocessorLexer::getFileEntry() const { + return PP->getSourceManager().getFileEntryForID(getFileID()); +} |