23 #include "openPMD/Iteration.hpp"
24 #include "openPMD/Series.hpp"
25 #include "openPMD/backend/ParsePreference.hpp"
43 using iterations_t = decltype(internal::SeriesData::iterations);
44 using index_t = iterations_t::key_type;
45 index_t
const iterationIndex;
48 template <
typename Iteration_t>
50 :
Iteration(std::forward<Iteration_t>(it)), iterationIndex(index)
56 using iteration_index_t = IndexedIteration::index_t;
58 using maybe_series_t = std::optional<Series>;
62 SharedData() =
default;
63 SharedData(SharedData
const &) =
delete;
64 SharedData(SharedData &&) =
delete;
65 SharedData &operator=(SharedData
const &) =
delete;
66 SharedData &operator=(SharedData &&) =
delete;
68 maybe_series_t series;
69 std::deque<iteration_index_t> iterationsInCurrentStep;
70 uint64_t currentIteration{};
71 std::optional<internal::ParsePreference> parsePreference;
77 std::set<Iteration::IterationIndex_t> ignoreIterations;
83 std::shared_ptr<std::optional<SharedData>> m_data =
84 std::make_shared<std::optional<SharedData>>(std::nullopt);
88 return m_data->value();
90 SharedData
const &get()
const
92 return m_data->value();
100 Series, std::optional<internal::ParsePreference> parsePreference);
113 inline bool setCurrentIteration()
116 if (data.iterationsInCurrentStep.empty())
118 std::cerr <<
"[ReadIterations] Encountered a step without "
119 "iterations. Closing the Series."
124 data.currentIteration = *data.iterationsInCurrentStep.begin();
128 inline std::optional<uint64_t> peekCurrentIteration()
131 if (data.iterationsInCurrentStep.empty())
137 return {*data.iterationsInCurrentStep.begin()};
141 std::optional<SeriesIterator *> nextIterationInStep();
153 std::optional<SeriesIterator *> nextStep(
size_t recursion_depth);
155 std::optional<SeriesIterator *> loopBody();
157 void deactivateDeadIteration(iteration_index_t);
159 void initSeriesInLinearReadMode();
185 using iterations_t = decltype(internal::SeriesData::iterations);
189 std::optional<internal::ParsePreference> m_parsePreference;
194 std::optional<internal::ParsePreference> parsePreference);
Subclass of Iteration that knows its own index withing the containing Series.
Definition: ReadIterations.hpp:39
Logical compilation of data from one snapshot (e.g.
Definition: Iteration.hpp:127
Reading side of the streaming API.
Definition: ReadIterations.hpp:181
Implementation for the root level of the openPMD hierarchy.
Definition: Series.hpp:206
Definition: ReadIterations.hpp:55
SeriesIterator()
construct the end() iterator
Public definitions of openPMD-api.
Definition: Date.cpp:29
Access
File access mode to use during IO.
Definition: Access.hpp:30