Smart pointer class similar to boost::intrusive_ptr
.
More...
#include "ptr.h"
Classes | |
class | Tester |
Helper to test for null pointer. More... | |
Public Member Functions | |
Ptr () | |
Create an empty smart pointer. More... | |
Ptr (Ptr const &o) | |
Copy by referencing the same underlying object. More... | |
template<typename U > | |
Ptr (Ptr< U > const &o) | |
Copy, removing const qualifier. More... | |
Ptr (T *ptr) | |
Create a smart pointer which points to the object pointed to by the input raw pointer ptr. More... | |
Ptr (T *ptr, bool ref) | |
Create a smart pointer which points to the object pointed to by the input raw pointer ptr. More... | |
~Ptr () | |
Destructor. More... | |
operator Tester * () const | |
Test for non-NULL pointer. More... | |
bool | operator! () |
Test for NULL pointer. More... | |
T & | operator* () |
A dereference. More... | |
T & | operator* () const |
A const dereference. More... | |
T * | operator-> () |
An lvalue member access. More... | |
T * | operator-> () const |
An rvalue member access. More... | |
Ptr< T > & | operator= (Ptr const &o) |
Assignment operator by referencing the same underlying object. More... | |
Private Member Functions | |
void | Acquire (void) const |
Mark this as a a reference by incrementing the reference count. More... | |
Private Attributes | |
T * | m_ptr |
The pointer. More... | |
Friends | |
template<typename U > | |
U * | GetPointer (const Ptr< U > &p) |
Get a permanent pointer to the underlying object. More... | |
template<typename U > | |
U * | PeekPointer (const Ptr< U > &p) |
Get a temporary pointer to the underlying object. More... | |
class | Ptr< const T > |
Interoperate with const instances. More... | |
Smart pointer class similar to boost::intrusive_ptr
.
This smart-pointer class assumes that the underlying type provides a pair of Ref
and Unref
methods which are expected to increment and decrement the internal reference count of the object instance. You can add Ref
and Unref
to a class simply by inheriting from ns3::SimpleRefCount.
This implementation allows you to manipulate the smart pointer as if it was a normal pointer: you can compare it with zero, compare it against other pointers, assign zero to it, etc.
It is possible to extract the raw pointer from this smart pointer with the GetPointer() and PeekPointer() methods.
If you want to store a new
object into a smart pointer, we recommend you to use the Create() template functions to create the object and store it in a smart pointer to avoid memory leaks. These functions are really small convenience functions and their goal is just is save you a small bit of typing.
T | [explicit] The type of the underlying object. |
Create a smart pointer which points to the object pointed to by the input raw pointer ptr.
This method creates its own reference to the pointed object. The caller is responsible for Unref()'ing its own reference, and the smart pointer will eventually do the same, so that object is deleted if no more references to it remain.
[in] | ptr | Raw pointer to manage |
Definition at line 589 of file ptr.h.
References ns3::Ptr< T >::Acquire().
Create a smart pointer which points to the object pointed to by the input raw pointer ptr.
[in] | ptr | Raw pointer to manage |
[in] | ref | if set to true, this method calls Ref, otherwise, it does not call Ref. |
Definition at line 596 of file ptr.h.
References ns3::Ptr< T >::Acquire().
Copy by referencing the same underlying object.
[in] | o | The other Ptr instance. |
Definition at line 606 of file ptr.h.
References ns3::Ptr< T >::Acquire().
Copy, removing const
qualifier.
U | [deduced] The type underlying the Ptr being copied. |
[in] | o | The Ptr to copy. |
Definition at line 613 of file ptr.h.
References ns3::Ptr< T >::Acquire().
|
inlineprivate |
Mark this as a a reference by incrementing the reference count.
Definition at line 575 of file ptr.h.
Referenced by ns3::Ptr< T >::Ptr().
bool ns3::Ptr< T >::operator! |
T & ns3::Ptr< T >::operator* |
A dereference.
Definition at line 671 of file ptr.h.
References NS_ASSERT_MSG.
T & ns3::Ptr< T >::operator* |
A const
dereference.
Definition at line 663 of file ptr.h.
References NS_ASSERT_MSG.
T * ns3::Ptr< T >::operator-> |
An lvalue member access.
Definition at line 647 of file ptr.h.
References NS_ASSERT_MSG.
T * ns3::Ptr< T >::operator-> |
An rvalue member access.
Definition at line 655 of file ptr.h.
References NS_ASSERT_MSG.
Assignment operator by referencing the same underlying object.
[in] | o | The other Ptr instance. |
Definition at line 630 of file ptr.h.
References ns3::Ptr< T >::m_ptr.
Get a permanent pointer to the underlying object.
The underlying refcount is incremented prior to returning to the caller so the caller is responsible for calling Unref himself.
U | [deduced] The actual type of the argument and return pointer. |
[in] | p | Smart pointer |
Get a temporary pointer to the underlying object.
The underlying refcount is not incremented prior to returning to the caller so the caller is not responsible for calling Unref himself.
U | [deduced] The actual type of the argument and return pointer. |
[in] | p | Smart pointer |
|
friend |
|
private |