A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Smart Pointer

Heap memory management. More...

+ Collaboration diagram for Smart Pointer:

Files

file  default-deleter.h
 Default deletion implementation for reference-counted smart pointers.
 
file  ptr.h
 Smart pointer implementation.
 
file  ref-count-base.cc
 (Deprecated) ns3::RefCountBase implementation.
 
file  ref-count-base.h
 (Deprecated) ns3::RefCountBase declaration.
 
file  simple-ref-count.h
 Reference counting for smart pointers.
 

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...
 
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 >
Ptr< T > ns3::Create (void)
 Create class instances by constructors with varying numbers of arguments and return them by Ptr. More...
 
template<typename T , typename T1 >
Ptr< T > ns3::Create (T1 a1)
 
template<typename T , typename T1 , typename T2 >
Ptr< T > ns3::Create (T1 a1, T2 a2)
 
template<typename T , typename T1 , typename T2 , typename T3 >
Ptr< T > ns3::Create (T1 a1, T2 a2, T3 a3)
 
template<typename T , typename T1 , typename T2 , typename T3 , typename T4 >
Ptr< T > ns3::Create (T1 a1, T2 a2, T3 a3, T4 a4)
 
template<typename T , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
Ptr< T > ns3::Create (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5)
 
template<typename T , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
Ptr< T > ns3::Create (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6)
 
template<typename T , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
Ptr< T > ns3::Create (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7)
 
template<typename T >
std::ostream & ns3::operator<< (std::ostream &os, const Ptr< T > &p)
 Output streamer. More...
 
template<typename T1 , typename T2 >
bool ns3::operator== (Ptr< T1 > const &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== (Ptr< T1 > const &lhs, Ptr< T2 > const &rhs)
 Equality operator. More...
 
template<typename T1 , typename T2 >
bool ns3::operator!= (Ptr< T1 > const &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!= (Ptr< T1 > const &lhs, Ptr< T2 > const &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< 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...
 

Detailed Description

Heap memory management.

See ns3::Ptr for implementation details.

See main-ptr.cc for example usage.

Function Documentation

template<typename T >
Ptr< T > ns3::Create ( void  )

Create class instances by constructors with varying numbers of arguments and return them by Ptr.

These methods work for any class T.

See Also
CreateObject for methods to create derivatives of ns3::Object
Template Parameters
T[explicit] The type of class object to create.
Returns
A Ptr to the newly created T.

Definition at line 514 of file ptr.h.

Referenced by ns3::TypeId::AddConstructor(), ns3::internal::MakeDoubleChecker(), ns3::internal::MakeIntegerChecker(), ns3::MakeSimpleAttributeChecker(), ns3::MakeTimeChecker(), and ns3::internal::MakeUintegerChecker().

+ Here is the caller graph for this function:

template<typename T , typename T1 >
Ptr< T > ns3::Create ( T1  a1)
Template Parameters
T[explicit] The type of class object to create.
T1[deduced] The type of the first constructor argument.
Parameters
[in]a1The first constructor argument.
Returns
A Ptr to the newly created T.

Definition at line 520 of file ptr.h.

template<typename T , typename T1 , typename T2 >
Ptr< T > ns3::Create ( T1  a1,
T2  a2 
)
Template Parameters
T[explicit] The type of class object to create.
T1[deduced] The type of the first constructor argument.
T2[deduced] The type of the second constructor argument.
Parameters
[in]a1The first constructor argument.
[in]a2The second constructor argument.
Returns
A Ptr to the newly created T.

Definition at line 526 of file ptr.h.

template<typename T , typename T1 , typename T2 , typename T3 >
Ptr< T > ns3::Create ( T1  a1,
T2  a2,
T3  a3 
)
Template Parameters
T[explicit] The type of class object to create.
T1[deduced] The type of the first constructor argument.
T2[deduced] The type of the second constructor argument.
T3[deduced] The type of the third constructor argument.
Parameters
[in]a1The first constructor argument.
[in]a2The second constructor argument.
[in]a3The third constructor argument.
Returns
A Ptr to the newly created T.

Definition at line 532 of file ptr.h.

template<typename T , typename T1 , typename T2 , typename T3 , typename T4 >
Ptr< T > ns3::Create ( T1  a1,
T2  a2,
T3  a3,
T4  a4 
)
Template Parameters
T[explicit] The type of class object to create.
T1[deduced] The type of the first constructor argument.
T2[deduced] The type of the second constructor argument.
T3[deduced] The type of the third constructor argument.
T4[deduced] The type of the fourth constructor argument.
Parameters
[in]a1The first constructor argument.
[in]a2The second constructor argument.
[in]a3The third constructor argument.
[in]a4The fourth constructor argument.
Returns
A Ptr to the newly created T.

Definition at line 538 of file ptr.h.

template<typename T , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
Ptr< T > ns3::Create ( T1  a1,
T2  a2,
T3  a3,
T4  a4,
T5  a5 
)
Template Parameters
T[explicit] The type of class object to create.
T1[deduced] The type of the first constructor argument.
T2[deduced] The type of the second constructor argument.
T3[deduced] The type of the third constructor argument.
T4[deduced] The type of the fourth constructor argument.
T5[deduced] The type of the fifth constructor argument.
Parameters
[in]a1The first constructor argument.
[in]a2The second constructor argument.
[in]a3The third constructor argument.
[in]a4The fourth constructor argument.
[in]a5The fifth constructor argument.
Returns
A Ptr to the newly created T.

Definition at line 544 of file ptr.h.

template<typename T , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
Ptr< T > ns3::Create ( T1  a1,
T2  a2,
T3  a3,
T4  a4,
T5  a5,
T6  a6 
)
Template Parameters
T[explicit] The type of class object to create.
T1[deduced] The type of the first constructor argument.
T2[deduced] The type of the second constructor argument.
T3[deduced] The type of the third constructor argument.
T4[deduced] The type of the fourth constructor argument.
T5[deduced] The type of the fifth constructor argument.
T6[deduced] The type of the sixth constructor argument.
Parameters
[in]a1The first constructor argument.
[in]a2The second constructor argument.
[in]a3The third constructor argument.
[in]a4The fourth constructor argument.
[in]a5The fifth constructor argument.
[in]a6The sixth constructor argument.
Returns
A Ptr to the newly created T.

Definition at line 550 of file ptr.h.

template<typename T , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
Ptr< T > ns3::Create ( T1  a1,
T2  a2,
T3  a3,
T4  a4,
T5  a5,
T6  a6,
T7  a7 
)
Template Parameters
T[explicit] The type of class object to create.
T1[deduced] The type of the first constructor argument.
T2[deduced] The type of the second constructor argument.
T3[deduced] The type of the third constructor argument.
T4[deduced] The type of the fourth constructor argument.
T5[deduced] The type of the fifth constructor argument.
T6[deduced] The type of the sixth constructor argument.
T7[deduced] The type of the seventh constructor argument.
Parameters
[in]a1The first constructor argument.
[in]a2The second constructor argument.
[in]a3The third constructor argument.
[in]a4The fourth constructor argument.
[in]a5The fifth constructor argument.
[in]a6The sixth constructor argument.
[in]a7The seventh constructor argument.
Returns
A Ptr to the newly created T.

Definition at line 556 of file ptr.h.

template<typename T1 , typename T2 >
bool ns3::operator!= ( Ptr< T1 > const &  lhs,
T2 const *  rhs 
)

Inequality operator.

This enables code such as

Ptr<...> p = ...;
Ptr<...> q = ...;
if (p != q) ...

Note that either p or q could also be ordinary pointers to the underlying object.

Template Parameters
T1[deduced] Type of the object on the lhs.
T2[deduced] Type of the object on the rhs.
Parameters
[in]lhsThe left operand.
[in]rhsThe right operand.
Returns
true if the operands point to the same underlying object.

Definition at line 597 of file ptr.h.

References ns3::PeekPointer().

+ Here is the call graph for this function:

template<typename T1 , typename T2 >
bool ns3::operator!= ( T1 const *  lhs,
Ptr< T2 > &  rhs 
)

Inequality operator.

This enables code such as

Ptr<...> p = ...;
Ptr<...> q = ...;
if (p != q) ...

Note that either p or q could also be ordinary pointers to the underlying object.

Template Parameters
T1[deduced] Type of the object on the lhs.
T2[deduced] Type of the object on the rhs.
Parameters
[in]lhsThe left operand.
[in]rhsThe right operand.
Returns
true if the operands point to the same underlying object.

Definition at line 604 of file ptr.h.

References ns3::PeekPointer().

+ Here is the call graph for this function:

template<typename T1 , typename T2 >
bool ns3::operator!= ( Ptr< T1 > const &  lhs,
Ptr< T2 > const &  rhs 
)

Inequality operator.

This enables code such as

Ptr<...> p = ...;
Ptr<...> q = ...;
if (p != q) ...

Note that either p or q could also be ordinary pointers to the underlying object.

Template Parameters
T1[deduced] Type of the object on the lhs.
T2[deduced] Type of the object on the rhs.
Parameters
[in]lhsThe left operand.
[in]rhsThe right operand.
Returns
true if the operands point to the same underlying object.

Definition at line 618 of file ptr.h.

References ns3::PeekPointer().

+ Here is the call graph for this function:

template<typename T >
bool ns3::operator< ( const Ptr< T > &  lhs,
const Ptr< T > &  rhs 
)

Comparison operator applied to the underlying pointers.

Parameters
[in]lhsThe left operand.
[in]rhsThe right operand.
Returns
The comparison on the underlying pointers.

Definition at line 624 of file ptr.h.

template<typename T >
std::ostream & ns3::operator<< ( std::ostream &  os,
const Ptr< T > &  p 
)

Output streamer.

Parameters
[in,out]osThe output stream.
[in]pThe Ptr.
Returns
The stream.

Definition at line 575 of file ptr.h.

References ns3::PeekPointer().

+ Here is the call graph for this function:

template<typename T >
bool ns3::operator<= ( const Ptr< T > &  lhs,
const Ptr< T > &  rhs 
)

Comparison operator applied to the underlying pointers.

Parameters
[in]lhsThe left operand.
[in]rhsThe right operand.
Returns
The comparison on the underlying pointers.

Definition at line 630 of file ptr.h.

template<typename T1 , typename T2 >
bool ns3::operator== ( Ptr< T1 > const &  lhs,
T2 const *  rhs 
)

Equality operator.

This enables code such as

Ptr<...> p = ...;
Ptr<...> q = ...;
if (p == q) ...

Note that either p or q could also be ordinary pointers to the underlying object.

Template Parameters
T1[deduced] Type of the object on the lhs.
T2[deduced] Type of the object on the rhs.
Parameters
[in]lhsThe left operand.
[in]rhsThe right operand.
Returns
true if the operands point to the same underlying object.

Definition at line 583 of file ptr.h.

References ns3::PeekPointer().

+ Here is the call graph for this function:

template<typename T1 , typename T2 >
bool ns3::operator== ( T1 const *  lhs,
Ptr< T2 > &  rhs 
)

Equality operator.

This enables code such as

Ptr<...> p = ...;
Ptr<...> q = ...;
if (p == q) ...

Note that either p or q could also be ordinary pointers to the underlying object.

Template Parameters
T1[deduced] Type of the object on the lhs.
T2[deduced] Type of the object on the rhs.
Parameters
[in]lhsThe left operand.
[in]rhsThe right operand.
Returns
true if the operands point to the same underlying object.

Definition at line 590 of file ptr.h.

References ns3::PeekPointer().

+ Here is the call graph for this function:

template<typename T1 , typename T2 >
bool ns3::operator== ( Ptr< T1 > const &  lhs,
Ptr< T2 > const &  rhs 
)

Equality operator.

This enables code such as

Ptr<...> p = ...;
Ptr<...> q = ...;
if (p == q) ...

Note that either p or q could also be ordinary pointers to the underlying object.

Template Parameters
T1[deduced] Type of the object on the lhs.
T2[deduced] Type of the object on the rhs.
Parameters
[in]lhsThe left operand.
[in]rhsThe right operand.
Returns
true if the operands point to the same underlying object.

Definition at line 611 of file ptr.h.

References ns3::PeekPointer().

+ Here is the call graph for this function:

template<typename T >
bool ns3::operator> ( const Ptr< T > &  lhs,
const Ptr< T > &  rhs 
)

Comparison operator applied to the underlying pointers.

Parameters
[in]lhsThe left operand.
[in]rhsThe right operand.
Returns
The comparison on the underlying pointers.

Definition at line 636 of file ptr.h.

template<typename T >
bool ns3::operator>= ( const Ptr< T > &  lhs,
const Ptr< T > &  rhs 
)

Comparison operator applied to the underlying pointers.

Parameters
[in]lhsThe left operand.
[in]rhsThe right operand.
Returns
The comparison on the underlying pointers.

Definition at line 642 of file ptr.h.