SourceManager::getLineNumber is logically const except for caching.

Use mutable to make it so.

llvm-svn: 59498
This commit is contained in:
Chris Lattner 2008-11-18 06:51:15 +00:00
parent 3de58149bd
commit 746d474b28
2 changed files with 8 additions and 8 deletions

View File

@ -237,10 +237,10 @@ class SourceManager {
/// LastLineNo - These ivars serve as a cache used in the getLineNumber
/// method which is used to speedup getLineNumber calls to nearby locations.
unsigned LastLineNoFileIDQuery;
SrcMgr::ContentCache *LastLineNoContentCache;
unsigned LastLineNoFilePos;
unsigned LastLineNoResult;
mutable unsigned LastLineNoFileIDQuery;
mutable SrcMgr::ContentCache *LastLineNoContentCache;
mutable unsigned LastLineNoFilePos;
mutable unsigned LastLineNoResult;
/// MainFileID - The file ID for the main source file of the translation unit.
unsigned MainFileID;
@ -344,12 +344,12 @@ public:
/// for the position indicated. This requires building and caching a table of
/// line offsets for the MemoryBuffer, so this is not cheap: use only when
/// about to emit a diagnostic.
unsigned getLineNumber(SourceLocation Loc);
unsigned getLineNumber(SourceLocation Loc) const;
unsigned getLogicalLineNumber(SourceLocation Loc) {
unsigned getLogicalLineNumber(SourceLocation Loc) const {
return getLineNumber(getLogicalLoc(Loc));
}
unsigned getPhysicalLineNumber(SourceLocation Loc) {
unsigned getPhysicalLineNumber(SourceLocation Loc) const {
return getLineNumber(getPhysicalLoc(Loc));
}

View File

@ -238,7 +238,7 @@ static void ComputeLineNumbers(ContentCache* FI) {
/// for the position indicated. This requires building and caching a table of
/// line offsets for the MemoryBuffer, so this is not cheap: use only when
/// about to emit a diagnostic.
unsigned SourceManager::getLineNumber(SourceLocation Loc) {
unsigned SourceManager::getLineNumber(SourceLocation Loc) const {
unsigned FileID = Loc.getFileID();
if (FileID == 0) return 0;