openPMD-api
|
Public Types | |
enum | Allocation { USER, API, AUTO } |
Public Member Functions | |
RecordComponent & | setUnitSI (double) |
RecordComponent & | resetDataset (Dataset) |
Declare the dataset's type and extent. More... | |
uint8_t | getDimensionality () const |
Extent | getExtent () const |
template<typename T > | |
RecordComponent & | makeConstant (T) |
Create a dataset with regular extent and constant value. More... | |
template<typename T > | |
RecordComponent & | makeEmpty (uint8_t dimensions) |
Create a dataset with zero extent in each dimension. More... | |
RecordComponent & | makeEmpty (Datatype dt, uint8_t dimensions) |
Non-template overload of RecordComponent::makeEmpty(). More... | |
bool | empty () const |
Returns true if this is an empty record component. More... | |
template<typename T > | |
std::shared_ptr< T > | loadChunk (Offset={ 0u }, Extent={ -1u }) |
Load and allocate a chunk of data. More... | |
template<typename T > | |
void | loadChunk (std::shared_ptr< T >, Offset, Extent) |
Load a chunk of data into pre-allocated memory. More... | |
template<typename T > | |
void | storeChunk (std::shared_ptr< T >, Offset, Extent) |
template<typename T_ContiguousContainer > | |
std::enable_if< traits::IsContiguousContainer< T_ContiguousContainer >::value >::type | storeChunk (T_ContiguousContainer &, Offset={0u}, Extent={-1u}) |
template<typename T , typename F > | |
DynamicMemoryView< T > | storeChunk (Offset, Extent, F &&createBuffer) |
Overload of storeChunk() that lets the openPMD API allocate a buffer. More... | |
template<typename T > | |
DynamicMemoryView< T > | storeChunk (Offset, Extent) |
Overload of span-based storeChunk() that uses operator new() to create a buffer. | |
![]() | |
double | unitSI () const |
BaseRecordComponent & | resetDatatype (Datatype) |
Datatype | getDatatype () const |
bool | constant () const |
Returns true if this is a constant record component. More... | |
ChunkTable | availableChunks () |
Get data chunks that are available to be loaded from the backend. More... | |
![]() | |
Attribute | getAttribute (std::string const &key) const |
Retrieve value of Attribute stored with provided key. More... | |
bool | deleteAttribute (std::string const &key) |
Remove Attribute of provided value both logically and physically. More... | |
std::vector< std::string > | attributes () const |
List all currently stored Attributes' keys. More... | |
size_t | numAttributes () const |
Count all currently stored Attributes. More... | |
bool | containsAttribute (std::string const &key) const |
Check whether am Attribute with a given key exists. More... | |
std::string | comment () const |
Retrieve a user-supplied comment associated with the object. More... | |
AttributableInterface & | setComment (std::string const &comment) |
Populate Attribute corresponding to a comment with the user-supplied comment. More... | |
void | seriesFlush () |
Flush the corresponding Series object. More... | |
MyPath | myPath () const |
The path to this object within its containing Series. More... | |
template<typename T > | |
bool | setAttribute (std::string const &key, T value) |
Populate Attribute of provided name with provided value. More... | |
bool | setAttribute (std::string const &key, char const value[]) |
Static Public Attributes | |
static constexpr const char *const | SCALAR = "\vScalar" |
Protected Member Functions | |
void | readBase () |
![]() | |
AttributableInterface (internal::AttributableData *) | |
template<typename T > | |
AttributableInterface (T *attri) | |
const internal::SeriesInternal & | retrieveSeries () const |
internal::SeriesInternal & | retrieveSeries () |
void | seriesFlush (FlushLevel) |
void | flushAttributes () |
void | readAttributes (ReadMode) |
template<typename T > | |
T | readFloatingpoint (std::string const &key) const |
Retrieve the value of a floating point Attribute of user-defined precision with ensured type-safety. More... | |
template<typename T > | |
std::vector< T > | readVectorFloatingpoint (std::string const &key) const |
Retrieve a vector of values of a floating point Attributes of user-defined precision with ensured type-safety. More... | |
AbstractIOHandler * | IOHandler () |
const AbstractIOHandler * | IOHandler () const |
Writable *& | parent () |
const Writable * | parent () const |
Writable & | writable () |
const Writable & | writable () const |
internal::AttributableData & | get () |
const internal::AttributableData & | get () const |
bool | dirty () const |
bool & | dirty () |
bool | written () const |
bool & | written () |
const Iteration & | containingIteration () const |
Returns the corresponding Iteration. More... | |
Iteration & | containingIteration () |
Protected Attributes | |
std::shared_ptr< std::queue< IOTask > > | m_chunks |
std::shared_ptr< Attribute > | m_constantValue |
std::shared_ptr< bool > | m_isEmpty = std::make_shared< bool >( false ) |
std::shared_ptr< bool > | m_hasBeenExtended |
std::shared_ptr< std::string > | m_name = std::make_shared< std::string >() |
The same std::string that the parent class would pass as parameter to RecordComponent::flush(). More... | |
![]() | |
std::shared_ptr< Dataset > | m_dataset |
std::shared_ptr< bool > | m_isConstant |
![]() | |
std::shared_ptr< internal::AttributableData > | m_attributableData |
![]() | |
internal::AttributableData * | m_attri = nullptr |
Additional Inherited Members | |
![]() | |
enum | ReadMode { IgnoreExisting, OverrideExisting, FullyReread } |
bool openPMD::RecordComponent::empty | ( | ) | const |
Returns true if this is an empty record component.
An empty record component has a defined dimensionality but zero extent and no value(s) stored in it.
std::shared_ptr< T > openPMD::RecordComponent::loadChunk | ( | Offset | = { 0u } , |
Extent | = { -1u } |
||
) |
Load and allocate a chunk of data.
Set offset to {0u} and extent to {-1u} for full selection.
If offset is non-zero and extent is {-1u} the leftover extent in the record component will be selected.
void openPMD::RecordComponent::loadChunk | ( | std::shared_ptr< T > | , |
Offset | , | ||
Extent | |||
) |
Load a chunk of data into pre-allocated memory.
shared_ptr for data must be pre-allocated, contiguous and large enough for extent
Set offset to {0u} and extent to {-1u} for full selection.
If offset is non-zero and extent is {-1u} the leftover extent in the record component will be selected.
RecordComponent& openPMD::RecordComponent::makeConstant | ( | T | ) |
Create a dataset with regular extent and constant value.
In a constant record component, the value for each date in its extent is the same. Implemented by storing only a constant value as meta-data.
T | type of the stored value |
RecordComponent & openPMD::RecordComponent::makeEmpty | ( | Datatype | dt, |
uint8_t | dimensions | ||
) |
Non-template overload of RecordComponent::makeEmpty().
Uses the passed openPMD datatype to determine the template parameter.
dt | The datatype of which to create an empty dataset. |
dimensions | The dimensionality of the dataset. |
RecordComponent& openPMD::RecordComponent::makeEmpty | ( | uint8_t | dimensions | ) |
Create a dataset with zero extent in each dimension.
Implemented by creating a constant record component with a dummy value (default constructor of the respective datatype).
dimensions | The number of dimensions. Must be greater than zero. |
RecordComponent & openPMD::RecordComponent::resetDataset | ( | Dataset | d | ) |
Declare the dataset's type and extent.
Calling this again after flushing will require resizing the dataset. Support for this depends on the backend. Unsupported are:
Backend support for resizing datasets:
DynamicMemoryView< T > openPMD::RecordComponent::storeChunk | ( | Offset | , |
Extent | , | ||
F && | createBuffer | ||
) |
Overload of storeChunk() that lets the openPMD API allocate a buffer.
This may save memory if the openPMD backend in use is able to provide users a view into its own buffers, avoiding the need to allocate a new buffer.
Data can be written into the returned buffer until the next call to Series::flush() at which time the data will be read from.
In order to provide a view into backend buffers, this call must possibly create files and datasets in the backend, making it MPI-collective. In order to avoid this, calling Series::flush() prior to this is recommended to flush definitions.
createBuffer | If the backend in use has no special support for this operation, the openPMD API will fall back to creating a buffer, queuing it for writing and returning a view into that buffer to the user. The functor createBuffer will be called for this purpose. It consumes a length parameter of type size_t and should return a shared_ptr of type T to a buffer at least that length. In that case, using this API call is equivalent to (1) creating a shared pointer via createBuffer and (2) then using the regular storeChunk() API on it. If the backend supports it, the buffer is not read before the next flush point and becomes invalid afterwards. |
|
protected |
|
protected |
The same std::string that the parent class would pass as parameter to RecordComponent::flush().
This is stored only upon RecordComponent::flush() if AbstractIOHandler::flushLevel is set to FlushLevel::SkeletonOnly (for use by the Span<T>-based overload of RecordComponent::storeChunk()).