Heap memory management. More...
Collaboration diagram for Smart Pointer: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::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().
Here is the caller graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function: