OpenEnroth 73e68f7
|
#include <MountingFileSystem.h>
Public Member Functions | |
MountingFileSystem (std::string_view displayName) | |
virtual | ~MountingFileSystem () |
void | mount (std::string_view path, FileSystem *fileSystem) |
void | mount (FileSystemPathView path, FileSystem *fileSystem) |
bool | unmount (std::string_view path) |
bool | unmount (FileSystemPathView path) |
void | clearMounts () |
Public Member Functions inherited from FileSystem | |
FileSystem ()=default | |
virtual | ~FileSystem ()=default |
bool | exists (std::string_view path) const |
bool | exists (FileSystemPathView path) const |
FileStat | stat (std::string_view path) const |
FileStat | stat (FileSystemPathView path) const |
std::vector< DirectoryEntry > | ls (std::string_view path) const |
std::vector< DirectoryEntry > | ls (FileSystemPathView path) const |
void | ls (std::string_view path, std::vector< DirectoryEntry > *entries) const |
void | ls (FileSystemPathView path, std::vector< DirectoryEntry > *entries) const |
Blob | read (std::string_view path) const |
Blob | read (FileSystemPathView path) const |
void | write (std::string_view path, const Blob &data) |
void | write (FileSystemPathView path, const Blob &data) |
std::unique_ptr< InputStream > | openForReading (std::string_view path) const |
std::unique_ptr< InputStream > | openForReading (FileSystemPathView path) const |
std::unique_ptr< OutputStream > | openForWriting (std::string_view path) |
std::unique_ptr< OutputStream > | openForWriting (FileSystemPathView path) |
void | rename (std::string_view srcPath, std::string_view dstPath) |
void | rename (FileSystemPathView srcPath, FileSystemPathView dstPath) |
bool | remove (std::string_view path) |
bool | remove (FileSystemPathView path) |
std::string | displayPath (std::string_view path) const |
std::string | displayPath (FileSystemPathView path) const |
Private Types | |
using | Node = FileSystemTrieNode< FileSystem * > |
using | WalkResult = std::tuple< Node *, FileSystem *, FileSystemPathView > |
using | ConstWalkResult = std::tuple< const Node *, const FileSystem *, FileSystemPathView > |
Private Member Functions | |
virtual bool | _exists (FileSystemPathView path) const override |
virtual FileStat | _stat (FileSystemPathView path) const override |
virtual void | _ls (FileSystemPathView path, std::vector< DirectoryEntry > *entries) const override |
virtual Blob | _read (FileSystemPathView path) const override |
virtual void | _write (FileSystemPathView path, const Blob &data) override |
virtual std::unique_ptr< InputStream > | _openForReading (FileSystemPathView path) const override |
virtual std::unique_ptr< OutputStream > | _openForWriting (FileSystemPathView path) override |
virtual void | _rename (FileSystemPathView srcPath, FileSystemPathView dstPath) override |
virtual bool | _remove (FileSystemPathView path) override |
virtual std::string | _displayPath (FileSystemPathView path) const override |
WalkResult | walk (FileSystemPathView path) |
ConstWalkResult | walk (FileSystemPathView path) const |
std::pair< const FileSystem *, FileSystemPathView > | walkForReading (FileSystemPathView path) const |
std::pair< FileSystem *, FileSystemPathView > | walkForWriting (FileSystemPathView path) |
Private Attributes | |
std::string | _displayName |
FileSystemTrie< FileSystem * > | _trie |
Additional Inherited Members | |
Protected Types inherited from FileSystem | |
template<class T > | |
using | FileSystemTrieNode = detail::FileSystemTrieNode< T > |
template<class T > | |
using | FileSystemTrie = detail::FileSystemTrie< T > |
virtual bool | _exists (FileSystemPathView path) const =0 |
virtual FileStat | _stat (FileSystemPathView path) const =0 |
virtual void | _ls (FileSystemPathView path, std::vector< DirectoryEntry > *entries) const =0 |
virtual Blob | _read (FileSystemPathView path) const =0 |
virtual void | _write (FileSystemPathView path, const Blob &data)=0 |
virtual std::unique_ptr< InputStream > | _openForReading (FileSystemPathView path) const =0 |
virtual std::unique_ptr< OutputStream > | _openForWriting (FileSystemPathView path)=0 |
virtual void | _rename (FileSystemPathView srcPath, FileSystemPathView dstPath) |
virtual bool | _remove (FileSystemPathView path)=0 |
virtual std::string | _displayPath (FileSystemPathView path) const =0 |
File system that makes it possible to mount other file systems at different points of the file tree.
This can be handy if, for example, you need to override one of the folders of some other file system:
In the example above, repeated calls to mount
create a hierarchy of virtual directories. These virtual directories override everything with the same name that existed in the underlying file systems.
Note that rename
and remove
only work on regular files, and will fail on virtual directories. If you want to tweak the virtual directory tree, use mount
and unmount
.
|
private |
|
private |
|
private |
|
explicit |
|
virtualdefault |
|
overrideprivatevirtual |
Implements FileSystem.
|
overrideprivatevirtual |
Implements FileSystem.
|
overrideprivatevirtual |
Implements FileSystem.
|
overrideprivatevirtual |
Implements FileSystem.
|
overrideprivatevirtual |
Implements FileSystem.
|
overrideprivatevirtual |
Implements FileSystem.
|
overrideprivatevirtual |
Implements FileSystem.
|
overrideprivatevirtual |
Reimplemented from FileSystem.
|
overrideprivatevirtual |
Implements FileSystem.
|
overrideprivatevirtual |
Implements FileSystem.
void MountingFileSystem::clearMounts | ( | ) |
void MountingFileSystem::mount | ( | FileSystemPathView | path, |
FileSystem * | fileSystem | ||
) |
void MountingFileSystem::mount | ( | std::string_view | path, |
FileSystem * | fileSystem | ||
) |
bool MountingFileSystem::unmount | ( | FileSystemPathView | path | ) |
bool MountingFileSystem::unmount | ( | std::string_view | path | ) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |