From e0fbb83b8b132f6fd0a33467a082d16cc9ba4a8f Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 16 Mar 2010 00:06:06 +0000 Subject: Give SourceManager a Diagnostic object with which to report errors, and start simplifying the interfaces in SourceManager that can fail. llvm-svn: 98594 --- clang/lib/Basic/SourceManager.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'clang/lib/Basic/SourceManager.cpp') diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp index b69ba53..ac2fe3d 100644 --- a/clang/lib/Basic/SourceManager.cpp +++ b/clang/lib/Basic/SourceManager.cpp @@ -21,6 +21,7 @@ #include "llvm/System/Path.h" #include #include +#include #include using namespace clang; @@ -532,19 +533,17 @@ bool SourceManager::overrideFileContents(const FileEntry *SourceFile, } std::pair -SourceManager::getBufferData(FileID FID, llvm::StringRef &FileName, - std::string &Error) const { - const llvm::MemoryBuffer *Buf = getBuffer(FID).getBuffer(FileName, Error); - if (!Error.empty()) - return std::make_pair((const char *)0, (const char *)0); - return std::make_pair(Buf->getBufferStart(), Buf->getBufferEnd()); -} - -std::pair -SourceManager::getBufferData(FileID FID, Diagnostic &Diags) const { - const llvm::MemoryBuffer *Buf = getBuffer(FID).getBuffer(Diags); - if (!Buf) - return std::make_pair((const char *)0, (const char *)0); +SourceManager::getBufferData(FileID FID, bool *Invalid) const { + if (Invalid) + *Invalid = false; + + const llvm::MemoryBuffer *Buf = getBuffer(FID).getBuffer(Diag); + if (!Buf) { + if (*Invalid) + *Invalid = true; + const char *FakeText = ""; + return std::make_pair(FakeText, FakeText + strlen(FakeText)); + } return std::make_pair(Buf->getBufferStart(), Buf->getBufferEnd()); } -- cgit v1.1