hexed 0.3.0
 
Loading...
Searching...
No Matches
hexed::Mortal_ptr< T > Class Template Reference

a pointer to a Mortal object that will be updated if the object is destroyed or moved. More...

#include <Mortal.hpp>

Inheritance diagram for hexed::Mortal_ptr< T >:
hexed::mutual::Single< void, void > hexed::Pointer< T > hexed::mutual::Base< void, void >

Public Member Functions

 Mortal_ptr (T *data=nullptr)
 constructs a Mortal_ptr that points to data
 
void set (T *data=nullptr)
 constructs a Mortal_ptr that points to data
 
T * get ()
 obtains the raw address of the variable this points to
 
const T * get () const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
- Public Member Functions inherited from hexed::Pointer< T >
 operator bool () const
 returns true iff this is not null
 
T & operator* ()
 obtains a reference to the object this points to
 
T * operator-> ()
 accesses the members of the object this points to
 
T & value ()
 obtains a reference to the object this points to
 
const T & operator* () const
 obtains a reference to the object this points to
 
const T * operator-> () const
 accesses the members of the object this points to
 
const T & value () const
 obtains a reference to the object this points to
 

Additional Inherited Members

- Protected Member Functions inherited from hexed::mutual::Single< void, void >
 Single ()
 Constructs a Single with no partner (it is "unpaired")
 
 Single (const Single &)=delete
 
 Single (Single &&that)
 steals that's partner, if it has one, leaving that unpaired
 
Singleoperator= (const Single &)=delete
 
Singleoperator= (Single &&that)
 disconnects this from its partner, if it has one, and steals that's, if it has one
 
void pair (Base< void, void > &that)
 mutually connects this with that
 
void unpair ()
 mutually disconnects this from that
 
bool paired () const
 returns true iff this is currently paired with a partner
 
Base< void, void > * partner ()
 provides access to this's partner
 
const Base< void, void > * partner () const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
- Protected Member Functions inherited from hexed::mutual::Base< void, void >
virtual void * _mine ()
 may be overridden by derrived classes to provide partners to data of some arbitrary type T
 
virtual const void * _mine () const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
void _connect (Base< void, void > &that)
 mutually connects this and that by calling both of their _set() member functions
 
void _disconnect (Base< void, void > &that)
 mutually disconnects this and that by calling both of their _unset() member functions
 
- Protected Member Functions inherited from hexed::Pointer< T >
 operator bool () const
 returns true iff this is not null
 
T & operator* ()
 obtains a reference to the object this points to
 
T * operator-> ()
 accesses the members of the object this points to
 
T & value ()
 obtains a reference to the object this points to
 
const T & operator* () const
 obtains a reference to the object this points to
 
const T * operator-> () const
 accesses the members of the object this points to
 
const T & value () const
 obtains a reference to the object this points to
 
- Static Protected Member Functions inherited from hexed::mutual::Base< void, void >
static void * _yours (Base< void, void > &that)
 Accesses the _mine() of that
 
static const void * _yours (const Base< void, void > &that)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 

Detailed Description

template<typename T>
class hexed::Mortal_ptr< T >

a pointer to a Mortal object that will be updated if the object is destroyed or moved.

If you have an object of type T where T is derived from Mortal, then you can create a Mortal_ptr<T> to it. If the object is moved, the Mortal_ptr will be updated to point to it. If the object is destroyed, the Mortal_ptr will become null. You can also move or destroy the Mortal_ptr without any adverse consequences. As with any pointer object, if it is null, then dereferencing it will be undefined behavior and calling its value() will throw an exception.

Member Function Documentation

◆ get() [1/2]

template<typename T >
T * hexed::Mortal_ptr< T >::get ( )
inlinevirtual

obtains the raw address of the variable this points to

Implements hexed::Pointer< T >.

◆ get() [2/2]

template<typename T >
const T * hexed::Mortal_ptr< T >::get ( ) const
inlinevirtual

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Implements hexed::Pointer< T >.


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