DiscIO: Add a Volume::ReadSwappedAndShifted function

This is a fairly common operation, so let's make a utility
function for it to cut down on code duplication.
This commit is contained in:
JosJuice
2017-06-07 11:49:34 +02:00
parent a8e4a3c915
commit 5e3c98af1d
7 changed files with 42 additions and 39 deletions

View File

@ -51,6 +51,12 @@ public:
return {};
return Common::FromBigEndian(temp);
}
std::optional<u64> ReadSwappedAndShifted(u64 offset, const Partition& partition) const
{
const std::optional<u32> temp = ReadSwapped<u32>(offset, partition);
return temp ? static_cast<u64>(*temp) << GetOffsetShift() : std::optional<u64>();
}
virtual std::vector<Partition> GetPartitions() const { return {}; }
virtual Partition GetGamePartition() const { return PARTITION_NONE; }
virtual std::optional<u32> GetPartitionType(const Partition& partition) const { return {}; }
@ -108,6 +114,7 @@ protected:
return CP1252ToUTF8(string);
}
virtual u32 GetOffsetShift() const { return 0; }
static std::map<Language, std::string> ReadWiiNames(const std::vector<u8>& data);
static const size_t NUMBER_OF_LANGUAGES = 10;