SHOGUN v0.9.0
|
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 <lib/config.h> 00014 #include <base/DynArray.h> 00015 #include <lib/common.h> 00016 #include <lib/File.h> 00017 #include <lib/io.h> 00018 00019 namespace shogun 00020 { 00030 class CAsciiFile: public CFile 00031 { 00032 public: 00034 CAsciiFile(void); 00035 00041 CAsciiFile(FILE* f, const char* name=NULL); 00042 00049 CAsciiFile(char* fname, char rw='r', const char* name=NULL); 00050 00052 virtual ~CAsciiFile(); 00053 00061 virtual void get_byte_vector(uint8_t*& vector, int32_t& len); 00062 virtual void get_char_vector(char*& vector, int32_t& len); 00063 virtual void get_int_vector(int32_t*& vector, int32_t& len); 00064 virtual void get_real_vector(float64_t*& vector, int32_t& len); 00065 virtual void get_shortreal_vector(float32_t*& vector, int32_t& len); 00066 virtual void get_short_vector(int16_t*& vector, int32_t& len); 00067 virtual void get_word_vector(uint16_t*& vector, int32_t& len); 00069 00078 virtual void get_byte_matrix( 00079 uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00080 virtual void get_int8_matrix( 00081 int8_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00082 virtual void get_char_matrix( 00083 char*& matrix, int32_t& num_feat, int32_t& num_vec); 00084 virtual void get_int_matrix( 00085 int32_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00086 virtual void get_uint_matrix( 00087 uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00088 virtual void get_long_matrix( 00089 int64_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00090 virtual void get_ulong_matrix( 00091 uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00092 virtual void get_shortreal_matrix( 00093 float32_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00094 virtual void get_real_matrix( 00095 float64_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00096 virtual void get_longreal_matrix( 00097 floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00098 virtual void get_short_matrix( 00099 int16_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00100 virtual void get_word_matrix( 00101 uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec); 00103 00112 virtual void get_byte_ndarray( 00113 uint8_t*& array, int32_t*& dims, int32_t& num_dims); 00114 virtual void get_char_ndarray( 00115 char*& array, int32_t*& dims, int32_t& num_dims); 00116 virtual void get_int_ndarray( 00117 int32_t*& array, int32_t*& dims, int32_t& num_dims); 00118 virtual void get_shortreal_ndarray( 00119 float32_t*& array, int32_t*& dims, int32_t& num_dims); 00120 virtual void get_real_ndarray( 00121 float64_t*& array, int32_t*& dims, int32_t& num_dims); 00122 virtual void get_short_ndarray( 00123 int16_t*& array, int32_t*& dims, int32_t& num_dims); 00124 virtual void get_word_ndarray( 00125 uint16_t*& array, int32_t*& dims, int32_t& num_dims); 00127 00136 virtual void get_bool_sparsematrix( 00137 TSparse<bool>*& matrix, int32_t& num_feat, int32_t& num_vec); 00138 virtual void get_byte_sparsematrix( 00139 TSparse<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00140 virtual void get_int8_sparsematrix( 00141 TSparse<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00142 virtual void get_char_sparsematrix( 00143 TSparse<char>*& matrix, int32_t& num_feat, int32_t& num_vec); 00144 virtual void get_int_sparsematrix( 00145 TSparse<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00146 virtual void get_uint_sparsematrix( 00147 TSparse<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00148 virtual void get_long_sparsematrix( 00149 TSparse<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00150 virtual void get_ulong_sparsematrix( 00151 TSparse<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00152 virtual void get_short_sparsematrix( 00153 TSparse<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00154 virtual void get_word_sparsematrix( 00155 TSparse<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00156 virtual void get_shortreal_sparsematrix( 00157 TSparse<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00158 virtual void get_real_sparsematrix( 00159 TSparse<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00160 virtual void get_longreal_sparsematrix( 00161 TSparse<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec); 00163 00164 00173 virtual void get_byte_string_list( 00174 TString<uint8_t>*& strings, int32_t& num_str, 00175 int32_t& max_string_len); 00176 virtual void get_int8_string_list( 00177 TString<int8_t>*& strings, int32_t& num_str, 00178 int32_t& max_string_len); 00179 virtual void get_char_string_list( 00180 TString<char>*& strings, int32_t& num_str, 00181 int32_t& max_string_len); 00182 virtual void get_int_string_list( 00183 TString<int32_t>*& strings, int32_t& num_str, 00184 int32_t& max_string_len); 00185 virtual void get_uint_string_list( 00186 TString<uint32_t>*& strings, int32_t& num_str, 00187 int32_t& max_string_len); 00188 virtual void get_short_string_list( 00189 TString<int16_t>*& strings, int32_t& num_str, 00190 int32_t& max_string_len); 00191 virtual void get_word_string_list( 00192 TString<uint16_t>*& strings, int32_t& num_str, 00193 int32_t& max_string_len); 00194 virtual void get_long_string_list( 00195 TString<int64_t>*& strings, int32_t& num_str, 00196 int32_t& max_string_len); 00197 virtual void get_ulong_string_list( 00198 TString<uint64_t>*& strings, int32_t& num_str, 00199 int32_t& max_string_len); 00200 virtual void get_shortreal_string_list( 00201 TString<float32_t>*& strings, int32_t& num_str, 00202 int32_t& max_string_len); 00203 virtual void get_real_string_list( 00204 TString<float64_t>*& strings, int32_t& num_str, 00205 int32_t& max_string_len); 00206 virtual void get_longreal_string_list( 00207 TString<floatmax_t>*& strings, int32_t& num_str, 00208 int32_t& max_string_len); 00210 00218 virtual void set_byte_vector(const uint8_t* vector, int32_t len); 00219 virtual void set_char_vector(const char* vector, int32_t len); 00220 virtual void set_int_vector(const int32_t* vector, int32_t len); 00221 virtual void set_shortreal_vector( const float32_t* vector, int32_t len); 00222 virtual void set_real_vector(const float64_t* vector, int32_t len); 00223 virtual void set_short_vector(const int16_t* vector, int32_t len); 00224 virtual void set_word_vector(const uint16_t* vector, int32_t len); 00226 00227 00235 virtual void set_byte_matrix( 00236 const uint8_t* matrix, int32_t num_feat, int32_t num_vec); 00237 virtual void set_int8_matrix( 00238 const int8_t* matrix, int32_t num_feat, int32_t num_vec); 00239 virtual void set_char_matrix( 00240 const char* matrix, int32_t num_feat, int32_t num_vec); 00241 virtual void set_int_matrix( 00242 const int32_t* matrix, int32_t num_feat, int32_t num_vec); 00243 virtual void set_uint_matrix( 00244 const uint32_t* matrix, int32_t num_feat, int32_t num_vec); 00245 virtual void set_long_matrix( 00246 const int64_t* matrix, int32_t num_feat, int32_t num_vec); 00247 virtual void set_ulong_matrix( 00248 const uint64_t* matrix, int32_t num_feat, int32_t num_vec); 00249 virtual void set_shortreal_matrix( 00250 const float32_t* matrix, int32_t num_feat, int32_t num_vec); 00251 virtual void set_real_matrix( 00252 const float64_t* matrix, int32_t num_feat, int32_t num_vec); 00253 virtual void set_longreal_matrix( 00254 const floatmax_t* matrix, int32_t num_feat, int32_t num_vec); 00255 virtual void set_short_matrix( 00256 const int16_t* matrix, int32_t num_feat, int32_t num_vec); 00257 virtual void set_word_matrix( 00258 const uint16_t* matrix, int32_t num_feat, int32_t num_vec); 00260 00268 virtual void set_bool_sparsematrix( 00269 const TSparse<bool>* matrix, int32_t num_feat, int32_t num_vec); 00270 virtual void set_byte_sparsematrix( 00271 const TSparse<uint8_t>* matrix, int32_t num_feat, int32_t num_vec); 00272 virtual void set_int8_sparsematrix( 00273 const TSparse<int8_t>* matrix, int32_t num_feat, int32_t num_vec); 00274 virtual void set_char_sparsematrix( 00275 const TSparse<char>* matrix, int32_t num_feat, int32_t num_vec); 00276 virtual void set_int_sparsematrix( 00277 const TSparse<int32_t>* matrix, int32_t num_feat, int32_t num_vec); 00278 virtual void set_uint_sparsematrix( 00279 const TSparse<uint32_t>* matrix, int32_t num_feat, int32_t num_vec); 00280 virtual void set_long_sparsematrix( 00281 const TSparse<int64_t>* matrix, int32_t num_feat, int32_t num_vec); 00282 virtual void set_ulong_sparsematrix( 00283 const TSparse<uint64_t>* matrix, int32_t num_feat, int32_t num_vec); 00284 virtual void set_short_sparsematrix( 00285 const TSparse<int16_t>* matrix, int32_t num_feat, int32_t num_vec); 00286 virtual void set_word_sparsematrix( 00287 const TSparse<uint16_t>* matrix, int32_t num_feat, int32_t num_vec); 00288 virtual void set_shortreal_sparsematrix( 00289 const TSparse<float32_t>* matrix, int32_t num_feat, int32_t num_vec); 00290 virtual void set_real_sparsematrix( 00291 const TSparse<float64_t>* matrix, int32_t num_feat, int32_t num_vec); 00292 virtual void set_longreal_sparsematrix( 00293 const TSparse<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec); 00295 00296 00305 virtual void set_byte_string_list( 00306 const TString<uint8_t>* strings, int32_t num_str); 00307 virtual void set_int8_string_list( 00308 const TString<int8_t>* strings, int32_t num_str); 00309 virtual void set_char_string_list( 00310 const TString<char>* strings, int32_t num_str); 00311 virtual void set_int_string_list( 00312 const TString<int32_t>* strings, int32_t num_str); 00313 virtual void set_uint_string_list( 00314 const TString<uint32_t>* strings, int32_t num_str); 00315 virtual void set_short_string_list( 00316 const TString<int16_t>* strings, int32_t num_str); 00317 virtual void set_word_string_list( 00318 const TString<uint16_t>* strings, int32_t num_str); 00319 virtual void set_long_string_list( 00320 const TString<int64_t>* strings, int32_t num_str); 00321 virtual void set_ulong_string_list( 00322 const TString<uint64_t>* strings, int32_t num_str); 00323 virtual void set_shortreal_string_list( 00324 const TString<float32_t>* strings, int32_t num_str); 00325 virtual void set_real_string_list( 00326 const TString<float64_t>* strings, int32_t num_str); 00327 virtual void set_longreal_string_list( 00328 const TString<floatmax_t>* strings, int32_t num_str); 00330 00332 inline virtual const char* get_name() const { return "AsciiFile"; } 00333 00334 private: 00341 template <class T> void append_item(DynArray<T>* items, char* ptr_data, char* ptr_item); 00342 }; 00343 } 00344 #endif //__ASCII_FILE_H__