mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-28 19:58:53 +00:00
MMU: Replace TryReadResult and TryWriteResult with std::optional
This commit is contained in:
parent
673f886a7e
commit
525e6b2194
3 changed files with 129 additions and 129 deletions
|
@ -101,87 +101,87 @@ std::vector<u8> Cheats::GetValueAsByteVector(const Cheats::SearchValue& value)
|
|||
namespace
|
||||
{
|
||||
template <typename T>
|
||||
static PowerPC::TryReadResult<T>
|
||||
static std::optional<PowerPC::ReadResult<T>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space);
|
||||
|
||||
template <>
|
||||
PowerPC::TryReadResult<u8> TryReadValueFromEmulatedMemory(u32 addr,
|
||||
PowerPC::RequestedAddressSpace space)
|
||||
std::optional<PowerPC::ReadResult<u8>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space)
|
||||
{
|
||||
return PowerPC::HostTryReadU8(addr, space);
|
||||
}
|
||||
|
||||
template <>
|
||||
PowerPC::TryReadResult<u16> TryReadValueFromEmulatedMemory(u32 addr,
|
||||
PowerPC::RequestedAddressSpace space)
|
||||
std::optional<PowerPC::ReadResult<u16>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space)
|
||||
{
|
||||
return PowerPC::HostTryReadU16(addr, space);
|
||||
}
|
||||
|
||||
template <>
|
||||
PowerPC::TryReadResult<u32> TryReadValueFromEmulatedMemory(u32 addr,
|
||||
PowerPC::RequestedAddressSpace space)
|
||||
std::optional<PowerPC::ReadResult<u32>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space)
|
||||
{
|
||||
return PowerPC::HostTryReadU32(addr, space);
|
||||
}
|
||||
|
||||
template <>
|
||||
PowerPC::TryReadResult<u64> TryReadValueFromEmulatedMemory(u32 addr,
|
||||
PowerPC::RequestedAddressSpace space)
|
||||
std::optional<PowerPC::ReadResult<u64>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space)
|
||||
{
|
||||
return PowerPC::HostTryReadU64(addr, space);
|
||||
}
|
||||
|
||||
template <>
|
||||
PowerPC::TryReadResult<s8> TryReadValueFromEmulatedMemory(u32 addr,
|
||||
PowerPC::RequestedAddressSpace space)
|
||||
std::optional<PowerPC::ReadResult<s8>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space)
|
||||
{
|
||||
auto tmp = PowerPC::HostTryReadU8(addr, space);
|
||||
if (!tmp)
|
||||
return PowerPC::TryReadResult<s8>();
|
||||
return PowerPC::TryReadResult<s8>(tmp.translated, Common::BitCast<s8>(tmp.value));
|
||||
return std::nullopt;
|
||||
return PowerPC::ReadResult<s8>(tmp->translated, Common::BitCast<s8>(tmp->value));
|
||||
}
|
||||
|
||||
template <>
|
||||
PowerPC::TryReadResult<s16> TryReadValueFromEmulatedMemory(u32 addr,
|
||||
PowerPC::RequestedAddressSpace space)
|
||||
std::optional<PowerPC::ReadResult<s16>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space)
|
||||
{
|
||||
auto tmp = PowerPC::HostTryReadU16(addr, space);
|
||||
if (!tmp)
|
||||
return PowerPC::TryReadResult<s16>();
|
||||
return PowerPC::TryReadResult<s16>(tmp.translated, Common::BitCast<s16>(tmp.value));
|
||||
return std::nullopt;
|
||||
return PowerPC::ReadResult<s16>(tmp->translated, Common::BitCast<s16>(tmp->value));
|
||||
}
|
||||
|
||||
template <>
|
||||
PowerPC::TryReadResult<s32> TryReadValueFromEmulatedMemory(u32 addr,
|
||||
PowerPC::RequestedAddressSpace space)
|
||||
std::optional<PowerPC::ReadResult<s32>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space)
|
||||
{
|
||||
auto tmp = PowerPC::HostTryReadU32(addr, space);
|
||||
if (!tmp)
|
||||
return PowerPC::TryReadResult<s32>();
|
||||
return PowerPC::TryReadResult<s32>(tmp.translated, Common::BitCast<s32>(tmp.value));
|
||||
return std::nullopt;
|
||||
return PowerPC::ReadResult<s32>(tmp->translated, Common::BitCast<s32>(tmp->value));
|
||||
}
|
||||
|
||||
template <>
|
||||
PowerPC::TryReadResult<s64> TryReadValueFromEmulatedMemory(u32 addr,
|
||||
PowerPC::RequestedAddressSpace space)
|
||||
std::optional<PowerPC::ReadResult<s64>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space)
|
||||
{
|
||||
auto tmp = PowerPC::HostTryReadU64(addr, space);
|
||||
if (!tmp)
|
||||
return PowerPC::TryReadResult<s64>();
|
||||
return PowerPC::TryReadResult<s64>(tmp.translated, Common::BitCast<s64>(tmp.value));
|
||||
return std::nullopt;
|
||||
return PowerPC::ReadResult<s64>(tmp->translated, Common::BitCast<s64>(tmp->value));
|
||||
}
|
||||
|
||||
template <>
|
||||
PowerPC::TryReadResult<float> TryReadValueFromEmulatedMemory(u32 addr,
|
||||
PowerPC::RequestedAddressSpace space)
|
||||
std::optional<PowerPC::ReadResult<float>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space)
|
||||
{
|
||||
return PowerPC::HostTryReadF32(addr, space);
|
||||
}
|
||||
|
||||
template <>
|
||||
PowerPC::TryReadResult<double> TryReadValueFromEmulatedMemory(u32 addr,
|
||||
PowerPC::RequestedAddressSpace space)
|
||||
std::optional<PowerPC::ReadResult<double>>
|
||||
TryReadValueFromEmulatedMemory(u32 addr, PowerPC::RequestedAddressSpace space)
|
||||
{
|
||||
return PowerPC::HostTryReadF64(addr, space);
|
||||
}
|
||||
|
@ -230,11 +230,11 @@ Cheats::NewSearch(const std::vector<Cheats::MemoryRange>& memory_ranges,
|
|||
if (!current_value)
|
||||
continue;
|
||||
|
||||
if (validator(current_value.value))
|
||||
if (validator(current_value->value))
|
||||
{
|
||||
auto& r = results.emplace_back();
|
||||
r.m_value = current_value.value;
|
||||
r.m_value_state = current_value.translated ?
|
||||
r.m_value = current_value->value;
|
||||
r.m_value_state = current_value->translated ?
|
||||
Cheats::SearchResultValueState::ValueFromVirtualMemory :
|
||||
Cheats::SearchResultValueState::ValueFromPhysicalMemory;
|
||||
r.m_address = addr;
|
||||
|
@ -284,11 +284,11 @@ Cheats::NextSearch(const std::vector<Cheats::SearchResult<T>>& previous_results,
|
|||
// if the previous state was invalid we always update the value to avoid getting stuck in an
|
||||
// invalid state
|
||||
if (!previous_result.IsValueValid() ||
|
||||
validator(current_value.value, previous_result.m_value))
|
||||
validator(current_value->value, previous_result.m_value))
|
||||
{
|
||||
auto& r = results.emplace_back();
|
||||
r.m_value = current_value.value;
|
||||
r.m_value_state = current_value.translated ?
|
||||
r.m_value = current_value->value;
|
||||
r.m_value_state = current_value->translated ?
|
||||
Cheats::SearchResultValueState::ValueFromVirtualMemory :
|
||||
Cheats::SearchResultValueState::ValueFromPhysicalMemory;
|
||||
r.m_address = addr;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue