SHOGUN  v3.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
File.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) 1999-2009 Soeren Sonnenburg
8  * Copyright (C) 1999-2009 Fraunhofer Institute FIRST and Max-Planck-Society
9  * Copyright (C) 2010 Berlin Institute of Technology
10  */
11 
12 #ifndef __FILE_H__
13 #define __FILE_H__
14 
15 #include <stdio.h>
16 #include <shogun/base/SGObject.h>
17 #include <shogun/lib/DataType.h>
18 
19 namespace shogun
20 {
21 template <class ST> class SGString;
22 template <class ST> class SGSparseVector;
23 template <class ST> struct SGSparseVectorEntry;
24 
34 class CFile : public CSGObject
35 {
36 public:
38  CFile();
39 
45  CFile(FILE* f, const char* name=NULL);
46 
53  CFile(int fd, const char* mode, const char* name=NULL);
54 
61  CFile(const char* fname, char rw='r', const char* name=NULL);
62 
64  virtual ~CFile();
65 
67  void close()
68  {
69  SG_FREE(variable_name);
70  SG_FREE(filename);
71  if (file)
72  fclose(file);
73  variable_name=NULL;
74  filename=NULL;
75  file=NULL;
76  }
77 
83  {
84  return file;
85  }
86 
93  void set_variable_name(const char* name);
94 
101  char* get_variable_name();
102 
104  /*virtual DataType get_data_type()=0;*/
105 
107  /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
108 
116  virtual void get_vector(bool*& vector, int32_t& len);
117  virtual void get_vector(int8_t*& vector, int32_t& len)=0;
118  virtual void get_vector(uint8_t*& vector, int32_t& len)=0;
119  virtual void get_vector(char*& vector, int32_t& len)=0;
120  virtual void get_vector(int32_t*& vector, int32_t& len)=0;
121  virtual void get_vector(uint32_t*& vector, int32_t& len)=0;
122  virtual void get_vector(float64_t*& vector, int32_t& len)=0;
123  virtual void get_vector(float32_t*& vector, int32_t& len)=0;
124  virtual void get_vector(floatmax_t*& vector, int32_t& len)=0;
125  virtual void get_vector(int16_t*& vector, int32_t& len)=0;
126  virtual void get_vector(uint16_t*& vector, int32_t& len)=0;
127  virtual void get_vector(int64_t*& vector, int32_t& len)=0;
128  virtual void get_vector(uint64_t*& vector, int32_t& len)=0;
130 
132  /*virtual void get_matrix(
133  void*& matrix, int32_t& num_feat, int32_t& num_vec, DataType& dtype);*/
134 
143  virtual void get_matrix(
144  bool*& matrix, int32_t& num_feat, int32_t& num_vec);
145  virtual void get_matrix(
146  uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
147  virtual void get_matrix(
148  int8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
149  virtual void get_matrix(
150  char*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
151  virtual void get_matrix(
152  int32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
153  virtual void get_matrix(
154  uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
155  virtual void get_matrix(
156  int64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
157  virtual void get_matrix(
158  uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
159  virtual void get_matrix(
160  float32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
161  virtual void get_matrix(
162  float64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
163  virtual void get_matrix(
164  floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
165  virtual void get_matrix(
166  int16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
167  virtual void get_matrix(
168  uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
170 
172  /*virtual void get_ndarray(
173  void*& array, int32_t*& dims, int32_t& num_dims, DataType& dtype);*/
174 
183  virtual void get_ndarray(
184  uint8_t*& array, int32_t*& dims, int32_t& num_dims)=0;
185  virtual void get_ndarray(
186  char*& array, int32_t*& dims, int32_t& num_dims)=0;
187  virtual void get_ndarray(
188  int32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
189  virtual void get_ndarray(
190  float32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
191  virtual void get_ndarray(
192  float64_t*& array, int32_t*& dims, int32_t& num_dims)=0;
193  virtual void get_ndarray(
194  int16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
195  virtual void get_ndarray(
196  uint16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
198  //
206  virtual void get_sparse_vector(
207  SGSparseVectorEntry<bool>*& entries, int32_t& num_feat);
208  virtual void get_sparse_vector(
209  SGSparseVectorEntry<uint8_t>*& entries, int32_t& num_feat);
210  virtual void get_sparse_vector(
211  SGSparseVectorEntry<int8_t>*& entries, int32_t& num_feat);
212  virtual void get_sparse_vector(
213  SGSparseVectorEntry<char>*& entries, int32_t& num_feat);
214  virtual void get_sparse_vector(
215  SGSparseVectorEntry<int32_t>*& entries, int32_t& num_feat);
216  virtual void get_sparse_vector(
217  SGSparseVectorEntry<uint32_t>*& entries, int32_t& num_feat);
218  virtual void get_sparse_vector(
219  SGSparseVectorEntry<int64_t>*& entries, int32_t& num_feat);
220  virtual void get_sparse_vector(
221  SGSparseVectorEntry<uint64_t>*& entries, int32_t& num_feat);
222  virtual void get_sparse_vector(
223  SGSparseVectorEntry<int16_t>*& entries, int32_t& num_feat);
224  virtual void get_sparse_vector(
225  SGSparseVectorEntry<uint16_t>*& entries, int32_t& num_feat);
226  virtual void get_sparse_vector(
227  SGSparseVectorEntry<float32_t>*& entries, int32_t& num_feat);
228  virtual void get_sparse_vector(
229  SGSparseVectorEntry<float64_t>*& entries, int32_t& num_feat);
230  virtual void get_sparse_vector(
231  SGSparseVectorEntry<floatmax_t>*& entries, int32_t& num_feat);
233 
242  virtual void get_sparse_matrix(
243  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
244  virtual void get_sparse_matrix(
245  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
246  virtual void get_sparse_matrix(
247  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
248  virtual void get_sparse_matrix(
249  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
250  virtual void get_sparse_matrix(
251  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
252  virtual void get_sparse_matrix(
253  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
254  virtual void get_sparse_matrix(
255  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
256  virtual void get_sparse_matrix(
257  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
258  virtual void get_sparse_matrix(
259  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
260  virtual void get_sparse_matrix(
261  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
262  virtual void get_sparse_matrix(
263  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
264  virtual void get_sparse_matrix(
265  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
266  virtual void get_sparse_matrix(
267  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
269 
270 
279  virtual void get_string_list(
280  SGString<bool>*& strings, int32_t& num_str,
281  int32_t& max_string_len);
282  virtual void get_string_list(
283  SGString<uint8_t>*& strings, int32_t& num_str,
284  int32_t& max_string_len)=0;
285  virtual void get_string_list(
286  SGString<int8_t>*& strings, int32_t& num_str,
287  int32_t& max_string_len)=0;
288  virtual void get_string_list(
289  SGString<char>*& strings, int32_t& num_str,
290  int32_t& max_string_len)=0;
291  virtual void get_string_list(
292  SGString<int32_t>*& strings, int32_t& num_str,
293  int32_t& max_string_len)=0;
294  virtual void get_string_list(
295  SGString<uint32_t>*& strings, int32_t& num_str,
296  int32_t& max_string_len)=0;
297  virtual void get_string_list(
298  SGString<int16_t>*& strings, int32_t& num_str,
299  int32_t& max_string_len)=0;
300  virtual void get_string_list(
301  SGString<uint16_t>*& strings, int32_t& num_str,
302  int32_t& max_string_len)=0;
303  virtual void get_string_list(
304  SGString<int64_t>*& strings, int32_t& num_str,
305  int32_t& max_string_len)=0;
306  virtual void get_string_list(
307  SGString<uint64_t>*& strings, int32_t& num_str,
308  int32_t& max_string_len)=0;
309  virtual void get_string_list(
310  SGString<float32_t>*& strings, int32_t& num_str,
311  int32_t& max_string_len)=0;
312  virtual void get_string_list(
313  SGString<float64_t>*& strings, int32_t& num_str,
314  int32_t& max_string_len)=0;
315  virtual void get_string_list(
316  SGString<floatmax_t>*& strings, int32_t& num_str,
317  int32_t& max_string_len)=0;
319 
321  /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
322 
330  virtual void set_vector(const bool* vector, int32_t len);
331  virtual void set_vector(const int8_t* vector, int32_t len)=0;
332  virtual void set_vector(const uint8_t* vector, int32_t len)=0;
333  virtual void set_vector(const char* vector, int32_t len)=0;
334  virtual void set_vector(const int32_t* vector, int32_t len)=0;
335  virtual void set_vector(const uint32_t* vector, int32_t len)=0;
336  virtual void set_vector(const float32_t* vector, int32_t len)=0;
337  virtual void set_vector(const float64_t* vector, int32_t len)=0;
338  virtual void set_vector(const floatmax_t* vector, int32_t len)=0;
339  virtual void set_vector(const int16_t* vector, int32_t len)=0;
340  virtual void set_vector(const uint16_t* vector, int32_t len)=0;
341  virtual void set_vector(const int64_t* vector, int32_t len)=0;
342  virtual void set_vector(const uint64_t* vector, int32_t len)=0;
344 
345 
353  virtual void set_matrix(
354  const bool* matrix, int32_t num_feat, int32_t num_vec);
355  virtual void set_matrix(
356  const uint8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
357  virtual void set_matrix(
358  const int8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
359  virtual void set_matrix(
360  const char* matrix, int32_t num_feat, int32_t num_vec)=0;
361  virtual void set_matrix(
362  const int32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
363  virtual void set_matrix(
364  const uint32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
365  virtual void set_matrix(
366  const int64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
367  virtual void set_matrix(
368  const uint64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
369  virtual void set_matrix(
370  const float32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
371  virtual void set_matrix(
372  const float64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
373  virtual void set_matrix(
374  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec)=0;
375  virtual void set_matrix(
376  const int16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
377  virtual void set_matrix(
378  const uint16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
380  //
388  virtual void set_sparse_vector(
389  const SGSparseVectorEntry<bool>* entries, int32_t num_feat);
390  virtual void set_sparse_vector(
391  const SGSparseVectorEntry<uint8_t>* entries, int32_t num_feat);
392  virtual void set_sparse_vector(
393  const SGSparseVectorEntry<int8_t>* entries, int32_t num_feat);
394  virtual void set_sparse_vector(
395  const SGSparseVectorEntry<char>* entries, int32_t num_feat);
396  virtual void set_sparse_vector(
397  const SGSparseVectorEntry<int32_t>* entries, int32_t num_feat);
398  virtual void set_sparse_vector(
399  const SGSparseVectorEntry<uint32_t>* entries, int32_t num_feat);
400  virtual void set_sparse_vector(
401  const SGSparseVectorEntry<int64_t>* entries, int32_t num_feat);
402  virtual void set_sparse_vector(
403  const SGSparseVectorEntry<uint64_t>* entries, int32_t num_feat);
404  virtual void set_sparse_vector(
405  const SGSparseVectorEntry<int16_t>* entries, int32_t num_feat);
406  virtual void set_sparse_vector(
407  const SGSparseVectorEntry<uint16_t>* entries, int32_t num_feat);
408  virtual void set_sparse_vector(
409  const SGSparseVectorEntry<float32_t>* entries, int32_t num_feat);
410  virtual void set_sparse_vector(
411  const SGSparseVectorEntry<float64_t>* entries, int32_t num_feat);
412  virtual void set_sparse_vector(
413  const SGSparseVectorEntry<floatmax_t>* entries, int32_t num_feat);
415 
423  virtual void set_sparse_matrix(
424  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec)=0;
425  virtual void set_sparse_matrix(
426  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
427  virtual void set_sparse_matrix(
428  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
429  virtual void set_sparse_matrix(
430  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec)=0;
431  virtual void set_sparse_matrix(
432  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
433  virtual void set_sparse_matrix(
434  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
435  virtual void set_sparse_matrix(
436  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
437  virtual void set_sparse_matrix(
438  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
439  virtual void set_sparse_matrix(
440  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
441  virtual void set_sparse_matrix(
442  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
443  virtual void set_sparse_matrix(
444  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
445  virtual void set_sparse_matrix(
446  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
447  virtual void set_sparse_matrix(
448  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
450 
451 
460  virtual void set_string_list(
461  const SGString<bool>* strings, int32_t num_str);
462  virtual void set_string_list(
463  const SGString<uint8_t>* strings, int32_t num_str)=0;
464  virtual void set_string_list(
465  const SGString<int8_t>* strings, int32_t num_str)=0;
466  virtual void set_string_list(
467  const SGString<char>* strings, int32_t num_str)=0;
468  virtual void set_string_list(
469  const SGString<int32_t>* strings, int32_t num_str)=0;
470  virtual void set_string_list(
471  const SGString<uint32_t>* strings, int32_t num_str)=0;
472  virtual void set_string_list(
473  const SGString<int16_t>* strings, int32_t num_str)=0;
474  virtual void set_string_list(
475  const SGString<uint16_t>* strings, int32_t num_str)=0;
476  virtual void set_string_list(
477  const SGString<int64_t>* strings, int32_t num_str)=0;
478  virtual void set_string_list(
479  const SGString<uint64_t>* strings, int32_t num_str)=0;
480  virtual void set_string_list(
481  const SGString<float32_t>* strings, int32_t num_str)=0;
482  virtual void set_string_list(
483  const SGString<float64_t>* strings, int32_t num_str)=0;
484  virtual void set_string_list(
485  const SGString<floatmax_t>* strings, int32_t num_str)=0;
487 
489  virtual const char* get_name() const { return "File"; }
490 
497  static char* read_whole_file(char* fname, size_t& len);
498 
499 protected:
501  FILE* file;
503  char task;
505  char* filename;
508 };
509 }
510 #endif // __FILE_H__

SHOGUN Machine Learning Toolbox - Documentation