STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | List of all members
__gnu_debug::_Safe_local_iterator_base Class Reference

Basic functionality for a safe iterator. More...

#include <debug/safe_unordered_base.h>

Inheritance diagram for __gnu_debug::_Safe_local_iterator_base:
__gnu_debug::_Safe_iterator_base __gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >

Public Member Functions

void _M_attach (_Safe_sequence_base *__seq, bool __constant)
 
void _M_attach_single (_Safe_sequence_base *__seq, bool __constant) throw ()
 
void _M_detach ()
 
void _M_detach_single () throw ()
 
- Public Member Functions inherited from __gnu_debug::_Safe_iterator_base
void _M_attach (_Safe_sequence_base *__seq, bool __constant)
 
void _M_attach_single (_Safe_sequence_base *__seq, bool __constant) throw ()
 
void _M_detach ()
 
void _M_detach_single () throw ()
 
bool _M_attached_to (const _Safe_sequence_base *__seq) const
 
_GLIBCXX_PURE bool _M_singular () const throw ()
 
_GLIBCXX_PURE bool _M_can_compare (const _Safe_iterator_base &__x) const throw ()
 
void _M_invalidate ()
 
void _M_reset () throw ()
 
void _M_unlink () throw ()
 

Protected Member Functions

 _Safe_local_iterator_base ()
 
 _Safe_local_iterator_base (const _Safe_sequence_base *__seq, bool __constant)
 
 _Safe_local_iterator_base (const _Safe_local_iterator_base &__x, bool __constant)
 
_Safe_local_iterator_baseoperator= (const _Safe_local_iterator_base &)
 
 _Safe_local_iterator_base (const _Safe_local_iterator_base &)
 
 ~_Safe_local_iterator_base ()
 
_Safe_unordered_container_base_M_get_container () const _GLIBCXX_NOEXCEPT
 
- Protected Member Functions inherited from __gnu_debug::_Safe_iterator_base
 _Safe_iterator_base ()
 
 _Safe_iterator_base (const _Safe_sequence_base *__seq, bool __constant)
 
 _Safe_iterator_base (const _Safe_iterator_base &__x, bool __constant)
 
_Safe_iterator_baseoperator= (const _Safe_iterator_base &)
 
 _Safe_iterator_base (const _Safe_iterator_base &)
 
 ~_Safe_iterator_base ()
 
__gnu_cxx::__mutex & _M_get_mutex () throw ()
 

Additional Inherited Members

- Public Attributes inherited from __gnu_debug::_Safe_iterator_base
_Safe_sequence_base_M_sequence
 
unsigned int _M_version
 
_Safe_iterator_base_M_prior
 
_Safe_iterator_base_M_next
 

Detailed Description

Basic functionality for a safe iterator.

The _Safe_local_iterator_base base class implements the functionality of a safe local iterator that is not specific to a particular iterator type. It contains a pointer back to the container it references along with iterator version information and pointers to form a doubly-linked list of local iterators referenced by the container.

This class must not perform any operations that can throw an exception, or the exception guarantees of derived iterators will be broken.

Constructor & Destructor Documentation

__gnu_debug::_Safe_local_iterator_base::_Safe_local_iterator_base ( )
inlineprotected

Initializes the iterator and makes it singular.

55  { }
__gnu_debug::_Safe_local_iterator_base::_Safe_local_iterator_base ( const _Safe_sequence_base __seq,
bool  __constant 
)
inlineprotected

Initialize the iterator to reference the container pointed to by __seq. __constant is true when we are initializing a constant local iterator, and false if it is a mutable local iterator. Note that __seq may be NULL, in which case the iterator will be singular. Otherwise, the iterator will reference __seq and be nonsingular.

65  { this->_M_attach(const_cast<_Safe_sequence_base*>(__seq), __constant); }
void _M_attach(_Safe_sequence_base *__seq, bool __constant)
__gnu_debug::_Safe_local_iterator_base::_Safe_local_iterator_base ( const _Safe_local_iterator_base __x,
bool  __constant 
)
inlineprotected

Initializes the iterator to reference the same container that __x does. __constant is true if this is a constant iterator, and false if it is mutable.

72  { this->_M_attach(__x._M_sequence, __constant); }
void _M_attach(_Safe_sequence_base *__seq, bool __constant)
__gnu_debug::_Safe_local_iterator_base::_Safe_local_iterator_base ( const _Safe_local_iterator_base )
explicitprotected
__gnu_debug::_Safe_local_iterator_base::~_Safe_local_iterator_base ( )
inlineprotected

Member Function Documentation

void __gnu_debug::_Safe_local_iterator_base::_M_attach ( _Safe_sequence_base __seq,
bool  __constant 
)

Attaches this iterator to the given container, detaching it from whatever container it was attached to originally. If the new container is the NULL pointer, the iterator is left unattached.

void __gnu_debug::_Safe_local_iterator_base::_M_attach_single ( _Safe_sequence_base __seq,
bool  __constant 
)
throw (
)

Likewise, but not thread-safe.

void __gnu_debug::_Safe_local_iterator_base::_M_detach ( )

Detach the iterator for whatever container it is attached to, if any.

void __gnu_debug::_Safe_local_iterator_base::_M_detach_single ( )
throw (
)

Likewise, but not thread-safe.

_Safe_unordered_container_base* __gnu_debug::_Safe_local_iterator_base::_M_get_container ( ) const
protected
_Safe_local_iterator_base& __gnu_debug::_Safe_local_iterator_base::operator= ( const _Safe_local_iterator_base )
protected

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