AsciiFile.h

Go to the documentation of this file.
00001 /*
00002  * This program is free software; you can redistribute it and/or modify
00003  * it under the terms of the GNU General Public License as published by
00004  * the Free Software Foundation; either version 3 of the License, or
00005  * (at your option) any later version.
00006  *
00007  * Written (W) 2010 Soeren Sonnenburg
00008  * Copyright (C) 2010 Berlin Institute of Technology
00009  */
00010 #ifndef __ASCII_FILE_H__
00011 #define __ASCII_FILE_H__
00012 
00013 #include <shogun/lib/config.h>
00014 #include <shogun/lib/DynamicArray.h>
00015 #include <shogun/lib/common.h>
00016 #include <shogun/lib/File.h>
00017 #include <shogun/lib/io.h>
00018 
00019 namespace shogun
00020 {
00030 class CAsciiFile: public CFile
00031 {
00032 public:
00038     CAsciiFile(FILE* f, const char* name=NULL);
00039 
00046     CAsciiFile(char* fname, char rw='r', const char* name=NULL);
00047 
00049     virtual ~CAsciiFile();
00050 
00058     virtual void get_byte_vector(uint8_t*& vector, int32_t& len);
00059     virtual void get_char_vector(char*& vector, int32_t& len);
00060     virtual void get_int_vector(int32_t*& vector, int32_t& len);
00061     virtual void get_real_vector(float64_t*& vector, int32_t& len);
00062     virtual void get_shortreal_vector(float32_t*& vector, int32_t& len);
00063     virtual void get_short_vector(int16_t*& vector, int32_t& len);
00064     virtual void get_word_vector(uint16_t*& vector, int32_t& len);
00066 
00075     virtual void get_byte_matrix(
00076             uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00077     virtual void get_char_matrix(
00078             char*& matrix, int32_t& num_feat, int32_t& num_vec);
00079     virtual void get_int_matrix(
00080             int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00081     virtual void get_uint_matrix(
00082             uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00083     virtual void get_long_matrix(
00084             int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00085     virtual void get_ulong_matrix(
00086             uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00087     virtual void get_shortreal_matrix(
00088             float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00089     virtual void get_real_matrix(
00090             float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00091     virtual void get_longreal_matrix(
00092             floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00093     virtual void get_short_matrix(
00094             int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00095     virtual void get_word_matrix(
00096             uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00098 
00107     virtual void get_byte_ndarray(
00108             uint8_t*& array, int32_t*& dims, int32_t& num_dims);
00109     virtual void get_char_ndarray(
00110             char*& array, int32_t*& dims, int32_t& num_dims);
00111     virtual void get_int_ndarray(
00112             int32_t*& array, int32_t*& dims, int32_t& num_dims);
00113     virtual void get_shortreal_ndarray(
00114             float32_t*& array, int32_t*& dims, int32_t& num_dims);
00115     virtual void get_real_ndarray(
00116             float64_t*& array, int32_t*& dims, int32_t& num_dims);
00117     virtual void get_short_ndarray(
00118             int16_t*& array, int32_t*& dims, int32_t& num_dims);
00119     virtual void get_word_ndarray(
00120             uint16_t*& array, int32_t*& dims, int32_t& num_dims);
00122 
00131     virtual void get_bool_sparsematrix(
00132             TSparse<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
00133     virtual void get_byte_sparsematrix(
00134             TSparse<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00135     virtual void get_char_sparsematrix(
00136             TSparse<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
00137     virtual void get_int_sparsematrix(
00138             TSparse<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00139     virtual void get_uint_sparsematrix(
00140             TSparse<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00141     virtual void get_long_sparsematrix(
00142             TSparse<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00143     virtual void get_ulong_sparsematrix(
00144             TSparse<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00145     virtual void get_short_sparsematrix(
00146             TSparse<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00147     virtual void get_word_sparsematrix(
00148             TSparse<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00149     virtual void get_shortreal_sparsematrix(
00150             TSparse<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00151     virtual void get_real_sparsematrix(
00152             TSparse<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00153     virtual void get_longreal_sparsematrix(
00154             TSparse<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00156 
00157 
00166     virtual void get_byte_string_list(
00167             T_STRING<uint8_t>*& strings, int32_t& num_str,
00168             int32_t& max_string_len);
00169     virtual void get_char_string_list(
00170             T_STRING<char>*& strings, int32_t& num_str,
00171             int32_t& max_string_len);
00172     virtual void get_int_string_list(
00173             T_STRING<int32_t>*& strings, int32_t& num_str,
00174             int32_t& max_string_len);
00175     virtual void get_uint_string_list(
00176             T_STRING<uint32_t>*& strings, int32_t& num_str,
00177             int32_t& max_string_len);
00178     virtual void get_short_string_list(
00179             T_STRING<int16_t>*& strings, int32_t& num_str,
00180             int32_t& max_string_len);
00181     virtual void get_word_string_list(
00182             T_STRING<uint16_t>*& strings, int32_t& num_str,
00183             int32_t& max_string_len);
00184     virtual void get_long_string_list(
00185             T_STRING<int64_t>*& strings, int32_t& num_str,
00186             int32_t& max_string_len);
00187     virtual void get_ulong_string_list(
00188             T_STRING<uint64_t>*& strings, int32_t& num_str,
00189             int32_t& max_string_len);
00190     virtual void get_shortreal_string_list(
00191             T_STRING<float32_t>*& strings, int32_t& num_str,
00192             int32_t& max_string_len);
00193     virtual void get_real_string_list(
00194             T_STRING<float64_t>*& strings, int32_t& num_str,
00195             int32_t& max_string_len);
00196     virtual void get_longreal_string_list(
00197             T_STRING<floatmax_t>*& strings, int32_t& num_str,
00198             int32_t& max_string_len);
00200 
00208     virtual void set_byte_vector(const uint8_t* vector, int32_t len);
00209     virtual void set_char_vector(const char* vector, int32_t len);
00210     virtual void set_int_vector(const int32_t* vector, int32_t len);
00211     virtual void set_shortreal_vector( const float32_t* vector, int32_t len);
00212     virtual void set_real_vector(const float64_t* vector, int32_t len);
00213     virtual void set_short_vector(const int16_t* vector, int32_t len);
00214     virtual void set_word_vector(const uint16_t* vector, int32_t len);
00216 
00217 
00225     virtual void set_byte_matrix(
00226             const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
00227     virtual void set_char_matrix(
00228             const char* matrix, int32_t num_feat, int32_t num_vec);
00229     virtual void set_int_matrix(
00230             const int32_t* matrix, int32_t num_feat, int32_t num_vec);
00231     virtual void set_uint_matrix(
00232             const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
00233     virtual void set_long_matrix(
00234             const int64_t* matrix, int32_t num_feat, int32_t num_vec);
00235     virtual void set_ulong_matrix(
00236             const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
00237     virtual void set_shortreal_matrix(
00238             const float32_t* matrix, int32_t num_feat, int32_t num_vec);
00239     virtual void set_real_matrix(
00240             const float64_t* matrix, int32_t num_feat, int32_t num_vec);
00241     virtual void set_longreal_matrix(
00242             const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
00243     virtual void set_short_matrix(
00244             const int16_t* matrix, int32_t num_feat, int32_t num_vec);
00245     virtual void set_word_matrix(
00246             const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
00248 
00256     virtual void set_bool_sparsematrix(
00257             const TSparse<bool>* matrix, int32_t num_feat, int32_t num_vec);
00258     virtual void set_byte_sparsematrix(
00259             const TSparse<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
00260     virtual void set_char_sparsematrix(
00261             const TSparse<char>* matrix, int32_t num_feat, int32_t num_vec);
00262     virtual void set_int_sparsematrix(
00263             const TSparse<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
00264     virtual void set_uint_sparsematrix(
00265             const TSparse<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
00266     virtual void set_long_sparsematrix(
00267             const TSparse<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
00268     virtual void set_ulong_sparsematrix(
00269             const TSparse<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
00270     virtual void set_short_sparsematrix(
00271             const TSparse<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
00272     virtual void set_word_sparsematrix(
00273             const TSparse<uint16_t>* matrix, int32_t num_feat, int32_t num_vec); 
00274     virtual void set_shortreal_sparsematrix(
00275             const TSparse<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
00276     virtual void set_real_sparsematrix(
00277             const TSparse<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
00278     virtual void set_longreal_sparsematrix(
00279             const TSparse<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
00281 
00282 
00291     virtual void set_byte_string_list(
00292             const T_STRING<uint8_t>* strings, int32_t num_str);
00293     virtual void set_char_string_list(
00294             const T_STRING<char>* strings, int32_t num_str);
00295     virtual void set_int_string_list(
00296             const T_STRING<int32_t>* strings, int32_t num_str);
00297     virtual void set_uint_string_list(
00298             const T_STRING<uint32_t>* strings, int32_t num_str);
00299     virtual void set_short_string_list(
00300             const T_STRING<int16_t>* strings, int32_t num_str);
00301     virtual void set_word_string_list(
00302             const T_STRING<uint16_t>* strings, int32_t num_str);
00303     virtual void set_long_string_list(
00304             const T_STRING<int64_t>* strings, int32_t num_str);
00305     virtual void set_ulong_string_list(
00306             const T_STRING<uint64_t>* strings, int32_t num_str);
00307     virtual void set_shortreal_string_list(
00308             const T_STRING<float32_t>* strings, int32_t num_str);
00309     virtual void set_real_string_list(
00310             const T_STRING<float64_t>* strings, int32_t num_str);
00311     virtual void set_longreal_string_list(
00312             const T_STRING<floatmax_t>* strings, int32_t num_str);
00314 
00316     inline virtual const char* get_name() const { return "AsciiFile"; }
00317 
00318 private:
00325     template <class T> void append_item(CDynamicArray<T>* items, char* ptr_data, char* ptr_item);
00326 };
00327 }
00328 #endif //__ASCII_FILE_H__
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation