From: Chris Lattner Date: Tue, 18 Nov 2008 06:51:15 +0000 (+0000) Subject: SourceManager::getLineNumber is logically const except for caching. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f812a45dd93634c9300ed5533bd26b56374714a1;p=clang SourceManager::getLineNumber is logically const except for caching. Use mutable to make it so. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59498 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h index 4f58334f2e..70237ff115 100644 --- a/include/clang/Basic/SourceManager.h +++ b/include/clang/Basic/SourceManager.h @@ -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)); } diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp index b8b72878f5..44a6d66c1a 100644 --- a/lib/Basic/SourceManager.cpp +++ b/lib/Basic/SourceManager.cpp @@ -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;