19 void _increaseRefCount() noexcept {
22 void _decreaseRefCount() noexcept {
23 assert( _sharedCounter > 0 );
26 size_t _getRefCount()
const noexcept {
return _sharedCounter; }
28 size_t _sharedCounter{0};
42 template <
class R,
class Deleter=std::default_delete<R> >
48 : _p(p), _deleter(deleter)
51 _p->_increaseRefCount();
55 : _p(o._p), _deleter(o._deleter)
58 _p->_increaseRefCount();
62 : _p(o._p), _deleter(o._deleter)
69 _p->_decreaseRefCount();
70 if( !_p->_getRefCount() )
83 swap( std::move(o), *
this );
89 std::swap( h1._p, h2._p );
90 std::swap( h1._deleter, h2._deleter );
93 explicit operator bool()
const noexcept {
98 R &operator*()
const noexcept {
return *_p; }
99 R *operator->()
const noexcept {
return _p; }
101 R *get()
const noexcept {
return _p; }
Handle for a resource derived from SharedResource.
Definition: memory.hpp:43
Class which implements reference counter for a shared resource.
Definition: memory.hpp:17
Definition: mainpage.dox:6