23 #include "openPMD/Iteration.hpp"
24 #include "openPMD/snapshots/IteratorTraits.hpp"
38 template <
typename value_type_in>
41 OpaqueSeriesIterator<value_type_in>,
51 std::unique_ptr<DynamicSeriesIterator<value_type_in>> m_internal_iterator;
56 template <
typename ChildClass>
57 auto to_concrete_iterator() -> std::optional<ChildClass>
60 dynamic_cast<ChildClass *
>(this->m_internal_iterator.get());
65 return *bare_iterator;
81 using value_type = value_type_in;
83 auto operator*() -> value_type &;
84 auto operator*()
const -> value_type
const &;
120 using key_type = Iteration::IterationIndex_t;
129 using size_type = size_t;
133 virtual auto currentIteration() -> std::optional<value_type *>;
134 virtual auto currentIteration()
const
135 -> std::optional<value_type const *> = 0;
137 virtual auto begin() ->
iterator = 0;
146 virtual auto empty()
const ->
bool = 0;
147 virtual auto size()
const ->
size_t = 0;
149 virtual auto at(key_type
const &key)
const ->
mapped_type const & = 0;
150 virtual auto at(key_type
const &key) ->
mapped_type &;
152 virtual auto operator[](key_type
const &key) ->
mapped_type & = 0;
154 virtual auto clear() ->
void = 0;
156 virtual auto find(key_type
const &key) ->
iterator = 0;
157 virtual auto find(key_type
const &key)
const ->
const_iterator = 0;
159 virtual auto contains(key_type
const &key)
const ->
bool = 0;
161 virtual auto erase(key_type
const &key) -> size_type = 0;
164 virtual auto emplace(value_type &&) -> std::pair<iterator, bool> = 0;
Definition: IteratorTraits.hpp:93
Definition: ContainerTraits.hpp:118
Map-like container that enforces openPMD requirements and handles IO.
Definition: Container.hpp:104
Definition: IteratorTraits.hpp:56
Logical compilation of data from one snapshot (e.g.
Definition: Iteration.hpp:146
Counterpart to Snapshots class: Iterator type that can wrap different implementations internally.
Definition: ContainerTraits.hpp:43
OpaqueSeriesIterator & operator--()
Not implemented for synchronous workflow: Reverse iteration not possible.
Definition: ContainerTraits.cpp:80
Definition: ContainerImpls.hpp:131
Implementation for the root level of the openPMD hierarchy.
Definition: Series.hpp:288
Definition: ContainerImpls.hpp:36
Public definitions of openPMD-api.
Definition: Date.cpp:29
SnapshotWorkflow
Enum used as a label for distinguishing the different Snapshots implementations.
Definition: ContainerTraits.hpp:109