From aade417b143a756da10b69747793c707ef8316fd Mon Sep 17 00:00:00 2001 From: Subv Date: Thu, 1 Jan 2015 12:39:27 -0500 Subject: Archives: Reduced duplicate code in RomFS and SaveCheck. Fixed a few warnings and cleaned up the code --- src/core/file_sys/ivfc_archive.h | 63 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/core/file_sys/ivfc_archive.h (limited to 'src/core/file_sys/ivfc_archive.h') 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 + +#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 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 OpenDirectory(const Path& path) const override; + ResultCode Format(const Path& path) const override; + +protected: + friend class IVFCFile; + std::vector 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 -- cgit v1.2.3 From 2f9a2d410db05489ff3fa0bfee32817cb414949f Mon Sep 17 00:00:00 2001 From: Subv Date: Thu, 1 Jan 2015 12:44:38 -0500 Subject: Archives: Added some documentation to IVFCArchive --- src/core/file_sys/ivfc_archive.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/core/file_sys/ivfc_archive.h') diff --git a/src/core/file_sys/ivfc_archive.h b/src/core/file_sys/ivfc_archive.h index fd9a3042d..a9b34434f 100644 --- a/src/core/file_sys/ivfc_archive.h +++ b/src/core/file_sys/ivfc_archive.h @@ -16,6 +16,11 @@ namespace FileSys { +/** + * Helper which implements an interface to deal with IVFC images used in some archives + * This should be subclassed by concrete archive types, which will provide the + * input data (load the raw IVFC archive) and override any required methods + */ class IVFCArchive : public ArchiveBackend { public: IVFCArchive(); -- cgit v1.2.3 From 0d03fdec71eae53efebeccca4cd803b04b41cc38 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 2 Jan 2015 21:28:46 -0500 Subject: SaveDataCheck: Remove unneeded constructor from a class --- src/core/file_sys/ivfc_archive.h | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/core/file_sys/ivfc_archive.h') diff --git a/src/core/file_sys/ivfc_archive.h b/src/core/file_sys/ivfc_archive.h index a9b34434f..6f4cc86df 100644 --- a/src/core/file_sys/ivfc_archive.h +++ b/src/core/file_sys/ivfc_archive.h @@ -58,8 +58,6 @@ private: 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; } -- cgit v1.2.3