23 #include "openPMD/Iteration.hpp"
24 #include "openPMD/Series.hpp"
25 #include "openPMD/backend/ParsePreference.hpp"
36 using iteration_index_t = IndexedIteration::index_t;
38 using maybe_series_t = std::optional<Series>;
42 SharedData() =
default;
43 SharedData(SharedData
const &) =
delete;
44 SharedData(SharedData &&) =
delete;
45 SharedData &operator=(SharedData
const &) =
delete;
46 SharedData &operator=(SharedData &&) =
delete;
48 maybe_series_t series;
49 std::deque<iteration_index_t> iterationsInCurrentStep;
50 uint64_t currentIteration{};
51 std::optional<internal::ParsePreference> parsePreference;
57 std::set<Iteration::IterationIndex_t> ignoreIterations;
63 std::shared_ptr<std::optional<SharedData>> m_data =
64 std::make_shared<std::optional<SharedData>>(std::nullopt);
68 return m_data->value();
70 SharedData
const &get()
const
72 return m_data->value();
81 std::optional<internal::ParsePreference>
const &parsePreference);
94 inline bool setCurrentIteration()
97 if (data.iterationsInCurrentStep.empty())
99 std::cerr <<
"[ReadIterations] Encountered a step without "
100 "iterations. Closing the Series."
105 data.currentIteration = *data.iterationsInCurrentStep.begin();
109 inline std::optional<uint64_t> peekCurrentIteration()
112 if (data.iterationsInCurrentStep.empty())
118 return {*data.iterationsInCurrentStep.begin()};
122 std::optional<SeriesIterator *> nextIterationInStep();
134 std::optional<SeriesIterator *> nextStep(
size_t recursion_depth);
136 std::optional<SeriesIterator *> loopBody();
138 void deactivateDeadIteration(iteration_index_t);
140 void initSeriesInLinearReadMode();
166 using iterations_t = decltype(internal::SeriesData::iterations);
170 std::optional<internal::ParsePreference> m_parsePreference;
175 std::optional<internal::ParsePreference> parsePreference);
Subclass of Iteration that knows its own index withing the containing Series.
Definition: Iteration.hpp:427
Reading side of the streaming API.
Definition: ReadIterations.hpp:162
Implementation for the root level of the openPMD hierarchy.
Definition: Series.hpp:219
Definition: ReadIterations.hpp:35
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