aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-03-10 05:13:43 +0000
committerTed Kremenek <kremenek@apple.com>2009-03-10 05:13:43 +0000
commit321abd4583dc02a254489132c5ccbe125d18ce4f (patch)
tree3501bf38cd8046416d72060384440b05aecd38a1
parentb327793860737d1c103a73aeda8057dd628a101d (diff)
Add FullSourceLoc::getDecomposedLoc.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66522 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Basic/SourceLocation.h5
-rw-r--r--lib/Basic/SourceLocation.cpp4
2 files changed, 9 insertions, 0 deletions
diff --git a/include/clang/Basic/SourceLocation.h b/include/clang/Basic/SourceLocation.h
index b5906e1393..ba0bb6faac 100644
--- a/include/clang/Basic/SourceLocation.h
+++ b/include/clang/Basic/SourceLocation.h
@@ -216,6 +216,11 @@ public:
/// data for the specified FileID.
std::pair<const char*, const char*> getBufferData() const;
+ /// getDecomposedLoc - Decompose the specified location into a raw FileID +
+ /// Offset pair. The first element is the FileID, the second is the
+ /// offset from the start of the buffer of the location.
+ std::pair<FileID, unsigned> getDecomposedLoc() const;
+
bool isInSystemHeader() const;
/// Prints information about this FullSourceLoc to stderr. Useful for
diff --git a/lib/Basic/SourceLocation.cpp b/lib/Basic/SourceLocation.cpp
index fd90b5a2ce..dc1dceb724 100644
--- a/lib/Basic/SourceLocation.cpp
+++ b/lib/Basic/SourceLocation.cpp
@@ -142,3 +142,7 @@ std::pair<const char*, const char*> FullSourceLoc::getBufferData() const {
const llvm::MemoryBuffer *Buf = getBuffer();
return std::make_pair(Buf->getBufferStart(), Buf->getBufferEnd());
}
+
+std::pair<FileID, unsigned> FullSourceLoc::getDecomposedLoc() const {
+ return SrcMgr->getDecomposedLoc(*this);
+}