10#ifndef IPCQ_DETAIL_ITERATOR_HPP_
11#define IPCQ_DETAIL_ITERATOR_HPP_
22template <
class Buff,
class Traits>
59 template <
class Traits0>
115 template <
class Traits0>
117 return m_it == it.m_it;
120 template <
class Traits0>
122 return m_it != it.m_it;
128 template <
class Traits0>
136 template <
class Traits0>
144 template <
class Traits0>
146 return !(it < *
this);
152 template <
class Traits0>
154 return !(*
this < it);
161 template <
class Traits0>
162 constexpr typename Traits0::pointer
166 return it.m_it ==
nullptr
168 : (it.m_it <
m_buff->m_first ? it.m_it + (end -
m_buff->m_first)
173 std::ostream&
Str(std::ostream& os)
const noexcept {
175 <<
", last=" <<
m_buff->m_last -
m_buff->m_buffer <<
", size=" <<
m_buff->m_size <<
" }";
typename Traits::pointer pointer
constexpr Iterator operator++(int) noexcept
Increment operator (postfix)
constexpr bool operator>(const Iterator< Buff, Traits0 > &it) const noexcept
Greater.
constexpr Iterator operator+(difference_type n) const noexcept
reference operator[](difference_type n) const
Random access operator.
typename Traits::value_type value_type
Iterator(const Buff *buff, const pointer p)
constexpr bool operator<=(const Iterator< Buff, Traits0 > &it) const noexcept
Less or equal.
constexpr Iterator & operator++() noexcept
Increment operator (prefix)
constexpr Iterator & operator+=(difference_type n) noexcept
Iterator addition.
std::ostream & Str(std::ostream &os) const noexcept
typename Traits::reference reference
constexpr reference operator*() const noexcept
Dereferencing operator.
friend std::ostream & operator<<(std::ostream &os, Iterator const &it)
std::random_access_iterator_tag iterator_category
constexpr Traits0::pointer Linearize(const Iterator< Buff, Traits0 > &it) const noexcept
Get a pointer which would point to the same element as the Iterator in case the circular buffer is li...
constexpr bool operator>=(const Iterator< Buff, Traits0 > &it) const noexcept
Greater or equal.
constexpr bool operator==(const Iterator< Buff, Traits0 > &it) const noexcept
const ShmControl * m_buff
constexpr bool operator<(const Iterator< Buff, Traits0 > &it) const noexcept
Less.
constexpr bool operator!=(const Iterator< Buff, Traits0 > &it) const noexcept
constexpr difference_type operator-(const Iterator< Buff, Traits0 > &it) const noexcept
Difference operator.
typename Traits::size_type size_type
constexpr pointer operator->() const noexcept
Dereferencing operator.
typename Traits::difference_type difference_type