[PATCH] D52462: [VFS] Add a proxy FS that delegates calls to underlying FS by default.
Eric Liu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 25 07:05:09 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rC342976: [VFS] Add a proxy FS that delegates calls to underlying FS by default. (authored by ioeric, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D52462?vs=166879&id=166882#toc
Repository:
rC Clang
https://reviews.llvm.org/D52462
Files:
include/clang/Basic/VirtualFileSystem.h
Index: include/clang/Basic/VirtualFileSystem.h
===================================================================
--- include/clang/Basic/VirtualFileSystem.h
+++ include/clang/Basic/VirtualFileSystem.h
@@ -335,6 +335,42 @@
const_iterator overlays_end() const { return FSList.rend(); }
};
+/// By default, this delegates all calls to the underlying file system. This
+/// is useful when derived file systems want to override some calls and still
+/// proxy other calls.
+class ProxyFileSystem : public FileSystem {
+public:
+ explicit ProxyFileSystem(IntrusiveRefCntPtr<FileSystem> FS)
+ : FS(std::move(FS)) {}
+
+ llvm::ErrorOr<Status> status(const Twine &Path) override {
+ return FS->status(Path);
+ }
+ llvm::ErrorOr<std::unique_ptr<File>>
+ openFileForRead(const Twine &Path) override {
+ return FS->openFileForRead(Path);
+ }
+ directory_iterator dir_begin(const Twine &Dir, std::error_code &EC) override {
+ return FS->dir_begin(Dir, EC);
+ }
+ llvm::ErrorOr<std::string> getCurrentWorkingDirectory() const override {
+ return FS->getCurrentWorkingDirectory();
+ }
+ std::error_code setCurrentWorkingDirectory(const Twine &Path) override {
+ return FS->setCurrentWorkingDirectory(Path);
+ }
+ std::error_code getRealPath(const Twine &Path,
+ SmallVectorImpl<char> &Output) const override {
+ return FS->getRealPath(Path, Output);
+ }
+
+protected:
+ FileSystem &getUnderlyingFS() { return *FS; }
+
+private:
+ IntrusiveRefCntPtr<FileSystem> FS;
+};
+
namespace detail {
class InMemoryDirectory;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D52462.166882.patch
Type: text/x-patch
Size: 1580 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180925/a0da8223/attachment.bin>
More information about the cfe-commits
mailing list