areaDetector  3-5-0
EPICS areaDetector framework
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 <NDPluginFile.h>
15 #include <NDArray.h>
16 #include "NDFileHDF5Layout.h"
17 #include "NDFileHDF5VersionCheck.h"
18 
20 {
21 public:
24 
25  void setDsetName(const std::string& dsetName);
26  void setWhenToSave(hdf5::When_t whenToSave);
27  void setParentGroupName(const std::string& group);
28  asynStatus createDataset(int user_chunking);
29  asynStatus createDataset(bool multiframe, int extradimensions, int *extra_dims, int *user_chunking);
30  asynStatus writeAttributeDataset(hdf5::When_t whenToSave, NDAttribute *ndAttr, int flush);
31  asynStatus writeAttributeDataset(hdf5::When_t whenToSave, hsize_t *offsets, NDAttribute *ndAttr, int flush, int indexed);
32  asynStatus closeAttributeDataset();
33  asynStatus flushDataset();
35  hid_t getHandle();
36 
37 private:
38  asynStatus createHDF5Dataset();
39  asynStatus configureDims(int user_chunking);
40  asynStatus configureDimsFromDataset(bool multiframe, int extradimensions, int *extra_dims, int *user_chunking);
41  asynStatus typeAsHdf();
42  void extendDataSet();
43  void extendDataSet(hsize_t *offsets);
44  void extendIndexDataSet(hsize_t offset);
45 
46  std::string name_; // Name of the attribute
47  std::string dsetName_; // Name of the dataset to store
48  hid_t file_; // File handle
49  NDAttrDataType_t type_; // NDAttribute type
50  std::string groupName_; // Name of the parent group
51  hid_t dataset_; // Dataset handle
52  hid_t dataspace_;
53  hid_t memspace_;
54  hid_t datatype_;
55  hid_t cparm_;
56  hid_t filespace_;
57  void *ptrFillValue_;
58  hsize_t *dims_;
59  hsize_t *offset_;
60  hsize_t *chunk_;
61  hsize_t *maxdims_;
62  hsize_t *virtualdims_;
63  hsize_t *elementSize_;
64  bool isUndefined_;
65  int rank_; // number of dimensions
66  int nextRecord_;
67  int extraDimensions_;
68  hdf5::When_t whenToSave_;
69 
70 };
71 
72 #endif /* ADAPP_PLUGINSRC_NDFILEHDF5ATTRIBUTEDATASET_H_ */
std::string getName()
Definition: NDFileHDF5AttributeDataset.cpp:449
asynStatus createDataset(int user_chunking)
Definition: NDFileHDF5AttributeDataset.cpp:72
NDAttrDataType_t
Enumeration of NDAttribute attribute data types.
Definition: NDAttribute.h:40
asynStatus flushDataset()
Definition: NDFileHDF5AttributeDataset.cpp:459
void setParentGroupName(const std::string &group)
Definition: NDFileHDF5AttributeDataset.cpp:67
hid_t getHandle()
Definition: NDFileHDF5AttributeDataset.cpp:454
name
Definition: makeDbAndEdl.py:232
void setWhenToSave(hdf5::When_t whenToSave)
Definition: NDFileHDF5AttributeDataset.cpp:62
Definition: NDFileHDF5AttributeDataset.h:19
When_t
Definition: NDFileHDF5Layout.h:20
NDFileHDF5AttributeDataset(hid_t file, const std::string &name, NDAttrDataType_t type)
Definition: NDFileHDF5AttributeDataset.cpp:16
asynStatus closeAttributeDataset()
Definition: NDFileHDF5AttributeDataset.cpp:215
asynStatus writeAttributeDataset(hdf5::When_t whenToSave, NDAttribute *ndAttr, int flush)
Definition: NDFileHDF5AttributeDataset.cpp:133
NDAttribute class; an attribute has a name, description, source type, source string,...
Definition: NDAttribute.h:87
Definition: NDFileHDF5Layout.h:42
void setDsetName(const std::string &dsetName)
Definition: NDFileHDF5AttributeDataset.cpp:57
virtual ~NDFileHDF5AttributeDataset()
Definition: NDFileHDF5AttributeDataset.cpp:45