aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/SourceManager.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-03-16 00:06:06 +0000
committerDouglas Gregor <dgregor@apple.com>2010-03-16 00:06:06 +0000
commite0fbb83b8b132f6fd0a33467a082d16cc9ba4a8f (patch)
tree7d0cb0cc387455b71f68bfaef2a6a5609a1b6d2b /clang/lib/Basic/SourceManager.cpp
parent55992564152f0fce6758a4495cc39422f5e1cc94 (diff)
downloadllvm-e0fbb83b8b132f6fd0a33467a082d16cc9ba4a8f.zip
llvm-e0fbb83b8b132f6fd0a33467a082d16cc9ba4a8f.tar.gz
llvm-e0fbb83b8b132f6fd0a33467a082d16cc9ba4a8f.tar.bz2
Give SourceManager a Diagnostic object with which to report errors,
and start simplifying the interfaces in SourceManager that can fail. llvm-svn: 98594
Diffstat (limited to 'clang/lib/Basic/SourceManager.cpp')
-rw-r--r--clang/lib/Basic/SourceManager.cpp25
1 files changed, 12 insertions, 13 deletions
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 <algorithm>
#include <string>
+#include <cstring>
#include <cstdio>
using namespace clang;
@@ -532,19 +533,17 @@ bool SourceManager::overrideFileContents(const FileEntry *SourceFile,
}
std::pair<const char*, const char*>
-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<const char*, const char*>
-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());
}