diff options
author | Chris Lattner <sabre@nondot.org> | 2008-09-29 21:46:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-09-29 21:46:13 +0000 |
commit | 5c38b6388dc44dcb8467a9e0f22d93db7221717e (patch) | |
tree | 1f535fd4365ff2f3960e82a18af3205284151b76 /lib/Basic/SourceLocation.cpp | |
parent | a09f585a7fdbb01b4bf9de3679fd37005379ca66 (diff) |
Make some methods const, add some helpers to FullSourceLoc,
and add a dump method to FullSourceLoc! Patch by Nico Weber!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56806 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/SourceLocation.cpp')
-rw-r--r-- | lib/Basic/SourceLocation.cpp | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/lib/Basic/SourceLocation.cpp b/lib/Basic/SourceLocation.cpp index 12a49623c6..5236bfaffb 100644 --- a/lib/Basic/SourceLocation.cpp +++ b/lib/Basic/SourceLocation.cpp @@ -16,7 +16,6 @@ #include "clang/Basic/SourceManager.h" #include "llvm/Bitcode/Serialize.h" #include "llvm/Bitcode/Deserialize.h" - using namespace clang; void SourceLocation::Emit(llvm::Serializer& S) const { @@ -38,14 +37,19 @@ SourceRange SourceRange::ReadVal(llvm::Deserializer& D) { return SourceRange(A,B); } -FullSourceLoc FullSourceLoc::getLogicalLoc() { +FullSourceLoc FullSourceLoc::getLogicalLoc() const { + assert (isValid()); + return FullSourceLoc(SrcMgr->getLogicalLoc(Loc), *SrcMgr); +} + +FullSourceLoc FullSourceLoc::getPhysicalLoc() const { assert (isValid()); - return FullSourceLoc(SrcMgr->getLogicalLoc(Loc),*SrcMgr); + return FullSourceLoc(SrcMgr->getPhysicalLoc(Loc), *SrcMgr); } -FullSourceLoc FullSourceLoc::getIncludeLoc() { +FullSourceLoc FullSourceLoc::getIncludeLoc() const { assert (isValid()); - return FullSourceLoc(SrcMgr->getIncludeLoc(Loc),*SrcMgr); + return FullSourceLoc(SrcMgr->getIncludeLoc(Loc), *SrcMgr); } unsigned FullSourceLoc::getLineNumber() const { @@ -69,6 +73,16 @@ unsigned FullSourceLoc::getLogicalColumnNumber() const { return SrcMgr->getLogicalColumnNumber(Loc); } +unsigned FullSourceLoc::getPhysicalLineNumber() const { + assert (isValid()); + return SrcMgr->getPhysicalLineNumber(Loc); +} + +unsigned FullSourceLoc::getPhysicalColumnNumber() const { + assert (isValid()); + return SrcMgr->getPhysicalColumnNumber(Loc); +} + const char* FullSourceLoc::getSourceName() const { assert (isValid()); return SrcMgr->getSourceName(Loc); @@ -98,3 +112,23 @@ const llvm::MemoryBuffer* FullSourceLoc::getBuffer() const { unsigned FullSourceLoc::getCanonicalFileID() const { return SrcMgr->getCanonicalFileID(Loc); } + +void FullSourceLoc::dump() const { + if (!isValid()) { + fprintf(stderr, "Invalid Loc\n"); + return; + } + + if (isFileID()) { + // The logical and physical pos is identical for file locs. + fprintf(stderr, "File Loc from '%s': %d: %d\n", + getSourceName(), getLogicalLineNumber(), + getLogicalColumnNumber()); + } else { + fprintf(stderr, "Macro Loc (\n Physical: "); + getPhysicalLoc().dump(); + fprintf(stderr, " Logical: "); + getLogicalLoc().dump(); + fprintf(stderr, ")\n"); + } +} |