rippled
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ripple::WeakIntrusive< T > Class Template Reference

A weak intrusive pointer class for the SharedIntrusive pointer class. More...

#include <IntrusivePointer.h>

Public Member Functions

 WeakIntrusive ()=default
 
 WeakIntrusive (WeakIntrusive const &rhs)
 
 WeakIntrusive (WeakIntrusive &&rhs)
 
 WeakIntrusive (SharedIntrusive< T > const &rhs)
 
 WeakIntrusive (SharedIntrusive< T > const &&rhs)=delete
 
WeakIntrusiveoperator= (WeakIntrusive const &)=delete
 
template<class TT >
requires std::convertible_to<TT*, T*>
WeakIntrusiveoperator= (SharedIntrusive< TT > const &rhs)
 
void adopt (T *ptr)
 Adopt the raw pointer and increment the weak count.
 
 ~WeakIntrusive ()
 
SharedIntrusive< T > lock () const
 Get a strong pointer from the weak pointer, if possible.
 
bool expired () const
 Return true if the strong count is zero.
 
void reset ()
 Set the pointer to null and decrement the weak count.
 

Private Member Functions

void unsafeReleaseNoStore ()
 Decrement the weak count.
 

Private Attributes

T * ptr_ = nullptr
 

Detailed Description

template<class T>
class ripple::WeakIntrusive< T >

A weak intrusive pointer class for the SharedIntrusive pointer class.

Note that this weak pointer class asks differently from normal weak pointer classes. When the strong pointer count goes to zero, the "partialDestructor" is called. See the comment on SharedIntrusive for a fuller explanation.

Definition at line 243 of file IntrusivePointer.h.

Constructor & Destructor Documentation

◆ WeakIntrusive() [1/5]

template<class T >
ripple::WeakIntrusive< T >::WeakIntrusive ( )
default

◆ WeakIntrusive() [2/5]

template<class T >
ripple::WeakIntrusive< T >::WeakIntrusive ( WeakIntrusive< T > const &  rhs)

◆ WeakIntrusive() [3/5]

template<class T >
ripple::WeakIntrusive< T >::WeakIntrusive ( WeakIntrusive< T > &&  rhs)

◆ WeakIntrusive() [4/5]

template<class T >
ripple::WeakIntrusive< T >::WeakIntrusive ( SharedIntrusive< T > const &  rhs)

◆ WeakIntrusive() [5/5]

template<class T >
ripple::WeakIntrusive< T >::WeakIntrusive ( SharedIntrusive< T > const &&  rhs)
delete

◆ ~WeakIntrusive()

template<class T >
ripple::WeakIntrusive< T >::~WeakIntrusive ( )

Member Function Documentation

◆ operator=() [1/2]

template<class T >
WeakIntrusive & ripple::WeakIntrusive< T >::operator= ( WeakIntrusive< T > const &  )
delete

◆ operator=() [2/2]

template<class T >
template<class TT >
requires std::convertible_to<TT*, T*>
WeakIntrusive & ripple::WeakIntrusive< T >::operator= ( SharedIntrusive< TT > const &  rhs)

◆ adopt()

template<class T >
void ripple::WeakIntrusive< T >::adopt ( T *  ptr)

Adopt the raw pointer and increment the weak count.

◆ lock()

template<class T >
SharedIntrusive< T > ripple::WeakIntrusive< T >::lock ( ) const

Get a strong pointer from the weak pointer, if possible.

This will only return a seated pointer if the strong count on the raw pointer is non-zero before locking.

◆ expired()

template<class T >
bool ripple::WeakIntrusive< T >::expired ( ) const

Return true if the strong count is zero.

◆ reset()

template<class T >
void ripple::WeakIntrusive< T >::reset ( )

Set the pointer to null and decrement the weak count.

Note: This may run the destructor if the strong count is zero.

◆ unsafeReleaseNoStore()

template<class T >
void ripple::WeakIntrusive< T >::unsafeReleaseNoStore ( )
private

Decrement the weak count.

This does not set the raw pointer to null.

Note: This may run the destructor if the strong count is zero.

Member Data Documentation

◆ ptr_

template<class T >
T* ripple::WeakIntrusive< T >::ptr_ = nullptr
private

Definition at line 296 of file IntrusivePointer.h.