22#include " openPMD/Error.hpp"
33#include " openPMD/IO/Access.hpp"
44#include " openPMD/snapshots/ContainerTraits.hpp"
5+ #include " openPMD/snapshots/IteratorHelpers.hpp"
56#include " openPMD/snapshots/RandomAccessIterator.hpp"
67#include " openPMD/snapshots/StatefulIterator.hpp"
78#include < memory>
@@ -43,8 +44,7 @@ auto StatefulSnapshotsContainer::get() const -> StatefulIterator const *
4344auto StatefulSnapshotsContainer::stateful_to_opaque (StatefulIterator const &it)
4445 -> OpaqueSeriesIterator<value_type>
4546{
46- return OpaqueSeriesIterator<value_type>::from_concrete_iterator<
47- StatefulIterator>(it);
47+ return from_concrete_iterator<StatefulIterator, value_type>(it);
4848}
4949
5050auto StatefulSnapshotsContainer::currentIteration () const
@@ -329,43 +329,49 @@ auto RandomAccessIteratorContainer::currentIteration() const
329329
330330auto RandomAccessIteratorContainer::begin () -> iterator
331331{
332- return iterator:: from_concrete_iterator<concrete_iterator_type>(
332+ return from_concrete_iterator<concrete_iterator_type, iterator::value_type >(
333333 m_cont.begin ());
334334}
335335auto RandomAccessIteratorContainer::end () -> iterator
336336{
337- return iterator:: from_concrete_iterator<concrete_iterator_type>(
337+ return from_concrete_iterator<concrete_iterator_type, iterator::value_type >(
338338 m_cont.end ());
339339}
340340auto RandomAccessIteratorContainer::begin () const -> const_iterator
341341{
342- return const_iterator::from_concrete_iterator<concrete_const_iterator_type>(
343- m_cont.begin ());
342+ return from_concrete_iterator<
343+ concrete_const_iterator_type,
344+ const_iterator::value_type>(m_cont.begin ());
344345}
345346auto RandomAccessIteratorContainer::end () const -> const_iterator
346347{
347- return const_iterator::from_concrete_iterator<concrete_const_iterator_type>(
348- m_cont.end ());
348+ return from_concrete_iterator<
349+ concrete_const_iterator_type,
350+ const_iterator::value_type>(m_cont.end ());
349351}
350352auto RandomAccessIteratorContainer::rbegin () -> reverse_iterator
351353{
352- return reverse_iterator::from_concrete_iterator<
353- concrete_reverse_iterator_type>(m_cont.rbegin ());
354+ return from_concrete_iterator<
355+ concrete_reverse_iterator_type,
356+ reverse_iterator::value_type>(m_cont.rbegin ());
354357}
355358auto RandomAccessIteratorContainer::rend () -> reverse_iterator
356359{
357- return reverse_iterator::from_concrete_iterator<
358- concrete_reverse_iterator_type>(m_cont.rend ());
360+ return from_concrete_iterator<
361+ concrete_reverse_iterator_type,
362+ reverse_iterator::value_type>(m_cont.rend ());
359363}
360364auto RandomAccessIteratorContainer::rbegin () const -> const_reverse_iterator
361365{
362- return const_reverse_iterator::from_concrete_iterator<
363- concrete_const_reverse_iterator_type>(m_cont.rbegin ());
366+ return from_concrete_iterator<
367+ concrete_const_reverse_iterator_type,
368+ const_reverse_iterator::value_type>(m_cont.rbegin ());
364369}
365370auto RandomAccessIteratorContainer::rend () const -> const_reverse_iterator
366371{
367- return const_reverse_iterator::from_concrete_iterator<
368- concrete_const_reverse_iterator_type>(m_cont.rend ());
372+ return from_concrete_iterator<
373+ concrete_const_reverse_iterator_type,
374+ const_reverse_iterator::value_type>(m_cont.rend ());
369375}
370376
371377auto RandomAccessIteratorContainer::empty () const -> bool
@@ -396,14 +402,15 @@ auto RandomAccessIteratorContainer::clear() -> void
396402
397403auto RandomAccessIteratorContainer::find (key_type const &key) -> iterator
398404{
399- return iterator:: from_concrete_iterator<concrete_iterator_type>(
405+ return from_concrete_iterator<concrete_iterator_type, iterator::value_type >(
400406 m_cont.find (key));
401407}
402408auto RandomAccessIteratorContainer::find (key_type const &key) const
403409 -> const_iterator
404410{
405- return const_iterator::from_concrete_iterator<concrete_const_iterator_type>(
406- m_cont.find (key));
411+ return from_concrete_iterator<
412+ concrete_const_iterator_type,
413+ const_iterator::value_type>(m_cont.find (key));
407414}
408415
409416auto RandomAccessIteratorContainer::contains (key_type const &key) const -> bool
@@ -423,17 +430,17 @@ auto RandomAccessIteratorContainer::erase(iterator it) -> iterator
423430 throw std::runtime_error (
424431 " [RandomAccessIteratorContainer] Illegal dynamic iterator type." );
425432 }
426- return iterator:: from_concrete_iterator<concrete_iterator_type>(
433+ return from_concrete_iterator<concrete_iterator_type, iterator::value_type >(
427434 m_cont.erase (bare_iterator->m_it ));
428435}
429436
430437auto RandomAccessIteratorContainer::emplace (value_type &&value)
431438 -> std::pair<iterator, bool>
432439{
433- throw std::runtime_error (" EMPLACCIINNGGGG" );
434440 auto [tmp_iterator, newly_emplaced] = m_cont.emplace (std::move (value));
435441 return std::make_pair (
436- iterator::from_concrete_iterator<concrete_iterator_type>(tmp_iterator),
442+ from_concrete_iterator<concrete_iterator_type, iterator::value_type>(
443+ tmp_iterator),
437444 newly_emplaced);
438445}
439446
0 commit comments