senf::intrusive_refcount_t< Self > Class Template Reference

Customizable reference count mixin for intrusive_ptr. More...

#include <senf/Utils/intrusive_refcount.hh>

Inheritance diagram for senf::intrusive_refcount_t< Self >:

Protected Member Functions

 intrusive_refcount_t ()
 
- Protected Member Functions inherited from senf::intrusive_refcount_base
 intrusive_refcount_base ()
 
void add_ref ()
 
bool release ()
 

Additional Inherited Members

- Public Types inherited from senf::intrusive_refcount_base
typedef unsigned refcount_t
 reference count type More...
 
- Public Member Functions inherited from senf::intrusive_refcount_base
virtual ~intrusive_refcount_base ()
 
refcount_t refcount () const
 current refcount More...
 
bool is_shared () const
 return true if refcount() > 1 More...
 

Detailed Description

template<class Self>
class senf::intrusive_refcount_t< Self >

Customizable reference count mixin for intrusive_ptr.

This class provides a simple internally managed refcount and supplies the boost::intrusive_ptr required interface. To make a class compatible with boost::intrusive_ptr, just derive publicly from intrusive_refcount_t.

class SomeClass
: public intrusive_refcount_t<SomeClass>
{
// ...
private:
typedef intrusive_refcount_t<SomeClass> intrusive_base;
void add_ref()
{
// somehow call intrusive_base::add_ref()
}
bool release()
{
// Call intrusive_base::release() to decrement the
// refcount. This call will return 'true' when the refcount reaches 0.
// Return 'true', if the instance shall be deleted
}
// Needed to give intrusive_base access to 'add_ref' and 'release'
friend class intrusive_base;
};
    Two additional benefits of using intrusive_refcount are
    \li The object can access it's own refcount
    \li It is valid and safe to convert a plain object pointer to an intrusive_ptr at any time
        (not only after new)

    This class allows to customize the reference counting strategy (e.g. additional refcounting
    within another object or checking some additional condition before deleting the object when
    the refcount reaches 0).

    The interface of this class is defined in \ref intrusive_refcount_base (which you should not
    use directly).

Definition at line 28 of file intrusive_refcount.hh.

Constructor & Destructor Documentation

◆ intrusive_refcount_t()

template<class Self>
senf::intrusive_refcount_t< Self >::intrusive_refcount_t ( )
protected

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