MAGE  v0.171.0
Matthias Advanced Game Engine
mage::ProxyPtr< T > Class Template Reference

#include <memory.hpp>

Public Member Functions

 ProxyPtr () noexcept
 
 ProxyPtr (std::nullptr_t) noexcept
 
template<typename ContainerT >
 ProxyPtr (ContainerT &container, std::size_t index) noexcept
 
 ProxyPtr (std::function< T *() > getter) noexcept
 
 ProxyPtr (const ProxyPtr &ptr) noexcept
 
 ProxyPtr (ProxyPtr &&ptr) noexcept
 
template<typename FromT , typename = std::enable_if_t< std::is_convertible_v< FromT*, T* > >>
 ProxyPtr (const ProxyPtr< FromT > &ptr) noexcept
 
template<typename FromT , typename = std::enable_if_t< std::is_convertible_v< FromT*, T* > >>
 ProxyPtr (ProxyPtr< FromT > &&ptr) noexcept
 
 ~ProxyPtr ()=default
 
ProxyPtroperator= (const ProxyPtr &ptr) noexcept
 
ProxyPtroperator= (ProxyPtr &&ptr) noexcept
 
 operator bool () const noexcept
 
T & operator* () const noexcept
 
T * operator-> () const noexcept
 
T * Get () const noexcept
 
template<typename U >
bool operator== (const ProxyPtr< U > &rhs) const noexcept
 
template<typename U >
bool operator!= (const ProxyPtr< U > &rhs) const noexcept
 

Public Attributes

std::function< T *() > m_getter
 

Detailed Description

template<typename T>
class mage::ProxyPtr< T >

A class of proxy pointers.

Template Parameters
TThe memory resource type.

Constructor & Destructor Documentation

◆ ProxyPtr() [1/8]

template<typename T>
mage::ProxyPtr< T >::ProxyPtr ( )
noexcept

Constructs a proxy pointer.

◆ ProxyPtr() [2/8]

template<typename T>
mage::ProxyPtr< T >::ProxyPtr ( std::nullptr_t  )
noexcept

Constructs a proxy pointer.

◆ ProxyPtr() [3/8]

template<typename T>
template<typename ContainerT >
mage::ProxyPtr< T >::ProxyPtr ( ContainerT &  container,
std::size_t  index 
)
explicitnoexcept

Constructs a proxy pointer for the given container and index.

Template Parameters
ContainerTThe container type.
Parameters
[in]containerA reference to the container.
[in]indexThe index into the container.

◆ ProxyPtr() [4/8]

template<typename T>
mage::ProxyPtr< T >::ProxyPtr ( std::function< T *() >  getter)
explicitnoexcept

Constructs a proxy pointer with the given getter function.

Parameters
[in]getterThe getter function.

◆ ProxyPtr() [5/8]

template<typename T>
mage::ProxyPtr< T >::ProxyPtr ( const ProxyPtr< T > &  ptr)
noexcept

Constructs a proxy pointer from the given proxy pointer.

Parameters
[in]ptrA reference to the proxy pointer.

◆ ProxyPtr() [6/8]

template<typename T>
mage::ProxyPtr< T >::ProxyPtr ( ProxyPtr< T > &&  ptr)
noexcept

Constructs a proxy pointer by moving the given proxy pointer.

Parameters
[in]ptrA reference to the proxy pointer to move.

◆ ProxyPtr() [7/8]

template<typename T>
template<typename FromT , typename = std::enable_if_t< std::is_convertible_v< FromT*, T* > >>
mage::ProxyPtr< T >::ProxyPtr ( const ProxyPtr< FromT > &  ptr)
noexcept

Constructs a proxy pointer from the given proxy pointer.

Template Parameters
FromTThe memory resource type.
Parameters
[in]ptrA reference to the proxy pointer.

◆ ProxyPtr() [8/8]

template<typename T>
template<typename FromT , typename = std::enable_if_t< std::is_convertible_v< FromT*, T* > >>
mage::ProxyPtr< T >::ProxyPtr ( ProxyPtr< FromT > &&  ptr)
noexcept

Constructs a proxy pointer by moving the given proxy pointer.

Template Parameters
FromTThe memory resource type.
Parameters
[in]ptrA reference to the proxy pointer to move.

◆ ~ProxyPtr()

template<typename T>
mage::ProxyPtr< T >::~ProxyPtr ( )
default

Destructs this proxy pointer.

Member Function Documentation

◆ Get()

template<typename T>
T* mage::ProxyPtr< T >::Get ( ) const
noexcept

Returns the memory resource pointed to by this proxy pointer.

Returns
A pointer to the memory resource pointed to by this proxy pointer.

◆ operator bool()

template<typename T>
mage::ProxyPtr< T >::operator bool ( ) const
explicitnoexcept

Converts this proxy pointer to a bool.

◆ operator!=()

template<typename T>
template<typename U >
bool mage::ProxyPtr< T >::operator!= ( const ProxyPtr< U > &  rhs) const
noexcept

Checks whether the given proxy pointer is not equal to this proxy pointer.

Template Parameters
UThe memory resource type.
Parameters
[in]rhsA reference to the proxy pointer.
Returns
true if the given proxy pointer is not equal to this proxy pointer. false otherwise.

◆ operator*()

template<typename T>
T& mage::ProxyPtr< T >::operator* ( ) const
noexcept

Returns the memory resource pointed to by this proxy pointer.

Returns
A reference to the memory resource pointed to by this proxy pointer.

◆ operator->()

template<typename T>
T* mage::ProxyPtr< T >::operator-> ( ) const
noexcept

Returns the memory resource pointed to by this proxy pointer.

Returns
A pointer to the memory resource pointed to by this proxy pointer.

◆ operator=() [1/2]

template<typename T>
ProxyPtr& mage::ProxyPtr< T >::operator= ( const ProxyPtr< T > &  ptr)
noexcept

Copies the given proxy pointer to this proxy pointer.

Parameters
[in]ptrA reference to the proxy pointer to copy.
Returns
A reference to the copy of the given proxy pointer (i.e. this proxy pointer).

◆ operator=() [2/2]

template<typename T>
ProxyPtr& mage::ProxyPtr< T >::operator= ( ProxyPtr< T > &&  ptr)
noexcept

Moves the given proxy pointer to this proxy pointer.

Parameters
[in]ptrA reference to the proxy pointer to move.
Returns
A reference to the moved proxy pointer (i.e. this proxy pointer).

◆ operator==()

template<typename T>
template<typename U >
bool mage::ProxyPtr< T >::operator== ( const ProxyPtr< U > &  rhs) const
noexcept

Checks whether the given proxy pointer is equal to this proxy pointer.

Template Parameters
UThe memory resource type.
Parameters
[in]rhsA reference to the proxy pointer.
Returns
true if the given proxy pointer is equal to this proxy pointer. false otherwise.

Member Data Documentation

◆ m_getter

template<typename T>
std::function< T*() > mage::ProxyPtr< T >::m_getter

The getter of this proxy pointer.