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.cpp | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'src/core/file_sys/vfs_vector.cpp') diff --git a/src/core/file_sys/vfs_vector.cpp b/src/core/file_sys/vfs_vector.cpp index ec7f735b5..efca3d4ad 100644 --- a/src/core/file_sys/vfs_vector.cpp +++ b/src/core/file_sys/vfs_vector.cpp @@ -7,6 +7,57 @@ #include "core/file_sys/vfs_vector.h" namespace FileSys { +VectorVfsFile::VectorVfsFile(std::vector initial_data, std::string name, VirtualDir parent) + : data(std::move(initial_data)), name(std::move(name)), parent(std::move(parent)) {} + +std::string VectorVfsFile::GetName() const { + return name; +} + +size_t VectorVfsFile::GetSize() const { + return data.size(); +} + +bool VectorVfsFile::Resize(size_t new_size) { + data.resize(new_size); + return data.size() == new_size; +} + +std::shared_ptr VectorVfsFile::GetContainingDirectory() const { + return parent; +} + +bool VectorVfsFile::IsWritable() const { + return true; +} + +bool VectorVfsFile::IsReadable() const { + return true; +} + +size_t VectorVfsFile::Read(u8* data_, size_t length, size_t offset) const { + const auto read = std::min(length, data.size() - offset); + std::memcpy(data_, data.data() + offset, read); + return read; +} + +size_t VectorVfsFile::Write(const u8* data_, size_t length, size_t offset) { + if (offset + length > data.size()) + data.resize(offset + length); + const auto write = std::min(length, data.size() - offset); + std::memcpy(data.data(), data_, write); + return write; +} + +bool VectorVfsFile::Rename(std::string_view name_) { + name = name_; + return true; +} + +void VectorVfsFile::Assign(std::vector new_data) { + data = new_data; +} + VectorVfsDirectory::VectorVfsDirectory(std::vector files_, std::vector dirs_, std::string name_, VirtualDir parent_) -- 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.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/core/file_sys/vfs_vector.cpp') diff --git a/src/core/file_sys/vfs_vector.cpp b/src/core/file_sys/vfs_vector.cpp index efca3d4ad..7033e2c88 100644 --- a/src/core/file_sys/vfs_vector.cpp +++ b/src/core/file_sys/vfs_vector.cpp @@ -3,6 +3,7 @@ // Refer to the license.txt file included. #include +#include #include #include "core/file_sys/vfs_vector.h" @@ -10,6 +11,8 @@ namespace FileSys { VectorVfsFile::VectorVfsFile(std::vector initial_data, std::string name, VirtualDir parent) : data(std::move(initial_data)), name(std::move(name)), parent(std::move(parent)) {} +VectorVfsFile::~VectorVfsFile() = default; + std::string VectorVfsFile::GetName() const { return name; } @@ -20,7 +23,7 @@ size_t VectorVfsFile::GetSize() const { bool VectorVfsFile::Resize(size_t new_size) { data.resize(new_size); - return data.size() == new_size; + return true; } std::shared_ptr VectorVfsFile::GetContainingDirectory() const { @@ -55,7 +58,7 @@ bool VectorVfsFile::Rename(std::string_view name_) { } void VectorVfsFile::Assign(std::vector new_data) { - data = new_data; + data = std::move(new_data); } VectorVfsDirectory::VectorVfsDirectory(std::vector files_, -- cgit v1.2.3