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 };
Self-contained description of a single IO operation.
Definition: IOTask.hpp:589
Public definitions of openPMD-api.
Definition: Date.cpp:29
Subset of C++20 std::span class template.
Definition: Writable.hpp:47
Span< T > currentBuffer()
Acquire the underlying buffer at its current position in memory.
Definition: Span.hpp:120