libintrovirt v0.57.4
IntroVirt introspection library
Loading...
Searching...
No Matches
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > Class Template Reference

#include <guest_ptr.hh>

Inheritance diagram for introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >:
Collaboration diagram for introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >:

Public Types

using basic_type = typename std::remove_pointer_t< std::remove_extent_t< _Tp > >
 
using array_element_type = std::remove_extent_t< _Tp >
 
using pointer_type = typename std::add_pointer_t< basic_type >
 
using ref_type = typename std::add_lvalue_reference_t< basic_type >
 
using outptr_type = basic_guest_ptr< basic_type, std::conditional_t< _is_ppointer_v, _PtrType, void >, _Physical >
 

Public Member Functions

uint64_t address () const
 Functions for getting the underlying address.
 
uint64_t page_mask () const
 
uint64_t page_number () const
 
uint64_t page_offset () const
 
uint64_t page_directory () const
 
const Domaindomain () const
 
size_t length () const
 
decltype(auto) operator[] (size_t index) const
 
decltype(auto) operator* () const
 Operators regardless of the underlying type.
 
auto operator-> () const
 
auto get () const
 
decltype(auto) at (size_t index) const
 
template<typename U = _Tp, typename type = array_element_type, typename std::enable_if_t<!std::is_void_v< U > &&!std::is_pointer_v< U > > * dummy = nullptr>
void set (type value) const
 Setter methods.
 
template<typename U = _Tp, typename type = array_element_type, typename std::enable_if_t<!std::is_void_v< U > &&!std::is_pointer_v< U > > * dummy = nullptr>
void set (size_t index, type value) const
 
template<typename U = array_element_type, typename PtrType = _PtrType, typename InTp , typename InPtrType , typename std::enable_if_t< std::is_pointer_v< U > > * dummy = nullptr>
void set (const basic_guest_ptr< InTp, InPtrType, _Physical > &in) const
 
template<typename U = array_element_type, typename PtrType = _PtrType, typename InTp , typename InPtrType , typename std::enable_if_t< std::is_pointer_v< U > > * dummy = nullptr>
void set (size_t index, const basic_guest_ptr< InTp, InPtrType, _Physical > &in) const
 
template<typename U = _Tp, typename std::enable_if_t<!std::is_void_v< U > &&!std::is_pointer_v< U > > * dummy = nullptr>
 operator pointer_type () const
 Implicit conversion operators.
 
template<typename U = _Tp, typename std::enable_if_t<!std::is_pointer_v< U > > * dummy = nullptr>
pointer_type begin () const
 Array operations for non-pointer types.
 
template<typename U = _Tp, typename std::enable_if_t<!std::is_pointer_v< U > > * dummy = nullptr>
pointer_type end () const
 
 basic_guest_ptr ()
 Default constructor and null reset.
 
void reset ()
 
 basic_guest_ptr (std::nullptr_t)
 Special constructor to automatically create from nullptr.
 
template<bool Physical = _Physical, typename InPtrType , typename std::enable_if_t< Physical > * dummy = nullptr>
 basic_guest_ptr (const basic_guest_ptr< _Tp, InPtrType, false > &in)
 Special constructor to create guest_phys_ptr from guest_ptr.
 
template<bool is_guest_ptr_t_v = _is_guest_ptr_t_v, typename... Arguments, typename std::enable_if_t< is_guest_ptr_t_v > * dummy = nullptr>
 basic_guest_ptr (bool x64, Arguments &&... args)
 Special constructor and reset for guest_ptr_t variant.
 
template<bool is_guest_ptr_t_v = _is_guest_ptr_t_v, typename... Arguments, typename std::enable_if_t< is_guest_ptr_t_v > * dummy = nullptr>
void reset (bool x64, Arguments &&... args)
 
template<bool is_array = _is_array_v, typename std::enable_if_t<!is_array &&_Physical > * dummy = nullptr>
 basic_guest_ptr (const Domain &domain, uint64_t address)
 Physical pointer constructors.
 
template<bool is_array = _is_array_v, typename std::enable_if_t<!is_array &&_Physical > * dummy = nullptr>
void reset (const Domain &domain, uint64_t address)
 
template<bool is_array = _is_array_v, typename = typename std::enable_if_t<is_array && _Physical>>
 basic_guest_ptr (const Domain &domain, uint64_t address, size_t length)
 
template<bool is_array = _is_array_v, typename = typename std::enable_if_t<is_array && _Physical>>
void reset (const Domain &domain, uint64_t address, size_t length)
 
template<bool is_array = _is_array_v, typename std::enable_if_t<!is_array &&!_Physical > * dummy = nullptr>
 basic_guest_ptr (const Domain &domain, uint64_t address, uint64_t page_directory)
 Virtual pointer constructors and reset methods.
 
template<bool is_array = _is_array_v, typename std::enable_if_t<!is_array &&!_Physical > * dummy = nullptr>
void reset (const Domain &domain, uint64_t address, uint64_t page_directory)
 
template<bool is_array = _is_array_v, typename std::enable_if_t< is_array &&!_Physical > * dummy = nullptr>
 basic_guest_ptr (const Domain &domain, uint64_t address, uint64_t page_directory, size_t length)
 
template<bool is_array = _is_array_v, typename std::enable_if_t< is_array &&!_Physical > * dummy = nullptr>
void reset (const Domain &domain, uint64_t address, uint64_t page_directory, size_t length)
 
 basic_guest_ptr (const Vcpu &vcpu, uint64_t address)
 Helper constructor and reset using a vcpu.
 
void reset (const Vcpu &vcpu, uint64_t address)
 
 basic_guest_ptr (const Vcpu &vcpu, uint64_t address, size_t length)
 
void reset (const Vcpu &vcpu, uint64_t address, size_t length)
 
void reset (uint64_t address)
 Helper reset methods specifying only an address (and length for arrays)
 
void reset (uint64_t address, size_t length)
 
template<typename Tp , typename PtrType >
 basic_guest_ptr (const basic_guest_ptr< Tp, PtrType, _Physical > &in)
 Copy and move constructors/assignments and reset methods.
 
template<typename Tp , typename PtrType >
 basic_guest_ptr (const basic_guest_ptr< Tp, PtrType, _Physical > &in, size_t length)
 
template<typename Tp , typename PtrType >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & operator= (const basic_guest_ptr< Tp, PtrType, _Physical > &in)
 
template<typename Tp , typename PtrType >
void reset (const basic_guest_ptr< Tp, PtrType, _Physical > &in)
 
template<typename Tp , typename PtrType >
void reset (const basic_guest_ptr< Tp, PtrType, _Physical > &in, size_t length)
 
template<typename Tp , typename PtrType >
 basic_guest_ptr (basic_guest_ptr< Tp, PtrType, _Physical > &&in)
 
template<typename Tp , typename PtrType >
 basic_guest_ptr (basic_guest_ptr< Tp, PtrType, _Physical > &&in, size_t length)
 
template<typename Tp , typename PtrType >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & operator= (basic_guest_ptr< Tp, PtrType, _Physical > &&in)
 
template<typename Tp , typename PtrType >
void reset (basic_guest_ptr< Tp, PtrType, _Physical > &&in)
 
template<typename Tp , typename PtrType >
void reset (basic_guest_ptr< Tp, PtrType, _Physical > &&in, size_t length)
 
basic_guest_ptr< void, void, _Physical, void > clone (uint64_t address) const
 Helper to create a new instance of this pointer.
 
 basic_guest_ptr (const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &) noexcept=default
 Default constructors and copy/move operators.
 
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & operator= (const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &) noexcept=default
 
 basic_guest_ptr (basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &&) noexcept=default
 
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & operator= (basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &&) noexcept=default
 
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & operator++ ()
 Math operators.
 
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > operator++ (int)
 
template<typename I >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & operator+= (I offset)
 
template<typename I >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > operator+ (I offset) const
 
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & operator-- ()
 
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > operator-- (int)
 
template<typename I >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & operator-= (I offset)
 
template<typename I >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > operator- (I offset) const
 
template<typename Tp , typename PtrType >
ptrdiff_t operator- (const basic_guest_ptr< Tp, PtrType, _Physical > &in) const
 
 operator bool () const
 
bool operator< (const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &in) const
 
bool operator<= (const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &in) const
 
bool operator> (const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &in) const
 
bool operator>= (const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &in) const
 
bool operator== (const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &in) const
 
bool operator!= (const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &in) const
 
template<typename U = std::remove_const_t<basic_type>, typename std::enable_if_t< _is_array_v &&std::is_same_v< U, char > > * dummy = nullptr>
 operator std::string_view () const
 
template<typename U = std::remove_const_t<basic_type>, typename std::enable_if_t< std::is_same_v< U, char > > * dummy = nullptr>
std::string_view str () const
 
template<typename U = std::remove_const_t<basic_type>, typename std::enable_if_t< _is_array_v &&std::is_same_v< U, char16_t > > * dummy = nullptr>
 operator std::u16string_view () const
 
template<typename U = std::remove_const_t<basic_type>, typename std::enable_if_t< std::is_same_v< U, char16_t > > * dummy = nullptr>
std::u16string_view wstr () const
 
template<typename U = std::remove_const_t<basic_type>, typename std::enable_if_t< std::is_same_v< U, char16_t > > * dummy = nullptr>
std::string str () const
 
template<typename U = std::remove_const_t<_Tp>, typename std::enable_if_t<(!std::is_same_v< U, char[]> &&!std::is_same_v< U, char16_t[]>)> * dummy = nullptr>
std::ostream & write_stream (std::ostream &os) const
 
template<typename U = std::remove_const_t<_Tp>, typename std::enable_if_t<(std::is_same_v< U, char[]>||std::is_same_v< U, char16_t[]>)> * dummy = nullptr>
std::ostream & write_stream (std::ostream &os) const
 

Static Public Attributes

static constexpr bool _is_array_v = std::is_array_v<_Tp>
 
static constexpr bool _is_pointer_v = std::is_pointer_v<array_element_type>
 
static constexpr bool _is_ppointer_v
 
static constexpr bool _is_void_v = std::is_void_v<basic_type>
 
static constexpr bool _is_void_ptr = std::is_void_v<basic_type> && _is_pointer_v
 
static constexpr bool _is_non_guest_ptr_t_v = _is_pointer_v && !is_guest_size_v<_PtrType>
 
static constexpr bool _is_guest_ptr_t_v = _is_pointer_v && is_guest_size_v<_PtrType>
 
static constexpr bool _is_access_allowed = !_is_void_v || _is_void_ptr
 

Protected Member Functions

void _reconfigure_buffer ()
 
template<bool Physical = _Physical, typename std::enable_if_t< Physical > * dummy = nullptr>
void _remap ()
 
template<bool Physical = _Physical, typename std::enable_if_t<!Physical > * dummy = nullptr>
void _remap ()
 
void _reset (uint64_t address, size_t length=0)
 
void _validate_valid_ptr () const
 

Friends

template<typename U , typename PtrType , bool Physical, typename Enabled >
class basic_guest_ptr
 
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
void _ptr_cast_impl (const basic_guest_ptr< InTp, InPtrType, Physical > &, basic_guest_ptr< OutTp, OutPtrType, Physical > &)
 Friend the casting functions.
 
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > const_ptr_cast (const basic_guest_ptr< InTp, InPtrType, Physical > &)
 
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > static_ptr_cast (const basic_guest_ptr< InTp, InPtrType, Physical > &)
 
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > reinterpret_ptr_cast (const basic_guest_ptr< InTp, InPtrType, Physical > &)
 
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > const_ptr_cast (basic_guest_ptr< InTp, InPtrType, Physical > &&)
 
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > static_ptr_cast (basic_guest_ptr< InTp, InPtrType, Physical > &&)
 
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > reinterpret_ptr_cast (basic_guest_ptr< InTp, InPtrType, Physical > &&)
 

Additional Inherited Members

- Protected Attributes inherited from introvirt::basic_guest_ptr_members< std::conditional_t< std::is_pointer_v< std::remove_extent_t< _Tp > >, _PtrType, std::remove_all_extents_t< _Tp > >, _Physical, std::is_array_v< _Tp > >
const Domaindomain_
 
uint64_t address_
 
std::shared_ptr< GuestMemoryMappingmapping_
 
std::conditional_t< std::is_pointer_v< std::remove_extent_t< _Tp > >, _PtrType, std::remove_all_extents_t< _Tp > > * buffer_
 
- Protected Attributes inherited from introvirt::basic_guest_ptr_members_page_dir< _Physical >
uint64_t page_directory_
 

Detailed Description

template<typename _Tp, typename _PtrType, bool _Physical, typename _Enabled>
class introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >
Examples
ivcallmon.cc, ivexec.cc, ivmemwatch.cc, ivprocmemdump.cc, ivservicetable.cc, and vmcall_interface.cc.

Member Typedef Documentation

◆ array_element_type

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
using introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::array_element_type = std::remove_extent_t<_Tp>

◆ basic_type

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
using introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_type = typename std::remove_pointer_t<std::remove_extent_t<_Tp> >

◆ outptr_type

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
using introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::outptr_type = basic_guest_ptr<basic_type, std::conditional_t<_is_ppointer_v, _PtrType, void>, _Physical>

◆ pointer_type

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
using introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::pointer_type = typename std::add_pointer_t<basic_type>

◆ ref_type

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
using introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::ref_type = typename std::add_lvalue_reference_t<basic_type>

Constructor & Destructor Documentation

◆ basic_guest_ptr() [1/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( )
inline

Default constructor and null reset.

◆ basic_guest_ptr() [2/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( std::nullptr_t  )
inline

Special constructor to automatically create from nullptr.

◆ basic_guest_ptr() [3/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool Physical = _Physical, typename InPtrType , typename std::enable_if_t< Physical > * dummy = nullptr>
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( const basic_guest_ptr< _Tp, InPtrType, false > &  in)
inline

Special constructor to create guest_phys_ptr from guest_ptr.

◆ basic_guest_ptr() [4/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool is_guest_ptr_t_v = _is_guest_ptr_t_v, typename... Arguments, typename std::enable_if_t< is_guest_ptr_t_v > * dummy = nullptr>
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( bool  x64,
Arguments &&...  args 
)
inline

Special constructor and reset for guest_ptr_t variant.

◆ basic_guest_ptr() [5/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool is_array = _is_array_v, typename std::enable_if_t<!is_array &&_Physical > * dummy = nullptr>
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( const Domain domain,
uint64_t  address 
)
inline

Physical pointer constructors.

◆ basic_guest_ptr() [6/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool is_array = _is_array_v, typename = typename std::enable_if_t<is_array && _Physical>>
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( const Domain domain,
uint64_t  address,
size_t  length 
)
inline

◆ basic_guest_ptr() [7/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool is_array = _is_array_v, typename std::enable_if_t<!is_array &&!_Physical > * dummy = nullptr>
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( const Domain domain,
uint64_t  address,
uint64_t  page_directory 
)
inline

Virtual pointer constructors and reset methods.

◆ basic_guest_ptr() [8/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool is_array = _is_array_v, typename std::enable_if_t< is_array &&!_Physical > * dummy = nullptr>
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( const Domain domain,
uint64_t  address,
uint64_t  page_directory,
size_t  length 
)
inline

◆ basic_guest_ptr() [9/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( const Vcpu vcpu,
uint64_t  address 
)
inline

Helper constructor and reset using a vcpu.

◆ basic_guest_ptr() [10/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( const Vcpu vcpu,
uint64_t  address,
size_t  length 
)
inline

◆ basic_guest_ptr() [11/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( const basic_guest_ptr< Tp, PtrType, _Physical > &  in)
inline

Copy and move constructors/assignments and reset methods.

◆ basic_guest_ptr() [12/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( const basic_guest_ptr< Tp, PtrType, _Physical > &  in,
size_t  length 
)
inline

◆ basic_guest_ptr() [13/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( basic_guest_ptr< Tp, PtrType, _Physical > &&  in)
inline

◆ basic_guest_ptr() [14/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( basic_guest_ptr< Tp, PtrType, _Physical > &&  in,
size_t  length 
)
inline

◆ basic_guest_ptr() [15/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &  )
defaultnoexcept

Default constructors and copy/move operators.

◆ basic_guest_ptr() [16/16]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::basic_guest_ptr ( basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &&  )
defaultnoexcept

Member Function Documentation

◆ _reconfigure_buffer()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_reconfigure_buffer ( )
inlineprotected

◆ _remap() [1/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool Physical = _Physical, typename std::enable_if_t< Physical > * dummy = nullptr>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_remap ( )
inlineprotected

◆ _remap() [2/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool Physical = _Physical, typename std::enable_if_t<!Physical > * dummy = nullptr>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_remap ( )
inlineprotected

◆ _reset()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_reset ( uint64_t  address,
size_t  length = 0 
)
inlineprotected

◆ _validate_valid_ptr()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_validate_valid_ptr ( ) const
inlineprotected

◆ address()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
uint64_t introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::address ( ) const
inline

Functions for getting the underlying address.

Examples
ivservicetable.cc.

◆ at()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
decltype(auto) introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::at ( size_t  index) const
inline

◆ begin()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = _Tp, typename std::enable_if_t<!std::is_pointer_v< U > > * dummy = nullptr>
pointer_type introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::begin ( ) const
inline

Array operations for non-pointer types.

Examples
vmcall_interface.cc.

◆ clone()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
basic_guest_ptr< void, void, _Physical, void > introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::clone ( uint64_t  address) const
inline

Helper to create a new instance of this pointer.

◆ domain()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
const Domain & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::domain ( ) const
inline

◆ end()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = _Tp, typename std::enable_if_t<!std::is_pointer_v< U > > * dummy = nullptr>
pointer_type introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::end ( ) const
inline

◆ get()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
auto introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::get ( ) const
inline

◆ length()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
size_t introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::length ( ) const
inline

◆ operator bool()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator bool ( ) const
inlineexplicit

◆ operator pointer_type()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = _Tp, typename std::enable_if_t<!std::is_void_v< U > &&!std::is_pointer_v< U > > * dummy = nullptr>
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator pointer_type ( ) const
inline

Implicit conversion operators.

◆ operator std::string_view()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = std::remove_const_t<basic_type>, typename std::enable_if_t< _is_array_v &&std::is_same_v< U, char > > * dummy = nullptr>
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator std::string_view ( ) const
inline

◆ operator std::u16string_view()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = std::remove_const_t<basic_type>, typename std::enable_if_t< _is_array_v &&std::is_same_v< U, char16_t > > * dummy = nullptr>
introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator std::u16string_view ( ) const
inline

◆ operator!=()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator!= ( const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &  in) const
inline

◆ operator*()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
decltype(auto) introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator* ( ) const
inline

Operators regardless of the underlying type.

◆ operator+()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename I >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator+ ( offset) const
inline

◆ operator++() [1/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator++ ( )
inline

Math operators.

◆ operator++() [2/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator++ ( int  )
inline

◆ operator+=()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename I >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator+= ( offset)
inline

◆ operator-() [1/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
ptrdiff_t introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator- ( const basic_guest_ptr< Tp, PtrType, _Physical > &  in) const
inline

◆ operator-() [2/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename I >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator- ( offset) const
inline

◆ operator--() [1/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator-- ( )
inline

◆ operator--() [2/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator-- ( int  )
inline

◆ operator-=()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename I >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator-= ( offset)
inline

◆ operator->()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
auto introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator-> ( ) const
inline

◆ operator<()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator< ( const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &  in) const
inline

◆ operator<=()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator<= ( const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &  in) const
inline

◆ operator=() [1/4]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator= ( basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &&  )
defaultnoexcept

◆ operator=() [2/4]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator= ( basic_guest_ptr< Tp, PtrType, _Physical > &&  in)
inline

◆ operator=() [3/4]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator= ( const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &  )
defaultnoexcept

◆ operator=() [4/4]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator= ( const basic_guest_ptr< Tp, PtrType, _Physical > &  in)
inline

◆ operator==()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator== ( const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &  in) const
inline

◆ operator>()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator> ( const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &  in) const
inline

◆ operator>=()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator>= ( const basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled > &  in) const
inline

◆ operator[]()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
decltype(auto) introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::operator[] ( size_t  index) const
inline

◆ page_directory()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
uint64_t introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::page_directory ( ) const
inline

◆ page_mask()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
uint64_t introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::page_mask ( ) const
inline

◆ page_number()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
uint64_t introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::page_number ( ) const
inline

◆ page_offset()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
uint64_t introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::page_offset ( ) const
inline

◆ reset() [1/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( )
inline

◆ reset() [2/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( basic_guest_ptr< Tp, PtrType, _Physical > &&  in)
inline

◆ reset() [3/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( basic_guest_ptr< Tp, PtrType, _Physical > &&  in,
size_t  length 
)
inline

◆ reset() [4/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool is_guest_ptr_t_v = _is_guest_ptr_t_v, typename... Arguments, typename std::enable_if_t< is_guest_ptr_t_v > * dummy = nullptr>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( bool  x64,
Arguments &&...  args 
)
inline

◆ reset() [5/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( const basic_guest_ptr< Tp, PtrType, _Physical > &  in)
inline

◆ reset() [6/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename Tp , typename PtrType >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( const basic_guest_ptr< Tp, PtrType, _Physical > &  in,
size_t  length 
)
inline

◆ reset() [7/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool is_array = _is_array_v, typename std::enable_if_t<!is_array &&_Physical > * dummy = nullptr>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( const Domain domain,
uint64_t  address 
)
inline

◆ reset() [8/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool is_array = _is_array_v, typename = typename std::enable_if_t<is_array && _Physical>>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( const Domain domain,
uint64_t  address,
size_t  length 
)
inline

◆ reset() [9/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool is_array = _is_array_v, typename std::enable_if_t<!is_array &&!_Physical > * dummy = nullptr>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( const Domain domain,
uint64_t  address,
uint64_t  page_directory 
)
inline

◆ reset() [10/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<bool is_array = _is_array_v, typename std::enable_if_t< is_array &&!_Physical > * dummy = nullptr>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( const Domain domain,
uint64_t  address,
uint64_t  page_directory,
size_t  length 
)
inline

◆ reset() [11/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( const Vcpu vcpu,
uint64_t  address 
)
inline

◆ reset() [12/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( const Vcpu vcpu,
uint64_t  address,
size_t  length 
)
inline

◆ reset() [13/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( uint64_t  address)
inline

Helper reset methods specifying only an address (and length for arrays)

◆ reset() [14/14]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::reset ( uint64_t  address,
size_t  length 
)
inline

◆ set() [1/4]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = array_element_type, typename PtrType = _PtrType, typename InTp , typename InPtrType , typename std::enable_if_t< std::is_pointer_v< U > > * dummy = nullptr>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::set ( const basic_guest_ptr< InTp, InPtrType, _Physical > &  in) const
inline

◆ set() [2/4]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = array_element_type, typename PtrType = _PtrType, typename InTp , typename InPtrType , typename std::enable_if_t< std::is_pointer_v< U > > * dummy = nullptr>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::set ( size_t  index,
const basic_guest_ptr< InTp, InPtrType, _Physical > &  in 
) const
inline

◆ set() [3/4]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = _Tp, typename type = array_element_type, typename std::enable_if_t<!std::is_void_v< U > &&!std::is_pointer_v< U > > * dummy = nullptr>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::set ( size_t  index,
type  value 
) const
inline

◆ set() [4/4]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = _Tp, typename type = array_element_type, typename std::enable_if_t<!std::is_void_v< U > &&!std::is_pointer_v< U > > * dummy = nullptr>
void introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::set ( type  value) const
inline

Setter methods.

◆ str() [1/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = std::remove_const_t<basic_type>, typename std::enable_if_t< std::is_same_v< U, char > > * dummy = nullptr>
std::string_view introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::str ( ) const
inline

◆ str() [2/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = std::remove_const_t<basic_type>, typename std::enable_if_t< std::is_same_v< U, char16_t > > * dummy = nullptr>
std::string introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::str ( ) const
inline

◆ write_stream() [1/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = std::remove_const_t<_Tp>, typename std::enable_if_t<(!std::is_same_v< U, char[]> &&!std::is_same_v< U, char16_t[]>)> * dummy = nullptr>
std::ostream & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::write_stream ( std::ostream &  os) const
inline

◆ write_stream() [2/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = std::remove_const_t<_Tp>, typename std::enable_if_t<(std::is_same_v< U, char[]>||std::is_same_v< U, char16_t[]>)> * dummy = nullptr>
std::ostream & introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::write_stream ( std::ostream &  os) const
inline

◆ wstr()

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U = std::remove_const_t<basic_type>, typename std::enable_if_t< std::is_same_v< U, char16_t > > * dummy = nullptr>
std::u16string_view introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::wstr ( ) const
inline

Friends And Related Symbol Documentation

◆ _ptr_cast_impl

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
void _ptr_cast_impl ( const basic_guest_ptr< InTp, InPtrType, Physical > &  ,
basic_guest_ptr< OutTp, OutPtrType, Physical > &   
)
friend

Friend the casting functions.

◆ basic_guest_ptr

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename U , typename PtrType , bool Physical, typename Enabled >
friend class basic_guest_ptr
friend

◆ const_ptr_cast [1/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > const_ptr_cast ( basic_guest_ptr< InTp, InPtrType, Physical > &&  )
friend

◆ const_ptr_cast [2/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > const_ptr_cast ( const basic_guest_ptr< InTp, InPtrType, Physical > &  )
friend

◆ reinterpret_ptr_cast [1/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > reinterpret_ptr_cast ( basic_guest_ptr< InTp, InPtrType, Physical > &&  )
friend

◆ reinterpret_ptr_cast [2/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > reinterpret_ptr_cast ( const basic_guest_ptr< InTp, InPtrType, Physical > &  )
friend

◆ static_ptr_cast [1/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > static_ptr_cast ( basic_guest_ptr< InTp, InPtrType, Physical > &&  )
friend

◆ static_ptr_cast [2/2]

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
template<typename OutTp , typename OutPtrType , typename InTp , typename InPtrType , bool Physical>
basic_guest_ptr< OutTp, OutPtrType, Physical > static_ptr_cast ( const basic_guest_ptr< InTp, InPtrType, Physical > &  )
friend

Member Data Documentation

◆ _is_access_allowed

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
constexpr bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_is_access_allowed = !_is_void_v || _is_void_ptr
staticconstexpr

◆ _is_array_v

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
constexpr bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_is_array_v = std::is_array_v<_Tp>
staticconstexpr

◆ _is_guest_ptr_t_v

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
constexpr bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_is_guest_ptr_t_v = _is_pointer_v && is_guest_size_v<_PtrType>
staticconstexpr

◆ _is_non_guest_ptr_t_v

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
constexpr bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_is_non_guest_ptr_t_v = _is_pointer_v && !is_guest_size_v<_PtrType>
staticconstexpr

◆ _is_pointer_v

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
constexpr bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_is_pointer_v = std::is_pointer_v<array_element_type>
staticconstexpr

◆ _is_ppointer_v

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
constexpr bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_is_ppointer_v
staticconstexpr
Initial value:
=
std::is_pointer_v<std::remove_pointer_t<array_element_type>>

◆ _is_void_ptr

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
constexpr bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_is_void_ptr = std::is_void_v<basic_type> && _is_pointer_v
staticconstexpr

◆ _is_void_v

template<typename _Tp , typename _PtrType , bool _Physical, typename _Enabled >
constexpr bool introvirt::basic_guest_ptr< _Tp, _PtrType, _Physical, _Enabled >::_is_void_v = std::is_void_v<basic_type>
staticconstexpr

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