DirectoryBlob: Prepare more for supporting multiple partitions

This commit is contained in:
JosJuice
2017-06-10 17:51:22 +02:00
parent a3ee61e1a9
commit d84bee3ff4
2 changed files with 31 additions and 11 deletions

View File

@ -5,6 +5,7 @@
#pragma once
#include <cstddef>
#include <map>
#include <memory>
#include <optional>
#include <set>
@ -55,6 +56,7 @@ private:
class DirectoryBlobPartition
{
public:
DirectoryBlobPartition() = default;
DirectoryBlobPartition(const std::string& root_directory, std::optional<bool> is_wii);
// We do not allow copying, because it might mess up the pointers inside DiscContents
@ -90,9 +92,9 @@ private:
std::vector<u8> m_fst_data;
std::string m_root_directory;
bool m_is_wii;
bool m_is_wii = false;
// GameCube has no shift, Wii has 2 bit shift
u32 m_address_shift;
u32 m_address_shift = 0;
};
class DirectoryBlobReader : public BlobReader
@ -126,8 +128,12 @@ private:
std::string m_root_directory;
DirectoryBlobPartition m_game_partition;
// For GameCube:
DirectoryBlobPartition m_gamecube_pseudopartition;
// For Wii:
std::set<DiscContent> m_nonpartition_contents;
std::map<u64, DirectoryBlobPartition> m_partitions;
bool m_is_wii;