STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Public Attributes | List of all members
_Iterator_base12 Struct Reference
Inheritance diagram for _Iterator_base12:
_Deque_const_iterator< _Mydeque > _Deque_iterator< _Mydeque >

Public Member Functions

 _Iterator_base12 ()
 
 _Iterator_base12 (const _Iterator_base12 &_Right)
 
_Iterator_base12operator= (const _Iterator_base12 &_Right)
 
 ~_Iterator_base12 () _NOEXCEPT
 
void _Adopt (const _Container_base12 *_Parent)
 
void _Clrcont ()
 
const _Container_base12_Getcont () const
 
_Iterator_base12 ** _Getpnext ()
 
void _Orphan_me ()
 

Public Attributes

_Container_proxy_Myproxy
 
_Iterator_base12_Mynextiter
 

Constructor & Destructor Documentation

_Iterator_base12::_Iterator_base12 ( )
inline
113  : _Myproxy(0), _Mynextiter(0)
114  { // construct orphaned iterator
115  }
_Iterator_base12 * _Mynextiter
Definition: xutility:210
_Container_proxy * _Myproxy
Definition: xutility:209
_Iterator_base12::_Iterator_base12 ( const _Iterator_base12 _Right)
inline
118  : _Myproxy(0), _Mynextiter(0)
119  { // copy an iterator
120  *this = _Right;
121  }
_Iterator_base12 * _Mynextiter
Definition: xutility:210
_Container_proxy * _Myproxy
Definition: xutility:209
constexpr const _Ty &() _Right
Definition: algorithm:3591
_Iterator_base12::~_Iterator_base12 ( )
inline
141  { // destroy the iterator
142  #if _ITERATOR_DEBUG_LEVEL == 2
143  _Lockit _Lock(_LOCK_DEBUG);
144  _Orphan_me();
145  #endif /* _ITERATOR_DEBUG_LEVEL == 2 */
146  }
void _Orphan_me()
Definition: xutility:192
#define _LOCK_DEBUG
Definition: yvals.h:607

Member Function Documentation

void _Iterator_base12::_Adopt ( const _Container_base12 _Parent)
inline
149  { // adopt this iterator by parent
150  if (_Parent == 0)
151  { // no future parent, just disown current parent
152  #if _ITERATOR_DEBUG_LEVEL == 2
153  _Lockit _Lock(_LOCK_DEBUG);
154  _Orphan_me();
155  #endif /* _ITERATOR_DEBUG_LEVEL == 2 */
156  }
157  else
158  { // have a parent, do adoption
159  _Container_proxy *_Parent_proxy = _Parent->_Myproxy;
160 
161  #if _ITERATOR_DEBUG_LEVEL == 2
162  if (_Myproxy != _Parent_proxy)
163  { // change parentage
164  _Lockit _Lock(_LOCK_DEBUG);
165  _Orphan_me();
166  _Mynextiter = _Parent_proxy->_Myfirstiter;
167  _Parent_proxy->_Myfirstiter = this;
168  _Myproxy = _Parent_proxy;
169  }
170 
171  #else /* _ITERATOR_DEBUG_LEVEL == 2 */
172  _Myproxy = _Parent_proxy;
173  #endif /* _ITERATOR_DEBUG_LEVEL == 2 */
174  }
175  }
_Iterator_base12 * _Mynextiter
Definition: xutility:210
_Iterator_base12 * _Myfirstiter
Definition: xutility:72
void _Orphan_me()
Definition: xutility:192
_Container_proxy * _Myproxy
Definition: xutility:209
#define _LOCK_DEBUG
Definition: yvals.h:607
Definition: xutility:64
_Container_proxy * _Myproxy
Definition: xutility:106
void _Iterator_base12::_Clrcont ( )
inline
178  { // disown owning container
179  _Myproxy = 0;
180  }
_Container_proxy * _Myproxy
Definition: xutility:209
const _Container_base12* _Iterator_base12::_Getcont ( ) const
inline
183  { // get owning container
184  return (_Myproxy == 0 ? 0 : _Myproxy->_Mycont);
185  }
_Container_proxy * _Myproxy
Definition: xutility:209
const _Container_base12 * _Mycont
Definition: xutility:71
_Iterator_base12** _Iterator_base12::_Getpnext ( )
inline
188  { // get address of remaining iterator chain
189  return (&_Mynextiter);
190  }
_Iterator_base12 * _Mynextiter
Definition: xutility:210
void _Iterator_base12::_Orphan_me ( )
inline
193  { // cut ties with parent
194  #if _ITERATOR_DEBUG_LEVEL == 2
195  if (_Myproxy != 0)
196  { // adopted, remove self from list
198  while (*_Pnext != 0 && *_Pnext != this)
199  _Pnext = &(*_Pnext)->_Mynextiter;
200 
201  if (*_Pnext == 0)
202  _DEBUG_ERROR("ITERATOR LIST CORRUPTED!");
203  *_Pnext = _Mynextiter;
204  _Myproxy = 0;
205  }
206  #endif /* _ITERATOR_DEBUG_LEVEL == 2 */
207  }
_Iterator_base12 * _Mynextiter
Definition: xutility:210
_Iterator_base12 * _Myfirstiter
Definition: xutility:72
_Container_proxy * _Myproxy
Definition: xutility:209
Definition: xutility:109
#define _DEBUG_ERROR(mesg)
Definition: xutility:32
_Iterator_base12& _Iterator_base12::operator= ( const _Iterator_base12 _Right)
inline
124  { // assign an iterator
125  if (_Myproxy == _Right._Myproxy)
126  ;
127  else if (_Right._Myproxy != 0)
128  _Adopt(_Right._Myproxy->_Mycont);
129  else
130  { // becoming invalid, disown current parent
131  #if _ITERATOR_DEBUG_LEVEL == 2
132  _Lockit _Lock(_LOCK_DEBUG);
133  _Orphan_me();
134  #endif /* _ITERATOR_DEBUG_LEVEL == 2 */
135  }
136 
137  return (*this);
138  }
void _Orphan_me()
Definition: xutility:192
_Container_proxy * _Myproxy
Definition: xutility:209
const _Container_base12 * _Mycont
Definition: xutility:71
#define _LOCK_DEBUG
Definition: yvals.h:607
void _Adopt(const _Container_base12 *_Parent)
Definition: xutility:148

Member Data Documentation

_Iterator_base12* _Iterator_base12::_Mynextiter
_Container_proxy* _Iterator_base12::_Myproxy

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