SHOGUN  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
BinaryFile.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * Written (W) 2010 Soeren Sonnenburg
8  * Copyright (C) 2010 Berlin Institute of Technology
9  */
10 #ifndef __BINARY_FILE_H__
11 #define __BINARY_FILE_H__
12 
13 #include <shogun/lib/config.h>
14 #include <shogun/lib/common.h>
15 #include <shogun/io/SimpleFile.h>
16 #include <shogun/io/File.h>
17 
18 namespace shogun
19 {
20 struct TSGDataType;
21 template <class ST> class SGString;
22 template <class T> class SGSparseVector;
23 
30 class CBinaryFile: public CFile
31 {
32 public:
34  CBinaryFile();
35 
41  CBinaryFile(FILE* f, const char* name=NULL);
42 
49  CBinaryFile(const char* fname, char rw='r', const char* name=NULL);
50 
52  virtual ~CBinaryFile();
53 
61  virtual void get_vector(int8_t*& vector, int32_t& len);
62  virtual void get_vector(uint8_t*& vector, int32_t& len);
63  virtual void get_vector(char*& vector, int32_t& len);
64  virtual void get_vector(int32_t*& vector, int32_t& len);
65  virtual void get_vector(uint32_t*& vector, int32_t& len);
66  virtual void get_vector(float64_t*& vector, int32_t& len);
67  virtual void get_vector(float32_t*& vector, int32_t& len);
68  virtual void get_vector(floatmax_t*& vector, int32_t& len);
69  virtual void get_vector(int16_t*& vector, int32_t& len);
70  virtual void get_vector(uint16_t*& vector, int32_t& len);
71  virtual void get_vector(int64_t*& vector, int32_t& len);
72  virtual void get_vector(uint64_t*& vector, int32_t& len);
74 
83  virtual void get_matrix(
84  uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
85  virtual void get_matrix(
86  int8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
87  virtual void get_matrix(
88  char*& matrix, int32_t& num_feat, int32_t& num_vec);
89  virtual void get_matrix(
90  int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
91  virtual void get_matrix(
92  uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
93  virtual void get_matrix(
94  int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
95  virtual void get_matrix(
96  uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
97  virtual void get_matrix(
98  float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
99  virtual void get_matrix(
100  float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
101  virtual void get_matrix(
102  floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
103  virtual void get_matrix(
104  int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
105  virtual void get_matrix(
106  uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
108 
117  virtual void get_ndarray(
118  uint8_t*& array, int32_t*& dims, int32_t& num_dims);
119  virtual void get_ndarray(
120  char*& array, int32_t*& dims, int32_t& num_dims);
121  virtual void get_ndarray(
122  int32_t*& array, int32_t*& dims, int32_t& num_dims);
123  virtual void get_ndarray(
124  float32_t*& array, int32_t*& dims, int32_t& num_dims);
125  virtual void get_ndarray(
126  float64_t*& array, int32_t*& dims, int32_t& num_dims);
127  virtual void get_ndarray(
128  int16_t*& array, int32_t*& dims, int32_t& num_dims);
129  virtual void get_ndarray(
130  uint16_t*& array, int32_t*& dims, int32_t& num_dims);
132 
141  virtual void get_sparse_matrix(
142  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
143  virtual void get_sparse_matrix(
144  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
145  virtual void get_sparse_matrix(
146  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
147  virtual void get_sparse_matrix(
148  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
149  virtual void get_sparse_matrix(
150  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
151  virtual void get_sparse_matrix(
152  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
153  virtual void get_sparse_matrix(
154  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
155  virtual void get_sparse_matrix(
156  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
157  virtual void get_sparse_matrix(
158  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
159  virtual void get_sparse_matrix(
160  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
161  virtual void get_sparse_matrix(
162  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
163  virtual void get_sparse_matrix(
164  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
165  virtual void get_sparse_matrix(
166  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
168 
169 
178  virtual void get_string_list(
179  SGString<uint8_t>*& strings, int32_t& num_str,
180  int32_t& max_string_len);
181  virtual void get_string_list(
182  SGString<int8_t>*& strings, int32_t& num_str,
183  int32_t& max_string_len);
184  virtual void get_string_list(
185  SGString<char>*& strings, int32_t& num_str,
186  int32_t& max_string_len);
187  virtual void get_string_list(
188  SGString<int32_t>*& strings, int32_t& num_str,
189  int32_t& max_string_len);
190  virtual void get_string_list(
191  SGString<uint32_t>*& strings, int32_t& num_str,
192  int32_t& max_string_len);
193  virtual void get_string_list(
194  SGString<int16_t>*& strings, int32_t& num_str,
195  int32_t& max_string_len);
196  virtual void get_string_list(
197  SGString<uint16_t>*& strings, int32_t& num_str,
198  int32_t& max_string_len);
199  virtual void get_string_list(
200  SGString<int64_t>*& strings, int32_t& num_str,
201  int32_t& max_string_len);
202  virtual void get_string_list(
203  SGString<uint64_t>*& strings, int32_t& num_str,
204  int32_t& max_string_len);
205  virtual void get_string_list(
206  SGString<float32_t>*& strings, int32_t& num_str,
207  int32_t& max_string_len);
208  virtual void get_string_list(
209  SGString<float64_t>*& strings, int32_t& num_str,
210  int32_t& max_string_len);
211  virtual void get_string_list(
212  SGString<floatmax_t>*& strings, int32_t& num_str,
213  int32_t& max_string_len);
215 
223  virtual void set_vector(const int8_t* vector, int32_t len);
224  virtual void set_vector(const uint8_t* vector, int32_t len);
225  virtual void set_vector(const char* vector, int32_t len);
226  virtual void set_vector(const int32_t* vector, int32_t len);
227  virtual void set_vector(const uint32_t* vector, int32_t len);
228  virtual void set_vector(const float32_t* vector, int32_t len);
229  virtual void set_vector(const float64_t* vector, int32_t len);
230  virtual void set_vector(const floatmax_t* vector, int32_t len);
231  virtual void set_vector(const int16_t* vector, int32_t len);
232  virtual void set_vector(const uint16_t* vector, int32_t len);
233  virtual void set_vector(const int64_t* vector, int32_t len);
234  virtual void set_vector(const uint64_t* vector, int32_t len);
236 
237 
245  virtual void set_matrix(
246  const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
247  virtual void set_matrix(
248  const int8_t* matrix, int32_t num_feat, int32_t num_vec);
249  virtual void set_matrix(
250  const char* matrix, int32_t num_feat, int32_t num_vec);
251  virtual void set_matrix(
252  const int32_t* matrix, int32_t num_feat, int32_t num_vec);
253  virtual void set_matrix(
254  const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
255  virtual void set_matrix(
256  const int64_t* matrix, int32_t num_feat, int32_t num_vec);
257  virtual void set_matrix(
258  const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
259  virtual void set_matrix(
260  const float32_t* matrix, int32_t num_feat, int32_t num_vec);
261  virtual void set_matrix(
262  const float64_t* matrix, int32_t num_feat, int32_t num_vec);
263  virtual void set_matrix(
264  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
265  virtual void set_matrix(
266  const int16_t* matrix, int32_t num_feat, int32_t num_vec);
267  virtual void set_matrix(
268  const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
270 
278  virtual void set_ndarray(
279  const uint8_t* array, int32_t* dims, int32_t num_dims);
280  virtual void set_ndarray(
281  const char* array, int32_t* dims, int32_t num_dims);
282  virtual void set_ndarray(
283  const int32_t* array, int32_t* dims, int32_t num_dims);
284  virtual void set_ndarray(
285  const float32_t* array, int32_t* dims, int32_t num_dims);
286  virtual void set_ndarray(
287  const float64_t* array, int32_t* dims, int32_t num_dims);
288  virtual void set_ndarray(
289  const int16_t* array, int32_t* dims, int32_t num_dims);
290  virtual void set_ndarray(
291  const uint16_t* array, int32_t* dims, int32_t num_dims);
293 
301  virtual void set_sparse_matrix(
302  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
303  virtual void set_sparse_matrix(
304  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
305  virtual void set_sparse_matrix(
306  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
307  virtual void set_sparse_matrix(
308  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
309  virtual void set_sparse_matrix(
310  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
311  virtual void set_sparse_matrix(
312  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
313  virtual void set_sparse_matrix(
314  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
315  virtual void set_sparse_matrix(
316  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
317  virtual void set_sparse_matrix(
318  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
319  virtual void set_sparse_matrix(
320  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
321  virtual void set_sparse_matrix(
322  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
323  virtual void set_sparse_matrix(
324  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
325  virtual void set_sparse_matrix(
326  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
328 
329 
338  virtual void set_string_list(
339  const SGString<uint8_t>* strings, int32_t num_str);
340  virtual void set_string_list(
341  const SGString<int8_t>* strings, int32_t num_str);
342  virtual void set_string_list(
343  const SGString<char>* strings, int32_t num_str);
344  virtual void set_string_list(
345  const SGString<int32_t>* strings, int32_t num_str);
346  virtual void set_string_list(
347  const SGString<uint32_t>* strings, int32_t num_str);
348  virtual void set_string_list(
349  const SGString<int16_t>* strings, int32_t num_str);
350  virtual void set_string_list(
351  const SGString<uint16_t>* strings, int32_t num_str);
352  virtual void set_string_list(
353  const SGString<int64_t>* strings, int32_t num_str);
354  virtual void set_string_list(
355  const SGString<uint64_t>* strings, int32_t num_str);
356  virtual void set_string_list(
357  const SGString<float32_t>* strings, int32_t num_str);
358  virtual void set_string_list(
359  const SGString<float64_t>* strings, int32_t num_str);
360  virtual void set_string_list(
361  const SGString<floatmax_t>* strings, int32_t num_str);
363 
365  virtual const char* get_name() const { return "BinaryFile"; }
366 
367 protected:
372  void read_header(TSGDataType* dest);
373 
378  void write_header(const TSGDataType* datatype);
379 
385  int32_t parse_first_header(TSGDataType& type);
386 
392  int32_t parse_next_header(TSGDataType& type);
393 
394 private:
401  template <class DT> DT* load_data(DT* target, int64_t& num)
402  {
404  return f.load(target, num);
405  }
406 
413  template <class DT> bool save_data(DT* src, int64_t num)
414  {
415  CSimpleFile<DT> f(filename, file);
416  return f.save(src, num);
417  }
418 };
419 }
420 #endif //__BINARY_FILE_H__

SHOGUN Machine Learning Toolbox - Documentation