Heap memory management. More...
Files | |
file | default-deleter.h |
ns3::DefaultDeleter declaration and template implementation, for reference-counted smart pointers. | |
file | ptr-test-suite.cc |
Smart pointer test suite. | |
file | ptr.h |
ns3::Ptr smart pointer declaration and implementation. | |
file | simple-ref-count.h |
ns3::SimpleRefCount declaration and template implementation. | |
Classes | |
struct | ns3::DefaultDeleter< T > |
A template used to delete objects by the ns3::SimpleRefCount templates when the last reference to an object they manage disappears. More... | |
class | ns3::Empty |
Empty class, used as a default parent class for SimpleRefCount. More... | |
struct | std::hash< ns3::Ptr< T > > |
Hashing functor taking a Ptr and returning a std::size_t . More... | |
struct | ns3::ObjectDeleter |
Standard Object deleter, used by SimpleRefCount to delete an Object when the reference count drops to zero. More... | |
class | ns3::Ptr< T > |
Smart pointer class similar to boost::intrusive_ptr . More... | |
class | ns3::SimpleRefCount< T, PARENT, DELETER > |
A template-based reference counting class. More... | |
Functions | |
template<typename T , typename... Ts> | |
Ptr< T > | ns3::Create (Ts &&... args) |
Create class instances by constructors with varying numbers of arguments and return them by Ptr. | |
template<typename T1 , typename T2 > | |
std::enable_if< std::is_same< T2, std::nullptr_t >::value, bool >::type | ns3::operator!= (const Ptr< T1 > &lhs, T2 rhs) |
Specialization for comparison to nullptr . | |
template<typename T > | |
std::ostream & | ns3::operator<< (std::ostream &os, const Ptr< T > &p) |
Output streamer. | |
template<typename T1 , typename T2 > | |
std::enable_if< std::is_same< T2, std::nullptr_t >::value, bool >::type | ns3::operator== (const Ptr< T1 > &lhs, T2 rhs) |
Specialization for comparison to nullptr . | |
template<typename T1 , typename T2 > | |
bool | ns3::operator== (const Ptr< T1 > &lhs, T2 const *rhs) |
Equality operator. | |
template<typename T1 , typename T2 > | |
bool | ns3::operator== (T1 const *lhs, Ptr< T2 > &rhs) |
Equality operator. | |
template<typename T1 , typename T2 > | |
bool | ns3::operator== (const Ptr< T1 > &lhs, const Ptr< T2 > &rhs) |
Equality operator. | |
template<typename T1 , typename T2 > | |
bool | ns3::operator!= (const Ptr< T1 > &lhs, T2 const *rhs) |
Inequality operator. | |
template<typename T1 , typename T2 > | |
bool | ns3::operator!= (T1 const *lhs, Ptr< T2 > &rhs) |
Inequality operator. | |
template<typename T1 , typename T2 > | |
bool | ns3::operator!= (const Ptr< T1 > &lhs, const Ptr< T2 > &rhs) |
Inequality operator. | |
template<typename T > | |
bool | ns3::operator< (const Ptr< T > &lhs, const Ptr< T > &rhs) |
Comparison operator applied to the underlying pointers. | |
template<typename T > | |
bool | ns3::operator< (const Ptr< T > &lhs, const Ptr< const T > &rhs) |
Comparison operator applied to the underlying pointers. | |
template<typename T > | |
bool | ns3::operator< (const Ptr< const T > &lhs, const Ptr< T > &rhs) |
Comparison operator applied to the underlying pointers. | |
template<typename T > | |
bool | ns3::operator<= (const Ptr< T > &lhs, const Ptr< T > &rhs) |
Comparison operator applied to the underlying pointers. | |
template<typename T > | |
bool | ns3::operator> (const Ptr< T > &lhs, const Ptr< T > &rhs) |
Comparison operator applied to the underlying pointers. | |
template<typename T > | |
bool | ns3::operator>= (const Ptr< T > &lhs, const Ptr< T > &rhs) |
Comparison operator applied to the underlying pointers. | |
Heap memory management.
See ns3::Ptr for implementation details.
See main-ptr.cc for example usage.
Ptr< T > ns3::Create | ( | Ts &&... | args | ) |
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
This template work for any class T
derived from ns3::SimpleRefCount
T | [explicit] The type of class object to create. |
Ts | [deduced] Types of the constructor arguments. |
[in] | args | Constructor arguments. |
T
. Definition at line 481 of file ptr.h.
Referenced by ns3::Callback< R, UArgs >::Callback(), ns3::TypeId::AddConstructor(), ns3::Callback< R, UArgs >::BindImpl(), ns3::TupleValue< Args >::Copy(), ns3::internal::TupleChecker< Args >::Create(), ns3::internal::MakeDoubleChecker(), ns3::internal::MakeIntegerChecker(), ns3::MakeSimpleAttributeChecker(), ns3::MakeTimeChecker(), ns3::internal::TupleHelper< Args >::MakeTupleChecker(), ns3::internal::TupleHelper< std::tuple< Args... > >::MakeTupleChecker(), and ns3::internal::MakeUintegerChecker().
bool ns3::operator!= | ( | const Ptr< T1 > & | lhs, |
const Ptr< T2 > & | rhs | ||
) |
Inequality operator.
This enables code such as
Note that either p
or q
could also be ordinary pointers to the underlying object.
T1 | [deduced] Type of the object on the lhs. |
T2 | [deduced] Type of the object on the rhs. |
[in] | lhs | The left operand. |
[in] | rhs | The right operand. |
true
if the operands point to the same underlying object. Definition at line 546 of file ptr.h.
References ns3::PeekPointer().
bool ns3::operator!= | ( | const Ptr< T1 > & | lhs, |
T2 const * | rhs | ||
) |
Inequality operator.
This enables code such as
Note that either p
or q
could also be ordinary pointers to the underlying object.
T1 | [deduced] Type of the object on the lhs. |
T2 | [deduced] Type of the object on the rhs. |
[in] | lhs | The left operand. |
[in] | rhs | The right operand. |
true
if the operands point to the same underlying object. Definition at line 525 of file ptr.h.
References ns3::PeekPointer().
std::enable_if< std::is_same< T2, std::nullptr_t >::value, bool >::type ns3::operator!= | ( | const Ptr< T1 > & | lhs, |
T2 | rhs | ||
) |
Specialization for comparison to nullptr
.
Equality operator.
This enables code such as
Note that either p
or q
could also be ordinary pointers to the underlying object.
T1 | [deduced] Type of the object on the lhs. |
T2 | [deduced] Type of the object on the rhs. |
[in] | lhs | The left operand. |
[in] | rhs | The right operand. |
true
if the operands point to the same underlying object. Definition at line 560 of file ptr.h.
References ns3::PeekPointer().
bool ns3::operator!= | ( | T1 const * | lhs, |
Ptr< T2 > & | rhs | ||
) |
Inequality operator.
This enables code such as
Note that either p
or q
could also be ordinary pointers to the underlying object.
T1 | [deduced] Type of the object on the lhs. |
T2 | [deduced] Type of the object on the rhs. |
[in] | lhs | The left operand. |
[in] | rhs | The right operand. |
true
if the operands point to the same underlying object. Definition at line 532 of file ptr.h.
References ns3::PeekPointer().
std::ostream & ns3::operator<< | ( | std::ostream & | os, |
const Ptr< T > & | p | ||
) |
Output streamer.
T | [deduced] The type of the underlying Object. |
[in,out] | os | The output stream. |
[in] | p | The Ptr. |
Definition at line 502 of file ptr.h.
References ns3::PeekPointer().
bool ns3::operator== | ( | const Ptr< T1 > & | lhs, |
const Ptr< T2 > & | rhs | ||
) |
Equality operator.
This enables code such as
Note that either p
or q
could also be ordinary pointers to the underlying object.
T1 | [deduced] Type of the object on the lhs. |
T2 | [deduced] Type of the object on the rhs. |
[in] | lhs | The left operand. |
[in] | rhs | The right operand. |
true
if the operands point to the same underlying object. Definition at line 539 of file ptr.h.
References ns3::PeekPointer().
bool ns3::operator== | ( | const Ptr< T1 > & | lhs, |
T2 const * | rhs | ||
) |
Equality operator.
This enables code such as
Note that either p
or q
could also be ordinary pointers to the underlying object.
T1 | [deduced] Type of the object on the lhs. |
T2 | [deduced] Type of the object on the rhs. |
[in] | lhs | The left operand. |
[in] | rhs | The right operand. |
true
if the operands point to the same underlying object. Definition at line 511 of file ptr.h.
References ns3::PeekPointer().
std::enable_if< std::is_same< T2, std::nullptr_t >::value, bool >::type ns3::operator== | ( | const Ptr< T1 > & | lhs, |
T2 | rhs | ||
) |
Specialization for comparison to nullptr
.
Equality operator.
This enables code such as
Note that either p
or q
could also be ordinary pointers to the underlying object.
T1 | [deduced] Type of the object on the lhs. |
T2 | [deduced] Type of the object on the rhs. |
[in] | lhs | The left operand. |
[in] | rhs | The right operand. |
true
if the operands point to the same underlying object. Definition at line 553 of file ptr.h.
References ns3::PeekPointer().
bool ns3::operator== | ( | T1 const * | lhs, |
Ptr< T2 > & | rhs | ||
) |
Equality operator.
This enables code such as
Note that either p
or q
could also be ordinary pointers to the underlying object.
T1 | [deduced] Type of the object on the lhs. |
T2 | [deduced] Type of the object on the rhs. |
[in] | lhs | The left operand. |
[in] | rhs | The right operand. |
true
if the operands point to the same underlying object. Definition at line 518 of file ptr.h.
References ns3::PeekPointer().