29#ifndef INCLUDED_MDDS_MULTI_TYPE_VECTOR_DIR_ITERATOR_NODE_HPP
30#define INCLUDED_MDDS_MULTI_TYPE_VECTOR_DIR_ITERATOR_NODE_HPP
32namespace mdds {
namespace detail {
namespace mtv {
40template<
typename ParentT,
typename SizeT>
43 using parent_type = ParentT;
44 using size_type = SizeT;
46 mdds::mtv::element_t type;
52 : type(mdds::mtv::element_type_empty), position(0), size(0), data(
nullptr), __private_data(parent, block_index)
57 std::swap(type, other.type);
58 std::swap(position, other.position);
59 std::swap(size, other.size);
60 std::swap(data, other.data);
62 __private_data.swap(other.__private_data);
67 const parent_type* parent;
68 size_type block_index;
72 private_data(
const parent_type* _parent, size_type _block_index) : parent(_parent), block_index(_block_index)
77 std::swap(parent, other.parent);
78 std::swap(block_index, other.block_index);
85 return type == other.type && position == other.position && size == other.size && data == other.data &&
86 __private_data.parent == other.__private_data.parent &&
87 __private_data.block_index == other.__private_data.block_index;
92 return !operator==(other);
96template<
typename ParentT,
typename SizeT>
107template<
typename ParentT,
typename SizeT>
114 ++nd.__private_data.block_index;
119 --nd.__private_data.block_index;
Definition: types.hpp:160
Definition: iterator_node.hpp:66
Definition: iterator_node.hpp:42
Definition: iterator_node.hpp:109
Definition: iterator_node.hpp:98