hdf5serie  2.0.0
HDF5 Serie
simple.h
1
26template<class T>
27class HDF5SERIE_CLASS : public HDF5SERIE_BASECLASS {
28 friend class Container<HDF5SERIE_CONTAINERBASECLASS, HDF5SERIE_PARENTCLASS>;
29 private:
30 hid_t memDataTypeID; // no need to use ScopedHID since only a static hid_t is stored here
31 ScopedHID memDataSpaceID;
32 protected:
48 HDF5SERIE_CLASS(int dummy, HDF5SERIE_PARENTCLASS *parent_, const std::string& name_);
49 HDF5SERIE_CLASS(HDF5SERIE_PARENTCLASS *parent_, const std::string& name_);
50
51 ~HDF5SERIE_CLASS() override;
52
53 void close() override;
54
55 void enableSWMR() override;
56
57 public:
62 void write(const T& data);
63
68 T read();
69
70 #ifdef HDF5SERIE_DATASETTYPE
71 void setDescription(const std::string &desc) {
72 SimpleAttribute<std::string> *a=createChildAttribute<SimpleAttribute<std::string> >("Description")();
73 a->write(desc);
74 }
75 std::string getDescription() {
76 auto *a=openChildAttribute<SimpleAttribute<std::string> >("Description");
77 return a->read();
78 }
79 #endif
80};
81
82template<class T>
83class HDF5SERIE_CLASS<std::vector<T> > : public HDF5SERIE_BASECLASS {
84 friend class Container<HDF5SERIE_CONTAINERBASECLASS, HDF5SERIE_PARENTCLASS>;
85 private:
86 hid_t memDataTypeID; // no need to use SScopedHID since only a static hid_t is stored here
87 ScopedHID memDataSpaceID;
88 int size;
89 protected:
90 HDF5SERIE_CLASS(int dummy, HDF5SERIE_PARENTCLASS *parent_, const std::string& name_);
91 HDF5SERIE_CLASS(HDF5SERIE_PARENTCLASS *parent_, const std::string& name_, int size_);
92 ~HDF5SERIE_CLASS() override;
93 void close() override;
94 void enableSWMR() override;
95 public:
96 void write(const std::vector<T>& data);
97 std::vector<T> read();
98 #ifdef HDF5SERIE_DATASETTYPE
99 void setDescription(const std::string &desc) {
100 SimpleAttribute<std::string> *a=createChildAttribute<SimpleAttribute<std::string> >("Description")();
101 a->write(desc);
102 }
103 std::string getDescription() {
104 auto *a=openChildAttribute<SimpleAttribute<std::string> >("Description");
105 return a->read();
106 }
107 #endif
108};
109
110template<class T>
111class HDF5SERIE_CLASS<std::vector<std::vector<T> > > : public HDF5SERIE_BASECLASS {
112 friend class Container<HDF5SERIE_CONTAINERBASECLASS, HDF5SERIE_PARENTCLASS>;
113 private:
114 hid_t memDataTypeID; // no need to use SScopedHID since only a static hid_t is stored here
115 ScopedHID memDataSpaceID;
116 int rows;
117 int cols;
118 protected:
119 HDF5SERIE_CLASS(int dummy, HDF5SERIE_PARENTCLASS *parent_, const std::string& name_);
120 HDF5SERIE_CLASS(HDF5SERIE_PARENTCLASS *parent_, const std::string& name_, int rows_, int cols_);
121 ~HDF5SERIE_CLASS() override;
122 void close() override;
123 void enableSWMR() override;
124 public:
125 void write(const std::vector<std::vector<T> >& data);
126 std::vector<std::vector<T> > read();
127 #ifdef HDF5SERIE_DATASETTYPE
128 void setDescription(const std::string &desc) {
129 SimpleAttribute<std::string> *a=createChildAttribute<SimpleAttribute<std::string> >("Description")();
130 a->write(desc);
131 }
132 std::string getDescription() {
133 auto *a=openChildAttribute<SimpleAttribute<std::string> >("Description");
134 return a->read();
135 }
136 #endif
137};
A scalar, vector or matrix attribute/dataset.
Definition: simple.h:27
T read()
Read data.
Definition: simple.cc:49
void write(const T &data)
Write data.
Definition: simple.cc:39
HDF5SERIE_CLASS(int dummy, HDF5SERIE_PARENTCLASS *parent_, const std::string &name_)
Constructor for opening or creating a attribute/dataset.
Definition: simple.cc:3