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