mdds
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
mdds::mtv::soa::detail::iterator_updater< Traits > Class Template Reference

#include <iterator.hpp>

Inheritance diagram for mdds::mtv::soa::detail::iterator_updater< Traits >:
mdds::mtv::soa::detail::const_iterator_base< Traits, NonConstItrBase > mdds::mtv::soa::detail::iterator_base< Traits >

Classes

struct  grouped_iterator_type
 

Public Member Functions

bool operator== (const iterator_updater &other) const
 
bool operator!= (const iterator_updater &other) const
 
iterator_updateroperator= (const iterator_updater &other)
 
void swap (iterator_updater &other)
 
const nodeget_node () const
 
const grouped_iterator_typeget_pos () const
 
const grouped_iterator_typeget_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 ()
 
nodeinc ()
 
nodedec ()
 
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: