Botan 3.7.1
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 122 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 127 of file bitvector.h.

◆ iterator_category

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

Definition at line 133 of file bitvector.h.

◆ pointer

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

Definition at line 129 of file bitvector.h.

◆ reference

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

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

139: m_bitvector(bitvector) { update(offset); }
int(* update)(CTX *, const void *, CC_LONG len)
bitvector_base< std::allocator > bitvector
Definition bitvector.h:1298

References update.

◆ bitvector_iterator() [3/4]

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

Definition at line 141 of file bitvector.h.

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

References update.

◆ bitvector_iterator() [4/4]

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

Definition at line 145 of file bitvector.h.

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

References update.

Member Function Documentation

◆ operator*()

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

Definition at line 197 of file bitvector.h.

197{ return m_bitref.value(); }

◆ operator++() [1/2]

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

Definition at line 163 of file bitvector.h.

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

References update.

◆ operator++() [2/2]

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

Definition at line 168 of file bitvector.h.

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

References update.

◆ operator--() [1/2]

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

Definition at line 174 of file bitvector.h.

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

References update.

◆ operator--() [2/2]

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

Definition at line 179 of file bitvector.h.

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

References update.

◆ operator->()

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

Definition at line 199 of file bitvector.h.

199{ 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 185 of file bitvector.h.

185 {
186 if(m_bitvector == other.m_bitvector) {
187 return m_offset <=> other.m_offset;
188 } else {
189 return std::partial_ordering::unordered;
190 }
191 }

◆ operator=() [1/2]

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

Definition at line 157 of file bitvector.h.

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

References update.

◆ operator=() [2/2]

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

Definition at line 149 of file bitvector.h.

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

References update.

◆ operator==()

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

Definition at line 193 of file bitvector.h.

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

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