]> granicus.if.org Git - clang/commitdiff
Add method FullSourceLoc::getBufferData().
authorTed Kremenek <kremenek@apple.com>
Wed, 28 Jan 2009 20:46:26 +0000 (20:46 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 28 Jan 2009 20:46:26 +0000 (20:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63229 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/SourceLocation.h
lib/Basic/SourceLocation.cpp

index 31fbc0218bbb2f8e19c8a86352dfb8b2db9d1851..4a6ae1f29d0294d751940ac5c84982648150cb8a 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <cassert>
 #include "llvm/Bitcode/SerializationFwd.h"
+#include <utility>
 
 namespace llvm {
   class MemoryBuffer;
@@ -178,7 +179,7 @@ public:
 class FullSourceLoc : public SourceLocation {
   SourceManager* SrcMgr;
 public:
-  // Creates a FullSourceLoc where isValid() returns false.
+  /// Creates a FullSourceLoc where isValid() returns false.
   explicit FullSourceLoc() : SrcMgr((SourceManager*) 0) {}
 
   explicit FullSourceLoc(SourceLocation Loc, SourceManager &SM) 
@@ -212,6 +213,10 @@ public:
   
   const llvm::MemoryBuffer* getBuffer() const;
   
+  /// getBufferData - Return a pointer to the start and end of the source buffer
+  /// data for the specified FileID.
+  std::pair<const char*, const char*> getBufferData() const;
+  
   bool isInSystemHeader() const;
   
   /// Prints information about this FullSourceLoc to stderr. Useful for
index 5d484721bd4e1ddf2e6c0d4ebecdf153c010d1bd..43fa3a13a6f4b27629ca9480a2b806a00292a492 100644 (file)
@@ -16,6 +16,8 @@
 #include "clang/Basic/SourceManager.h"
 #include "llvm/Bitcode/Serialize.h"
 #include "llvm/Bitcode/Deserialize.h"
+#include "llvm/Support/MemoryBuffer.h"
+
 using namespace clang;
 
 void SourceLocation::Emit(llvm::Serializer& S) const {
@@ -122,3 +124,7 @@ const llvm::MemoryBuffer* FullSourceLoc::getBuffer() const {
   return SrcMgr->getBuffer(SrcMgr->getFileID(*this));
 }
 
+std::pair<const char*, const char*> FullSourceLoc::getBufferData() const {
+  const llvm::MemoryBuffer *Buf = getBuffer();
+  return std::make_pair(Buf->getBufferStart(), Buf->getBufferEnd());
+}