CommonLibVR
REL Namespace Reference

Namespaces

 detail
 

Classes

class  IDDatabase
 
class  ID
 
class  Segment
 
class  Module
 
class  Offset
 
class  Relocation
 
class  Version
 

Functions

template<stl::nttp::string S>
constexpr auto make_pattern () noexcept
 
template<class F , class... Args>
std::invoke_result_t< F, Args... > invoke (F &&a_func, Args &&... a_args) noexcept(std::is_nothrow_invocable_v< F, Args... >) requires(std
 
void safe_write (std::uintptr_t a_dst, const void *a_src, std::size_t a_count)
 
template<std::integral T>
void safe_write (std::uintptr_t a_dst, const T &a_data)
 
template<class T >
void safe_write (std::uintptr_t a_dst, std::span< T > a_data)
 
void safe_fill (std::uintptr_t a_dst, std::uint8_t a_value, std::size_t a_count)
 
constexpr bool operator== (const Version &a_lhs, const Version &a_rhs) noexcept
 
constexpr std::strong_ordering operator<=> (const Version &a_lhs, const Version &a_rhs) noexcept
 
std::optional< VersionGetFileVersion (stl::zwstring a_filename)
 

Variables

constexpr std::uint8_t NOP = 0x90
 
constexpr std::uint8_t NOP2 [] = { 0x66, 0x90 }
 
constexpr std::uint8_t NOP3 [] = { 0x0F, 0x1F, 0x00 }
 
constexpr std::uint8_t NOP4 [] = { 0x0F, 0x1F, 0x40, 0x00 }
 
constexpr std::uint8_t NOP5 [] = { 0x0F, 0x1F, 0x44, 0x00, 0x00 }
 
constexpr std::uint8_t NOP6 [] = { 0x66, 0x0F, 0x1F, 0x44, 0x00, 0x00 }
 
constexpr std::uint8_t NOP7 [] = { 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00 }
 
constexpr std::uint8_t NOP8 [] = { 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }
 
constexpr std::uint8_t NOP9 [] = { 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }
 
constexpr std::uint8_t JMP8 = 0xEB
 
constexpr std::uint8_t JMP32 = 0xE9
 
constexpr std::uint8_t RET = 0xC3
 
constexpr std::uint8_t INT3 = 0xCC
 

Function Documentation

◆ GetFileVersion()

std::optional<Version> REL::GetFileVersion ( stl::zwstring  a_filename)

◆ invoke()

template<class F , class... Args>
std::invoke_result_t<F, Args...> REL::invoke ( F &&  a_func,
Args &&...  a_args 
)
noexcept

◆ make_pattern()

template<stl::nttp::string S>
constexpr auto REL::make_pattern ( )
constexprnoexcept

◆ operator<=>()

constexpr std::strong_ordering REL::operator<=> ( const Version a_lhs,
const Version a_rhs 
)
constexprnoexcept

◆ operator==()

constexpr bool REL::operator== ( const Version a_lhs,
const Version a_rhs 
)
constexprnoexcept

◆ safe_fill()

void REL::safe_fill ( std::uintptr_t  a_dst,
std::uint8_t  a_value,
std::size_t  a_count 
)

◆ safe_write() [1/3]

template<std::integral T>
void REL::safe_write ( std::uintptr_t  a_dst,
const T &  a_data 
)

◆ safe_write() [2/3]

void REL::safe_write ( std::uintptr_t  a_dst,
const void *  a_src,
std::size_t  a_count 
)

◆ safe_write() [3/3]

template<class T >
void REL::safe_write ( std::uintptr_t  a_dst,
std::span< T >  a_data 
)

Variable Documentation

◆ INT3

constexpr std::uint8_t REL::INT3 = 0xCC
inlineconstexpr

◆ JMP32

constexpr std::uint8_t REL::JMP32 = 0xE9
inlineconstexpr

◆ JMP8

constexpr std::uint8_t REL::JMP8 = 0xEB
inlineconstexpr

◆ NOP

constexpr std::uint8_t REL::NOP = 0x90
inlineconstexpr

◆ NOP2

constexpr std::uint8_t REL::NOP2[] = { 0x66, 0x90 }
inlineconstexpr

◆ NOP3

constexpr std::uint8_t REL::NOP3[] = { 0x0F, 0x1F, 0x00 }
inlineconstexpr

◆ NOP4

constexpr std::uint8_t REL::NOP4[] = { 0x0F, 0x1F, 0x40, 0x00 }
inlineconstexpr

◆ NOP5

constexpr std::uint8_t REL::NOP5[] = { 0x0F, 0x1F, 0x44, 0x00, 0x00 }
inlineconstexpr

◆ NOP6

constexpr std::uint8_t REL::NOP6[] = { 0x66, 0x0F, 0x1F, 0x44, 0x00, 0x00 }
inlineconstexpr

◆ NOP7

constexpr std::uint8_t REL::NOP7[] = { 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00 }
inlineconstexpr

◆ NOP8

constexpr std::uint8_t REL::NOP8[] = { 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }
inlineconstexpr

◆ NOP9

constexpr std::uint8_t REL::NOP9[] = { 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }
inlineconstexpr

◆ RET

constexpr std::uint8_t REL::RET = 0xC3
inlineconstexpr