24 #include "openPMD/RecordComponent.hpp"
36 template<
typename T >
40 friend class DynamicMemoryView;
46 Span( T * ptr,
size_t size ) : m_ptr( ptr ), m_size( size )
52 using reverse_iterator = std::reverse_iterator< iterator >;
59 inline T * data()
const
64 inline T & operator[](
size_t i )
const
69 inline iterator begin()
const
73 inline iterator end()
const
75 return data() + size();
77 inline reverse_iterator rbegin()
const
80 return reverse_iterator{ data() + size() };
82 inline reverse_iterator rend()
const
84 return reverse_iterator{ data() };
96 template<
typename T >
97 class DynamicMemoryView
99 friend class RecordComponent;
102 using param_t = Parameter< Operation::GET_BUFFER_VIEW >;
105 RecordComponent m_recordComponent;
108 param_t param,
size_t size, RecordComponent recordComponent )
109 : m_param( std::move( param ) )
111 , m_recordComponent( std::move( recordComponent ) )
113 m_param.update =
true;
122 if( m_param.out->backendManagedBuffer )
125 m_recordComponent.IOHandler()->enqueue(
126 IOTask( &m_recordComponent, m_param ) );
127 m_recordComponent.IOHandler()->flush();
129 return Span< T >{
static_cast< T *
>( m_param.out->ptr ), m_size };