Rosetta 3.3
|
Shared-ownership intrusive reference-counted smart pointer. More...
#include <owning_ptr.hh>
Public Types | |
typedef T | Value |
typedef T & | Reference |
typedef T const & | ConstReference |
typedef T * | Pointer |
typedef T const * | ConstPointer |
typedef T | value_type |
typedef T | element_type |
typedef T & | reference |
typedef T const & | const_reference |
typedef T * | pointer |
typedef T const * | const_pointer |
Public Member Functions | |
owning_ptr () | |
Default constructor. | |
owning_ptr (owning_ptr const &a) | |
Copy constructor (implicit) | |
template<typename Assignable > | |
owning_ptr (owning_ptr< Assignable > const &a) | |
Assignable copy constructor (implicit) | |
owning_ptr (pointer object_p) | |
Object pointer constructor (implicit) | |
owning_ptr (reference object) | |
Object constructor. | |
~owning_ptr () | |
Destructor. | |
owning_ptr & | operator= (owning_ptr const &a) |
Copy assignment. | |
template<typename Assignable > | |
owning_ptr & | operator= (owning_ptr< Assignable > const &a) |
Assignable copy assignment. | |
owning_ptr & | operator= (pointer object_p) |
Object pointer assignment. | |
owning_ptr & | operator= (reference object) |
Object assignment. | |
operator bool () const | |
bool conversion: points to something? | |
reference | operator* () const |
Dereference. | |
pointer | operator-> () const |
Indirection. | |
pointer | operator() () const |
Raw pointer. | |
pointer | get () const |
Raw pointer. | |
bool | operator! () const |
Points to nothing? (some compilers need this) | |
void | reset_to_null () |
Release ownership and reset. | |
void | swap (owning_ptr &a) |
Swap. | |
Friends | |
class | owning_ptr |
Shared-ownership intrusive reference-counted smart pointer.
owning_ptr is designed to be a shared-ownership intrusive reference counted smart pointer much like boost::intrusive_ptr but with a few modifications.
Differences from intrusive_ptr:
Ownership of the pointee object can be shared with intrusive_ptr or other smart pointers that use the same reference counting mechanism in the object.
Pointers to const objects: owning_ptr< Type const >
Virtual functions shouldn't return owning_ptr because, like all template-based smart pointers, it doesn't support covariant return types but raw pointer return values can be assigned to owning_ptr.
Casts: The cast functions are merely a convenience for owning_ptr (unlike for non-intrusive shared ownership pointers) so for:
owning_ptr< Base > pB( new Derived() );
the cast:
dynamic_pointer_cast< Derived >( pB );
is equivalent to:
owning_ptr< Derived >( dynamic_cast< Derived * >( pB() ) );
typedef T const* utility::pointer::owning_ptr< T >::const_pointer |
typedef T const& utility::pointer::owning_ptr< T >::const_reference |
typedef T const* utility::pointer::owning_ptr< T >::ConstPointer |
typedef T const& utility::pointer::owning_ptr< T >::ConstReference |
typedef T utility::pointer::owning_ptr< T >::element_type |
typedef T* utility::pointer::owning_ptr< T >::pointer |
typedef T* utility::pointer::owning_ptr< T >::Pointer |
typedef T& utility::pointer::owning_ptr< T >::reference |
typedef T& utility::pointer::owning_ptr< T >::Reference |
typedef T utility::pointer::owning_ptr< T >::Value |
typedef T utility::pointer::owning_ptr< T >::value_type |
utility::pointer::owning_ptr< T >::owning_ptr | ( | ) | [inline] |
Default constructor.
utility::pointer::owning_ptr< T >::owning_ptr | ( | owning_ptr< T > const & | a | ) | [inline] |
Copy constructor (implicit)
utility::pointer::owning_ptr< T >::owning_ptr | ( | owning_ptr< Assignable > const & | a | ) | [inline] |
Assignable copy constructor (implicit)
utility::pointer::owning_ptr< T >::owning_ptr | ( | pointer | object_p | ) | [inline] |
Object pointer constructor (implicit)
utility::pointer::owning_ptr< T >::owning_ptr | ( | reference | object | ) | [inline, explicit] |
Object constructor.
utility::pointer::owning_ptr< T >::~owning_ptr | ( | ) | [inline] |
Destructor.
pointer utility::pointer::owning_ptr< T >::get | ( | ) | const [inline] |
Raw pointer.
Referenced by utility::signals::Link::operator==(), and basic::Tracer::t_flush().
utility::pointer::owning_ptr< T >::operator bool | ( | ) | const [inline] |
bool conversion: points to something?
bool utility::pointer::owning_ptr< T >::operator! | ( | ) | const [inline] |
Points to nothing? (some compilers need this)
pointer utility::pointer::owning_ptr< T >::operator() | ( | ) | const [inline] |
Raw pointer.
reference utility::pointer::owning_ptr< T >::operator* | ( | ) | const [inline] |
Dereference.
pointer utility::pointer::owning_ptr< T >::operator-> | ( | ) | const [inline] |
Indirection.
owning_ptr& utility::pointer::owning_ptr< T >::operator= | ( | reference | object | ) | [inline] |
Object assignment.
owning_ptr& utility::pointer::owning_ptr< T >::operator= | ( | owning_ptr< T > const & | a | ) | [inline] |
Copy assignment.
owning_ptr& utility::pointer::owning_ptr< T >::operator= | ( | owning_ptr< Assignable > const & | a | ) | [inline] |
Assignable copy assignment.
owning_ptr& utility::pointer::owning_ptr< T >::operator= | ( | pointer | object_p | ) | [inline] |
Object pointer assignment.
void utility::pointer::owning_ptr< T >::reset_to_null | ( | ) | [inline] |
Release ownership and reset.
void utility::pointer::owning_ptr< T >::swap | ( | owning_ptr< T > & | a | ) | [inline] |
Swap.
Referenced by utility::pointer::swap().
friend class owning_ptr [friend] |