namespace llvm {
class MemoryBuffer;
class raw_ostream;
+ class StringRef;
template <typename T> struct DenseMapInfo;
template <typename T> struct isPodLike;
}
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;
+ /// getBufferData - Return a StringRef to the source buffer data for the
+ /// specified FileID.
+ llvm::StringRef getBufferData() const;
/// getDecomposedLoc - Decompose the specified location into a raw FileID +
/// Offset pair. The first element is the FileID, the second is the
return getSLocEntry(FID).getFile().getContentCache()->Entry;
}
- /// getBufferData - Return a pointer to the start and end of the source buffer
- /// data for the specified FileID.
- ///
+ /// getBufferData - Return a StringRef to the source buffer data for the
+ /// specified FileID.
+ ///
/// \param FID The file ID whose contents will be returned.
/// \param Invalid If non-NULL, will be set true if an error occurred.
llvm::StringRef getBufferData(FileID FID, bool *Invalid = 0) 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());
+llvm::StringRef FullSourceLoc::getBufferData() const {
+ return getBuffer()->getBuffer();
}
std::pair<FileID, unsigned> FullSourceLoc::getDecomposedLoc() const {
{
FullSourceLoc L = MP->getLocation().asLocation().getInstantiationLoc();
assert(L.isFileID());
- std::pair<const char*, const char*> BufferInfo = L.getBufferData();
- const char* MacroName = L.getDecomposedLoc().second + BufferInfo.first;
- Lexer rawLexer(L, PP.getLangOptions(), BufferInfo.first,
- MacroName, BufferInfo.second);
+ llvm::StringRef BufferInfo = L.getBufferData();
+ const char* MacroName = L.getDecomposedLoc().second + BufferInfo.data();
+ Lexer rawLexer(L, PP.getLangOptions(), BufferInfo.begin(),
+ MacroName, BufferInfo.end());
Token TheTok;
rawLexer.LexFromRawLexer(TheTok);