diff options
author | Subv <subv2112@gmail.com> | 2015-01-01 18:39:27 +0100 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2015-01-03 03:13:54 +0100 |
commit | aade417b143a756da10b69747793c707ef8316fd (patch) | |
tree | d5fd49926dbfb4e7c289a8fa060df9c1e4401fde /src/core/file_sys/ivfc_archive.h | |
parent | SaveDataCheck: Preliminary work in this archive. (diff) | |
download | yuzu-aade417b143a756da10b69747793c707ef8316fd.tar yuzu-aade417b143a756da10b69747793c707ef8316fd.tar.gz yuzu-aade417b143a756da10b69747793c707ef8316fd.tar.bz2 yuzu-aade417b143a756da10b69747793c707ef8316fd.tar.lz yuzu-aade417b143a756da10b69747793c707ef8316fd.tar.xz yuzu-aade417b143a756da10b69747793c707ef8316fd.tar.zst yuzu-aade417b143a756da10b69747793c707ef8316fd.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/file_sys/ivfc_archive.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/core/file_sys/ivfc_archive.h b/src/core/file_sys/ivfc_archive.h new file mode 100644 index 000000000..fd9a3042d --- /dev/null +++ b/src/core/file_sys/ivfc_archive.h @@ -0,0 +1,63 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <vector> + +#include "common/common_types.h" + +#include "core/file_sys/archive_backend.h" +#include "core/loader/loader.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// FileSys namespace + +namespace FileSys { + +class IVFCArchive : public ArchiveBackend { +public: + IVFCArchive(); + + std::unique_ptr<FileBackend> OpenFile(const Path& path, const Mode mode) const override; + bool DeleteFile(const Path& path) const override; + bool RenameFile(const Path& src_path, const Path& dest_path) const override; + bool DeleteDirectory(const Path& path) const override; + ResultCode CreateFile(const Path& path, u32 size) const override; + 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; +}; + +class IVFCFile : public FileBackend { +public: + IVFCFile(const IVFCArchive* archive) : archive(archive) {} + + bool Open() override { return true; } + size_t Read(const u64 offset, const u32 length, u8* buffer) const override; + size_t Write(const u64 offset, const u32 length, const u32 flush, const u8* buffer) const override; + size_t GetSize() const override; + bool SetSize(const u64 size) const override; + bool Close() const override { return false; } + void Flush() const override { } + +private: + const IVFCArchive* archive; +}; + +class IVFCDirectory : public DirectoryBackend { +public: + IVFCDirectory() { } + + bool Open() override { return false; } + u32 Read(const u32 count, Entry* entries) override { return 0; } + bool Close() const override { return false; } +}; + +} // namespace FileSys |