00001
00002
00003
00004
00005
00006
00007
00008
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__