diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2015-10-05 13:55:09 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2015-10-05 13:55:09 +0000 |
commit | 5532ef1a5df03723d6c57bfbdf2974448fd5bf74 (patch) | |
tree | 211205a984a27914f7b9779754abc881b12d336f /clang/lib/Basic/VirtualFileSystem.cpp | |
parent | 1bab191f25ac74f43a7c25c9a04beb029d843af0 (diff) | |
download | llvm-5532ef1a5df03723d6c57bfbdf2974448fd5bf74.zip llvm-5532ef1a5df03723d6c57bfbdf2974448fd5bf74.tar.gz llvm-5532ef1a5df03723d6c57bfbdf2974448fd5bf74.tar.bz2 |
[VFS] Move class out of method so it looks less like Java.
No functionality change.
llvm-svn: 249314
Diffstat (limited to 'clang/lib/Basic/VirtualFileSystem.cpp')
-rw-r--r-- | clang/lib/Basic/VirtualFileSystem.cpp | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/clang/lib/Basic/VirtualFileSystem.cpp b/clang/lib/Basic/VirtualFileSystem.cpp index 804fe1d..32e485f 100644 --- a/clang/lib/Basic/VirtualFileSystem.cpp +++ b/clang/lib/Basic/VirtualFileSystem.cpp @@ -942,6 +942,33 @@ ErrorOr<Status> VFSFromYAML::status(const Twine &Path) { return status(Path, *Result); } +namespace { +/// Provide a file wrapper that returns the external name when asked. +class NamedFileAdaptor : public File { + std::unique_ptr<File> InnerFile; + std::string NewName; + +public: + NamedFileAdaptor(std::unique_ptr<File> InnerFile, std::string NewName) + : InnerFile(std::move(InnerFile)), NewName(std::move(NewName)) {} + + llvm::ErrorOr<Status> status() override { + auto InnerStatus = InnerFile->status(); + if (InnerStatus) + return Status::copyWithNewName(*InnerStatus, NewName); + return InnerStatus.getError(); + } + llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> + getBuffer(const Twine &Name, int64_t FileSize = -1, + bool RequiresNullTerminator = true, + bool IsVolatile = false) override { + return InnerFile->getBuffer(Name, FileSize, RequiresNullTerminator, + IsVolatile); + } + std::error_code close() override { return InnerFile->close(); } +}; +} // end anonymous namespace + ErrorOr<std::unique_ptr<File>> VFSFromYAML::openFileForRead(const Twine &Path) { ErrorOr<Entry *> E = lookupPath(Path); if (!E) @@ -955,34 +982,9 @@ ErrorOr<std::unique_ptr<File>> VFSFromYAML::openFileForRead(const Twine &Path) { if (!Result) return Result; - if (!F->useExternalName(UseExternalNames)) { - // Provide a file wrapper that returns the external name when asked. - class NamedFileAdaptor : public File { - std::unique_ptr<File> InnerFile; - std::string NewName; - - public: - NamedFileAdaptor(std::unique_ptr<File> InnerFile, std::string NewName) - : InnerFile(std::move(InnerFile)), NewName(std::move(NewName)) {} - - llvm::ErrorOr<Status> status() override { - auto InnerStatus = InnerFile->status(); - if (InnerStatus) - return Status::copyWithNewName(*InnerStatus, NewName); - return InnerStatus.getError(); - } - llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> - getBuffer(const Twine &Name, int64_t FileSize = -1, - bool RequiresNullTerminator = true, - bool IsVolatile = false) override { - return InnerFile->getBuffer(Name, FileSize, RequiresNullTerminator, - IsVolatile); - } - std::error_code close() override { return InnerFile->close(); } - }; + if (!F->useExternalName(UseExternalNames)) return std::unique_ptr<File>( new NamedFileAdaptor(std::move(*Result), Path.str())); - } return Result; } |