STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
_List_alloc< _Alloc_types > Class Template Reference

Public Types

typedef _List_alloc< _Alloc_types > _Myt
 
typedef _Alloc_types::_Alloc _Alloc
 
typedef _Alloc_types::_Alnod_type _Alty
 
typedef _Alloc_types::_Node _Node
 
typedef _Alloc_types::_Nodeptr _Nodeptr
 
typedef _Alloc_types::_Val_types _Val_types
 
typedef _Nodeptr_Nodepref
 
typedef _Val_types::value_type value_type
 
typedef _Val_types::size_type size_type
 
typedef _Val_types::difference_type difference_type
 
typedef _Val_types::pointer pointer
 
typedef _Val_types::const_pointer const_pointer
 
typedef _Val_types::reference reference
 
typedef _Val_types::const_reference const_reference
 
typedef _List_const_iterator< _List_val< _Val_types > > const_iterator
 
typedef _List_iterator< _List_val< _Val_types > > iterator
 
typedef _List_unchecked_const_iterator< _List_val< _Val_types > > _Unchecked_const_iterator
 
typedef _List_unchecked_iterator< _List_val< _Val_types > > _Unchecked_iterator
 

Public Member Functions

 _List_alloc ()
 
template<class _Any_alloc , class = enable_if_t<!is_same<decay_t<_Any_alloc>, _Myt>::value>>
 _List_alloc (_Any_alloc &&_Al)
 
 ~_List_alloc () _NOEXCEPT
 
void _Copy_alloc (const _Alty &_Al)
 
void _Move_alloc (_Alty &_Al)
 
_Nodeptr _Buyheadnode ()
 
void _Freeheadnode (_Nodeptr _Pnode)
 
_Nodeptr _Buynode0 (_Nodeptr _Next, _Nodeptr _Prev)
 
void _Orphan_all ()
 
void _Swap_all (_Myt &_Right)
 
_Alty_Getal () _NOEXCEPT
 
const _Alty_Getal () const _NOEXCEPT
 
_List_val< _Val_types > & _Get_data () _NOEXCEPT
 
const _List_val< _Val_types > & _Get_data () const _NOEXCEPT
 
_Nodeptr_Myhead () _NOEXCEPT
 
const _Nodeptr_Myhead () const _NOEXCEPT
 
size_type_Mysize () _NOEXCEPT
 
const size_type_Mysize () const _NOEXCEPT
 

Static Public Member Functions

static _Nodepref _Nextnode (_Nodeptr _Pnode)
 
static _Nodepref _Prevnode (_Nodeptr _Pnode)
 
static reference _Myval (_Nodeptr _Pnode)
 

Private Attributes

_Compressed_pair< _Alty, _List_val< _Val_types > > _Mypair
 

Member Typedef Documentation

template<class _Alloc_types>
typedef _Alloc_types::_Alloc _List_alloc< _Alloc_types >::_Alloc
template<class _Alloc_types>
typedef _Alloc_types::_Alnod_type _List_alloc< _Alloc_types >::_Alty
template<class _Alloc_types>
typedef _List_alloc<_Alloc_types> _List_alloc< _Alloc_types >::_Myt
template<class _Alloc_types>
typedef _Alloc_types::_Node _List_alloc< _Alloc_types >::_Node
template<class _Alloc_types>
typedef _Nodeptr& _List_alloc< _Alloc_types >::_Nodepref
template<class _Alloc_types>
typedef _Alloc_types::_Nodeptr _List_alloc< _Alloc_types >::_Nodeptr
template<class _Alloc_types>
typedef _List_unchecked_const_iterator<_List_val<_Val_types> > _List_alloc< _Alloc_types >::_Unchecked_const_iterator
template<class _Alloc_types>
typedef _List_unchecked_iterator<_List_val<_Val_types> > _List_alloc< _Alloc_types >::_Unchecked_iterator
template<class _Alloc_types>
typedef _Alloc_types::_Val_types _List_alloc< _Alloc_types >::_Val_types
template<class _Alloc_types>
typedef _List_const_iterator<_List_val<_Val_types> > _List_alloc< _Alloc_types >::const_iterator
template<class _Alloc_types>
typedef _Val_types::const_pointer _List_alloc< _Alloc_types >::const_pointer
template<class _Alloc_types>
typedef _Val_types::const_reference _List_alloc< _Alloc_types >::const_reference
template<class _Alloc_types>
typedef _Val_types::difference_type _List_alloc< _Alloc_types >::difference_type
template<class _Alloc_types>
typedef _List_iterator<_List_val<_Val_types> > _List_alloc< _Alloc_types >::iterator
template<class _Alloc_types>
typedef _Val_types::pointer _List_alloc< _Alloc_types >::pointer
template<class _Alloc_types>
typedef _Val_types::reference _List_alloc< _Alloc_types >::reference
template<class _Alloc_types>
typedef _Val_types::size_type _List_alloc< _Alloc_types >::size_type
template<class _Alloc_types>
typedef _Val_types::value_type _List_alloc< _Alloc_types >::value_type

Constructor & Destructor Documentation

template<class _Alloc_types>
_List_alloc< _Alloc_types >::_List_alloc ( )
inline
602  { // default construct head node
603  _Myhead() = _Buyheadnode();
604  }
_Nodeptr _Buyheadnode()
Definition: list:713
_Compressed_pair< _Alty, _List_val< _Val_types > > _Mypair
Definition: list:801
_Nodeptr & _Myhead() _NOEXCEPT
Definition: list:780
Definition: xutility:255
template<class _Alloc_types>
template<class _Any_alloc , class = enable_if_t<!is_same<decay_t<_Any_alloc>, _Myt>::value>>
_List_alloc< _Alloc_types >::_List_alloc ( _Any_alloc &&  _Al)
inline
610  _STD forward<_Any_alloc>(_Al))
611  { // construct head node, allocator from _Al
612  _Myhead() = _Buyheadnode();
613  }
_Nodeptr _Buyheadnode()
Definition: list:713
_Compressed_pair< _Alty, _List_val< _Val_types > > _Mypair
Definition: list:801
_Nodeptr & _Myhead() _NOEXCEPT
Definition: list:780
Definition: xutility:259
template<class _Alloc_types>
_List_alloc< _Alloc_types >::~_List_alloc ( )
inline
616  { // destroy head node
618  }
_Nodeptr & _Myhead() _NOEXCEPT
Definition: list:780
void _Freeheadnode(_Nodeptr _Pnode)
Definition: list:718

Member Function Documentation

template<class _Alloc_types>
_Nodeptr _List_alloc< _Alloc_types >::_Buyheadnode ( )
inline
714  { // get head node using current allocator
715  return (_Buynode0(_Nodeptr(), _Nodeptr()));
716  }
_Nodeptr _Buynode0(_Nodeptr _Next, _Nodeptr _Prev)
Definition: list:727
_Alloc_types::_Nodeptr _Nodeptr
Definition: list:562
template<class _Alloc_types>
_Nodeptr _List_alloc< _Alloc_types >::_Buynode0 ( _Nodeptr  _Next,
_Nodeptr  _Prev 
)
inline
729  { // allocate a node and set links
730  _Nodeptr _Pnode = _Getal().allocate(1);
731 
732  if (_Next == _Nodeptr())
733  { // point at self
734  _Next = _Pnode;
735  _Prev = _Pnode;
736  }
737  _TRY_BEGIN
738  _Getal().construct(
739  _STD addressof(_Nextnode(_Pnode)), _Next);
740  _Getal().construct(
741  _STD addressof(_Prevnode(_Pnode)), _Prev);
742  _CATCH_ALL
743  _Getal().deallocate(_Pnode, 1);
744  _RERAISE;
745  _CATCH_END
746 
747  return (_Pnode);
748  }
constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:723
#define _TRY_BEGIN
Definition: xstddef:60
#define _CATCH_END
Definition: xstddef:63
static _Nodepref _Prevnode(_Nodeptr _Pnode)
Definition: list:589
#define _CATCH_ALL
Definition: xstddef:62
_Alty & _Getal() _NOEXCEPT
Definition: list:760
_Alloc_types::_Nodeptr _Nodeptr
Definition: list:562
static _Nodepref _Nextnode(_Nodeptr _Pnode)
Definition: list:584
#define _RERAISE
Definition: xstddef:74
template<class _Alloc_types>
void _List_alloc< _Alloc_types >::_Copy_alloc ( const _Alty _Al)
inline
621  { // replace old allocator
622  _Pocca(_Getal(), _Al);
623  }
void _Pocca(_Alty &_Left, const _Alty &_Right, true_type) _NOEXCEPT
Definition: xmemory0:1031
_Alty & _Getal() _NOEXCEPT
Definition: list:760
template<class _Alloc_types>
void _List_alloc< _Alloc_types >::_Freeheadnode ( _Nodeptr  _Pnode)
inline
719  { // free head node using current allocator
720  _Getal().destroy(
721  _STD addressof(_Nextnode(_Pnode)));
722  _Getal().destroy(
723  _STD addressof(_Prevnode(_Pnode)));
724  _Getal().deallocate(_Pnode, 1);
725  }
constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:723
static _Nodepref _Prevnode(_Nodeptr _Pnode)
Definition: list:589
_Alty & _Getal() _NOEXCEPT
Definition: list:760
static _Nodepref _Nextnode(_Nodeptr _Pnode)
Definition: list:584
template<class _Alloc_types>
_List_val<_Val_types>& _List_alloc< _Alloc_types >::_Get_data ( )
inline
771  { // return reference to _List_val
772  return (_Mypair._Get_second());
773  }
_Ty2 & _Get_second() _NOEXCEPT
Definition: xutility:313
_Compressed_pair< _Alty, _List_val< _Val_types > > _Mypair
Definition: list:801
template<class _Alloc_types>
const _List_val<_Val_types>& _List_alloc< _Alloc_types >::_Get_data ( ) const
inline
776  { // return const reference to _List_val
777  return (_Mypair._Get_second());
778  }
_Ty2 & _Get_second() _NOEXCEPT
Definition: xutility:313
_Compressed_pair< _Alty, _List_val< _Val_types > > _Mypair
Definition: list:801
template<class _Alloc_types>
_Alty& _List_alloc< _Alloc_types >::_Getal ( )
inline
761  { // return reference to allocator
762  return (_Mypair._Get_first());
763  }
_Ty1 & _Get_first() _NOEXCEPT
Definition: xutility:293
_Compressed_pair< _Alty, _List_val< _Val_types > > _Mypair
Definition: list:801
template<class _Alloc_types>
const _Alty& _List_alloc< _Alloc_types >::_Getal ( ) const
inline
766  { // return const reference to allocator
767  return (_Mypair._Get_first());
768  }
_Ty1 & _Get_first() _NOEXCEPT
Definition: xutility:293
_Compressed_pair< _Alty, _List_val< _Val_types > > _Mypair
Definition: list:801
template<class _Alloc_types>
void _List_alloc< _Alloc_types >::_Move_alloc ( _Alty _Al)
inline
626  { // replace old allocator
627  _Pocma(_Getal(), _Al);
628  }
void _Pocma(_Alty &_Left, _Alty &_Right, true_type) _NOEXCEPT
Definition: xmemory0:1050
_Alty & _Getal() _NOEXCEPT
Definition: list:760
template<class _Alloc_types>
_Nodeptr& _List_alloc< _Alloc_types >::_Myhead ( )
inline
781  { // return reference to _Myhead
782  return (_Get_data()._Myhead);
783  }
_Nodeptr & _Myhead() _NOEXCEPT
Definition: list:780
_List_val< _Val_types > & _Get_data() _NOEXCEPT
Definition: list:770
template<class _Alloc_types>
const _Nodeptr& _List_alloc< _Alloc_types >::_Myhead ( ) const
inline
786  { // return const reference to _Myhead
787  return (_Get_data()._Myhead);
788  }
_Nodeptr & _Myhead() _NOEXCEPT
Definition: list:780
_List_val< _Val_types > & _Get_data() _NOEXCEPT
Definition: list:770
template<class _Alloc_types>
size_type& _List_alloc< _Alloc_types >::_Mysize ( )
inline
791  { // return reference to _Mysize
792  return (_Get_data()._Mysize);
793  }
size_type & _Mysize() _NOEXCEPT
Definition: list:790
_List_val< _Val_types > & _Get_data() _NOEXCEPT
Definition: list:770
template<class _Alloc_types>
const size_type& _List_alloc< _Alloc_types >::_Mysize ( ) const
inline
796  { // return const reference to _Mysize
797  return (_Get_data()._Mysize);
798  }
size_type & _Mysize() _NOEXCEPT
Definition: list:790
_List_val< _Val_types > & _Get_data() _NOEXCEPT
Definition: list:770
template<class _Alloc_types>
static reference _List_alloc< _Alloc_types >::_Myval ( _Nodeptr  _Pnode)
inlinestatic
595  { // return reference to value in node
596  return (_List_val<_Val_types>::_Myval(_Pnode));
597  }
Definition: list:505
template<class _Alloc_types>
static _Nodepref _List_alloc< _Alloc_types >::_Nextnode ( _Nodeptr  _Pnode)
inlinestatic
585  { // return reference to successor pointer in node
586  return (_List_val<_Val_types>::_Nextnode(_Pnode));
587  }
Definition: list:505
template<class _Alloc_types>
void _List_alloc< _Alloc_types >::_Orphan_all ( )
inline
751  { // orphan all iterators
752  _Get_data()._Orphan_all();
753  }
_List_val< _Val_types > & _Get_data() _NOEXCEPT
Definition: list:770
template<class _Alloc_types>
static _Nodepref _List_alloc< _Alloc_types >::_Prevnode ( _Nodeptr  _Pnode)
inlinestatic
590  { // return reference to predecessor pointer in node
591  return (_List_val<_Val_types>::_Prevnode(_Pnode));
592  }
Definition: list:505
template<class _Alloc_types>
void _List_alloc< _Alloc_types >::_Swap_all ( _Myt _Right)
inline
756  { // swap all iterators
757  _Get_data()._Swap_all(_Right._Get_data());
758  }
_List_val< _Val_types > & _Get_data() _NOEXCEPT
Definition: list:770
constexpr const _Ty &() _Right
Definition: algorithm:3591

Member Data Documentation

template<class _Alloc_types>
_Compressed_pair<_Alty, _List_val<_Val_types> > _List_alloc< _Alloc_types >::_Mypair
private

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