libcamgm
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | Related Functions | List of all members
ca_mgm::ReferenceCounted Class Reference

#include <ReferenceCounted.hpp>

Inheritance diagram for ca_mgm::ReferenceCounted:
ca_mgm::ValueCheckBase ca_mgm::ValueCheck ca_mgm::ValueIntCheck ca_mgm::ValuePerlRECheck ca_mgm::ValuePosixRECheck

Public Member Functions

 ReferenceCounted ()
 
 ReferenceCounted (const ReferenceCounted &rhs)
 
virtual ~ReferenceCounted ()
 
ReferenceCountedoperator= (const ReferenceCounted &)
 
unsigned refCount () const
 
void ref () const
 
void unref () const
 

Static Public Member Functions

static void add_ref (const ReferenceCounted *ptr_r)
 
static void release (const ReferenceCounted *ptr_r)
 

Protected Member Functions

virtual std::ostream & dumpOn (std::ostream &str) const
 
virtual void ref_to (unsigned) const
 
virtual void unref_to (unsigned) const
 

Private Member Functions

void unrefException () const
 

Private Attributes

unsigned _counter
 

Friends

std::ostream & operator<< (std::ostream &str, const ReferenceCounted &obj)
 

Related Functions

(Note that these are not member functions.)

void intrusive_ptr_add_ref (const ReferenceCounted *ptr_r)
 
void intrusive_ptr_release (const ReferenceCounted *ptr_r)
 
std::ostream & operator<< (std::ostream &str, const ReferenceCounted &obj)
 

Detailed Description

Base class for reference counted objects.

Todo:
Make counter thread safe.

Constructor & Destructor Documentation

ca_mgm::ReferenceCounted::ReferenceCounted ( )

Default ctor. Initial reference count is zero.

ca_mgm::ReferenceCounted::ReferenceCounted ( const ReferenceCounted rhs)

Copy ctor. Initial reference count is zero.

virtual ca_mgm::ReferenceCounted::~ReferenceCounted ( )
virtual

Dtor.

Exceptions
std::out_of_rangeif reference count is not zero.

Member Function Documentation

static void ca_mgm::ReferenceCounted::add_ref ( const ReferenceCounted ptr_r)
inlinestatic

Called by zypp::intrusive_ptr to add a reference.

See Also
Smart pointer types

References ref().

Referenced by intrusive_ptr_add_ref().

virtual std::ostream& ca_mgm::ReferenceCounted::dumpOn ( std::ostream &  str) const
protectedvirtual

Overload to realize std::ostream & operator<<.

Referenced by operator<<().

ReferenceCounted& ca_mgm::ReferenceCounted::operator= ( const ReferenceCounted )
inline

Assignment. Reference count remains untouched.

void ca_mgm::ReferenceCounted::ref ( ) const
inline

Add a reference.

References _counter, and ref_to().

Referenced by add_ref().

virtual void ca_mgm::ReferenceCounted::ref_to ( unsigned  ) const
inlineprotectedvirtual

Trigger derived classes after refCount was increased.

Referenced by ref().

unsigned ca_mgm::ReferenceCounted::refCount ( ) const
inline

Return reference counter value.

References _counter.

static void ca_mgm::ReferenceCounted::release ( const ReferenceCounted ptr_r)
inlinestatic

Called by zypp::intrusive_ptr to add a reference.

See Also
Smart pointer types

References unref().

Referenced by intrusive_ptr_release().

void ca_mgm::ReferenceCounted::unref ( ) const
inline

Release a reference. Deletes the object if reference count gets zero.

Exceptions
std::out_of_rangeif reference count is zero.

References _counter, unref_to(), and unrefException().

Referenced by release().

virtual void ca_mgm::ReferenceCounted::unref_to ( unsigned  ) const
inlineprotectedvirtual

Trigger derived classes after refCount was decreased. No trigger is sent, if refCount got zero (i.e. the object is deleted).

Referenced by unref().

void ca_mgm::ReferenceCounted::unrefException ( ) const
private

Throws Exception on unref.

Referenced by unref().

Friends And Related Function Documentation

void intrusive_ptr_add_ref ( const ReferenceCounted ptr_r)
related

intrusive_ptr hook to add_ref.

References add_ref().

void intrusive_ptr_release ( const ReferenceCounted ptr_r)
related

intrusive_ptr hook to release.

References release().

std::ostream& operator<< ( std::ostream &  str,
const ReferenceCounted obj 
)
friend

Stream output via dumpOn.

std::ostream & operator<< ( std::ostream &  str,
const ReferenceCounted obj 
)
related

Stream output.

References dumpOn().

Member Data Documentation

unsigned ca_mgm::ReferenceCounted::_counter
mutableprivate

The reference counter.

Referenced by ref(), refCount(), and unref().


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