SHOGUN  v3.0.0
 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/base/SGObject.h>
16 #include <shogun/io/SGIO.h>
17 #include <shogun/io/SimpleFile.h>
18 #include <shogun/io/File.h>
19 
20 namespace shogun
21 {
28 class CBinaryFile: public CFile
29 {
30 public:
32  CBinaryFile();
33 
39  CBinaryFile(FILE* f, const char* name=NULL);
40 
47  CBinaryFile(const char* fname, char rw='r', const char* name=NULL);
48 
50  virtual ~CBinaryFile();
51 
59  virtual void get_vector(int8_t*& 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(uint32_t*& vector, int32_t& len);
64  virtual void get_vector(float64_t*& vector, int32_t& len);
65  virtual void get_vector(float32_t*& vector, int32_t& len);
66  virtual void get_vector(floatmax_t*& vector, int32_t& len);
67  virtual void get_vector(int16_t*& vector, int32_t& len);
68  virtual void get_vector(uint16_t*& vector, int32_t& len);
69  virtual void get_vector(int64_t*& vector, int32_t& len);
70  virtual void get_vector(uint64_t*& vector, int32_t& len);
72 
81  virtual void get_matrix(
82  uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
83  virtual void get_matrix(
84  int8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
85  virtual void get_matrix(
86  char*& matrix, int32_t& num_feat, int32_t& num_vec);
87  virtual void get_matrix(
88  int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
89  virtual void get_matrix(
90  uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
91  virtual void get_matrix(
92  int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
93  virtual void get_matrix(
94  uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
95  virtual void get_matrix(
96  float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
97  virtual void get_matrix(
98  float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
99  virtual void get_matrix(
100  floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
101  virtual void get_matrix(
102  int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
103  virtual void get_matrix(
104  uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
106 
115  virtual void get_ndarray(
116  uint8_t*& array, int32_t*& dims, int32_t& num_dims);
117  virtual void get_ndarray(
118  char*& array, int32_t*& dims, int32_t& num_dims);
119  virtual void get_ndarray(
120  int32_t*& array, int32_t*& dims, int32_t& num_dims);
121  virtual void get_ndarray(
122  float32_t*& array, int32_t*& dims, int32_t& num_dims);
123  virtual void get_ndarray(
124  float64_t*& array, int32_t*& dims, int32_t& num_dims);
125  virtual void get_ndarray(
126  int16_t*& array, int32_t*& dims, int32_t& num_dims);
127  virtual void get_ndarray(
128  uint16_t*& array, int32_t*& dims, int32_t& num_dims);
130 
139  virtual void get_sparse_matrix(
140  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
141  virtual void get_sparse_matrix(
142  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
143  virtual void get_sparse_matrix(
144  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
145  virtual void get_sparse_matrix(
146  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
147  virtual void get_sparse_matrix(
148  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
149  virtual void get_sparse_matrix(
150  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
151  virtual void get_sparse_matrix(
152  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
153  virtual void get_sparse_matrix(
154  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
155  virtual void get_sparse_matrix(
156  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
157  virtual void get_sparse_matrix(
158  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
159  virtual void get_sparse_matrix(
160  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
161  virtual void get_sparse_matrix(
162  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
163  virtual void get_sparse_matrix(
164  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
166 
167 
176  virtual void get_string_list(
177  SGString<uint8_t>*& strings, int32_t& num_str,
178  int32_t& max_string_len);
179  virtual void get_string_list(
180  SGString<int8_t>*& strings, int32_t& num_str,
181  int32_t& max_string_len);
182  virtual void get_string_list(
183  SGString<char>*& strings, int32_t& num_str,
184  int32_t& max_string_len);
185  virtual void get_string_list(
186  SGString<int32_t>*& strings, int32_t& num_str,
187  int32_t& max_string_len);
188  virtual void get_string_list(
189  SGString<uint32_t>*& strings, int32_t& num_str,
190  int32_t& max_string_len);
191  virtual void get_string_list(
192  SGString<int16_t>*& strings, int32_t& num_str,
193  int32_t& max_string_len);
194  virtual void get_string_list(
195  SGString<uint16_t>*& strings, int32_t& num_str,
196  int32_t& max_string_len);
197  virtual void get_string_list(
198  SGString<int64_t>*& strings, int32_t& num_str,
199  int32_t& max_string_len);
200  virtual void get_string_list(
201  SGString<uint64_t>*& strings, int32_t& num_str,
202  int32_t& max_string_len);
203  virtual void get_string_list(
204  SGString<float32_t>*& strings, int32_t& num_str,
205  int32_t& max_string_len);
206  virtual void get_string_list(
207  SGString<float64_t>*& strings, int32_t& num_str,
208  int32_t& max_string_len);
209  virtual void get_string_list(
210  SGString<floatmax_t>*& strings, int32_t& num_str,
211  int32_t& max_string_len);
213 
221  virtual void set_vector(const int8_t* vector, int32_t len);
222  virtual void set_vector(const uint8_t* vector, int32_t len);
223  virtual void set_vector(const char* vector, int32_t len);
224  virtual void set_vector(const int32_t* vector, int32_t len);
225  virtual void set_vector(const uint32_t* vector, int32_t len);
226  virtual void set_vector(const float32_t* vector, int32_t len);
227  virtual void set_vector(const float64_t* vector, int32_t len);
228  virtual void set_vector(const floatmax_t* vector, int32_t len);
229  virtual void set_vector(const int16_t* vector, int32_t len);
230  virtual void set_vector(const uint16_t* vector, int32_t len);
231  virtual void set_vector(const int64_t* vector, int32_t len);
232  virtual void set_vector(const uint64_t* vector, int32_t len);
234 
235 
243  virtual void set_matrix(
244  const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
245  virtual void set_matrix(
246  const int8_t* matrix, int32_t num_feat, int32_t num_vec);
247  virtual void set_matrix(
248  const char* matrix, int32_t num_feat, int32_t num_vec);
249  virtual void set_matrix(
250  const int32_t* matrix, int32_t num_feat, int32_t num_vec);
251  virtual void set_matrix(
252  const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
253  virtual void set_matrix(
254  const int64_t* matrix, int32_t num_feat, int32_t num_vec);
255  virtual void set_matrix(
256  const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
257  virtual void set_matrix(
258  const float32_t* matrix, int32_t num_feat, int32_t num_vec);
259  virtual void set_matrix(
260  const float64_t* matrix, int32_t num_feat, int32_t num_vec);
261  virtual void set_matrix(
262  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
263  virtual void set_matrix(
264  const int16_t* matrix, int32_t num_feat, int32_t num_vec);
265  virtual void set_matrix(
266  const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
268 
276  virtual void set_ndarray(
277  const uint8_t* array, int32_t* dims, int32_t num_dims);
278  virtual void set_ndarray(
279  const char* array, int32_t* dims, int32_t num_dims);
280  virtual void set_ndarray(
281  const int32_t* array, int32_t* dims, int32_t num_dims);
282  virtual void set_ndarray(
283  const float32_t* array, int32_t* dims, int32_t num_dims);
284  virtual void set_ndarray(
285  const float64_t* array, int32_t* dims, int32_t num_dims);
286  virtual void set_ndarray(
287  const int16_t* array, int32_t* dims, int32_t num_dims);
288  virtual void set_ndarray(
289  const uint16_t* array, int32_t* dims, int32_t num_dims);
291 
299  virtual void set_sparse_matrix(
300  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
301  virtual void set_sparse_matrix(
302  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
303  virtual void set_sparse_matrix(
304  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
305  virtual void set_sparse_matrix(
306  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
307  virtual void set_sparse_matrix(
308  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
309  virtual void set_sparse_matrix(
310  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
311  virtual void set_sparse_matrix(
312  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
313  virtual void set_sparse_matrix(
314  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
315  virtual void set_sparse_matrix(
316  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
317  virtual void set_sparse_matrix(
318  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
319  virtual void set_sparse_matrix(
320  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
321  virtual void set_sparse_matrix(
322  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
323  virtual void set_sparse_matrix(
324  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
326 
327 
336  virtual void set_string_list(
337  const SGString<uint8_t>* strings, int32_t num_str);
338  virtual void set_string_list(
339  const SGString<int8_t>* strings, int32_t num_str);
340  virtual void set_string_list(
341  const SGString<char>* strings, int32_t num_str);
342  virtual void set_string_list(
343  const SGString<int32_t>* strings, int32_t num_str);
344  virtual void set_string_list(
345  const SGString<uint32_t>* strings, int32_t num_str);
346  virtual void set_string_list(
347  const SGString<int16_t>* strings, int32_t num_str);
348  virtual void set_string_list(
349  const SGString<uint16_t>* strings, int32_t num_str);
350  virtual void set_string_list(
351  const SGString<int64_t>* strings, int32_t num_str);
352  virtual void set_string_list(
353  const SGString<uint64_t>* strings, int32_t num_str);
354  virtual void set_string_list(
355  const SGString<float32_t>* strings, int32_t num_str);
356  virtual void set_string_list(
357  const SGString<float64_t>* strings, int32_t num_str);
358  virtual void set_string_list(
359  const SGString<floatmax_t>* strings, int32_t num_str);
361 
363  virtual const char* get_name() const { return "BinaryFile"; }
364 
365 protected:
370  void read_header(TSGDataType* dest);
371 
376  void write_header(const TSGDataType* datatype);
377 
383  int32_t parse_first_header(TSGDataType& type);
384 
390  int32_t parse_next_header(TSGDataType& type);
391 
392 private:
399  template <class DT> DT* load_data(DT* target, int64_t& num)
400  {
402  return f.load(target, num);
403  }
404 
411  template <class DT> bool save_data(DT* src, int64_t num)
412  {
413  CSimpleFile<DT> f(filename, file);
414  return f.save(src, num);
415  }
416 };
417 }
418 #endif //__BINARY_FILE_H__

SHOGUN Machine Learning Toolbox - Documentation