From b52343a428b76ef0fa74c6a939aef7eab33feedb Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Wed, 19 Sep 2018 21:58:33 -0400 Subject: vfs_vector: Add VectorVfsFile Maps a vector into the VFS interface. --- src/core/file_sys/vfs_vector.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/core/file_sys/vfs_vector.h') diff --git a/src/core/file_sys/vfs_vector.h b/src/core/file_sys/vfs_vector.h index cba44a7a6..c84e137a9 100644 --- a/src/core/file_sys/vfs_vector.h +++ b/src/core/file_sys/vfs_vector.h @@ -8,6 +8,30 @@ namespace FileSys { +// An implementation of VfsFile that is backed by a vector optionally supplied upon construction +class VectorVfsFile : public VfsFile { +public: + explicit VectorVfsFile(std::vector initial_data = {}, std::string name = "", + VirtualDir parent = nullptr); + + std::string GetName() const override; + size_t GetSize() const override; + bool Resize(size_t new_size) override; + std::shared_ptr GetContainingDirectory() const override; + bool IsWritable() const override; + bool IsReadable() const override; + size_t Read(u8* data, size_t length, size_t offset) const override; + size_t Write(const u8* data, size_t length, size_t offset) override; + bool Rename(std::string_view name) override; + + virtual void Assign(std::vector new_data); + +private: + std::vector data; + VirtualDir parent; + std::string name; +}; + // An implementation of VfsDirectory that maintains two vectors for subdirectories and files. // Vector data is supplied upon construction. class VectorVfsDirectory : public VfsDirectory { -- cgit v1.2.3 From b3c2ec362bbbdd89da9c0aa84b425717f5e3d351 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Sun, 23 Sep 2018 21:50:16 -0400 Subject: fsmitm: Cleanup and modernize fsmitm port --- src/core/file_sys/vfs_vector.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/core/file_sys/vfs_vector.h') diff --git a/src/core/file_sys/vfs_vector.h b/src/core/file_sys/vfs_vector.h index c84e137a9..115c3ae95 100644 --- a/src/core/file_sys/vfs_vector.h +++ b/src/core/file_sys/vfs_vector.h @@ -13,6 +13,7 @@ class VectorVfsFile : public VfsFile { public: explicit VectorVfsFile(std::vector initial_data = {}, std::string name = "", VirtualDir parent = nullptr); + ~VectorVfsFile() override; std::string GetName() const override; size_t GetSize() const override; -- cgit v1.2.3