|
| REL::detail::REL_MAKE_MEMBER_FUNCTION_POD_TYPE () |
|
| REL::detail::REL_MAKE_MEMBER_FUNCTION_POD_TYPE (const) |
|
| REL::detail::REL_MAKE_MEMBER_FUNCTION_NON_POD_TYPE () |
|
| REL::detail::REL_MAKE_MEMBER_FUNCTION_NON_POD_TYPE (const) |
|
template<class F , class First , class... Rest> |
decltype(auto) | REL::detail::invoke_member_function_non_pod (F &&a_func, First &&a_first, Rest &&... a_rest) noexcept(std::is_nothrow_invocable_v< F, First, Rest... >) |
|
template<class F , class... Args> |
std::invoke_result_t< F, Args... > | REL::invoke (F &&a_func, Args &&... a_args) noexcept(std::is_nothrow_invocable_v< F, Args... >) requires(std |
|
void | REL::safe_write (std::uintptr_t a_dst, const void *a_src, std::size_t a_count) |
|
template<std::integral T> |
void | REL::safe_write (std::uintptr_t a_dst, const T &a_data) |
|
template<class T > |
void | REL::safe_write (std::uintptr_t a_dst, std::span< T > a_data) |
|
void | REL::safe_fill (std::uintptr_t a_dst, std::uint8_t a_value, std::size_t a_count) |
|
|
template<class T > |
constexpr bool | REL::detail::is_x64_pod_v = is_x64_pod<T>::value |
|
constexpr std::uint8_t | REL::NOP = 0x90 |
|
constexpr std::uint8_t | REL::NOP2 [] = { 0x66, 0x90 } |
|
constexpr std::uint8_t | REL::NOP3 [] = { 0x0F, 0x1F, 0x00 } |
|
constexpr std::uint8_t | REL::NOP4 [] = { 0x0F, 0x1F, 0x40, 0x00 } |
|
constexpr std::uint8_t | REL::NOP5 [] = { 0x0F, 0x1F, 0x44, 0x00, 0x00 } |
|
constexpr std::uint8_t | REL::NOP6 [] = { 0x66, 0x0F, 0x1F, 0x44, 0x00, 0x00 } |
|
constexpr std::uint8_t | REL::NOP7 [] = { 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00 } |
|
constexpr std::uint8_t | REL::NOP8 [] = { 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 } |
|
constexpr std::uint8_t | REL::NOP9 [] = { 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 } |
|
constexpr std::uint8_t | REL::JMP8 = 0xEB |
|
constexpr std::uint8_t | REL::JMP32 = 0xE9 |
|
constexpr std::uint8_t | REL::RET = 0xC3 |
|
constexpr std::uint8_t | REL::INT3 = 0xCC |
|