21 template <
class kernel_t_>
25 using element_type =
typename kernel_t_::kernel_element;
27 using kernel_type = kernel_t_;
29 using kernel_element =
typename kernel_type::kernel_element;
30 using value_type =
typename element_type::value_type;
31 using key_type =
typename kernel_t_::kernel_key_type;
35 kernel_type* m_kernel;
44 m_kernel =
const_cast<kernel_type*
>(
kernel);
52 key_type
key()
const {
53 return key_type{m_key};
58 kernel_type*
kernel()
const {
return m_kernel; }
65 return (i.m_key == j.m_key) && (i.m_kernel == j.m_kernel);
72 return (i.m_key != j.m_key) || (i.m_kernel != j.m_kernel);
82 assert(m_kernel->lookup(key_type{m_key}).state == element_type::VALID);
83 return &m_kernel->m_data[m_key].value;
93 assert(m_kernel->lookup(key_type{m_key}).state == element_type::VALID);
94 return m_kernel->m_data[m_key].value;
106 }
while (m_key < m_kernel->m_data.size() && m_kernel->m_data[m_key].state != element_type::VALID);
kernel_type * kernel() const
Definition: kernel_iterator.h:58
friend bool operator==(const iterator &i, const iterator &j)
Definition: kernel_iterator.h:63
Definition: kernel_iterator.h:22
friend bool operator!=(const iterator &i, const iterator &j)
Definition: kernel_iterator.h:70
iterator operator++(int)
Definition: kernel_iterator.h:115
kernel_iterator(kernel_type const *const kernel, unsigned int const &key)
Definition: kernel_iterator.h:42
key_type key() const
Definition: kernel_iterator.h:52
value_type & operator*()
Definition: kernel_iterator.h:91
iterator & operator++()
Definition: kernel_iterator.h:102
value_type * operator->()
Definition: kernel_iterator.h:80