Remove vm_ref.h

This commit is contained in:
Elad 2026-05-03 05:26:25 +03:00
parent e8cd6f4ef6
commit 5dd7792c3d
8 changed files with 0 additions and 246 deletions

View file

@ -1,6 +1,5 @@
#include "stdafx.h"
#include "Emu/Cell/PPUModule.h"
#include "Emu/Memory/vm_ref.h"
#ifdef _WIN32
#include <Windows.h>

View file

@ -436,20 +436,6 @@ struct ppu_gpr_cast_impl<vm::_ptr_base<T, AT>>
}
};
template <typename T, typename AT>
struct ppu_gpr_cast_impl<vm::_ref_base<T, AT>>
{
static inline u64 to(const vm::_ref_base<T, AT>& value)
{
return ppu_gpr_cast_impl<AT>::to(value.addr());
}
static inline vm::_ref_base<T, AT> from(const u64 reg)
{
return vm::cast(ppu_gpr_cast_impl<AT>::from(reg));
}
};
template <>
struct ppu_gpr_cast_impl<vm::null_t>
{

View file

@ -1,7 +1,6 @@
#include "stdafx.h"
#include "vm_locking.h"
#include "vm_ptr.h"
#include "vm_ref.h"
#include "vm_reservation.h"
#include "Utilities/Thread.h"

View file

@ -377,7 +377,4 @@ namespace vm
template <typename T, typename AT>
class _ptr_base;
template <typename T, typename AT>
class _ref_base;
}

View file

@ -10,9 +10,6 @@ struct ppu_func_opd_t;
namespace vm
{
template <typename T, typename AT>
class _ref_base;
// Enables comparison between comparable types of pointers
template<typename T1, typename T2>
concept PtrComparable = requires (T1* t1, T2* t2) { t1 == t2; };
@ -81,26 +78,6 @@ namespace vm
return vm::cast(vm::cast(m_addr) + offset32(mptr) + u32{sizeof(ET)} * index);
}
// Get vm reference to a struct member
template <typename MT, typename T2> requires PtrComparable<T, T2> && (!std::is_void_v<T>)
_ref_base<MT, u32> ref(MT T2::*const mptr) const
{
return vm::cast(vm::cast(m_addr) + offset32(mptr));
}
// Get vm reference to a struct member with array subscription
template <typename MT, typename T2, typename ET = std::remove_extent_t<MT>> requires PtrComparable<T, T2> && (!std::is_void_v<T>)
_ref_base<ET, u32> ref(MT T2::*const mptr, u32 index) const
{
return vm::cast(vm::cast(m_addr) + offset32(mptr) + u32{sizeof(ET)} * index);
}
// Get vm reference
_ref_base<T, u32> ref() const requires (!std::is_void_v<T>)
{
return vm::cast(m_addr);
}
template <bool Strict = false>
T* get_ptr() const
{

View file

@ -1,200 +0,0 @@
#pragma once
#include <type_traits>
#include "vm.h"
#include "util/to_endian.hpp"
#ifndef _MSC_VER
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#endif
namespace vm
{
template <typename T, typename AT>
class _ptr_base;
template <typename T, typename AT>
class _ref_base
{
AT m_addr;
static_assert(!std::is_pointer_v<T>, "vm::_ref_base<> error: invalid type (pointer)");
static_assert(!std::is_reference_v<T>, "vm::_ref_base<> error: invalid type (reference)");
static_assert(!std::is_function_v<T>, "vm::_ref_base<> error: invalid type (function)");
static_assert(!std::is_void_v<T>, "vm::_ref_base<> error: invalid type (void)");
public:
using type = T;
using addr_type = std::remove_cv_t<AT>;
_ref_base(const _ref_base&) = default;
_ref_base(vm::addr_t addr)
: m_addr(addr)
{
}
addr_type addr() const
{
return m_addr;
}
T& get_ref() const
{
return *static_cast<T*>(vm::base(vm::cast(m_addr)));
}
// convert to vm pointer
vm::_ptr_base<T, u32> ptr() const
{
return vm::cast(m_addr);
}
operator std::common_type_t<T>() const
{
return get_ref();
}
operator T&() const
{
return get_ref();
}
T& operator =(const _ref_base& right)
{
return get_ref() = right.get_ref();
}
T& operator =(const std::common_type_t<T>& right) const
{
return get_ref() = right;
}
decltype(auto) operator ++(int) const
{
return get_ref()++;
}
decltype(auto) operator ++() const
{
return ++get_ref();
}
decltype(auto) operator --(int) const
{
return get_ref()--;
}
decltype(auto) operator --() const
{
return --get_ref();
}
template<typename T2>
decltype(auto) operator +=(const T2& right)
{
return get_ref() += right;
}
template<typename T2>
decltype(auto) operator -=(const T2& right)
{
return get_ref() -= right;
}
template<typename T2>
decltype(auto) operator *=(const T2& right)
{
return get_ref() *= right;
}
template<typename T2>
decltype(auto) operator /=(const T2& right)
{
return get_ref() /= right;
}
template<typename T2>
decltype(auto) operator %=(const T2& right)
{
return get_ref() %= right;
}
template<typename T2>
decltype(auto) operator &=(const T2& right)
{
return get_ref() &= right;
}
template<typename T2>
decltype(auto) operator |=(const T2& right)
{
return get_ref() |= right;
}
template<typename T2>
decltype(auto) operator ^=(const T2& right)
{
return get_ref() ^= right;
}
template<typename T2>
decltype(auto) operator <<=(const T2& right)
{
return get_ref() <<= right;
}
template<typename T2>
decltype(auto) operator >>=(const T2& right)
{
return get_ref() >>= right;
}
};
// Native endianness reference to LE data
template<typename T, typename AT = u32> using refl = _ref_base<to_le_t<T>, AT>;
// Native endianness reference to BE data
template<typename T, typename AT = u32> using refb = _ref_base<to_be_t<T>, AT>;
// BE reference to LE data
template<typename T, typename AT = u32> using brefl = _ref_base<to_le_t<T>, to_be_t<AT>>;
// BE reference to BE data
template<typename T, typename AT = u32> using brefb = _ref_base<to_be_t<T>, to_be_t<AT>>;
// LE reference to LE data
template<typename T, typename AT = u32> using lrefl = _ref_base<to_le_t<T>, to_le_t<AT>>;
// LE reference to BE data
template<typename T, typename AT = u32> using lrefb = _ref_base<to_be_t<T>, to_le_t<AT>>;
inline namespace ps3_
{
// default reference for PS3 HLE functions (Native endianness reference to BE data)
template<typename T, typename AT = u32> using ref = refb<T, AT>;
// default reference for PS3 HLE structures (BE reference to BE data)
template<typename T, typename AT = u32> using bref = brefb<T, AT>;
}
}
#ifndef _MSC_VER
#pragma GCC diagnostic pop
#endif
// Change AT endianness to BE/LE
template<typename T, typename AT, bool Se>
struct to_se<vm::_ref_base<T, AT>, Se>
{
using type = vm::_ref_base<T, typename to_se<AT, Se>::type>;
};
// Forbid formatting
template <typename T, typename AT>
struct fmt_unveil<vm::_ref_base<T, AT>>
{
static_assert(!sizeof(T), "vm::_ref_base<>: ambiguous format argument");
};

View file

@ -1048,7 +1048,6 @@
<ClInclude Include="Emu\RSX\Program\RSXVertexProgram.h" />
<ClInclude Include="Emu\Memory\vm.h" />
<ClInclude Include="Emu\Memory\vm_ptr.h" />
<ClInclude Include="Emu\Memory\vm_ref.h" />
<ClInclude Include="Emu\Memory\vm_reservation.h" />
<ClInclude Include="Emu\Memory\vm_var.h" />
<ClInclude Include="Emu\RSX\rsx_methods.h" />

View file

@ -1578,9 +1578,6 @@
<ClInclude Include="Emu\Memory\vm_ptr.h">
<Filter>Emu\Memory</Filter>
</ClInclude>
<ClInclude Include="Emu\Memory\vm_ref.h">
<Filter>Emu\Memory</Filter>
</ClInclude>
<ClInclude Include="Emu\Memory\vm_reservation.h">
<Filter>Emu\Memory</Filter>
</ClInclude>