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 fixedStringTypeID;
88 ScopedHID memDataSpaceID;
89 int size;
90 protected:
91 HDF5SERIE_CLASS(int dummy, HDF5SERIE_PARENTCLASS *parent_, const std::string& name_);
92 HDF5SERIE_CLASS(HDF5SERIE_PARENTCLASS *parent_, const std::string& name_, int size_, int fixedStrSize, int compression);
93 HDF5SERIE_CLASS(HDF5SERIE_PARENTCLASS *parent_, const std::string& name_, int size_, int fixedStrSize) : HDF5SERIE_CLASS(parent_, name_, size_, fixedStrSize, File::getDefaultCompression()) {};
94 HDF5SERIE_CLASS(HDF5SERIE_PARENTCLASS *parent_, const std::string& name_, int size_) : HDF5SERIE_CLASS(parent_, name_, size_, -1) {};
95 ~HDF5SERIE_CLASS() override;
96 void close() override;
97 void enableSWMR() override;
98 public:
99 void write(const std::vector<T>& data);
100 std::vector<T> read();
101 #ifdef HDF5SERIE_DATASETTYPE
102 void setDescription(const std::string &desc) {
103 SimpleAttribute<std::string> *a=createChildAttribute<SimpleAttribute<std::string> >("Description")();
104 a->write(desc);
105 }
106 std::string getDescription() {
107 auto *a=openChildAttribute<SimpleAttribute<std::string> >("Description");
108 return a->read();
109 }
110 #endif
111};
112
113template<class T>
114class HDF5SERIE_CLASS<std::vector<std::vector<T> > > : public HDF5SERIE_BASECLASS {
115 friend class Container<HDF5SERIE_CONTAINERBASECLASS, HDF5SERIE_PARENTCLASS>;
116 private:
117 hid_t memDataTypeID; // no need to use SScopedHID since only a static hid_t is stored here
118 ScopedHID fixedStringTypeID;
119 ScopedHID memDataSpaceID;
120 int rows;
121 int cols;
122 protected:
123 HDF5SERIE_CLASS(int dummy, HDF5SERIE_PARENTCLASS *parent_, const std::string& name_);
124 HDF5SERIE_CLASS(HDF5SERIE_PARENTCLASS *parent_, const std::string& name_, int rows_, int cols_, int fixedStrSize, int compression);
125 HDF5SERIE_CLASS(HDF5SERIE_PARENTCLASS *parent_, const std::string& name_, int rows_, int cols_, int fixedStrSize) : HDF5SERIE_CLASS(parent_, name_, rows_, cols_, fixedStrSize, File::getDefaultCompression()) {}
126 HDF5SERIE_CLASS(HDF5SERIE_PARENTCLASS *parent_, const std::string& name_, int rows_, int cols_) : HDF5SERIE_CLASS(parent_, name_, rows_, cols_, -1) {}
127 ~HDF5SERIE_CLASS() override;
128 void close() override;
129 void enableSWMR() override;
130 public:
131 void write(const std::vector<std::vector<T> >& data);
132 std::vector<std::vector<T> > read();
133 #ifdef HDF5SERIE_DATASETTYPE
134 void setDescription(const std::string &desc) {
135 SimpleAttribute<std::string> *a=createChildAttribute<SimpleAttribute<std::string> >("Description")();
136 a->write(desc);
137 }
138 std::string getDescription() {
139 auto *a=openChildAttribute<SimpleAttribute<std::string> >("Description");
140 return a->read();
141 }
142 #endif
143};
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