mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 13:57:57 -07:00
162e3be82b
This is intended to catch WIA files which have been created using wit's default parameters (40 MiB block size), once the WIA PR is merged. The check does however also work for GCZ files – not that I think anyone has a GCZ file with a block size that large.
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
// Copyright 2017 Dolphin Emulator Project
|
|
// Licensed under GPLv2+
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <string_view>
|
|
|
|
#include "Common/CommonTypes.h"
|
|
#include "DiscIO/Blob.h"
|
|
|
|
namespace DiscIO
|
|
{
|
|
class FileInfo;
|
|
struct Partition;
|
|
class Volume;
|
|
|
|
class VolumeFileBlobReader final : public BlobReader
|
|
{
|
|
public:
|
|
static std::unique_ptr<VolumeFileBlobReader>
|
|
Create(const Volume& volume, const Partition& partition, std::string_view file_path);
|
|
|
|
BlobType GetBlobType() const override { return BlobType::PLAIN; }
|
|
|
|
u64 GetRawSize() const override;
|
|
u64 GetDataSize() const override;
|
|
bool IsDataSizeAccurate() const override { return true; }
|
|
|
|
u64 GetBlockSize() const override;
|
|
bool HasFastRandomAccessInBlock() const override;
|
|
|
|
bool Read(u64 offset, u64 length, u8* out_ptr) override;
|
|
|
|
private:
|
|
VolumeFileBlobReader(const Volume& volume, const Partition& partition,
|
|
std::unique_ptr<FileInfo> file_info);
|
|
|
|
const Volume& m_volume;
|
|
const Partition& m_partition;
|
|
std::unique_ptr<FileInfo> m_file_info;
|
|
};
|
|
} // namespace DiscIO
|