SHOGUN  v2.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 
33 class CFile : public CSGObject
34 {
35 public:
37  CFile();
38 
44  CFile(FILE* f, const char* name=NULL);
45 
52  CFile(const char* fname, char rw='r', const char* name=NULL);
53 
55  virtual ~CFile();
56 
58  void close()
59  {
62  if (file)
63  fclose(file);
64  variable_name=NULL;
65  filename=NULL;
66  file=NULL;
67  }
68 
74  {
75  return file;
76  }
77 
84  void set_variable_name(const char* name);
85 
92  char* get_variable_name();
93 
95  /*virtual DataType get_data_type()=0;*/
96 
98  /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
99 
107  virtual void get_vector(bool*& vector, int32_t& len);
108  virtual void get_vector(uint8_t*& vector, int32_t& len)=0;
109  virtual void get_vector(char*& vector, int32_t& len)=0;
110  virtual void get_vector(int32_t*& vector, int32_t& len)=0;
111  virtual void get_vector(float64_t*& vector, int32_t& len)=0;
112  virtual void get_vector(float32_t*& vector, int32_t& len)=0;
113  virtual void get_vector(int16_t*& vector, int32_t& len)=0;
114  virtual void get_vector(uint16_t*& vector, int32_t& len)=0;
116 
118  /*virtual void get_matrix(
119  void*& matrix, int32_t& num_feat, int32_t& num_vec, DataType& dtype);*/
120 
129  virtual void get_matrix(
130  bool*& matrix, int32_t& num_feat, int32_t& num_vec);
131  virtual void get_matrix(
132  uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
133  virtual void get_int8_matrix(
134  int8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
135  virtual void get_matrix(
136  char*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
137  virtual void get_matrix(
138  int32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
139  virtual void get_uint_matrix(
140  uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
141  virtual void get_long_matrix(
142  int64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
143  virtual void get_ulong_matrix(
144  uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
145  virtual void get_matrix(
146  float32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
147  virtual void get_matrix(
148  float64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
149  virtual void get_longreal_matrix(
150  floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
151  virtual void get_matrix(
152  int16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
153  virtual void get_matrix(
154  uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
156 
158  /*virtual void get_ndarray(
159  void*& array, int32_t*& dims, int32_t& num_dims, DataType& dtype);*/
160 
169  virtual void get_ndarray(
170  uint8_t*& array, int32_t*& dims, int32_t& num_dims)=0;
171  virtual void get_ndarray(
172  char*& array, int32_t*& dims, int32_t& num_dims)=0;
173  virtual void get_ndarray(
174  int32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
175  virtual void get_ndarray(
176  float32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
177  virtual void get_ndarray(
178  float64_t*& array, int32_t*& dims, int32_t& num_dims)=0;
179  virtual void get_ndarray(
180  int16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
181  virtual void get_ndarray(
182  uint16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
184 
193  virtual void get_sparse_matrix(
194  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
195  virtual void get_sparse_matrix(
196  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
197  virtual void get_int8_sparsematrix(
198  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
199  virtual void get_sparse_matrix(
200  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
201  virtual void get_sparse_matrix(
202  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
203  virtual void get_uint_sparsematrix(
204  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
205  virtual void get_long_sparsematrix(
206  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
207  virtual void get_ulong_sparsematrix(
208  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
209  virtual void get_sparse_matrix(
210  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
211  virtual void get_sparse_matrix(
212  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
213  virtual void get_sparse_matrix(
214  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
215  virtual void get_sparse_matrix(
216  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
217  virtual void get_longreal_sparsematrix(
218  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
220 
221 
230  virtual void get_string_list(
231  SGString<bool>*& strings, int32_t& num_str,
232  int32_t& max_string_len);
233  virtual void get_string_list(
234  SGString<uint8_t>*& strings, int32_t& num_str,
235  int32_t& max_string_len)=0;
236  virtual void get_int8_string_list(
237  SGString<int8_t>*& strings, int32_t& num_str,
238  int32_t& max_string_len)=0;
239  virtual void get_string_list(
240  SGString<char>*& strings, int32_t& num_str,
241  int32_t& max_string_len)=0;
242  virtual void get_string_list(
243  SGString<int32_t>*& strings, int32_t& num_str,
244  int32_t& max_string_len)=0;
245  virtual void get_uint_string_list(
246  SGString<uint32_t>*& strings, int32_t& num_str,
247  int32_t& max_string_len)=0;
248  virtual void get_string_list(
249  SGString<int16_t>*& strings, int32_t& num_str,
250  int32_t& max_string_len)=0;
251  virtual void get_string_list(
252  SGString<uint16_t>*& strings, int32_t& num_str,
253  int32_t& max_string_len)=0;
254  virtual void get_long_string_list(
255  SGString<int64_t>*& strings, int32_t& num_str,
256  int32_t& max_string_len)=0;
257  virtual void get_ulong_string_list(
258  SGString<uint64_t>*& strings, int32_t& num_str,
259  int32_t& max_string_len)=0;
260  virtual void get_string_list(
261  SGString<float32_t>*& strings, int32_t& num_str,
262  int32_t& max_string_len)=0;
263  virtual void get_string_list(
264  SGString<float64_t>*& strings, int32_t& num_str,
265  int32_t& max_string_len)=0;
266  virtual void get_longreal_string_list(
267  SGString<floatmax_t>*& strings, int32_t& num_str,
268  int32_t& max_string_len)=0;
270 
272  /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
273 
281  virtual void set_vector(const bool* vector, int32_t len);
282  virtual void set_vector(const uint8_t* vector, int32_t len)=0;
283  virtual void set_vector(const char* vector, int32_t len)=0;
284  virtual void set_vector(const int32_t* vector, int32_t len)=0;
285  virtual void set_vector( const float32_t* vector, int32_t len)=0;
286  virtual void set_vector(const float64_t* vector, int32_t len)=0;
287  virtual void set_vector(const int16_t* vector, int32_t len)=0;
288  virtual void set_vector(const uint16_t* vector, int32_t len)=0;
290 
291 
299  virtual void set_matrix(
300  const bool* matrix, int32_t num_feat, int32_t num_vec);
301  virtual void set_matrix(
302  const uint8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
303  virtual void set_int8_matrix(
304  const int8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
305  virtual void set_matrix(
306  const char* matrix, int32_t num_feat, int32_t num_vec)=0;
307  virtual void set_matrix(
308  const int32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
309  virtual void set_uint_matrix(
310  const uint32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
311  virtual void set_long_matrix(
312  const int64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
313  virtual void set_ulong_matrix(
314  const uint64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
315  virtual void set_matrix(
316  const float32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
317  virtual void set_matrix(
318  const float64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
319  virtual void set_longreal_matrix(
320  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec)=0;
321  virtual void set_matrix(
322  const int16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
323  virtual void set_matrix(
324  const uint16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
326 
334  virtual void set_sparse_matrix(
335  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec)=0;
336  virtual void set_sparse_matrix(
337  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
338  virtual void set_int8_sparsematrix(
339  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
340  virtual void set_sparse_matrix(
341  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec)=0;
342  virtual void set_sparse_matrix(
343  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
344  virtual void set_uint_sparsematrix(
345  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
346  virtual void set_long_sparsematrix(
347  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
348  virtual void set_ulong_sparsematrix(
349  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
350  virtual void set_sparse_matrix(
351  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
352  virtual void set_sparse_matrix(
353  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
354  virtual void set_sparse_matrix(
355  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
356  virtual void set_sparse_matrix(
357  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
358  virtual void set_longreal_sparsematrix(
359  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
361 
362 
371  virtual void set_string_list(
372  const SGString<bool>* strings, int32_t num_str);
373  virtual void set_string_list(
374  const SGString<uint8_t>* strings, int32_t num_str)=0;
375  virtual void set_int8_string_list(
376  const SGString<int8_t>* strings, int32_t num_str)=0;
377  virtual void set_string_list(
378  const SGString<char>* strings, int32_t num_str)=0;
379  virtual void set_string_list(
380  const SGString<int32_t>* strings, int32_t num_str)=0;
381  virtual void set_uint_string_list(
382  const SGString<uint32_t>* strings, int32_t num_str)=0;
383  virtual void set_string_list(
384  const SGString<int16_t>* strings, int32_t num_str)=0;
385  virtual void set_string_list(
386  const SGString<uint16_t>* strings, int32_t num_str)=0;
387  virtual void set_long_string_list(
388  const SGString<int64_t>* strings, int32_t num_str)=0;
389  virtual void set_ulong_string_list(
390  const SGString<uint64_t>* strings, int32_t num_str)=0;
391  virtual void set_string_list(
392  const SGString<float32_t>* strings, int32_t num_str)=0;
393  virtual void set_string_list(
394  const SGString<float64_t>* strings, int32_t num_str)=0;
395  virtual void set_longreal_string_list(
396  const SGString<floatmax_t>* strings, int32_t num_str)=0;
398 
400  inline virtual const char* get_name() const { return "File"; }
401 
408  static char* read_whole_file(char* fname, size_t& len);
409 
410 protected:
412  FILE* file;
414  char task;
416  char* filename;
419 };
420 }
421 #endif // __FILE_H__

SHOGUN Machine Learning Toolbox - Documentation