Botan 3.9.0
Crypto and TLS for C&
Botan::detail::bitvector_iterator< T > Class Template Reference

#include <bitvector.h>

Public Types

using difference_type = std::make_signed_t<size_type>
using iterator_category = std::bidirectional_iterator_tag
using pointer = value_type*
using reference = value_type&
using value_type = std::remove_const_t<decltype(std::declval<T>().at(0))>

Public Member Functions

 bitvector_iterator ()=default
 bitvector_iterator (bitvector_iterator &&other) noexcept
 bitvector_iterator (const bitvector_iterator &other) noexcept
 bitvector_iterator (T *bitvector, size_t offset)
reference operator* () const
bitvector_iteratoroperator++ () noexcept
bitvector_iterator operator++ (int) noexcept
bitvector_iteratoroperator-- () noexcept
bitvector_iterator operator-- (int) noexcept
pointer operator-> () const
std::partial_ordering operator<=> (const bitvector_iterator &other) const noexcept
bitvector_iteratoroperator= (bitvector_iterator &&other) noexcept
bitvector_iteratoroperator= (const bitvector_iterator &other) noexcept
bool operator== (const bitvector_iterator &other) const noexcept
 ~bitvector_iterator ()=default

Detailed Description

template<typename T>
class Botan::detail::bitvector_iterator< T >

Definition at line 123 of file bitvector.h.

Member Typedef Documentation

◆ difference_type

template<typename T>
using Botan::detail::bitvector_iterator< T >::difference_type = std::make_signed_t<size_type>

Definition at line 128 of file bitvector.h.

◆ iterator_category

template<typename T>
using Botan::detail::bitvector_iterator< T >::iterator_category = std::bidirectional_iterator_tag

Definition at line 134 of file bitvector.h.

◆ pointer

template<typename T>
using Botan::detail::bitvector_iterator< T >::pointer = value_type*

Definition at line 130 of file bitvector.h.

◆ reference

template<typename T>
using Botan::detail::bitvector_iterator< T >::reference = value_type&

Definition at line 131 of file bitvector.h.

◆ value_type

template<typename T>
using Botan::detail::bitvector_iterator< T >::value_type = std::remove_const_t<decltype(std::declval<T>().at(0))>

Definition at line 129 of file bitvector.h.

Constructor & Destructor Documentation

◆ bitvector_iterator() [1/4]

template<typename T>
Botan::detail::bitvector_iterator< T >::bitvector_iterator ( )
default

◆ ~bitvector_iterator()

template<typename T>
Botan::detail::bitvector_iterator< T >::~bitvector_iterator ( )
default

◆ bitvector_iterator() [2/4]

template<typename T>
Botan::detail::bitvector_iterator< T >::bitvector_iterator ( T * bitvector,
size_t offset )
inline

Definition at line 140 of file bitvector.h.

140: m_bitvector(bitvector) { update(offset); }

◆ bitvector_iterator() [3/4]

template<typename T>
Botan::detail::bitvector_iterator< T >::bitvector_iterator ( const bitvector_iterator< T > & other)
inlinenoexcept

Definition at line 142 of file bitvector.h.

142 : m_bitvector(other.m_bitvector) {
143 update(other.m_offset);
144 }

◆ bitvector_iterator() [4/4]

template<typename T>
Botan::detail::bitvector_iterator< T >::bitvector_iterator ( bitvector_iterator< T > && other)
inlinenoexcept

Definition at line 146 of file bitvector.h.

146 : m_bitvector(other.m_bitvector) {
147 update(other.m_offset);
148 }

Member Function Documentation

◆ operator*()

template<typename T>
reference Botan::detail::bitvector_iterator< T >::operator* ( ) const
inline

Definition at line 198 of file bitvector.h.

198{ return m_bitref.value(); }

◆ operator++() [1/2]

template<typename T>
bitvector_iterator & Botan::detail::bitvector_iterator< T >::operator++ ( )
inlinenoexcept

Definition at line 164 of file bitvector.h.

164 {
165 update(signed_offset() + 1);
166 return *this;
167 }

◆ operator++() [2/2]

template<typename T>
bitvector_iterator Botan::detail::bitvector_iterator< T >::operator++ ( int )
inlinenoexcept

Definition at line 169 of file bitvector.h.

169 {
170 auto copy = *this;
171 update(signed_offset() + 1);
172 return copy;
173 }

◆ operator--() [1/2]

template<typename T>
bitvector_iterator & Botan::detail::bitvector_iterator< T >::operator-- ( )
inlinenoexcept

Definition at line 175 of file bitvector.h.

175 {
176 update(signed_offset() - 1);
177 return *this;
178 }

◆ operator--() [2/2]

template<typename T>
bitvector_iterator Botan::detail::bitvector_iterator< T >::operator-- ( int )
inlinenoexcept

Definition at line 180 of file bitvector.h.

180 {
181 auto copy = *this;
182 update(signed_offset() - 1);
183 return copy;
184 }

◆ operator->()

template<typename T>
pointer Botan::detail::bitvector_iterator< T >::operator-> ( ) const
inline

Definition at line 200 of file bitvector.h.

200{ return &(m_bitref.value()); }

◆ operator<=>()

template<typename T>
std::partial_ordering Botan::detail::bitvector_iterator< T >::operator<=> ( const bitvector_iterator< T > & other) const
inlinenoexcept

Definition at line 186 of file bitvector.h.

186 {
187 if(m_bitvector == other.m_bitvector) {
188 return m_offset <=> other.m_offset;
189 } else {
191 }
192 }

◆ operator=() [1/2]

template<typename T>
bitvector_iterator & Botan::detail::bitvector_iterator< T >::operator= ( bitvector_iterator< T > && other)
inlinenoexcept

Definition at line 158 of file bitvector.h.

158 {
159 m_bitvector = other.m_bitvector;
160 update(other.m_offset);
161 return *this;
162 }

◆ operator=() [2/2]

template<typename T>
bitvector_iterator & Botan::detail::bitvector_iterator< T >::operator= ( const bitvector_iterator< T > & other)
inlinenoexcept

Definition at line 150 of file bitvector.h.

150 {
151 if(this != &other) {
152 m_bitvector = other.m_bitvector;
153 update(other.m_offset);
154 }
155 return *this;
156 }

◆ operator==()

template<typename T>
bool Botan::detail::bitvector_iterator< T >::operator== ( const bitvector_iterator< T > & other) const
inlinenoexcept

Definition at line 194 of file bitvector.h.

194 {
195 return m_bitvector == other.m_bitvector && m_offset == other.m_offset;
196 }

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