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()};
96class DynamicMemoryView
98 friend class RecordComponent;
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()
118 m_param.out->backendManagedBuffer =
false;
126 if (m_param.out->backendManagedBuffer)
129 m_recordComponent.IOHandler()->enqueue(
130 IOTask(&m_recordComponent, m_param));
131 m_recordComponent.IOHandler()->flush(internal::defaultFlushParams);
133 return Span<T>{
static_cast<T *
>(m_param.out->ptr), m_size};
Span< T > currentBuffer()
Acquire the underlying buffer at its current position in memory.
Definition Span.hpp:124
Self-contained description of a single IO operation.
Definition IOTask.hpp:836
Subset of C++20 std::span class template.
Definition Span.hpp:38
Public definitions of openPMD-api.
Definition Date.cpp:29
@ T
time
Definition UnitDimension.hpp:41
Typesafe description of all required arguments for a specified Operation.
Definition IOTask.hpp:148