@ -6,15 +6,19 @@
# include <string_view>
# include <boost/container/flat_map.hpp>
# include "common/file_util.h"
# include "core/file_sys/mode.h"
# include "core/file_sys/vfs.h"
namespace FileUtil {
class IOFile ;
}
namespace FileSys {
class RealVfsFilesystem : public VfsFilesystem {
public :
RealVfsFilesystem ( ) ;
~ RealVfsFilesystem ( ) override ;
std : : string GetName ( ) const override ;
bool IsReadable ( ) const override ;
@ -40,10 +44,9 @@ class RealVfsFile : public VfsFile {
friend class RealVfsDirectory ;
friend class RealVfsFilesystem ;
RealVfsFile ( RealVfsFilesystem & base , std : : shared_ptr < FileUtil : : IOFile > backing ,
const std : : string & path , Mode perms = Mode : : Read ) ;
public :
~ RealVfsFile ( ) override ;
std : : string GetName ( ) const override ;
size_t GetSize ( ) const override ;
bool Resize ( size_t new_size ) override ;
@ -55,6 +58,9 @@ public:
bool Rename ( std : : string_view name ) override ;
private :
RealVfsFile ( RealVfsFilesystem & base , std : : shared_ptr < FileUtil : : IOFile > backing ,
const std : : string & path , Mode perms = Mode : : Read ) ;
bool Close ( ) ;
RealVfsFilesystem & base ;
@ -70,9 +76,9 @@ private:
class RealVfsDirectory : public VfsDirectory {
friend class RealVfsFilesystem ;
RealVfsDirectory ( RealVfsFilesystem & base , const std : : string & path , Mode perms = Mode : : Read ) ;
public :
~ RealVfsDirectory ( ) override ;
std : : shared_ptr < VfsFile > GetFileRelative ( std : : string_view path ) const override ;
std : : shared_ptr < VfsDirectory > GetDirectoryRelative ( std : : string_view path ) const override ;
std : : shared_ptr < VfsFile > GetFile ( std : : string_view name ) const override ;
@ -97,6 +103,8 @@ protected:
bool ReplaceFileWithSubdirectory ( VirtualFile file , VirtualDir dir ) override ;
private :
RealVfsDirectory ( RealVfsFilesystem & base , const std : : string & path , Mode perms = Mode : : Read ) ;
template < typename T , typename R >
std : : vector < std : : shared_ptr < R > > IterateEntries ( ) const ;