STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Types | Public Member Functions | Private Attributes | Friends | List of all members
_Ptr_base< _Ty > Class Template Reference
Inheritance diagram for _Ptr_base< _Ty >:
shared_ptr< _Ty > weak_ptr< _Ty >

Public Types

typedef _Ptr_base< _Ty > _Myt
 
typedef _Ty element_type
 

Public Member Functions

constexpr _Ptr_base () _NOEXCEPT
 
 _Ptr_base (_Myt &&_Right)
 
template<class _Ty2 >
 _Ptr_base (_Ptr_base< _Ty2 > &&_Right)
 
_Mytoperator= (_Myt &&_Right)
 
void _Assign_rv (_Myt &&_Right)
 
long use_count () const _NOEXCEPT
 
void _Swap (_Ptr_base &_Right) _NOEXCEPT
 
template<class _Ty2 >
bool owner_before (const _Ptr_base< _Ty2 > &_Right) const
 
void_Get_deleter (const type_info &_Typeid) const _NOEXCEPT
 
_Ty * _Get () const _NOEXCEPT
 
bool _Expired () const _NOEXCEPT
 
void _Decref ()
 
void _Reset ()
 
template<class _Ty2 >
void _Reset (const _Ptr_base< _Ty2 > &_Other)
 
template<class _Ty2 >
bool _Reset_weak (const _Ptr_base< _Ty2 > &_Other)
 
template<class _Ty2 >
void _Reset (_Ty *_Other_ptr, const _Ptr_base< _Ty2 > &_Other)
 
void _Reset (_Ty *_Other_ptr, _Ref_count_base *_Other_rep)
 
bool _Reset_weak (_Ty *_Other_ptr, _Ref_count_base *_Other_rep)
 
void _Reset0 (_Ty *_Other_ptr, _Ref_count_base *_Other_rep)
 
void _Decwref ()
 
void _Resetw ()
 
template<class _Ty2 >
void _Resetw (const _Ptr_base< _Ty2 > &_Other)
 
template<class _Ty2 >
void _Resetw (_Ty2 *_Other_ptr, _Ref_count_base *_Other_rep)
 

Private Attributes

_Ty * _Ptr
 
_Ref_count_base_Rep
 

Friends

template<class _Ty0 >
class _Ptr_base
 

Member Typedef Documentation

template<class _Ty>
typedef _Ptr_base<_Ty> _Ptr_base< _Ty >::_Myt
template<class _Ty>
typedef _Ty _Ptr_base< _Ty >::element_type

Constructor & Destructor Documentation

template<class _Ty>
constexpr _Ptr_base< _Ty >::_Ptr_base ( )
inline
696  : _Ptr(0), _Rep(0)
697  { // construct
698  }
_Ty * _Ptr
Definition: memory:854
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
_Ptr_base< _Ty >::_Ptr_base ( _Myt &&  _Right)
inline
701  : _Ptr(_Right._Ptr), _Rep(_Right._Rep)
702  { // construct _Ptr_base object that takes resource from _Right
703  _Right._Ptr = 0;
704  _Right._Rep = 0;
705  }
_Ty * _Ptr
Definition: memory:854
_Ref_count_base * _Rep
Definition: memory:855
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty>
template<class _Ty2 >
_Ptr_base< _Ty >::_Ptr_base ( _Ptr_base< _Ty2 > &&  _Right)
inline
709  : _Ptr(_Right._Ptr), _Rep(_Right._Rep)
710  { // construct _Ptr_base object that takes resource from _Right
711  _Right._Ptr = 0;
712  _Right._Rep = 0;
713  }
_Ty * _Ptr
Definition: memory:854
_Ref_count_base * _Rep
Definition: memory:855

Member Function Documentation

template<class _Ty>
void _Ptr_base< _Ty >::_Assign_rv ( _Myt &&  _Right)
inline
722  { // assign by moving _Right
723  _Swap(_Right);
724  }
void _Swap(_Ptr_base &_Right) _NOEXCEPT
Definition: memory:731
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty>
void _Ptr_base< _Ty >::_Decref ( )
inline
759  { // decrement reference count
760  if (_Rep != 0)
761  _Rep->_Decref();
762  }
void _Decref()
Definition: memory:533
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
void _Ptr_base< _Ty >::_Decwref ( )
inline
826  { // decrement weak reference count
827  if (_Rep != 0)
828  _Rep->_Decwref();
829  }
void _Decwref()
Definition: memory:542
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
bool _Ptr_base< _Ty >::_Expired ( ) const
inline
754  { // test if expired
755  return (!_Rep || _Rep->_Expired());
756  }
bool _Expired() const _NOEXCEPT
Definition: memory:553
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
_Ty* _Ptr_base< _Ty >::_Get ( ) const
inline
749  { // return pointer to resource
750  return (_Ptr);
751  }
_Ty * _Ptr
Definition: memory:854
template<class _Ty>
void* _Ptr_base< _Ty >::_Get_deleter ( const type_info _Typeid) const
inline
744  { // return pointer to deleter object if its type is _Typeid
745  return (_Rep ? _Rep->_Get_deleter(_Typeid) : 0);
746  }
virtual void * _Get_deleter(const type_info &) const _NOEXCEPT
Definition: memory:558
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
void _Ptr_base< _Ty >::_Reset ( )
inline
765  { // release resource
766  _Reset(0, 0);
767  }
void _Reset()
Definition: memory:764
template<class _Ty>
template<class _Ty2 >
void _Ptr_base< _Ty >::_Reset ( const _Ptr_base< _Ty2 > &  _Other)
inline
771  { // release resource and take ownership of _Other._Ptr
772  _Reset(_Other._Ptr, _Other._Rep);
773  }
void _Reset()
Definition: memory:764
_Ty * _Ptr
Definition: memory:854
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
template<class _Ty2 >
void _Ptr_base< _Ty >::_Reset ( _Ty *  _Other_ptr,
const _Ptr_base< _Ty2 > &  _Other 
)
inline
794  { // release resource and alias _Other_ptr with _Other
795  _Reset(_Other_ptr, _Other._Rep);
796  }
void _Reset()
Definition: memory:764
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
void _Ptr_base< _Ty >::_Reset ( _Ty *  _Other_ptr,
_Ref_count_base _Other_rep 
)
inline
799  { // release resource and take _Other_ptr through _Other_rep
800  if (_Other_rep)
801  _Other_rep->_Incref();
802  _Reset0(_Other_ptr, _Other_rep);
803  }
void _Incref()
Definition: memory:523
void _Reset0(_Ty *_Other_ptr, _Ref_count_base *_Other_rep)
Definition: memory:817
template<class _Ty>
void _Ptr_base< _Ty >::_Reset0 ( _Ty *  _Other_ptr,
_Ref_count_base _Other_rep 
)
inline
818  { // release resource and take new resource
819  if (_Rep != 0)
820  _Rep->_Decref();
821  _Rep = _Other_rep;
822  _Ptr = _Other_ptr;
823  }
void _Decref()
Definition: memory:533
_Ty * _Ptr
Definition: memory:854
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
template<class _Ty2 >
bool _Ptr_base< _Ty >::_Reset_weak ( const _Ptr_base< _Ty2 > &  _Other)
inline
777  { // release resource and take ownership from weak_ptr _Other._Ptr
778  return (_Reset_weak(_Other._Ptr, _Other._Rep));
779  }
_Ty * _Ptr
Definition: memory:854
bool _Reset_weak(const _Ptr_base< _Ty2 > &_Other)
Definition: memory:776
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
bool _Ptr_base< _Ty >::_Reset_weak ( _Ty *  _Other_ptr,
_Ref_count_base _Other_rep 
)
inline
806  { // take _Other_ptr through _Other_rep from weak_ptr if not expired
807  // otherwise, leave in default state
808  if (_Other_rep && _Other_rep->_Incref_nz())
809  {
810  _Reset0(_Other_ptr, _Other_rep);
811  return (true);
812  }
813 
814  return (false);
815  }
bool _Incref_nz()
Definition: memory:494
void _Reset0(_Ty *_Other_ptr, _Ref_count_base *_Other_rep)
Definition: memory:817
template<class _Ty>
void _Ptr_base< _Ty >::_Resetw ( )
inline
832  { // release weak reference to resource
833  _Resetw((_Ty *)0, 0);
834  }
void _Resetw()
Definition: memory:831
template<class _Ty>
template<class _Ty2 >
void _Ptr_base< _Ty >::_Resetw ( const _Ptr_base< _Ty2 > &  _Other)
inline
838  { // release weak reference to resource and take _Other._Ptr
839  _Resetw(_Other._Ptr, _Other._Rep);
840  }
_Ty * _Ptr
Definition: memory:854
void _Resetw()
Definition: memory:831
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
template<class _Ty2 >
void _Ptr_base< _Ty >::_Resetw ( _Ty2 *  _Other_ptr,
_Ref_count_base _Other_rep 
)
inline
844  { // point to _Other_ptr through _Other_rep
845  if (_Other_rep)
846  _Other_rep->_Incwref();
847  if (_Rep != 0)
848  _Rep->_Decwref();
849  _Rep = _Other_rep;
850  _Ptr = const_cast<remove_cv_t<_Ty2> *>(_Other_ptr);
851  }
void _Incwref()
Definition: memory:528
_Ty * _Ptr
Definition: memory:854
typename remove_cv< _Ty >::type remove_cv_t
Definition: type_traits:2048
void _Decwref()
Definition: memory:542
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
void _Ptr_base< _Ty >::_Swap ( _Ptr_base< _Ty > &  _Right)
inline
732  { // swap pointers
733  _STD swap(_Rep, _Right._Rep);
734  _STD swap(_Ptr, _Right._Ptr);
735  }
void swap(shared_ptr< _Ty > &_Left, shared_ptr< _Ty > &_Right) _NOEXCEPT
Definition: memory:1259
_Ty * _Ptr
Definition: memory:854
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
_Myt& _Ptr_base< _Ty >::operator= ( _Myt &&  _Right)
inline
716  { // construct _Ptr_base object that takes resource from _Right
718  return (*this);
719  }
void _Assign_rv(_Myt &&_Right)
Definition: memory:721
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty>
template<class _Ty2 >
bool _Ptr_base< _Ty >::owner_before ( const _Ptr_base< _Ty2 > &  _Right) const
inline
739  { // compare addresses of manager objects
740  return (_Rep < _Right._Rep);
741  }
_Ref_count_base * _Rep
Definition: memory:855
template<class _Ty>
long _Ptr_base< _Ty >::use_count ( ) const
inline
727  { // return use count
728  return (_Rep ? _Rep->_Use_count() : 0);
729  }
long _Use_count() const _NOEXCEPT
Definition: memory:548
_Ref_count_base * _Rep
Definition: memory:855

Friends And Related Function Documentation

template<class _Ty>
template<class _Ty0 >
friend class _Ptr_base
friend

Member Data Documentation

template<class _Ty>
_Ty* _Ptr_base< _Ty >::_Ptr
private
template<class _Ty>
_Ref_count_base* _Ptr_base< _Ty >::_Rep
private

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