OpenEnroth 73e68f7
Loading...
Searching...
No Matches
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
MemoryFileSystem Class Reference

#include <MemoryFileSystem.h>

Inheritance diagram for MemoryFileSystem:
FileSystem

Public Member Functions

 MemoryFileSystem (std::string_view displayName)
 
void clear ()
 
- 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< DirectoryEntryls (std::string_view path) const
 
std::vector< DirectoryEntryls (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< InputStreamopenForReading (std::string_view path) const
 
std::unique_ptr< InputStreamopenForReading (FileSystemPathView path) const
 
std::unique_ptr< OutputStreamopenForWriting (std::string_view path)
 
std::unique_ptr< OutputStreamopenForWriting (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 MemoryFileData = detail::MemoryFileData
 
using Node = FileSystemTrieNode< std::shared_ptr< MemoryFileData > >
 

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
 
const NodenodeForReading (FileSystemPathView path) const
 
NodenodeForWriting (FileSystemPathView path)
 

Private Attributes

std::string _displayName
 
FileSystemTrie< std::shared_ptr< MemoryFileData > > _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
 

Detailed Description

In-memory file system.

Works almost like a regular FS, with some minor differences:

Also, like a proper file system, it allows removing and renaming files while they are open for reading / writing.

Member Typedef Documentation

◆ MemoryFileData

◆ Node

using MemoryFileSystem::Node = FileSystemTrieNode<std::shared_ptr<MemoryFileData> >
private

Constructor & Destructor Documentation

◆ MemoryFileSystem()

MemoryFileSystem::MemoryFileSystem ( std::string_view  displayName)
explicit

Member Function Documentation

◆ _displayPath()

std::string MemoryFileSystem::_displayPath ( FileSystemPathView  path) const
overrideprivatevirtual

Implements FileSystem.

◆ _exists()

bool MemoryFileSystem::_exists ( FileSystemPathView  path) const
overrideprivatevirtual

Implements FileSystem.

◆ _ls()

void MemoryFileSystem::_ls ( FileSystemPathView  path,
std::vector< DirectoryEntry > *  entries 
) const
overrideprivatevirtual

Implements FileSystem.

◆ _openForReading()

std::unique_ptr< InputStream > MemoryFileSystem::_openForReading ( FileSystemPathView  path) const
overrideprivatevirtual

Implements FileSystem.

◆ _openForWriting()

std::unique_ptr< OutputStream > MemoryFileSystem::_openForWriting ( FileSystemPathView  path)
overrideprivatevirtual

Implements FileSystem.

◆ _read()

Blob MemoryFileSystem::_read ( FileSystemPathView  path) const
overrideprivatevirtual

Implements FileSystem.

◆ _remove()

bool MemoryFileSystem::_remove ( FileSystemPathView  path)
overrideprivatevirtual

Implements FileSystem.

◆ _rename()

void MemoryFileSystem::_rename ( FileSystemPathView  srcPath,
FileSystemPathView  dstPath 
)
overrideprivatevirtual

Reimplemented from FileSystem.

◆ _stat()

FileStat MemoryFileSystem::_stat ( FileSystemPathView  path) const
overrideprivatevirtual

Implements FileSystem.

◆ _write()

void MemoryFileSystem::_write ( FileSystemPathView  path,
const Blob data 
)
overrideprivatevirtual

Implements FileSystem.

◆ clear()

void MemoryFileSystem::clear ( )

◆ nodeForReading()

const MemoryFileSystem::Node * MemoryFileSystem::nodeForReading ( FileSystemPathView  path) const
private

◆ nodeForWriting()

MemoryFileSystem::Node * MemoryFileSystem::nodeForWriting ( FileSystemPathView  path)
private

Member Data Documentation

◆ _displayName

std::string MemoryFileSystem::_displayName
private

◆ _trie

FileSystemTrie<std::shared_ptr<MemoryFileData> > MemoryFileSystem::_trie
private

The documentation for this class was generated from the following files: