openPMD-api
Classes | Enumerations | Functions | Variables
openPMD::internal Namespace Reference

Writing side of the streaming API. More...

Classes

class  AttributableData
 
class  BaseRecordData
 
class  ScalarIterator
 
class  BaseRecordComponentData
 
class  EraseStaleEntries
 This class wraps a Container and forwards operator[]() and at() to it. More...
 
class  ContainerData
 
struct  FlushParams
 Parameters recursively passed through the openPMD hierarchy when flushing. More...
 
struct  ParsedFlushParams
 
struct  DeferredParseAccess
 
class  IterationData
 
class  RecordComponentData
 
class  SeriesData
 Data members for Series. More...
 

Enumerations

enum class  ParsePreference : char { UpFront , PerStep }
 
enum class  SeriesStatus : unsigned char { Default , Parsing }
 Some parts of the openPMD object model are read-only when accessing a Series in Access::READ_ONLY mode, notably Containers and Attributes. More...
 
enum class  CloseStatus {
  ParseAccessDeferred , Open , ClosedInFrontend , ClosedInBackend ,
  ClosedTemporarily
}
 Whether an iteration has been closed yet. More...
 

Functions

std::string operationAsString (Operation op)
 
template<typename Functor , typename... Args>
auto withRWAccess (SeriesStatus &status, Functor &&functor, Args &&...args) -> decltype(std::forward< Functor >(functor)(std::forward< Args >(args)...))
 

Variables

FlushParams const defaultFlushParams {}
 
ParsedFlushParams const defaultParsedFlushParams {defaultFlushParams}
 

Detailed Description

Writing side of the streaming API.

Create instance via Series::writeIterations(). For use via WriteIterations::operator[](). Designed to allow reading any kind of Series, streaming and non- streaming alike. Calling Iteration::close() manually before opening the next iteration is encouraged and will implicitly flush all deferred IO actions. Otherwise, Iteration::close() will be implicitly called upon SeriesIterator::operator++(), i.e. upon going to the next iteration in the foreach loop.

Since this is designed for streaming mode, reopening an iteration is not possible once it has been closed.

Enumeration Type Documentation

◆ CloseStatus

Whether an iteration has been closed yet.

Enumerator
ParseAccessDeferred 

The reader has not yet parsed this iteration.

Open 

Iteration has not been closed.

ClosedInFrontend 

Iteration has been closed, but task has not yet been propagated to the backend

ClosedInBackend 

Iteration has been closed and task has been propagated to the backend

ClosedTemporarily 

Iteration has been closed internally and may be reopened later

◆ SeriesStatus

enum openPMD::internal::SeriesStatus : unsigned char
strong

Some parts of the openPMD object model are read-only when accessing a Series in Access::READ_ONLY mode, notably Containers and Attributes.

They are filled at parse time and not modified afterwards. Such state-changing operations are hence allowed under either of two conditions: 1) The Series is opened in an open mode that allows writing in any way. (Currently any but Access::READ_ONLY). 2) The Series is in Parsing state. This way, modifying the open mode during parsing can be avoided.

Enumerator
Default 

Mutability of objects in the openPMD object model is determined by the open mode (Access enum), normal state in which the user interacts with the Series.

Parsing 

All objects in the openPMD object model are temporarily mutable to allow inserting newly-parsed data.

Special state only active while internal routines are running.