h5cpp
0.5.0
A modern C++ wrapper for the HDF5 C library
recursive_link_iterator.hpp
Go to the documentation of this file.
1
//
2
// (c) Copyright 2017 DESY,ESS
3
//
4
// This file is part of h5cpp.
5
//
6
// This library is free software; you can redistribute it and/or modify it
7
// under the terms of the GNU Lesser General Public License as published
8
// by the Free Software Foundation; either version 2.1 of the License, or
9
// (at your option) any later version.
10
//
11
// This library is distributed in the hope that it will be useful, but
12
// WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY
13
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14
// License for more details.
15
//
16
// You should have received a copy of the GNU Lesser General Public License
17
// along with this library; if not, write to the
18
// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
19
// Boston, MA 02110-1301 USA
20
// ===========================================================================
21
//
22
// Author: Eugen Wintersberger <eugen.wintersberger@desy.de>
23
// Created on: Nov 20, 2017
24
//
25
#pragma once
26
27
#include <functional>
28
#include <
h5cpp/node/group.hpp
>
29
#include <
h5cpp/node/link_iterator.hpp
>
30
#include <
h5cpp/core/windows.hpp
>
31
32
namespace
hdf5
{
33
namespace
node {
34
63
class
DLL_EXPORT
RecursiveLinkIterator
64
{
65
public
:
66
using
value_type
=
Link
;
67
using
pointer
=
value_type
*;
68
using
reference
=
value_type
&;
69
using
difference_type
= ssize_t;
70
using
iterator_category
= std::forward_iterator_tag;
71
77
RecursiveLinkIterator
() =
delete
;
78
89
static
RecursiveLinkIterator
begin(
const
Group
¤t_group);
90
101
static
RecursiveLinkIterator
end(
const
Group
¤t_group);
102
103
104
Link
operator*()
const
;
105
Link
*operator->();
106
RecursiveLinkIterator
&operator++();
107
RecursiveLinkIterator
operator++(
int
);
108
bool
operator==
(
const
RecursiveLinkIterator
&rhs)
const
;
109
bool
operator!=
(
const
RecursiveLinkIterator
&rhs)
const
;
110
111
private
:
112
RecursiveLinkIterator
(
const
Group
¤t_group,
113
RecursiveLinkIterator
parent_iterator);
114
RecursiveLinkIterator
(
const
Group
¤t_group);
115
116
using
IteratorPointer = std::shared_ptr<RecursiveLinkIterator>;
117
122
Group
current_group_;
123
127
LinkIterator
current_iterator_;
128
129
#ifdef _MSC_VER
130
#pragma warning(push)
131
#pragma warning(disable: 4251)
132
#endif
133
IteratorPointer parent_iterator_;
137
#ifdef _MSC_VER
138
#pragma warning(pop)
139
#endif
140
141
142
143
};
144
145
}
// namespace node
146
}
// namespace hdf5
hdf5::node::RecursiveLinkIterator
recursive Link iterator
Definition:
recursive_link_iterator.hpp:63
group.hpp
hdf5::node::RecursiveLinkIterator::difference_type
ssize_t difference_type
Definition:
recursive_link_iterator.hpp:69
hdf5::node::Group
Definition:
group.hpp:50
windows.hpp
hdf5::node::LinkIterator
Definition:
link_iterator.hpp:41
hdf5::node::RecursiveLinkIterator::iterator_category
std::forward_iterator_tag iterator_category
Definition:
recursive_link_iterator.hpp:70
hdf5::node::operator!=
bool operator!=(const Link &lhs, const Link &rhs)
hdf5::node::Link
an HDF5 link
Definition:
link.hpp:113
DLL_EXPORT
#define DLL_EXPORT
Definition:
windows.hpp:29
link_iterator.hpp
hdf5
top-level namespace of the entire library
Definition:
attribute.hpp:45
hdf5::node::operator==
bool operator==(const Node &lhs, const Node &rhs)
h5cpp
src
h5cpp
node
recursive_link_iterator.hpp
Generated on Mon May 2 2022 08:20:20 for h5cpp by
1.8.17