From f5c132580ced295a5e795be8cf4c65de7d4624a3 Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Thu, 9 Jun 2022 00:17:20 +0200 Subject: [PATCH] DiscIO/DirectoryBlob: Add ContentSource that stores data locally in std::vector. --- Source/Core/DiscIO/DirectoryBlob.cpp | 6 ++++++ Source/Core/DiscIO/DirectoryBlob.h | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Source/Core/DiscIO/DirectoryBlob.cpp b/Source/Core/DiscIO/DirectoryBlob.cpp index 86de55595a..c8facd37de 100644 --- a/Source/Core/DiscIO/DirectoryBlob.cpp +++ b/Source/Core/DiscIO/DirectoryBlob.cpp @@ -134,6 +134,12 @@ bool DiscContent::Read(u64* offset, u64* length, u8** buffer) const const ContentFixedByte& source = std::get(m_content_source); std::fill_n(*buffer, bytes_to_read, source.m_byte); } + else if (std::holds_alternative(m_content_source)) + { + const ContentByteVector& source = std::get(m_content_source); + std::copy(source.m_bytes.begin() + offset_in_content, + source.m_bytes.begin() + offset_in_content + bytes_to_read, *buffer); + } else { PanicAlertFmt("DirectoryBlob: Invalid content source in DiscContent."); diff --git a/Source/Core/DiscIO/DirectoryBlob.h b/Source/Core/DiscIO/DirectoryBlob.h index 3e8c4d9292..31e3650b08 100644 --- a/Source/Core/DiscIO/DirectoryBlob.h +++ b/Source/Core/DiscIO/DirectoryBlob.h @@ -80,11 +80,18 @@ struct ContentFixedByte u8 m_byte; }; +// Content chunk representing an arbitrary byte sequence that's stored within the struct itself. +struct ContentByteVector +{ + std::vector m_bytes; +}; + using ContentSource = std::variant; struct BuilderContentSource