Botan 3.13.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 124 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 129 of file bitvector.h.

◆ iterator_category

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

Definition at line 135 of file bitvector.h.

◆ pointer

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

Definition at line 131 of file bitvector.h.

◆ reference

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

Definition at line 132 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 130 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 141 of file bitvector.h.

141: 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 143 of file bitvector.h.

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

◆ bitvector_iterator() [4/4]

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

Definition at line 147 of file bitvector.h.

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

Member Function Documentation

◆ operator*()

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

Definition at line 199 of file bitvector.h.

199{ return m_bitref.value(); }

◆ operator++() [1/2]

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

Definition at line 165 of file bitvector.h.

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

◆ operator++() [2/2]

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

Definition at line 170 of file bitvector.h.

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

◆ operator--() [1/2]

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

Definition at line 176 of file bitvector.h.

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

◆ operator--() [2/2]

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

Definition at line 181 of file bitvector.h.

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

◆ operator->()

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

Definition at line 201 of file bitvector.h.

201{ 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 187 of file bitvector.h.

187 =>(const bitvector_iterator& other) const noexcept {
188 if(m_bitvector == other.m_bitvector) {
189 return m_offset <=> other.m_offset;
190 } else {
192 }
193 }

◆ operator=() [1/2]

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

Definition at line 159 of file bitvector.h.

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

◆ operator=() [2/2]

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

Definition at line 151 of file bitvector.h.

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

◆ operator==()

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

Definition at line 195 of file bitvector.h.

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

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