From 6e6409989ff954a0a33339f64234e27987e3f603 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 23 Nov 2010 04:45:28 +0000 Subject: [PATCH] stringref'ize API llvm-svn: 119997 --- clang/include/clang/Basic/FileManager.h | 11 +------ clang/lib/Basic/FileManager.cpp | 42 ++++++++++++------------- 2 files changed, 21 insertions(+), 32 deletions(-) diff --git a/clang/include/clang/Basic/FileManager.h b/clang/include/clang/Basic/FileManager.h index 7fd19d929690..3ee7d40c1e25 100644 --- a/clang/include/clang/Basic/FileManager.h +++ b/clang/include/clang/Basic/FileManager.h @@ -222,15 +222,6 @@ public: ErrorStr, Entry->getSize(), FileInfo); } llvm::MemoryBuffer *getBufferForFile(llvm::StringRef Filename, - const FileSystemOptions &FileSystemOpts, - std::string *ErrorStr = 0, - int64_t FileSize = -1, - struct stat *FileInfo = 0) { - return getBufferForFile(Filename.begin(), Filename.end(), FileSystemOpts, - ErrorStr, FileSize, FileInfo); - } - llvm::MemoryBuffer *getBufferForFile(const char *FilenameStart, - const char *FilenameEnd, const FileSystemOptions &FileSystemOpts, std::string *ErrorStr = 0, int64_t FileSize = -1, @@ -241,7 +232,7 @@ public: /// working directory. static void FixupRelativePath(llvm::sys::Path &path, const FileSystemOptions &FSOpts); - + void PrintStats() const; }; diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp index ff07c79cdf8d..e5ec545f16a9 100644 --- a/clang/lib/Basic/FileManager.cpp +++ b/clang/lib/Basic/FileManager.cpp @@ -385,20 +385,27 @@ FileManager::getVirtualFile(llvm::StringRef Filename, off_t Size, return UFE; } -llvm::MemoryBuffer *FileManager:: -getBufferForFile(const char *FilenameStart, const char *FilenameEnd, - const FileSystemOptions &FileSystemOpts, - std::string *ErrorStr, - int64_t FileSize, - struct stat *FileInfo) { - assert(FilenameEnd[0] == 0); - if (FileSystemOpts.WorkingDir.empty()) - return llvm::MemoryBuffer::getFile(FilenameStart, ErrorStr, - FileSize, FileInfo); - llvm::sys::Path FilePath(llvm::StringRef(FilenameStart, - FilenameEnd-FilenameStart)); - FixupRelativePath(FilePath, FileSystemOpts); +void FileManager::FixupRelativePath(llvm::sys::Path &path, + const FileSystemOptions &FSOpts) { + if (FSOpts.WorkingDir.empty() || path.isAbsolute()) return; + + llvm::sys::Path NewPath(FSOpts.WorkingDir); + NewPath.appendComponent(path.str()); + path = NewPath; +} + + +llvm::MemoryBuffer *FileManager:: +getBufferForFile(llvm::StringRef Filename, + const FileSystemOptions &FileSystemOpts, + std::string *ErrorStr, int64_t FileSize, + struct stat *FileInfo) { + if (FileSystemOpts.WorkingDir.empty()) + return llvm::MemoryBuffer::getFile(Filename, ErrorStr, FileSize, FileInfo); + + llvm::sys::Path FilePath(Filename); + FixupRelativePath(FilePath, FileSystemOpts); return llvm::MemoryBuffer::getFile(FilePath.c_str(), ErrorStr, FileSize, FileInfo); } @@ -415,15 +422,6 @@ int FileManager::stat_cached(const char *path, struct stat *buf, : stat(FilePath.c_str(), buf); } -void FileManager::FixupRelativePath(llvm::sys::Path &path, - const FileSystemOptions &FSOpts) { - if (!FSOpts.WorkingDir.empty() && !path.isAbsolute()) { - llvm::sys::Path NewPath(FSOpts.WorkingDir); - NewPath.appendComponent(path.str()); - path = NewPath; - } -} - void FileManager::PrintStats() const { llvm::errs() << "\n*** File Manager Stats:\n"; llvm::errs() << UniqueFiles.size() << " files found, "