24 #include "openPMD/RecordComponent.hpp" 40 friend class DynamicMemoryView;
46 Span(
T *ptr,
size_t size) : m_ptr(ptr), m_size(size)
51 using reverse_iterator = std::reverse_iterator<iterator>;
58 inline T *data()
const 63 inline T &operator[](
size_t i)
const 68 inline iterator begin()
const 72 inline iterator end()
const 74 return data() + size();
76 inline reverse_iterator rbegin()
const 79 return reverse_iterator{data() + size()};
81 inline reverse_iterator rend()
const 83 return reverse_iterator{data()};
96 class DynamicMemoryView
98 friend class RecordComponent;
101 using param_t = Parameter<Operation::GET_BUFFER_VIEW>;
104 RecordComponent m_recordComponent;
107 param_t param,
size_t size, RecordComponent recordComponent)
108 : m_param(
std::move(param))
110 , m_recordComponent(
std::move(recordComponent))
112 m_param.update =
true;
116 explicit DynamicMemoryView() =
default;
123 if (m_param.out->backendManagedBuffer)
126 m_recordComponent.IOHandler()->enqueue(
127 IOTask(&m_recordComponent, m_param));
128 m_recordComponent.IOHandler()->flush(internal::defaultFlushParams);
130 return Span<T>{
static_cast<T *
>(m_param.out->ptr), m_size};
Self-contained description of a single IO operation.
Definition: IOTask.hpp:695
Public definitions of openPMD-api.
Subset of C++20 std::span class template.
Definition: Writable.hpp:46
Span< T > currentBuffer()
Acquire the underlying buffer at its current position in memory.
Definition: Span.hpp:121