DiscIO/DirectoryBlob: Consolidate functions that take data for ContentSource to just take a ContentSource.

This commit is contained in:
Admiral H. Curtiss 2021-09-21 07:58:41 +02:00
parent 7f57c24172
commit b988ab4441
No known key found for this signature in database
GPG Key ID: F051B4C4044F33FB
2 changed files with 12 additions and 38 deletions

View File

@ -61,18 +61,8 @@ constexpr u8 ENTRY_SIZE = 0x0c;
constexpr u8 FILE_ENTRY = 0;
constexpr u8 DIRECTORY_ENTRY = 1;
DiscContent::DiscContent(u64 offset, u64 size, const std::string& path)
: m_offset(offset), m_size(size), m_content_source(path)
{
}
DiscContent::DiscContent(u64 offset, u64 size, const u8* data)
: m_offset(offset), m_size(size), m_content_source(data)
{
}
DiscContent::DiscContent(u64 offset, u64 size, DirectoryBlobReader* blob)
: m_offset(offset), m_size(size), m_content_source(blob)
DiscContent::DiscContent(u64 offset, u64 size, ContentSource source)
: m_offset(offset), m_size(size), m_content_source(std::move(source))
{
}
@ -137,22 +127,10 @@ bool DiscContent::Read(u64* offset, u64* length, u8** buffer) const
return true;
}
void DiscContentContainer::Add(u64 offset, u64 size, const std::string& path)
void DiscContentContainer::Add(u64 offset, u64 size, ContentSource source)
{
if (size != 0)
m_contents.emplace(offset, size, path);
}
void DiscContentContainer::Add(u64 offset, u64 size, const u8* data)
{
if (size != 0)
m_contents.emplace(offset, size, data);
}
void DiscContentContainer::Add(u64 offset, u64 size, DirectoryBlobReader* blob)
{
if (size != 0)
m_contents.emplace(offset, size, blob);
m_contents.emplace(offset, size, std::move(source));
}
u64 DiscContentContainer::CheckSizeAndAdd(u64 offset, const std::string& path)

View File

@ -33,18 +33,16 @@ class DirectoryBlobReader;
// Returns true if the path is inside a DirectoryBlob and doesn't represent the DirectoryBlob itself
bool ShouldHideFromGameList(const std::string& volume_path);
class DiscContent
{
public:
using ContentSource =
std::variant<std::string, // File
const u8*, // Memory
DirectoryBlobReader* // Partition (which one it is is determined by m_offset)
>;
DiscContent(u64 offset, u64 size, const std::string& path);
DiscContent(u64 offset, u64 size, const u8* data);
DiscContent(u64 offset, u64 size, DirectoryBlobReader* blob);
class DiscContent
{
public:
DiscContent(u64 offset, u64 size, ContentSource source);
// Provided because it's convenient when searching for DiscContent in an std::set
explicit DiscContent(u64 offset);
@ -75,9 +73,7 @@ public:
{
return Add(offset, vector.size() * sizeof(T), reinterpret_cast<const u8*>(vector.data()));
}
void Add(u64 offset, u64 size, const std::string& path);
void Add(u64 offset, u64 size, const u8* data);
void Add(u64 offset, u64 size, DirectoryBlobReader* blob);
void Add(u64 offset, u64 size, ContentSource source);
u64 CheckSizeAndAdd(u64 offset, const std::string& path);
u64 CheckSizeAndAdd(u64 offset, u64 max_size, const std::string& path);