23 #include "openPMD/backend/BaseRecordComponent.hpp"
24 #include "openPMD/auxiliary/ShareRaw.hpp"
25 #include "openPMD/Dataset.hpp"
34 #include <type_traits>
39 #ifndef OPENPMD_protected
40 # define OPENPMD_protected protected
56 template<
typename T >
59 static constexpr
bool value =
false;
62 template<
typename T_Value >
65 static constexpr
bool value =
true;
74 static constexpr
bool value =
true;
78 template<
typename T >
91 template<
typename T_elem >
129 uint8_t getDimensionality()
const;
130 Extent getExtent()
const;
140 template<
typename T >
151 template<
typename T >
180 template<
typename T >
194 template<
typename T >
196 std::shared_ptr< T >,
200 template<
typename T >
201 void storeChunk(std::shared_ptr< T >, Offset, Extent);
203 template<
typename T_ContiguousContainer >
204 typename std::enable_if<
207 storeChunk(T_ContiguousContainer &, Offset = {0u}, Extent = {-1u});
239 template<
typename T,
typename F >
246 template<
typename T >
249 static constexpr
char const *
const SCALAR =
"\vScalar";
258 std::shared_ptr< std::queue< IOTask > > m_chunks;
259 std::shared_ptr< Attribute > m_constantValue;
260 std::shared_ptr< bool > m_isEmpty = std::make_shared< bool >(
false );
263 std::shared_ptr< bool > m_hasBeenExtended =
264 std::make_shared< bool >(
false );
267 void flush(std::string
const&);
286 bool dirtyRecursive()
const;
298 std::shared_ptr< std::string >
m_name = std::make_shared< std::string >();
303 #include "RecordComponent.tpp"
Definition: ParticleSpecies.hpp:34
Datatype
Concrete datatype of an object available at runtime.
Definition: Datatype.hpp:45
bool empty() const
Returns true if this is an empty record component.
Definition: RecordComponent.cpp:176
Definition: BaseRecord.hpp:36
Container for N-dimensional, homogeneous Records.
Definition: Mesh.hpp:40
std::shared_ptr< std::string > m_name
The same std::string that the parent class would pass as parameter to RecordComponent::flush().
Definition: RecordComponent.hpp:298
Logical compilation of data from one snapshot (e.g.
Definition: Iteration.hpp:39
Public definitions of openPMD-api.
Definition: Date.cpp:29
Definition: Record.hpp:33
RecordComponent & makeEmpty(uint8_t dimensions)
Create a dataset with zero extent in each dimension.
Map-like container that enforces openPMD requirements and handles IO.
Definition: Container.hpp:106
Emulate in the C++17 concept ContiguousContainer.
Definition: RecordComponent.hpp:57
RecordComponent & resetDataset(Dataset)
Declare the dataset's type and extent.
Definition: RecordComponent.cpp:58
Definition: BaseRecordComponent.hpp:34
A view into a buffer that might be reallocated at some points and thus has changing base pointers ove...
Definition: RecordComponent.hpp:79
Definition: RecordComponent.hpp:81
Definition: Dataset.hpp:36
std::shared_ptr< T > loadChunk(Offset={ 0u }, Extent={ -1u })
Load and allocate a chunk of data.
RecordComponent & makeConstant(T)
Create a dataset with regular extent and constant value.