STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Public Types | Public Member Functions | Private Attributes | List of all members
_Temp_iterator< _Ty > Class Template Reference
Inheritance diagram for _Temp_iterator< _Ty >:
iterator< _Category, _Ty, _Diff, _Pointer, _Reference >

Classes

struct  _Bufpar
 

Public Types

typedef _Ty * _Pty
 
- Public Types inherited from iterator< _Category, _Ty, _Diff, _Pointer, _Reference >
typedef _Category iterator_category
 
typedef _Ty value_type
 
typedef _Diff difference_type
 
typedef _Pointer pointer
 
typedef _Reference reference
 

Public Member Functions

 _Temp_iterator (ptrdiff_t _Count=0)
 
 _Temp_iterator (const _Temp_iterator &_Right)
 
 ~_Temp_iterator () _NOEXCEPT
 
_Temp_iteratoroperator= (const _Temp_iterator &_Right)
 
_Temp_iteratoroperator= (const _Ty &_Val)
 
_Temp_iteratoroperator= (_Ty &&_Val)
 
_Temp_iteratoroperator* ()
 
_Temp_iteratoroperator++ ()
 
_Temp_iteratoroperator++ (int)
 
_Temp_iterator_Init ()
 
_Pty _First () const
 
_Pty _Last () const
 
ptrdiff_t _Maxlen ()
 

Private Attributes

_Bufpar _Buf
 
_Bufpar_Pbuf
 

Member Typedef Documentation

template<class _Ty>
typedef _Ty* _Temp_iterator< _Ty >::_Pty

Constructor & Destructor Documentation

template<class _Ty>
_Temp_iterator< _Ty >::_Temp_iterator ( ptrdiff_t  _Count = 0)
inline
550  { // construct from desired temporary buffer size
551  _Buf._Begin = 0;
552  _Buf._Current = 0;
553  _Buf._Hiwater = 0;
554  _Buf._Size = _Count; // memorize size for lazy allocation
555  _Pbuf = &_Buf;
556  }
_Bufpar * _Pbuf
Definition: xmemory:670
unsigned int _Size() const
Definition: regex:1551
unsigned int _Count
Definition: xcomplex:668
Definition: regex:1539
_Bufpar _Buf
Definition: xmemory:669
template<class _Ty>
_Temp_iterator< _Ty >::_Temp_iterator ( const _Temp_iterator< _Ty > &  _Right)
inline
559  { // construct from _Right (share active buffer)
560  _Buf._Begin = 0; // clear stored buffer, for safe destruction
561  _Buf._Current = 0;
562  _Buf._Hiwater = 0;
563  _Buf._Size = 0;
564  *this = _Right;
565  }
unsigned int _Size() const
Definition: regex:1551
Definition: regex:1539
constexpr const _Ty &() _Right
Definition: algorithm:3591
template<class _Ty>
_Temp_iterator< _Ty >::~_Temp_iterator ( )
inline
568  { // destroy the object
569  if (_Buf._Begin != 0)
570  { // destroy any constructed elements in buffer
571  for (_Pty _Next = _Buf._Begin;
572  _Next != _Buf._Hiwater; ++_Next)
573  _Destroy(_Next);
575  }
576  }
Definition: regex:1539
void return_temporary_buffer(_Ty *_Pbuf)
Definition: xmemory:37
_Ty * _Pty
Definition: xmemory:547
void _Destroy(_Ptrty _Ptr)
Definition: xmemory0:287

Member Function Documentation

template<class _Ty>
_Pty _Temp_iterator< _Ty >::_First ( ) const
inline
635  { // return pointer to beginning of buffer
636  return (_Pbuf->_Begin);
637  }
_Bufpar * _Pbuf
Definition: xmemory:670
_Pty _Begin
Definition: xmemory:664
template<class _Ty>
_Temp_iterator& _Temp_iterator< _Ty >::_Init ( )
inline
629  { // set pointer at beginning of buffer
631  return (*this);
632  }
_Bufpar * _Pbuf
Definition: xmemory:670
_Pty _Begin
Definition: xmemory:664
_Pty _Current
Definition: xmemory:665
template<class _Ty>
_Pty _Temp_iterator< _Ty >::_Last ( ) const
inline
640  { // return pointer past end of buffer contents
641  return (_Pbuf->_Current);
642  }
_Bufpar * _Pbuf
Definition: xmemory:670
_Pty _Current
Definition: xmemory:665
template<class _Ty>
ptrdiff_t _Temp_iterator< _Ty >::_Maxlen ( )
inline
645  { // return size of buffer
646  if (_Pbuf->_Begin == 0 && 0 < _Pbuf->_Size)
647  { // allocate buffer on first size query
648  pair<_Pty, ptrdiff_t> _Pair =
649 
650  _STD get_temporary_buffer<_Ty>(_Pbuf->_Size);
651 
652  _Pbuf->_Begin = _Pair.first;
653  _Pbuf->_Current = _Pair.first;
654  _Pbuf->_Hiwater = _Pair.first;
655  _Pbuf->_Size = _Pair.second;
656  }
657 
658  return (_Pbuf->_Size);
659  }
_Bufpar * _Pbuf
Definition: xmemory:670
_Ty2 second
Definition: utility:243
ptrdiff_t _Size
Definition: xmemory:667
_Pty _Begin
Definition: xmemory:664
_Ty1 first
Definition: utility:242
_Pty _Current
Definition: xmemory:665
Definition: utility:75
_Pty _Hiwater
Definition: xmemory:666
template<class _Ty>
_Temp_iterator& _Temp_iterator< _Ty >::operator* ( )
inline
614  { // pretend to return designated value
615  return (*this);
616  }
template<class _Ty>
_Temp_iterator& _Temp_iterator< _Ty >::operator++ ( )
inline
619  { // pretend to preincrement
620  return (*this);
621  }
template<class _Ty>
_Temp_iterator& _Temp_iterator< _Ty >::operator++ ( int  )
inline
624  { // pretend to postincrement
625  return (*this);
626  }
template<class _Ty>
_Temp_iterator& _Temp_iterator< _Ty >::operator= ( const _Temp_iterator< _Ty > &  _Right)
inline
579  { // assign _Right (share active buffer)
580  _Pbuf = _Right._Pbuf;
581  return (*this);
582  }
_Bufpar * _Pbuf
Definition: xmemory:670
template<class _Ty>
_Temp_iterator& _Temp_iterator< _Ty >::operator= ( const _Ty &  _Val)
inline
585  { // assign or construct value into active buffer, and increment
586  if (_Pbuf->_Current < _Pbuf->_Hiwater)
587  *_Pbuf->_Current++ = _Val; // below high water mark, assign
588  else
589  { // above high water mark, construct
590  _Pty _Ptr = _Pbuf->_Current;
591  _Construct(_Ptr, _Val);
593  }
594 
595  return (*this);
596  }
_Bufpar * _Pbuf
Definition: xmemory:670
_In_ int _Val
Definition: vcruntime_string.h:62
void _Construct(_Ty1 *_Ptr, _Ty2 &&_Val)
Definition: xmemory0:138
_Pty _Current
Definition: xmemory:665
_Ty * _Pty
Definition: xmemory:547
_Pty _Hiwater
Definition: xmemory:666
template<class _Ty>
_Temp_iterator& _Temp_iterator< _Ty >::operator= ( _Ty &&  _Val)
inline
599  { // move or construct value into active buffer, and increment
600  if (_Pbuf->_Current < _Pbuf->_Hiwater)
601  *_Pbuf->_Current++ =
602  _STD forward<_Ty>(_Val); // below high water mark, move
603  else
604  { // above high water mark, construct
605  _Pty _Ptr = _Pbuf->_Current;
606  _Construct(_Ptr, _STD forward<_Ty>(_Val));
608  }
609 
610  return (*this);
611  }
_Bufpar * _Pbuf
Definition: xmemory:670
_In_ int _Val
Definition: vcruntime_string.h:62
void _Construct(_Ty1 *_Ptr, _Ty2 &&_Val)
Definition: xmemory0:138
_Pty _Current
Definition: xmemory:665
_Ty * _Pty
Definition: xmemory:547
_Pty _Hiwater
Definition: xmemory:666

Member Data Documentation

template<class _Ty>
_Bufpar _Temp_iterator< _Ty >::_Buf
private
template<class _Ty>
_Bufpar* _Temp_iterator< _Ty >::_Pbuf
private

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