CommonLibSSE (Parapets fork)
Loading...
Searching...
No Matches
REL::Relocation< T > Class Template Reference

#include <Relocation.h>

Public Types

using value_type = std::conditional_t< std::is_member_pointer_v< T >||std::is_function_v< std::remove_pointer_t< T > >, std::decay_t< T >, T >
 

Public Member Functions

constexpr Relocation () noexcept=default
 
constexpr Relocation (std::uintptr_t a_address) noexcept
 
 Relocation (Offset a_offset)
 
 Relocation (ID a_id)
 
 Relocation (ID a_id, std::ptrdiff_t a_offset)
 
constexpr Relocationoperator= (std::uintptr_t a_address) noexcept
 
Relocationoperator= (Offset a_offset)
 
Relocationoperator= (ID a_id)
 
template<class U = value_type>
requires (std::is_pointer_v<U>)
decltype(auto) operator* () const noexcept
 
template<class U = value_type>
requires (std::is_pointer_v<U>)
auto operator-> () const noexcept
 
template<class... Args>
requires (std::invocable<const value_type&, Args...>)
std::invoke_result_t< const value_type &, Args... > operator() (Args &&... a_args) const noexcept(std::is_nothrow_invocable_v< const value_type &, Args... >)
 
constexpr std::uintptr_t address () const noexcept
 
std::size_t offset () const
 
value_type get () const noexcept(std::is_nothrow_copy_constructible_v< value_type >)
 
template<class U = value_type>
requires (std::same_as<U, std::uintptr_t>)
std::uintptr_t write_vfunc (std::size_t a_idx, std::uintptr_t a_newFunc)
 
template<class F >
requires (std::same_as<value_type, std::uintptr_t>)
std::uintptr_t write_vfunc (std::size_t a_idx, F a_newFunc)
 

Member Typedef Documentation

◆ value_type

template<class T >
using REL::Relocation< T >::value_type = std::conditional_t< std::is_member_pointer_v<T> || std::is_function_v<std::remove_pointer_t<T> >, std::decay_t<T>, T>

Constructor & Destructor Documentation

◆ Relocation() [1/5]

template<class T >
constexpr REL::Relocation< T >::Relocation ( )
constexprdefaultnoexcept

◆ Relocation() [2/5]

template<class T >
constexpr REL::Relocation< T >::Relocation ( std::uintptr_t  a_address)
inlineexplicitconstexprnoexcept

◆ Relocation() [3/5]

template<class T >
REL::Relocation< T >::Relocation ( Offset  a_offset)
inlineexplicit

◆ Relocation() [4/5]

template<class T >
REL::Relocation< T >::Relocation ( ID  a_id)
inlineexplicit

◆ Relocation() [5/5]

template<class T >
REL::Relocation< T >::Relocation ( ID  a_id,
std::ptrdiff_t  a_offset 
)
inlineexplicit

Member Function Documentation

◆ address()

template<class T >
constexpr std::uintptr_t REL::Relocation< T >::address ( ) const
inlineconstexprnoexcept

◆ get()

template<class T >
value_type REL::Relocation< T >::get ( ) const
inlinenoexcept

◆ offset()

template<class T >
std::size_t REL::Relocation< T >::offset ( ) const
inline

◆ operator()()

template<class T >
template<class... Args>
requires (std::invocable<const value_type&, Args...>)
std::invoke_result_t< const value_type &, Args... > REL::Relocation< T >::operator() ( Args &&...  a_args) const
inlinenoexcept

◆ operator*()

template<class T >
template<class U = value_type>
requires (std::is_pointer_v<U>)
decltype(auto) REL::Relocation< T >::operator* ( ) const
inlinenoexcept

◆ operator->()

template<class T >
template<class U = value_type>
requires (std::is_pointer_v<U>)
auto REL::Relocation< T >::operator-> ( ) const
inlinenoexcept

◆ operator=() [1/3]

template<class T >
Relocation & REL::Relocation< T >::operator= ( ID  a_id)
inline

◆ operator=() [2/3]

template<class T >
Relocation & REL::Relocation< T >::operator= ( Offset  a_offset)
inline

◆ operator=() [3/3]

template<class T >
constexpr Relocation & REL::Relocation< T >::operator= ( std::uintptr_t  a_address)
inlineconstexprnoexcept

◆ write_vfunc() [1/2]

template<class T >
template<class F >
requires (std::same_as<value_type, std::uintptr_t>)
std::uintptr_t REL::Relocation< T >::write_vfunc ( std::size_t  a_idx,
a_newFunc 
)
inline

◆ write_vfunc() [2/2]

template<class T >
template<class U = value_type>
requires (std::same_as<U, std::uintptr_t>)
std::uintptr_t REL::Relocation< T >::write_vfunc ( std::size_t  a_idx,
std::uintptr_t  a_newFunc 
)
inline

The documentation for this class was generated from the following file: