23#include "openPMD/Iteration.hpp"
24#include "openPMD/snapshots/IteratorTraits.hpp"
38template <
typename value_type_in>
39class OpaqueSeriesIterator
41 OpaqueSeriesIterator<value_type_in>,
46 friend class StatefulSnapshotsContainer;
47 friend class RandomAccessIteratorContainer;
51 std::unique_ptr<DynamicSeriesIterator<value_type_in>> m_internal_iterator;
54 using Self_t = OpaqueSeriesIterator<value_type_in>;
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;
73 OpaqueSeriesIterator(OpaqueSeriesIterator
const &other);
74 OpaqueSeriesIterator(OpaqueSeriesIterator &&other)
noexcept;
75 OpaqueSeriesIterator &operator=(OpaqueSeriesIterator
const &other);
76 OpaqueSeriesIterator &operator=(OpaqueSeriesIterator &&other)
noexcept;
78 ~OpaqueSeriesIterator();
81 using value_type = value_type_in;
83 auto operator*() -> value_type &;
84 auto operator*()
const -> value_type
const &;
87 OpaqueSeriesIterator &operator++();
102 bool operator==(OpaqueSeriesIterator
const &other)
const;
120 using key_type = Iteration::IterationIndex_t;
121 using value_type = Container<Iteration, key_type>::value_type;
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;
138 virtual auto begin()
const -> const_iterator = 0;
139 virtual auto end() -> iterator = 0;
140 virtual auto end()
const -> const_iterator = 0;
141 virtual auto rbegin() -> reverse_iterator = 0;
142 virtual auto rbegin()
const -> const_reverse_iterator = 0;
143 virtual auto rend() -> reverse_iterator = 0;
144 virtual auto rend()
const -> const_reverse_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;
162 virtual auto erase(iterator) -> iterator = 0;
164 virtual auto emplace(value_type &&) -> std::pair<iterator, bool> = 0;
Definition IteratorTraits.hpp:93
Definition ContainerTraits.hpp:118
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--(int)
Not implemented for synchronous workflow: Reverse iteration not possible.
Definition ContainerTraits.cpp:93
OpaqueSeriesIterator operator++(int)
Not implemented for synchronous workflow: Post increment not possible.
Definition ContainerTraits.cpp:86
OpaqueSeriesIterator & operator--()
Not implemented for synchronous workflow: Reverse iteration not possible.
Definition ContainerTraits.cpp:80
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