23 #include "openPMD/Dataset.hpp" 24 #include "openPMD/auxiliary/ShareRaw.hpp" 25 #include "openPMD/auxiliary/TypeTraits.hpp" 26 #include "openPMD/auxiliary/UniquePtr.hpp" 27 #include "openPMD/backend/BaseRecordComponent.hpp" 37 #include <type_traits> 41 #ifndef OPENPMD_protected 42 #define OPENPMD_protected protected: 102 template <
typename T,
typename T_key,
typename T_container>
106 template <
typename T_elem>
108 template <
typename T_elem>
109 friend class BaseRecordInterface;
118 enum class Allocation
148 uint8_t getDimensionality()
const;
149 Extent getExtent()
const;
159 template <
typename T>
170 template <
typename T>
199 template <
typename T>
200 std::shared_ptr<T> loadChunk(Offset = {0u}, Extent = {-1u});
223 template <
typename T>
224 void loadChunk(std::shared_ptr<T> data, Offset offset, Extent extent);
242 template <
typename T>
243 void loadChunk(std::shared_ptr<
T[]> data, Offset offset, Extent extent);
260 template <
typename T>
261 void loadChunkRaw(
T *data, Offset offset, Extent extent);
281 template <
typename T>
282 void storeChunk(std::shared_ptr<T> data, Offset offset, Extent extent);
293 template <
typename T>
294 void storeChunk(std::shared_ptr<
T[]> data, Offset offset, Extent extent);
308 template <
typename T>
323 template <
typename T,
typename Del>
324 void storeChunk(std::unique_ptr<T, Del> data, Offset offset, Extent extent);
338 template <
typename T>
339 void storeChunkRaw(
T *data, Offset offset, Extent extent);
356 template <
typename T_ContiguousContainer>
357 typename std::enable_if_t<
358 auxiliary::IsContiguousContainer_v<T_ContiguousContainer>>
360 T_ContiguousContainer &data,
361 Offset offset = {0u},
362 Extent extent = {-1u});
397 template <
typename T,
typename F>
399 storeChunk(Offset offset, Extent extent, F &&createBuffer);
405 template <
typename T>
408 static constexpr
char const *
const SCALAR =
"\vScalar";
433 bool dirtyRecursive()
const;
435 std::shared_ptr<internal::RecordComponentData> m_recordComponentData{
448 return *m_recordComponentData;
453 return *m_recordComponentData;
456 inline void setData(std::shared_ptr<internal::RecordComponentData> data)
458 m_recordComponentData = std::move(data);
459 BaseRecordComponent::setData(m_recordComponentData);
467 #include "RecordComponent.tpp" Unique Pointer class that uses a dynamic destructor type.
Definition: UniquePtr.hpp:86
Definition: Dataset.hpp:35
bool m_isEmpty
True if this component is an empty dataset, i.e.
Definition: RecordComponent.hpp:91
Logical compilation of data from one snapshot (e.g.
Definition: Iteration.hpp:126
Attribute m_constantValue
Stores the value for constant record components.
Definition: RecordComponent.hpp:74
Definition: Memory.hpp:174
Datatype
Concrete datatype of an object available at runtime.
Definition: Datatype.hpp:45
Definition: RecordComponent.hpp:55
Varidic datatype supporting at least all formats for attributes specified in the openPMD standard...
Definition: Attribute.hpp:54
Definition: RecordComponent.hpp:100
std::string m_name
The same std::string that the parent class would pass as parameter to RecordComponent::flush().
Definition: RecordComponent.hpp:84
Public definitions of openPMD-api.
bool m_hasBeenExtended
User has extended the dataset, but the EXTEND task must yet be flushed to the backend.
Definition: RecordComponent.hpp:96
Definition: Record.hpp:32
Definition: BaseRecord.hpp:58
Parameters recursively passed through the openPMD hierarchy when flushing.
Definition: AbstractIOHandler.hpp:84
std::queue< IOTask > m_chunks
Chunk reading/writing requests on the contained dataset.
Definition: RecordComponent.hpp:69
A view into a buffer that might be reallocated at some points and thus has changing base pointers ove...
Definition: RecordComponent.hpp:49
Definition: ParticleSpecies.hpp:33
Container for N-dimensional, homogeneous Records.
Definition: Mesh.hpp:40
Map-like container that enforces openPMD requirements and handles IO.
Definition: Container.hpp:131
Definition: BaseRecordComponent.hpp:36
Definition: MeshRecordComponent.hpp:29
Definition: BaseRecordComponent.hpp:62