Hubris Engine Dev
A Project to learn and get into Game Engine developement.
 
Loading...
Searching...
No Matches
Hubris::Handle< T > Struct Template Reference

#include <Memory.h>

Public Member Functions

constexpr Handle () noexcept=default
 
constexpr Handle (std::nullptr_t)
 
constexpr Handle (T *t) noexcept
 
template<typename U>
requires SafelyUpcastable<U, T> && !SameUnqualifiedType<T,U>
constexpr Handle (U *other) noexcept
 
template<typename U>
requires Castable<U*, T*>
constexpr Handle (Handle< U > &&other) noexcept
 
constexpr Handle (Handle &&mv) noexcept
 
 ~Handle () noexcept
 
Handleoperator= (Handle &&mv) noexcept
 
template<typename U>
requires PolymorphicConvertible<U, T>
Handleoperator= (Handle< U > &&mv) noexcept
 
 Handle (const Handle &cp) noexcept=delete
 
Handleoperator= (const Handle &cp)=delete
 
constexpr T * get () noexcept
 
constexpr const T * get () const noexcept
 
void reset (T *ptr=nullptr) noexcept
 
constexpr T * release () noexcept
 
template<typename U>
requires PolymorphicConvertible<U, T>
constexpr void swap (Handle< U > &rhs) noexcept
 
Shared< T > ToShared ()
 
constexpr T * operator-> () noexcept
 
constexpr const T * operator-> () const noexcept
 
constexpr T & operator* ()
 
constexpr const T & operator* () const
 
template<typename U>
constexpr bool operator== (const Handle< U > &rhs) const noexcept
 
template<typename U>
constexpr bool operator!= (const Handle< U > &rhs) const noexcept
 
constexpr operator bool () const noexcept
 
constexpr bool operator! () const noexcept
 
 operator T* ()=delete
 
 operator void * ()=delete
 

Detailed Description

template<typename T>
requires IsType<T>
struct Hubris::Handle< T >

Definition at line 462 of file Memory.h.

Constructor & Destructor Documentation

◆ Handle() [1/7]

template<typename T>
Hubris::Handle< T >::Handle ( )
constexprdefaultnoexcept
+ Here is the caller graph for this function:

◆ Handle() [2/7]

template<typename T>
Hubris::Handle< T >::Handle ( std::nullptr_t )
inlineconstexpr

Definition at line 467 of file Memory.h.

+ Here is the call graph for this function:

◆ Handle() [3/7]

template<typename T>
Hubris::Handle< T >::Handle ( T * t)
inlineconstexprnoexcept

Definition at line 468 of file Memory.h.

◆ Handle() [4/7]

template<typename T>
template<typename U>
requires SafelyUpcastable<U, T> && !SameUnqualifiedType<T,U>
Hubris::Handle< T >::Handle ( U * other)
inlineexplicitconstexprnoexcept

Definition at line 473 of file Memory.h.

◆ Handle() [5/7]

template<typename T>
template<typename U>
requires Castable<U*, T*>
Hubris::Handle< T >::Handle ( Handle< U > && other)
inlineconstexprnoexcept

Definition at line 482 of file Memory.h.

+ Here is the call graph for this function:

◆ Handle() [6/7]

template<typename T>
Hubris::Handle< T >::Handle ( Handle< T > && mv)
inlineconstexprnoexcept

Definition at line 487 of file Memory.h.

+ Here is the call graph for this function:

◆ ~Handle()

template<typename T>
Hubris::Handle< T >::~Handle ( )
inlinenoexcept

Definition at line 491 of file Memory.h.

+ Here is the call graph for this function:

◆ Handle() [7/7]

template<typename T>
Hubris::Handle< T >::Handle ( const Handle< T > & cp)
deletenoexcept
+ Here is the call graph for this function:

Member Function Documentation

◆ get() [1/2]

template<typename T>
const T * Hubris::Handle< T >::get ( ) const
inlineconstexprnoexcept

Definition at line 512 of file Memory.h.

◆ get() [2/2]

template<typename T>
T * Hubris::Handle< T >::get ( )
inlineconstexprnoexcept

Definition at line 511 of file Memory.h.

◆ operator bool()

template<typename T>
Hubris::Handle< T >::operator bool ( ) const
inlineconstexprnoexcept

Definition at line 592 of file Memory.h.

◆ operator T*()

template<typename T>
Hubris::Handle< T >::operator T* ( )
delete

◆ operator void *()

template<typename T>
Hubris::Handle< T >::operator void * ( )
delete

◆ operator!()

template<typename T>
bool Hubris::Handle< T >::operator! ( ) const
inlineconstexprnoexcept

Definition at line 596 of file Memory.h.

◆ operator!=()

template<typename T>
template<typename U>
bool Hubris::Handle< T >::operator!= ( const Handle< U > & rhs) const
inlineconstexprnoexcept

Definition at line 588 of file Memory.h.

+ Here is the call graph for this function:

◆ operator*() [1/2]

template<typename T>
T & Hubris::Handle< T >::operator* ( )
inlineconstexpr
Warning
THIS IS DANGEROUS, It dereferences the pointer this object holds without checking.
Returns
T&

Definition at line 573 of file Memory.h.

◆ operator*() [2/2]

template<typename T>
const T & Hubris::Handle< T >::operator* ( ) const
inlineconstexpr
Warning
THIS IS DANGEROUS, It dereferences the pointer this object holds without checking.
Returns
const T&

Definition at line 580 of file Memory.h.

◆ operator->() [1/2]

template<typename T>
const T * Hubris::Handle< T >::operator-> ( ) const
inlineconstexprnoexcept
Warning
THIS IS DANGEROUS, It dereferences the pointer this object holds without checking.
Returns
const T&

Definition at line 565 of file Memory.h.

◆ operator->() [2/2]

template<typename T>
T * Hubris::Handle< T >::operator-> ( )
inlineconstexprnoexcept
Warning
THIS IS DANGEROUS, It dereferences the pointer this object holds without checking.
Returns
constexpr T&

Definition at line 557 of file Memory.h.

◆ operator=() [1/3]

template<typename T>
Handle & Hubris::Handle< T >::operator= ( const Handle< T > & cp)
delete
+ Here is the call graph for this function:

◆ operator=() [2/3]

template<typename T>
Handle & Hubris::Handle< T >::operator= ( Handle< T > && mv)
inlinenoexcept

Definition at line 494 of file Memory.h.

+ Here is the call graph for this function:

◆ operator=() [3/3]

template<typename T>
template<typename U>
requires PolymorphicConvertible<U, T>
Handle & Hubris::Handle< T >::operator= ( Handle< U > && mv)
inlinenoexcept

Definition at line 501 of file Memory.h.

+ Here is the call graph for this function:

◆ operator==()

template<typename T>
template<typename U>
bool Hubris::Handle< T >::operator== ( const Handle< U > & rhs) const
inlineconstexprnoexcept

Definition at line 583 of file Memory.h.

+ Here is the call graph for this function:

◆ release()

template<typename T>
T * Hubris::Handle< T >::release ( )
inlineconstexprnoexcept

Definition at line 525 of file Memory.h.

◆ reset()

template<typename T>
void Hubris::Handle< T >::reset ( T * ptr = nullptr)
inlinenoexcept

Definition at line 514 of file Memory.h.

+ Here is the caller graph for this function:

◆ swap()

template<typename T>
template<typename U>
requires PolymorphicConvertible<U, T>
void Hubris::Handle< T >::swap ( Handle< U > & rhs)
inlineconstexprnoexcept

Definition at line 530 of file Memory.h.

+ Here is the call graph for this function:

◆ ToShared()

template<typename T>
Shared< T > Hubris::Handle< T >::ToShared ( )
inline

Definition at line 534 of file Memory.h.

+ Here is the call graph for this function:

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