29#ifndef _GLIBCXX_DEBUG_SAFE_BASE_H
30#define _GLIBCXX_DEBUG_SAFE_BASE_H 1
52 friend class _Safe_sequence_base;
54#pragma GCC diagnostic push
55#pragma GCC diagnostic ignored "-Wc++11-extensions"
96 if (!std::__is_constant_evaluated())
107 if (!std::__is_constant_evaluated())
110#pragma GCC diagnostic pop
115 if (!std::__is_constant_evaluated())
129 _M_attach(const _Safe_sequence_base* __seq,
bool __constant);
134 bool __constant) _GLIBCXX_USE_NOEXCEPT;
142#if !_GLIBCXX_INLINE_VERSION
147 _M_attach(_Safe_sequence_base* __seq,
bool __constant);
151 bool __constant) _GLIBCXX_USE_NOEXCEPT;
219 class _Safe_sequence_base
221 friend class _Safe_iterator_base;
223#pragma GCC diagnostic push
224#pragma GCC diagnostic ignored "-Wc++11-extensions"
238 _Safe_sequence_base() =
default;
241 _Safe_sequence_base(
const _Safe_sequence_base&) _GLIBCXX_NOEXCEPT
242 : _Safe_sequence_base() { }
243#pragma GCC diagnostic pop
245#if __cplusplus >= 201103L
251 if (!std::__is_constant_evaluated())
261 if (!std::__is_constant_evaluated())
273#if __cplusplus >= 201103L
274 _GLIBCXX20_CONSTEXPR _Safe_sequence_base&
275 operator=(_Safe_sequence_base&& __x)
noexcept
278 __x._M_invalidate_all();
308 _M_swap(
const _Safe_sequence_base& __x)
const _GLIBCXX_USE_NOEXCEPT;
315 _GLIBCXX20_CONSTEXPR
void
320#if !_GLIBCXX_INLINE_VERSION
347 bool __constant)
const _GLIBCXX_USE_NOEXCEPT;
GNU debug classes for public use.
Basic functionality for a safe iterator.
constexpr _Safe_iterator_base(const _Safe_sequence_base *__seq, bool __constant)
void _M_unlink() noexcept
void _M_detach_single() noexcept
bool _M_singular() const noexcept
__gnu_cxx::__mutex & _M_get_mutex() noexcept
bool _M_attached_to(const _Safe_sequence_base *__seq) const
const _Safe_sequence_base * _M_sequence
bool _M_can_compare(const _Safe_iterator_base &__x) const noexcept
_Safe_iterator_base * _M_prior
_Safe_iterator_base * _M_next
void _M_attach(const _Safe_sequence_base *__seq, bool __constant)
constexpr _Safe_iterator_base()=default
void _M_attach_single(const _Safe_sequence_base *__seq, bool __constant) noexcept
constexpr _Safe_iterator_base(const _Safe_iterator_base &__x, bool __constant)
Base class that supports tracking of iterators that reference a sequence.
constexpr void _M_invalidate_all() const
void _M_detach_singular() const
void _M_swap(const _Safe_sequence_base &__x) const noexcept
_Safe_iterator_base * _M_const_iterators
The list of constant iterators that reference this container.
constexpr ~_Safe_sequence_base() noexcept
void _M_revalidate_singular() const
_Safe_iterator_base * _M_iterators
The list of mutable iterators that reference this container.
__gnu_cxx::__mutex & _M_get_mutex() const noexcept
void _M_detach_all() const
unsigned int _M_version
The container version number. This number may never be 0.