71 std::optional<Iteration::IterationIndex_t> iteration_idx;
75 std::vector<Iteration::IterationIndex_t>
76 available_iterations_in_step;
80 std::optional<Iteration::IterationIndex_t> iteration_idx,
81 std::vector<Iteration::IterationIndex_t>
82 available_iterations_in_step);
95 step_status_types::Before_t,
96 step_status_types::During_t,
97 step_status_types::After_t>
100 constexpr static Before_t Before{};
103 constexpr static After_t After{};
105 using variant_t = std::variant<
110 using variant_t::operator=;
112 template <
typename V>
113 auto get_variant() -> std::optional<V *>;
114 template <
typename V>
115 auto get_variant()
const -> std::optional<V const *>;
117 auto get_iteration_index()
const
118 -> std::optional<Iteration::IterationIndex_t>;
123 enum class AtTheEdge :
bool
139 template <
typename F,
typename G>
140 void map_during_t(F &&map, G &&create_new);
145 template <
typename F>
146 void map_during_t(F &&map);
150 inline auto as_base()
const -> variant_t
const &
154 inline auto as_base() -> variant_t &
203 Container<Iteration, Iteration::IterationIndex_t>::value_type>
205 friend class StatefulSnapshotsContainer;
209 using iteration_index_t = IndexedIteration::index_t;
215 SharedData() =
default;
216 SharedData(SharedData
const &) =
delete;
217 SharedData(SharedData &&) =
delete;
218 SharedData &operator=(SharedData
const &) =
delete;
219 SharedData &operator=(SharedData &&) =
delete;
223 using step_index = size_t;
236 CurrentStep currentStep = {CurrentStep::Before};
241 std::optional<internal::ParsePreference> parsePreference;
256 std::unordered_map<iteration_index_t, step_index> seen_iterations;
262 auto currentIteration()
const
263 -> std::optional<Iteration::IterationIndex_t>;
270 std::shared_ptr<std::optional<SharedData>> m_data =
271 std::make_shared<std::optional<SharedData>>(std::nullopt);
273 auto get() -> SharedData &;
274 auto get()
const -> SharedData
const &;
278 Container<Iteration, Iteration::IterationIndex_t>::value_type>;
282 typename Container<Iteration, Iteration::IterationIndex_t>::value_type;
283 using typename parent_t ::difference_type;
306 std::optional<internal::ParsePreference>
const &parsePreference);
311 auto operator*() -> value_type &;
312 auto operator*() const -> value_type const &;
336 auto is_end() const ->
bool;
338 operator
bool() const;
368 void initIteratorFilebased();
373 void deactivateDeadIteration(iteration_index_t);
375 void initSeriesInLinearReadMode();
383 enum class TypeOfEndIterator :
char
386 NoMoreIterationsInStep
388 auto turn_into_end_iterator(TypeOfEndIterator) -> void;
389 auto assert_end_iterator() const ->
void;
391 auto resetCurrentIterationToBegin(
392 size_t num_skipped_iterations,
393 std::vector<iteration_index_t> current_iterations) ->
void;
394 auto peekCurrentlyOpenIteration() const
395 ->
std::optional<value_type const *>;
396 auto peekCurrentlyOpenIteration() ->
std::optional<value_type *>;
398 auto reparse_possibly_deleted_iteration(iteration_index_t) ->
void;