SHOGUN  v2.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AsciiFile.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  * Parts of this code are copyright (c) 2009 Yahoo! Inc.
8  * All rights reserved. The copyrights embodied in the content of
9  * this file are licensed under the BSD (revised) open source license.
10  *
11  * Written (W) 2010 Soeren Sonnenburg
12  * Copyright (C) 2010 Berlin Institute of Technology
13  */
14 #ifndef __ASCII_FILE_H__
15 #define __ASCII_FILE_H__
16 
17 #include <shogun/lib/config.h>
18 #include <shogun/base/DynArray.h>
19 #include <shogun/lib/common.h>
20 #include <shogun/io/File.h>
21 #include <shogun/io/SGIO.h>
22 #include <shogun/io/IOBuffer.h>
23 
24 namespace shogun
25 {
35 class CAsciiFile: public CFile
36 {
37 public:
39  CAsciiFile();
40 
46  CAsciiFile(FILE* f, const char* name=NULL);
47 
54  CAsciiFile(const char* fname, char rw='r', const char* name=NULL);
55 
57  virtual ~CAsciiFile();
58 
66  virtual void get_vector(uint8_t*& vector, int32_t& len);
67  virtual void get_vector(char*& vector, int32_t& len);
68  virtual void get_vector(int32_t*& vector, int32_t& len);
69  virtual void get_vector(float64_t*& vector, int32_t& len);
70  virtual void get_vector(float32_t*& vector, int32_t& len);
71  virtual void get_vector(int16_t*& vector, int32_t& len);
72  virtual void get_vector(uint16_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_int8_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_uint_matrix(
92  uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
93  virtual void get_long_matrix(
94  int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
95  virtual void get_ulong_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_longreal_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_int8_ndarray(
120  int8_t*& array, int32_t*& dims, int32_t& num_dims);
121  virtual void get_ndarray(
122  char*& array, int32_t*& dims, int32_t& num_dims);
123  virtual void get_ndarray(
124  int32_t*& array, int32_t*& dims, int32_t& num_dims);
125  virtual void get_uint_ndarray(
126  uint32_t*& array, int32_t*& dims, int32_t& num_dims);
127  virtual void get_long_ndarray(
128  int64_t*& array, int32_t*& dims, int32_t& num_dims);
129  virtual void get_ulong_ndarray(
130  uint64_t*& array, int32_t*& dims, int32_t& num_dims);
131  virtual void get_ndarray(
132  float32_t*& array, int32_t*& dims, int32_t& num_dims);
133  virtual void get_ndarray(
134  float64_t*& array, int32_t*& dims, int32_t& num_dims);
135  virtual void get_longreal_ndarray(
136  floatmax_t*& array, int32_t*& dims, int32_t& num_dims);
137  virtual void get_ndarray(
138  int16_t*& array, int32_t*& dims, int32_t& num_dims);
139  virtual void get_ndarray(
140  uint16_t*& array, int32_t*& dims, int32_t& num_dims);
142 
151  virtual void get_sparse_matrix(
152  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
153  virtual void get_sparse_matrix(
154  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
155  virtual void get_int8_sparsematrix(
156  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
157  virtual void get_sparse_matrix(
158  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
159  virtual void get_sparse_matrix(
160  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
161  virtual void get_uint_sparsematrix(
162  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
163  virtual void get_long_sparsematrix(
164  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
165  virtual void get_ulong_sparsematrix(
166  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
167  virtual void get_sparse_matrix(
168  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
169  virtual void get_sparse_matrix(
170  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
171  virtual void get_sparse_matrix(
172  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
173  virtual void get_sparse_matrix(
174  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
175  virtual void get_longreal_sparsematrix(
176  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
178 
179 
188  virtual void get_string_list(
189  SGString<uint8_t>*& strings, int32_t& num_str,
190  int32_t& max_string_len);
191  virtual void get_int8_string_list(
192  SGString<int8_t>*& strings, int32_t& num_str,
193  int32_t& max_string_len);
194  virtual void get_string_list(
195  SGString<char>*& strings, int32_t& num_str,
196  int32_t& max_string_len);
197  virtual void get_string_list(
198  SGString<int32_t>*& strings, int32_t& num_str,
199  int32_t& max_string_len);
200  virtual void get_uint_string_list(
201  SGString<uint32_t>*& strings, int32_t& num_str,
202  int32_t& max_string_len);
203  virtual void get_string_list(
204  SGString<int16_t>*& strings, int32_t& num_str,
205  int32_t& max_string_len);
206  virtual void get_string_list(
207  SGString<uint16_t>*& strings, int32_t& num_str,
208  int32_t& max_string_len);
209  virtual void get_long_string_list(
210  SGString<int64_t>*& strings, int32_t& num_str,
211  int32_t& max_string_len);
212  virtual void get_ulong_string_list(
213  SGString<uint64_t>*& strings, int32_t& num_str,
214  int32_t& max_string_len);
215  virtual void get_string_list(
216  SGString<float32_t>*& strings, int32_t& num_str,
217  int32_t& max_string_len);
218  virtual void get_string_list(
219  SGString<float64_t>*& strings, int32_t& num_str,
220  int32_t& max_string_len);
221  virtual void get_longreal_string_list(
222  SGString<floatmax_t>*& strings, int32_t& num_str,
223  int32_t& max_string_len);
225 
233  virtual void set_vector(const uint8_t* vector, int32_t len);
234  virtual void set_vector(const char* vector, int32_t len);
235  virtual void set_vector(const int32_t* vector, int32_t len);
236  virtual void set_vector( const float32_t* vector, int32_t len);
237  virtual void set_vector(const float64_t* vector, int32_t len);
238  virtual void set_vector(const int16_t* vector, int32_t len);
239  virtual void set_vector(const uint16_t* vector, int32_t len);
241 
242 
250  virtual void set_matrix(
251  const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
252  virtual void set_int8_matrix(
253  const int8_t* matrix, int32_t num_feat, int32_t num_vec);
254  virtual void set_matrix(
255  const char* matrix, int32_t num_feat, int32_t num_vec);
256  virtual void set_matrix(
257  const int32_t* matrix, int32_t num_feat, int32_t num_vec);
258  virtual void set_uint_matrix(
259  const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
260  virtual void set_long_matrix(
261  const int64_t* matrix, int32_t num_feat, int32_t num_vec);
262  virtual void set_ulong_matrix(
263  const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
264  virtual void set_matrix(
265  const float32_t* matrix, int32_t num_feat, int32_t num_vec);
266  virtual void set_matrix(
267  const float64_t* matrix, int32_t num_feat, int32_t num_vec);
268  virtual void set_longreal_matrix(
269  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
270  virtual void set_matrix(
271  const int16_t* matrix, int32_t num_feat, int32_t num_vec);
272  virtual void set_matrix(
273  const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
275 
283  virtual void set_ndarray(
284  const uint8_t* array, int32_t* dims, int32_t num_dims);
285  virtual void set_int8_ndarray(
286  const int8_t* array, int32_t* dims, int32_t num_dims);
287  virtual void set_ndarray(
288  const char* array, int32_t* dims, int32_t num_dims);
289  virtual void set_ndarray(
290  const int32_t* array, int32_t* dims, int32_t num_dims);
291  virtual void set_uint_ndarray(
292  const uint32_t* array, int32_t* dims, int32_t num_dims);
293  virtual void set_long_ndarray(
294  const int64_t* array, int32_t* dims, int32_t num_dims);
295  virtual void set_ulong_ndarray(
296  const uint64_t* array, int32_t* dims, int32_t num_dims);
297  virtual void set_ndarray(
298  const float32_t* array, int32_t* dims, int32_t num_dims);
299  virtual void set_ndarray(
300  const float64_t* array, int32_t* dims, int32_t num_dims);
301  virtual void set_longreal_ndarray(
302  const floatmax_t* array, int32_t* dims, int32_t num_dims);
303  virtual void set_ndarray(
304  const int16_t* array, int32_t* dims, int32_t num_dims);
305  virtual void set_ndarray(
306  const uint16_t* array, int32_t* dims, int32_t num_dims);
308 
316  virtual void set_sparse_matrix(
317  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
318  virtual void set_sparse_matrix(
319  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
320  virtual void set_int8_sparsematrix(
321  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
322  virtual void set_sparse_matrix(
323  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
324  virtual void set_sparse_matrix(
325  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
326  virtual void set_uint_sparsematrix(
327  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
328  virtual void set_long_sparsematrix(
329  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
330  virtual void set_ulong_sparsematrix(
331  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
332  virtual void set_sparse_matrix(
333  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
334  virtual void set_sparse_matrix(
335  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
336  virtual void set_sparse_matrix(
337  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
338  virtual void set_sparse_matrix(
339  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
340  virtual void set_longreal_sparsematrix(
341  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
343 
344 
353  virtual void set_string_list(
354  const SGString<uint8_t>* strings, int32_t num_str);
355  virtual void set_int8_string_list(
356  const SGString<int8_t>* strings, int32_t num_str);
357  virtual void set_string_list(
358  const SGString<char>* strings, int32_t num_str);
359  virtual void set_string_list(
360  const SGString<int32_t>* strings, int32_t num_str);
361  virtual void set_uint_string_list(
362  const SGString<uint32_t>* strings, int32_t num_str);
363  virtual void set_string_list(
364  const SGString<int16_t>* strings, int32_t num_str);
365  virtual void set_string_list(
366  const SGString<uint16_t>* strings, int32_t num_str);
367  virtual void set_long_string_list(
368  const SGString<int64_t>* strings, int32_t num_str);
369  virtual void set_ulong_string_list(
370  const SGString<uint64_t>* strings, int32_t num_str);
371  virtual void set_string_list(
372  const SGString<float32_t>* strings, int32_t num_str);
373  virtual void set_string_list(
374  const SGString<float64_t>* strings, int32_t num_str);
375  virtual void set_longreal_string_list(
376  const SGString<floatmax_t>* strings, int32_t num_str);
378 
380  inline virtual const char* get_name() const { return "AsciiFile"; }
381 
397  static ssize_t getdelim(char **lineptr, size_t *n, char delimiter, FILE* stream);
398 
409  static ssize_t getline(char **lineptr, size_t *n, FILE *stream);
410 
419  static void tokenize(char delim, substring s, v_array<substring> &ret);
420 
421 private:
428  template <class T> void append_item(DynArray<T>* items, char* ptr_data, char* ptr_item);
429 
430 protected:
431 
434 };
435 }
436 #endif //__ASCII_FILE_H__

SHOGUN Machine Learning Toolbox - Documentation