Loading...
Searching...
No Matches
mdds::mtv::soa::detail::iterator_updater< Traits > Class Template Reference

`#include <iterator.hpp>`

Inheritance diagram for mdds::mtv::soa::detail::iterator_updater< Traits >:

## Classes

struct | grouped_iterator_type

## Public Member Functions

bool | operator== (const iterator_updater &other) const
bool | operator!= (const iterator_updater &other) const
iterator_updater & | operator= (const iterator_updater &other)
void | swap (iterator_updater &other)
const node & | get_node () const
const grouped_iterator_type & | get_pos () const
const grouped_iterator_type & | get_end () const

## Protected Types

using | parent_type = typename Traits::parent
using | positions_type = typename Traits::positions_type
using | sizes_type = typename Traits::sizes_type
using | element_blocks_type = typename Traits::element_blocks_type
using | size_type = typename Traits::parent::size_type
using | node = mdds::detail::mtv::iterator_value_node<parent_type, size_type>
using | positions_iterator_type = typename Traits::positions_iterator_type
using | sizes_iterator_type = typename Traits::sizes_iterator_type
using | element_blocks_iterator_type = typename Traits::element_blocks_iterator_type

## Protected Member Functions

| iterator_updater (const grouped_iterator_type &pos, const grouped_iterator_type &end, const parent_type *parent, size_type block_index)
| iterator_updater (const positions_iterator_type &positions_pos, const sizes_iterator_type &sizes_pos, const element_blocks_iterator_type &eb_pos, const positions_iterator_type &positions_end, const sizes_iterator_type &sizes_end, const element_blocks_iterator_type &eb_end, const parent_type *parent, size_type block_index)
| iterator_updater (const iterator_updater &other)
void | update_node ()
node * | inc ()
node * | dec ()
void | _print_state (std::ostream &os) const

## Protected Attributes

node | m_cur_node
grouped_iterator_type | m_pos
grouped_iterator_type | m_end

## Detailed Description

template<typename Traits>
class mdds::mtv::soa::detail::iterator_updater< Traits >

Common base for both const and non-const iterators to handle traversal of the internal source iterators.

Its protected inc() and dec() methods have non-const return type, and the derived classes wrap them and return values with their respective const modifiers.

The trait struct needs to have the following static member types:

- `parent`
- `positions_type`
- `sizes_type`
- `element_blocks_type`