openPMD-api
 
Loading...
Searching...
No Matches
ReadIterations.hpp
1/* Copyright 2025 Axel Huebl, Franz Poeschel
2 *
3 * This file is part of openPMD-api.
4 *
5 * openPMD-api is free software: you can redistribute it and/or modify
6 * it under the terms of of either the GNU General Public License or
7 * the GNU Lesser General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * openPMD-api is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License and the GNU Lesser General Public License
15 * for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * and the GNU Lesser General Public License along with openPMD-api.
19 * If not, see <http://www.gnu.org/licenses/>.
20 */
21#pragma once
22
23/*
24 * Legacy header.
25 */
26
27#include "openPMD/Iteration.hpp"
28#include "openPMD/Series.hpp"
29#include "openPMD/snapshots/Snapshots.hpp"
30
31namespace openPMD
32{
38class LegacyIteratorAdaptor
39{
40 using value_type = IndexedIteration;
41 using parent_t = Snapshots::iterator;
42
43private:
44 friend class ReadIterations;
45 Snapshots::iterator m_iterator;
46 LegacyIteratorAdaptor(Snapshots::iterator iterator);
47
48public:
49 value_type operator*() const;
50 LegacyIteratorAdaptor &operator++();
51 bool operator==(LegacyIteratorAdaptor const &other) const;
52 bool operator!=(LegacyIteratorAdaptor const &other) const;
53};
54
74class ReadIterations
75{
76 friend class Series;
77
78private:
79 using iterations_t = decltype(internal::SeriesData::iterations);
80 using iterator_t = LegacyIteratorAdaptor;
81
82 Series m_series;
83 std::optional<internal::ParsePreference> m_parsePreference;
84
85 ReadIterations(
86 Series,
87 Access,
88 std::optional<internal::ParsePreference> parsePreference);
89
90public:
91 auto begin() -> iterator_t;
92 static auto end() -> iterator_t;
93};
94} // namespace openPMD
Subclass of Iteration that knows its own index withing the containing Series.
Definition Iteration.hpp:463
Legacy Iterator type for Series::readIterations()
Definition ReadIterations.hpp:39
Public definitions of openPMD-api.
Definition Date.cpp:29
Access
File access mode to use during IO.
Definition Access.hpp:58