quadEM  7-0
NDFileHDF5Dataset.h
Go to the documentation of this file.
1 #ifndef NDFILEHDF5DATASET_H_
2 #define NDFILEHDF5DATASET_H_
3 
4 #include <string>
5 #include <hdf5.h>
6 #include "NDPluginFile.h"
8 
12 {
13  public:
14  NDFileHDF5Dataset(asynUser *pAsynUser, const std::string& name, hid_t dataset);
15  virtual ~NDFileHDF5Dataset();
16 
17  asynStatus configureDims(NDArray *pArray, bool multiframe, int extradimensions, int *extra_dims, int *extra_dim_chunking, int *user_chunking);
18  asynStatus extendDataSet(int extradims);
19  asynStatus extendDataSet(int extradims, hsize_t *offsets);
20  asynStatus verifyChunking(NDArray *pArray);
21  void configureCompression(Codec_t codec);
22  asynStatus writeFile(NDArray *pArray, hid_t datatype, hid_t dataspace, hsize_t *framesize);
23  hid_t getHandle();
24  asynStatus flushDataset();
25  hsize_t getDim(int index);
26  hsize_t getMaxDim(int index);
27  hsize_t getOffset(int index);
28  hsize_t getVirtualDim(int index);
29 
30  private:
31 
32  asynUser *pAsynUser_; // Pointer to the asynUser structure
33  std::string name_; // Name of this dataset
34  hid_t dataset_; // Dataset handle
35  int nextRecord_;
36  bool multiFrame_; // Whether this is a multi frame dataset
37  int rank_; // number of dimensions
38  int extra_rank_; // number of extra dimensions
39  hsize_t *dims_; // Array of current dimension sizes. This updates as various dimensions grow.
40  hsize_t *chunkdims_; // Array of current configured chunk dimension sizes.
41  hsize_t *maxdims_; // Array of maximum dimension sizes. The value -1 is HDF5 term for infinite.
42  hsize_t *offset_; // Array of current offset in each dimension. The frame dimensions always have
43  // 0 offset but additional dimensions may grow as new frames are added.
44  hsize_t *virtualdims_; // The desired sizes of the extra (virtual) dimensions: {Y, X, n}
45  hsize_t *virtualchunkdims_; // The chunk sizes of the extra (virtual) dimensions: {Y, X, n}
46  Codec_t codec; // Definition of codec used to compress the data.
47 };
48 
49 
50 #endif
51 
Class used for writing a Dataset with the NDFileHDF5 plugin.
Definition: NDFileHDF5Dataset.h:11
void configureCompression(Codec_t codec)
Store codec definition.
Definition: NDFileHDF5Dataset.cpp:239
asynStatus extendDataSet(int extradims)
extendDataSet.
Definition: NDFileHDF5Dataset.cpp:114
hsize_t getVirtualDim(int index)
Return the requested virtual dimension size.
Definition: NDFileHDF5Dataset.cpp:457
NDFileHDF5Dataset(asynUser *pAsynUser, const std::string &name, hid_t dataset)
Constructor.
Definition: NDFileHDF5Dataset.cpp:22
virtual ~NDFileHDF5Dataset()
Definition: NDFileHDF5Dataset.cpp:33
hsize_t getDim(int index)
Return the requested dimension size.
Definition: NDFileHDF5Dataset.cpp:418
asynStatus verifyChunking(NDArray *pArray)
Check if pArray dimensions and codec match hdf5 dataset definition.
Definition: NDFileHDF5Dataset.cpp:191
Definition: Codec.h:20
hsize_t getMaxDim(int index)
Return the requested max dimension size.
Definition: NDFileHDF5Dataset.cpp:431
asynStatus writeFile(NDArray *pArray, hid_t datatype, hid_t dataspace, hsize_t *framesize)
writeFile.
Definition: NDFileHDF5Dataset.cpp:251
hsize_t getOffset(int index)
Return the requested offset size.
Definition: NDFileHDF5Dataset.cpp:444
asynStatus configureDims(NDArray *pArray, bool multiframe, int extradimensions, int *extra_dims, int *extra_dim_chunking, int *user_chunking)
configureDims.
Definition: NDFileHDF5Dataset.cpp:52
N-dimensional array class; each array has a set of dimensions, a data type, pointer to data...
Definition: NDArray.h:93
Definition: NDFileHDF5Layout.h:44
asynStatus flushDataset()
Definition: NDFileHDF5Dataset.cpp:386
hid_t getHandle()
getHandle.
Definition: NDFileHDF5Dataset.cpp:381