A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::SimpleRefCount< T, PARENT, DELETER > Class Template Reference

A template-based reference counting class. More...

#include <simple-ref-count.h>

+ Inheritance diagram for ns3::SimpleRefCount< T, PARENT, DELETER >:
+ Collaboration diagram for ns3::SimpleRefCount< T, PARENT, DELETER >:

Public Member Functions

 SimpleRefCount ()
 Constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 

Static Public Member Functions

static void Cleanup (void)
 Noop. More...
 

Private Attributes

uint32_t m_count
 

Detailed Description

template<typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T>>
class ns3::SimpleRefCount< T, PARENT, DELETER >

A template-based reference counting class.

This template can be used to give reference-counting powers to a class. This template does not require this class to have a virtual destructor or no parent class.

Note: if you are moving to this template from the RefCountBase class, you need to be careful to mark appropriately your destructor virtual if needed. i.e., if your class has subclasses, do mark your destructor virtual.

This template takes 3 arguments but only the first argument is mandatory:

  • T: the typename of the subclass which derives from this template class. Yes, this is weird but it's a common C++ template pattern whose name is CRTP (Curiously Recursive Template Pattern)
  • PARENT: the typename of the parent of this template. By default, this typename is "'ns3::empty'" which is an empty class: compilers which implement the RBCO optimization (empty base class optimization) will make this a no-op
  • DELETER: the typename of a class which implements a public static method named 'Delete'. This method will be called whenever the SimpleRefCount template detects that no references to the object it manages exist anymore.

Interesting users of this class include ns3::Object as well as ns3::Packet.

Definition at line 64 of file simple-ref-count.h.

Constructor & Destructor Documentation

template<typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T>>
ns3::SimpleRefCount< T, PARENT, DELETER >::SimpleRefCount ( )
inline

Constructor.

Definition at line 70 of file simple-ref-count.h.

template<typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T>>
ns3::SimpleRefCount< T, PARENT, DELETER >::SimpleRefCount ( const SimpleRefCount< T, PARENT, DELETER > &  o)
inline

Copy constructor.

Definition at line 76 of file simple-ref-count.h.

Member Function Documentation

template<typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T>>
static void ns3::SimpleRefCount< T, PARENT, DELETER >::Cleanup ( void  )
inlinestatic

Noop.

Definition at line 124 of file simple-ref-count.h.

template<typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T>>
uint32_t ns3::SimpleRefCount< T, PARENT, DELETER >::GetReferenceCount ( void  ) const
inline

Get the reference count of the object.

Normally not needed; for language bindings.

Definition at line 116 of file simple-ref-count.h.

Referenced by ns3::Object::CheckLoose(), and ns3::Object::DoDelete().

+ Here is the caller graph for this function:

template<typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T>>
SimpleRefCount& ns3::SimpleRefCount< T, PARENT, DELETER >::operator= ( const SimpleRefCount< T, PARENT, DELETER > &  o)
inline

Assignment.

Definition at line 82 of file simple-ref-count.h.

template<typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T>>
void ns3::SimpleRefCount< T, PARENT, DELETER >::Ref ( void  ) const
inline

Increment the reference count.

This method should not be called by user code. SimpleRefCount instances are expected to be used in conjunction with the Ptr template which would make calling Ref unnecessary and dangerous.

Definition at line 92 of file simple-ref-count.h.

template<typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T>>
void ns3::SimpleRefCount< T, PARENT, DELETER >::Unref ( void  ) const
inline

Decrement the reference count.

This method should not be called by user code. SimpleRefCount instances are expected to be used in conjunction with the Ptr template which would make calling Ref unnecessary and dangerous.

Definition at line 103 of file simple-ref-count.h.

Referenced by ns3::DefaultSimulatorImpl::DoDispose(), ns3::RealtimeSimulatorImpl::DoDispose(), ns3::NullMessageSimulatorImpl::DoDispose(), ns3::DistributedSimulatorImpl::DoDispose(), main(), ns3::DefaultSimulatorImpl::ProcessOneEvent(), ns3::NullMessageSimulatorImpl::ProcessOneEvent(), and ns3::DistributedSimulatorImpl::ProcessOneEvent().

+ Here is the caller graph for this function:

Member Data Documentation

template<typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T>>
uint32_t ns3::SimpleRefCount< T, PARENT, DELETER >::m_count
mutableprivate

The documentation for this class was generated from the following file: