diff options
Diffstat (limited to 'src/core/file_sys/archive_romfs.h')
-rw-r--r-- | src/core/file_sys/archive_romfs.h | 77 |
1 files changed, 34 insertions, 43 deletions
diff --git a/src/core/file_sys/archive_romfs.h b/src/core/file_sys/archive_romfs.h index 0649dde99..5e918f92d 100644 --- a/src/core/file_sys/archive_romfs.h +++ b/src/core/file_sys/archive_romfs.h @@ -1,5 +1,5 @@ // Copyright 2014 Citra Emulator Project -// Licensed under GPLv2 +// Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once @@ -8,7 +8,7 @@ #include "common/common_types.h" -#include "core/file_sys/archive.h" +#include "core/file_sys/archive_backend.h" #include "core/loader/loader.h" //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -17,16 +17,11 @@ namespace FileSys { /// File system interface to the RomFS archive -class Archive_RomFS final : public Archive { +class Archive_RomFS final : public ArchiveBackend { public: Archive_RomFS(const Loader::AppLoader& app_loader); - ~Archive_RomFS() override; - /** - * Get the IdCode of the archive (e.g. RomFS, SaveData, etc.) - * @return IdCode of the archive - */ - IdCode GetIdCode() const override { return IdCode::RomFS; } + std::string GetName() const override { return "RomFS"; } /** * Open a file specified by its path, using the specified mode @@ -34,67 +29,63 @@ public: * @param mode Mode to open the file with * @return Opened file, or nullptr */ - std::unique_ptr<File> OpenFile(const Path& path, const Mode mode) const override; + std::unique_ptr<FileBackend> OpenFile(const Path& path, const Mode mode) const override; /** * Delete a file specified by its path * @param path Path relative to the archive * @return Whether the file could be deleted */ - bool DeleteFile(const FileSys::Path& path) const override; - - /** - * Delete a directory specified by its path - * @param path Path relative to the archive - * @return Whether the directory could be deleted - */ - bool DeleteDirectory(const FileSys::Path& path) const override; + bool DeleteFile(const Path& path) const override; /** - * Create a directory specified by its path - * @param path Path relative to the archive - * @return Whether the directory could be created + * Rename a File specified by its path + * @param src_path Source path relative to the archive + * @param dest_path Destination path relative to the archive + * @return Whether rename succeeded */ - bool CreateDirectory(const Path& path) const override; + bool RenameFile(const Path& src_path, const Path& dest_path) const override; /** - * Open a directory specified by its path + * Delete a directory specified by its path * @param path Path relative to the archive - * @return Opened directory, or nullptr + * @return Whether the directory could be deleted */ - std::unique_ptr<Directory> OpenDirectory(const Path& path) const override; + bool DeleteDirectory(const Path& path) const override; /** - * Read data from the archive - * @param offset Offset in bytes to start reading data from - * @param length Length in bytes of data to read from archive - * @param buffer Buffer to read data into - * @return Number of bytes read + * Create a file specified by its path + * @param path Path relative to the Archive + * @param size The size of the new file, filled with zeroes + * @return File creation result code */ - size_t Read(const u64 offset, const u32 length, u8* buffer) const override; + ResultCode CreateFile(const Path& path, u32 size) const override; /** - * Write data to the archive - * @param offset Offset in bytes to start writing data to - * @param length Length in bytes of data to write to archive - * @param buffer Buffer to write data from - * @param flush The flush parameters (0 == do not flush) - * @return Number of bytes written + * Create a directory specified by its path + * @param path Path relative to the archive + * @return Whether the directory could be created */ - size_t Write(const u64 offset, const u32 length, const u32 flush, u8* buffer) override; + bool CreateDirectory(const Path& path) const override; /** - * Get the size of the archive in bytes - * @return Size of the archive in bytes + * Rename a Directory specified by its path + * @param src_path Source path relative to the archive + * @param dest_path Destination path relative to the archive + * @return Whether rename succeeded */ - size_t GetSize() const override; + bool RenameDirectory(const Path& src_path, const Path& dest_path) const override; /** - * Set the size of the archive in bytes + * Open a directory specified by its path + * @param path Path relative to the archive + * @return Opened directory, or nullptr */ - void SetSize(const u64 size) override; + std::unique_ptr<DirectoryBackend> OpenDirectory(const Path& path) const override; private: + friend class File_RomFS; + std::vector<u8> raw_data; }; |