diff options
| author | bunnei <bunneidev@gmail.com> | 2015-02-10 18:27:16 -0500 |
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2015-02-10 18:27:16 -0500 |
| commit | 27e6e6b3cb2ee1ab3a996c2b4be1d9a3c4e6b75d (patch) | |
| tree | fd8b0290d4a0353c11c0e168200b20b5a89e297c /src/core/file_sys/ivfc_archive.h | |
| parent | 67db6aa4ce1f57f7d99406c8924ed41e74d36dbe (diff) | |
| parent | 0d2b6dd6566b6718c806181c1f1c3bcdcede86ae (diff) | |
Merge pull request #540 from yuriks/multi-archives
FS: Allow multiple instances of the same archive type to be open at once
Diffstat (limited to 'src/core/file_sys/ivfc_archive.h')
| -rw-r--r-- | src/core/file_sys/ivfc_archive.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/core/file_sys/ivfc_archive.h b/src/core/file_sys/ivfc_archive.h index 6f4cc86df..1aff9e0a4 100644 --- a/src/core/file_sys/ivfc_archive.h +++ b/src/core/file_sys/ivfc_archive.h @@ -4,6 +4,7 @@ #pragma once +#include <memory> #include <vector> #include "common/common_types.h" @@ -23,7 +24,9 @@ namespace FileSys { */ class IVFCArchive : public ArchiveBackend { public: - IVFCArchive(); + IVFCArchive(std::shared_ptr<const std::vector<u8>> data); + + std::string GetName() const override; std::unique_ptr<FileBackend> OpenFile(const Path& path, const Mode mode) const override; bool DeleteFile(const Path& path) const override; @@ -33,16 +36,14 @@ public: bool CreateDirectory(const Path& path) const override; bool RenameDirectory(const Path& src_path, const Path& dest_path) const override; std::unique_ptr<DirectoryBackend> OpenDirectory(const Path& path) const override; - ResultCode Format(const Path& path) const override; protected: - friend class IVFCFile; - std::vector<u8> raw_data; + std::shared_ptr<const std::vector<u8>> data; }; class IVFCFile : public FileBackend { public: - IVFCFile(const IVFCArchive* archive) : archive(archive) {} + IVFCFile(std::shared_ptr<const std::vector<u8>> data) : data(data) {} bool Open() override { return true; } size_t Read(const u64 offset, const u32 length, u8* buffer) const override; @@ -53,7 +54,7 @@ public: void Flush() const override { } private: - const IVFCArchive* archive; + std::shared_ptr<const std::vector<u8>> data; }; class IVFCDirectory : public DirectoryBackend { |
