quadEM  7-0
NDFileHDF5AttributeDataset.h
Go to the documentation of this file.
1 /*
2  * NDFileHDF5AttributeDataset.h
3  *
4  * Created on: 30 Apr 2015
5  * Author: gnx91527
6  */
7 
8 #ifndef ADAPP_PLUGINSRC_NDFILEHDF5ATTRIBUTEDATASET_H_
9 #define ADAPP_PLUGINSRC_NDFILEHDF5ATTRIBUTEDATASET_H_
10 
11 #include <string>
12 #include <hdf5.h>
13 #include <asynDriver.h>
14 #include <NDAttribute.h>
15 #include "NDFileHDF5Layout.h"
16 #include "NDFileHDF5VersionCheck.h"
17 
19 {
20 public:
21  NDFileHDF5AttributeDataset(hid_t file, const std::string& name, NDAttrDataType_t type);
23 
24  void setDsetName(const std::string& dsetName);
25  void setWhenToSave(hdf5::When_t whenToSave);
26  void setParentGroupName(const std::string& group);
27  asynStatus createDataset(int user_chunking);
28  asynStatus createDataset(bool multiframe, int extradimensions, int *extra_dims, int *user_chunking);
29  asynStatus writeAttributeDataset(hdf5::When_t whenToSave, NDAttribute *ndAttr, int flush);
30  asynStatus writeAttributeDataset(hdf5::When_t whenToSave, hsize_t *offsets, NDAttribute *ndAttr, int flush, int indexed);
31  asynStatus closeAttributeDataset();
32  asynStatus flushDataset();
34  hid_t getHandle();
35 
36 private:
37  asynStatus createHDF5Dataset();
38  asynStatus configureDims(int user_chunking);
39  asynStatus configureDimsFromDataset(bool multiframe, int extradimensions, int *extra_dims, int *user_chunking);
40  asynStatus typeAsHdf();
41  void extendDataSet();
42  void extendDataSet(hsize_t *offsets);
43  void extendIndexDataSet(hsize_t offset);
44 
45  std::string name_; // Name of the attribute
46  std::string dsetName_; // Name of the dataset to store
47  hid_t file_; // File handle
48  NDAttrDataType_t type_; // NDAttribute type
49  std::string groupName_; // Name of the parent group
50  hid_t dataset_; // Dataset handle
51  hid_t dataspace_;
52  hid_t memspace_;
53  hid_t datatype_;
54  hid_t cparm_;
55  hid_t filespace_;
56  void *ptrFillValue_;
57  hsize_t *dims_;
58  hsize_t *offset_;
59  hsize_t *chunk_;
60  hsize_t *maxdims_;
61  hsize_t *virtualdims_;
62  hsize_t *elementSize_;
63  bool isUndefined_;
64  int rank_; // number of dimensions
65  int nextRecord_;
66  int extraDimensions_;
67  hdf5::When_t whenToSave_;
68 
69 };
70 
71 #endif /* ADAPP_PLUGINSRC_NDFILEHDF5ATTRIBUTEDATASET_H_ */
std::string getName()
Definition: NDFileHDF5AttributeDataset.cpp:460
asynStatus createDataset(int user_chunking)
Definition: NDFileHDF5AttributeDataset.cpp:75
NDAttrDataType_t
Enumeration of NDAttribute attribute data types.
Definition: NDAttribute.h:44
asynStatus flushDataset()
Definition: NDFileHDF5AttributeDataset.cpp:470
void setParentGroupName(const std::string &group)
Definition: NDFileHDF5AttributeDataset.cpp:70
hid_t getHandle()
Definition: NDFileHDF5AttributeDataset.cpp:465
void setWhenToSave(hdf5::When_t whenToSave)
Definition: NDFileHDF5AttributeDataset.cpp:65
Definition: NDFileHDF5AttributeDataset.h:18
When_t
Definition: NDFileHDF5Layout.h:20
NDFileHDF5AttributeDataset(hid_t file, const std::string &name, NDAttrDataType_t type)
Definition: NDFileHDF5AttributeDataset.cpp:19
asynStatus closeAttributeDataset()
Definition: NDFileHDF5AttributeDataset.cpp:218
asynStatus writeAttributeDataset(hdf5::When_t whenToSave, NDAttribute *ndAttr, int flush)
Definition: NDFileHDF5AttributeDataset.cpp:136
NDAttribute class; an attribute has a name, description, source type, source string, data type, and value.
Definition: NDAttribute.h:95
Definition: NDFileHDF5Layout.h:44
void setDsetName(const std::string &dsetName)
Definition: NDFileHDF5AttributeDataset.cpp:60
virtual ~NDFileHDF5AttributeDataset()
Definition: NDFileHDF5AttributeDataset.cpp:48