libzypp  17.3.1
zypp::base::ReferenceCounted Class Reference

Base class for reference counted objects. More...

#include <ReferenceCounted.h>

Inheritance diagram for zypp::base::ReferenceCounted:

Public Member Functions

 ReferenceCounted ()
 Default ctor. More...
 
 ReferenceCounted (const ReferenceCounted &rhs)
 Copy ctor. More...
 
virtual ~ReferenceCounted ()
 Dtor. More...
 
ReferenceCountedoperator= (const ReferenceCounted &)
 Assignment. More...
 
unsigned refCount () const
 Return reference counter value. More...
 
void ref () const
 Add a reference. More...
 
void unref () const
 Release a reference. More...
 

Static Public Member Functions

static void add_ref (const ReferenceCounted *ptr_r)
 Called by zypp::intrusive_ptr to add a reference. More...
 
static void release (const ReferenceCounted *ptr_r)
 Called by zypp::intrusive_ptr to add a reference. More...
 

Protected Member Functions

virtual std::ostream & dumpOn (std::ostream &str) const
 Overload to realize std::ostream & operator<<. More...
 
virtual void ref_to (unsigned) const
 Trigger derived classes after refCount was increased. More...
 
virtual void unref_to (unsigned) const
 Trigger derived classes after refCount was decreased. More...
 

Private Member Functions

void unrefException () const
 Throws Exception on unref. More...
 

Private Attributes

unsigned _counter
 The reference counter. More...
 

Friends

std::ostream & operator<< (std::ostream &str, const ReferenceCounted &obj)
 Stream output via dumpOn. More...
 

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.

Definition at line 33 of file ReferenceCounted.h.

Constructor & Destructor Documentation

◆ ReferenceCounted() [1/2]

zypp::base::ReferenceCounted::ReferenceCounted ( )

Default ctor.

Initial reference count is zero.

Definition at line 25 of file ReferenceCounted.cc.

◆ ReferenceCounted() [2/2]

zypp::base::ReferenceCounted::ReferenceCounted ( const ReferenceCounted rhs)

Copy ctor.

Initial reference count is zero.

Definition at line 29 of file ReferenceCounted.cc.

◆ ~ReferenceCounted()

zypp::base::ReferenceCounted::~ReferenceCounted ( )
virtual

Dtor.

Exceptions
std::out_of_rangeif reference count is not zero.

Definition at line 33 of file ReferenceCounted.cc.

Member Function Documentation

◆ operator=()

ReferenceCounted& zypp::base::ReferenceCounted::operator= ( const ReferenceCounted )
inline

Assignment.

Reference count remains untouched.

Definition at line 57 of file ReferenceCounted.h.

◆ refCount()

unsigned zypp::base::ReferenceCounted::refCount ( ) const
inline

Return reference counter value.

Definition at line 62 of file ReferenceCounted.h.

◆ ref()

void zypp::base::ReferenceCounted::ref ( ) const
inline

Add a reference.

Definition at line 66 of file ReferenceCounted.h.

◆ unref()

void zypp::base::ReferenceCounted::unref ( ) const
inline

Release a reference.

Deletes the object if reference count gets zero.

Exceptions
std::out_of_rangeif reference count is zero.

Definition at line 73 of file ReferenceCounted.h.

◆ add_ref()

static void zypp::base::ReferenceCounted::add_ref ( const ReferenceCounted ptr_r)
inlinestatic

Called by zypp::intrusive_ptr to add a reference.

See also
Smart pointer types

Definition at line 86 of file ReferenceCounted.h.

◆ release()

static void zypp::base::ReferenceCounted::release ( const ReferenceCounted ptr_r)
inlinestatic

Called by zypp::intrusive_ptr to add a reference.

See also
Smart pointer types

Definition at line 92 of file ReferenceCounted.h.

◆ dumpOn()

std::ostream & zypp::base::ReferenceCounted::dumpOn ( std::ostream &  str) const
protectedvirtual

◆ ref_to()

virtual void zypp::base::ReferenceCounted::ref_to ( unsigned  ) const
inlineprotectedvirtual

Trigger derived classes after refCount was increased.

Definition at line 100 of file ReferenceCounted.h.

◆ unref_to()

virtual void zypp::base::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).

Reimplemented in zypp::target::rpm::librpmDb.

Definition at line 106 of file ReferenceCounted.h.

◆ unrefException()

void zypp::base::ReferenceCounted::unrefException ( ) const
private

Throws Exception on unref.

Definition at line 41 of file ReferenceCounted.cc.

Friends And Related Function Documentation

◆ operator<< [1/2]

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

Stream output via dumpOn.

◆ intrusive_ptr_add_ref()

void intrusive_ptr_add_ref ( const ReferenceCounted ptr_r)
related

intrusive_ptr hook to add_ref.

Definition at line 118 of file ReferenceCounted.h.

◆ intrusive_ptr_release()

void intrusive_ptr_release ( const ReferenceCounted ptr_r)
related

intrusive_ptr hook to release.

Definition at line 122 of file ReferenceCounted.h.

◆ operator<<() [2/2]

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

Stream output.

Definition at line 126 of file ReferenceCounted.h.

Member Data Documentation

◆ _counter

unsigned zypp::base::ReferenceCounted::_counter
mutableprivate

The reference counter.

Definition at line 110 of file ReferenceCounted.h.


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