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;
80 std::shared_ptr<SharedData> m_data;
87 Series, std::optional<internal::ParsePreference> parsePreference);
100 inline bool setCurrentIteration()
102 auto &data = *m_data;
103 if (data.iterationsInCurrentStep.empty())
105 std::cerr <<
"[ReadIterations] Encountered a step without " 106 "iterations. Closing the Series." 111 data.currentIteration = *data.iterationsInCurrentStep.begin();
115 inline std::optional<uint64_t> peekCurrentIteration()
117 auto &data = *m_data;
118 if (data.iterationsInCurrentStep.empty())
124 return {*data.iterationsInCurrentStep.begin()};
128 std::optional<SeriesIterator *> nextIterationInStep();
140 std::optional<SeriesIterator *> nextStep(
size_t recursion_depth);
142 std::optional<SeriesIterator *> loopBody();
144 void deactivateDeadIteration(iteration_index_t);
146 void initSeriesInLinearReadMode();
170 using iterations_t = decltype(internal::SeriesData::iterations);
174 std::optional<SeriesIterator> alreadyOpened;
175 std::optional<internal::ParsePreference> m_parsePreference;
180 std::optional<internal::ParsePreference> parsePreference);
Subclass of Iteration that knows its own index withing the containing Series.
Definition: ReadIterations.hpp:38
Access
File access mode to use during IO.
Definition: Access.hpp:29
Logical compilation of data from one snapshot (e.g.
Definition: Iteration.hpp:126
Reading side of the streaming API.
Definition: ReadIterations.hpp:165
Implementation for the root level of the openPMD hierarchy.
Definition: Series.hpp:186
Public definitions of openPMD-api.
Definition: ReadIterations.hpp:54