|
SHOGUN v0.9.3
|
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__