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. More... | |
template<typename T1 , typename T2 > | |
std::enable_if_t< std::is_same_v< T2, std::nullptr_t >, bool > | ns3::operator!= (const Ptr< T1 > &lhs, T2 rhs) |
Specialization for comparison to nullptr . More... | |
template<typename T > | |
std::ostream & | ns3::operator<< (std::ostream &os, const Ptr< T > &p) |
Output streamer. More... | |
template<typename T1 , typename T2 > | |
std::enable_if_t< std::is_same_v< T2, std::nullptr_t >, bool > | ns3::operator== (const Ptr< T1 > &lhs, T2 rhs) |
Specialization for comparison to nullptr . More... | |
template<typename T1 , typename T2 > | |
bool | ns3::operator== (const Ptr< T1 > &lhs, T2 const *rhs) |
Equality operator. More... | |
template<typename T1 , typename T2 > | |
bool | ns3::operator== (T1 const *lhs, Ptr< T2 > &rhs) |
Equality operator. More... | |
template<typename T1 , typename T2 > | |
bool | ns3::operator== (const Ptr< T1 > &lhs, const Ptr< T2 > &rhs) |
Equality operator. More... | |
template<typename T1 , typename T2 > | |
bool | ns3::operator!= (const Ptr< T1 > &lhs, T2 const *rhs) |
Inequality operator. More... | |
template<typename T1 , typename T2 > | |
bool | ns3::operator!= (T1 const *lhs, Ptr< T2 > &rhs) |
Inequality operator. More... | |
template<typename T1 , typename T2 > | |
bool | ns3::operator!= (const Ptr< T1 > &lhs, const Ptr< T2 > &rhs) |
Inequality operator. More... | |
template<typename T > | |
bool | ns3::operator< (const Ptr< T > &lhs, const Ptr< T > &rhs) |
Comparison operator applied to the underlying pointers. More... | |
template<typename T > | |
bool | ns3::operator< (const Ptr< T > &lhs, const Ptr< const T > &rhs) |
Comparison operator applied to the underlying pointers. More... | |
template<typename T > | |
bool | ns3::operator< (const Ptr< const T > &lhs, const Ptr< T > &rhs) |
Comparison operator applied to the underlying pointers. More... | |
template<typename T > | |
bool | ns3::operator<= (const Ptr< T > &lhs, const Ptr< T > &rhs) |
Comparison operator applied to the underlying pointers. More... | |
template<typename T > | |
bool | ns3::operator> (const Ptr< T > &lhs, const Ptr< T > &rhs) |
Comparison operator applied to the underlying pointers. More... | |
template<typename T > | |
bool | ns3::operator>= (const Ptr< T > &lhs, const Ptr< T > &rhs) |
Comparison operator applied to the underlying pointers. More... | |
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 442 of file ptr.h.
References check-style-clang-format::args.
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 507 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 486 of file ptr.h.
References ns3::PeekPointer().
std::enable_if_t< std::is_same_v< T2, std::nullptr_t >, bool > 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 521 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 493 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 463 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 500 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 472 of file ptr.h.
References ns3::PeekPointer().
std::enable_if_t< std::is_same_v< T2, std::nullptr_t >, bool > 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 514 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 479 of file ptr.h.
References ns3::PeekPointer().