10 #ifndef __HDF5_FILE_H__
11 #define __HDF5_FILE_H__
25 template <
class ST>
class SGString;
26 template <
class ST>
class SGSparseVector;
34 #define IGNORE_IN_CLASSLIST
47 CHDF5File(
char* fname,
char rw=
'r',
const char* name=NULL);
59 virtual void get_vector(
bool*& vector, int32_t& len);
60 virtual void get_vector(uint8_t*& vector, int32_t& len);
61 virtual void get_vector(
char*& vector, int32_t& len);
62 virtual void get_vector(int32_t*& vector, int32_t& len);
63 virtual void get_vector(
float64_t*& vector, int32_t& len);
64 virtual void get_vector(
float32_t*& vector, int32_t& len);
65 virtual void get_vector(int16_t*& vector, int32_t& len);
66 virtual void get_vector(uint16_t*& vector, int32_t& len);
77 virtual void get_matrix(
78 bool*& matrix, int32_t& num_feat, int32_t& num_vec);
79 virtual void get_matrix(
80 uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
81 virtual void get_matrix(
82 char*& matrix, int32_t& num_feat, int32_t& num_vec);
83 virtual void get_matrix(
84 int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
85 virtual void get_uint_matrix(
86 uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
87 virtual void get_long_matrix(
88 int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
89 virtual void get_ulong_matrix(
90 uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
91 virtual void get_matrix(
92 float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
93 virtual void get_matrix(
94 float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
95 virtual void get_longreal_matrix(
96 floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
97 virtual void get_matrix(
98 int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
99 virtual void get_matrix(
100 uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
111 virtual void get_ndarray(
112 uint8_t*& array, int32_t*& dims, int32_t& num_dims);
113 virtual void get_ndarray(
114 char*& array, int32_t*& dims, int32_t& num_dims);
115 virtual void get_ndarray(
116 int32_t*& array, int32_t*& dims, int32_t& num_dims);
117 virtual void get_ndarray(
118 float32_t*& array, int32_t*& dims, int32_t& num_dims);
119 virtual void get_ndarray(
120 float64_t*& array, int32_t*& dims, int32_t& num_dims);
121 virtual void get_ndarray(
122 int16_t*& array, int32_t*& dims, int32_t& num_dims);
123 virtual void get_ndarray(
124 uint16_t*& array, int32_t*& dims, int32_t& num_dims);
135 virtual void get_sparse_matrix(
136 SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
137 virtual void get_sparse_matrix(
138 SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
139 virtual void get_sparse_matrix(
140 SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
141 virtual void get_sparse_matrix(
142 SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
143 virtual void get_uint_sparsematrix(
144 SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
145 virtual void get_long_sparsematrix(
146 SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
147 virtual void get_ulong_sparsematrix(
148 SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
149 virtual void get_sparse_matrix(
150 SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
151 virtual void get_sparse_matrix(
152 SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
153 virtual void get_sparse_matrix(
154 SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
155 virtual void get_sparse_matrix(
156 SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
157 virtual void get_longreal_sparsematrix(
158 SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
170 virtual void get_string_list(
171 SGString<bool>*& strings, int32_t& num_str,
172 int32_t& max_string_len);
173 virtual void get_string_list(
174 SGString<uint8_t>*& strings, int32_t& num_str,
175 int32_t& max_string_len);
176 virtual void get_string_list(
177 SGString<char>*& strings, int32_t& num_str,
178 int32_t& max_string_len);
179 virtual void get_string_list(
180 SGString<int32_t>*& strings, int32_t& num_str,
181 int32_t& max_string_len);
182 virtual void get_uint_string_list(
183 SGString<uint32_t>*& strings, int32_t& num_str,
184 int32_t& max_string_len);
185 virtual void get_string_list(
186 SGString<int16_t>*& strings, int32_t& num_str,
187 int32_t& max_string_len);
188 virtual void get_string_list(
189 SGString<uint16_t>*& strings, int32_t& num_str,
190 int32_t& max_string_len);
191 virtual void get_long_string_list(
192 SGString<int64_t>*& strings, int32_t& num_str,
193 int32_t& max_string_len);
194 virtual void get_ulong_string_list(
195 SGString<uint64_t>*& strings, int32_t& num_str,
196 int32_t& max_string_len);
197 virtual void get_string_list(
198 SGString<float32_t>*& strings, int32_t& num_str,
199 int32_t& max_string_len);
200 virtual void get_string_list(
201 SGString<float64_t>*& strings, int32_t& num_str,
202 int32_t& max_string_len);
203 virtual void get_longreal_string_list(
204 SGString<floatmax_t>*& strings, int32_t& num_str,
205 int32_t& max_string_len);
215 virtual void set_vector(
const bool* vector, int32_t len);
216 virtual void set_vector(
const uint8_t* vector, int32_t len);
217 virtual void set_vector(
const char* vector, int32_t len);
218 virtual void set_vector(
const int32_t* vector, int32_t len);
219 virtual void set_vector(
const float32_t* vector, int32_t len);
220 virtual void set_vector(
const float64_t* vector, int32_t len);
221 virtual void set_vector(
const int16_t* vector, int32_t len);
222 virtual void set_vector(
const uint16_t* vector, int32_t len);
233 virtual void set_matrix(
234 const bool* matrix, int32_t num_feat, int32_t num_vec);
235 virtual void set_matrix(
236 const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
237 virtual void set_matrix(
238 const char* matrix, int32_t num_feat, int32_t num_vec);
239 virtual void set_matrix(
240 const int32_t* matrix, int32_t num_feat, int32_t num_vec);
241 virtual void set_uint_matrix(
242 const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
243 virtual void set_long_matrix(
244 const int64_t* matrix, int32_t num_feat, int32_t num_vec);
245 virtual void set_ulong_matrix(
246 const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
247 virtual void set_matrix(
248 const float32_t* matrix, int32_t num_feat, int32_t num_vec);
249 virtual void set_matrix(
250 const float64_t* matrix, int32_t num_feat, int32_t num_vec);
251 virtual void set_longreal_matrix(
252 const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
253 virtual void set_matrix(
254 const int16_t* matrix, int32_t num_feat, int32_t num_vec);
255 virtual void set_matrix(
256 const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
266 virtual void set_sparse_matrix(
267 const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
268 virtual void set_sparse_matrix(
269 const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
270 virtual void set_sparse_matrix(
271 const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
272 virtual void set_sparse_matrix(
273 const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
274 virtual void set_uint_sparsematrix(
275 const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
276 virtual void set_long_sparsematrix(
277 const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
278 virtual void set_ulong_sparsematrix(
279 const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
280 virtual void set_sparse_matrix(
281 const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
282 virtual void set_sparse_matrix(
283 const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
284 virtual void set_sparse_matrix(
285 const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
286 virtual void set_sparse_matrix(
287 const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
288 virtual void set_longreal_sparsematrix(
289 const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
301 virtual void set_string_list(
302 const SGString<bool>* strings, int32_t num_str);
303 virtual void set_string_list(
304 const SGString<uint8_t>* strings, int32_t num_str);
305 virtual void set_string_list(
306 const SGString<char>* strings, int32_t num_str);
307 virtual void set_string_list(
308 const SGString<int32_t>* strings, int32_t num_str);
309 virtual void set_uint_string_list(
310 const SGString<uint32_t>* strings, int32_t num_str);
311 virtual void set_string_list(
312 const SGString<int16_t>* strings, int32_t num_str);
313 virtual void set_string_list(
314 const SGString<uint16_t>* strings, int32_t num_str);
315 virtual void set_long_string_list(
316 const SGString<int64_t>* strings, int32_t num_str);
317 virtual void set_ulong_string_list(
318 const SGString<uint64_t>* strings, int32_t num_str);
319 virtual void set_string_list(
320 const SGString<float32_t>* strings, int32_t num_str);
321 virtual void set_string_list(
322 const SGString<float64_t>* strings, int32_t num_str);
323 virtual void set_longreal_string_list(
324 const SGString<floatmax_t>* strings, int32_t num_str);
327 virtual void get_int8_matrix(int8_t*&, int32_t&, int32_t&)
339 virtual void set_int8_matrix(
const int8_t*, int32_t, int32_t)
354 inline virtual const char* get_name()
const {
return "HDF5File"; }
358 void get_boolean_type();
368 hid_t get_compatible_type(H5T_class_t t_class,
369 const TSGDataType* datatype);
378 void get_dims(hid_t dataset, int32_t*& dims, int32_t& ndims, int64_t& total_elements);
381 void create_group_hierarchy();
391 #endif //__HDF5_FILE_H__