00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __FILE_H__
00013 #define __FILE_H__
00014
00015 #include <stdio.h>
00016 #include "base/SGObject.h"
00017 #include "lib/DataType.h"
00018
00019 namespace shogun
00020 {
00021 template <class ST> class TString;
00022 template <class ST> struct TSparse;
00023
00033 class CFile : public CSGObject
00034 {
00035 public:
00037 CFile();
00038
00044 CFile(FILE* f, const char* name=NULL);
00045
00052 CFile(char* fname, char rw='r', const char* name=NULL);
00053
00055 virtual ~CFile();
00056
00057 void close()
00058 {
00059 free(variable_name);
00060 free(filename);
00061 if (file)
00062 fclose(file);
00063 variable_name=NULL;
00064 filename=NULL;
00065 file=NULL;
00066 }
00067
00074 void set_variable_name(const char* name);
00075
00082 char* get_variable_name();
00083
00085
00086
00088
00089
00097 virtual void get_bool_vector(bool*& vector, int32_t& len);
00098 virtual void get_byte_vector(uint8_t*& vector, int32_t& len)=0;
00099 virtual void get_char_vector(char*& vector, int32_t& len)=0;
00100 virtual void get_int_vector(int32_t*& vector, int32_t& len)=0;
00101 virtual void get_real_vector(float64_t*& vector, int32_t& len)=0;
00102 virtual void get_shortreal_vector(float32_t*& vector, int32_t& len)=0;
00103 virtual void get_short_vector(int16_t*& vector, int32_t& len)=0;
00104 virtual void get_word_vector(uint16_t*& vector, int32_t& len)=0;
00106
00108
00109
00110
00119 virtual void get_bool_matrix(
00120 bool*& matrix, int32_t& num_feat, int32_t& num_vec);
00121 virtual void get_byte_matrix(
00122 uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00123 virtual void get_int8_matrix(
00124 int8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00125 virtual void get_char_matrix(
00126 char*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00127 virtual void get_int_matrix(
00128 int32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00129 virtual void get_uint_matrix(
00130 uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00131 virtual void get_long_matrix(
00132 int64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00133 virtual void get_ulong_matrix(
00134 uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00135 virtual void get_shortreal_matrix(
00136 float32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00137 virtual void get_real_matrix(
00138 float64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00139 virtual void get_longreal_matrix(
00140 floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00141 virtual void get_short_matrix(
00142 int16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00143 virtual void get_word_matrix(
00144 uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00146
00148
00149
00150
00159 virtual void get_byte_ndarray(
00160 uint8_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00161 virtual void get_char_ndarray(
00162 char*& array, int32_t*& dims, int32_t& num_dims)=0;
00163 virtual void get_int_ndarray(
00164 int32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00165 virtual void get_shortreal_ndarray(
00166 float32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00167 virtual void get_real_ndarray(
00168 float64_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00169 virtual void get_short_ndarray(
00170 int16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00171 virtual void get_word_ndarray(
00172 uint16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00174
00183 virtual void get_bool_sparsematrix(
00184 TSparse<bool>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00185 virtual void get_byte_sparsematrix(
00186 TSparse<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00187 virtual void get_int8_sparsematrix(
00188 TSparse<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00189 virtual void get_char_sparsematrix(
00190 TSparse<char>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00191 virtual void get_int_sparsematrix(
00192 TSparse<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00193 virtual void get_uint_sparsematrix(
00194 TSparse<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00195 virtual void get_long_sparsematrix(
00196 TSparse<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00197 virtual void get_ulong_sparsematrix(
00198 TSparse<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00199 virtual void get_short_sparsematrix(
00200 TSparse<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00201 virtual void get_word_sparsematrix(
00202 TSparse<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00203 virtual void get_shortreal_sparsematrix(
00204 TSparse<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00205 virtual void get_real_sparsematrix(
00206 TSparse<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00207 virtual void get_longreal_sparsematrix(
00208 TSparse<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00210
00211
00220 virtual void get_bool_string_list(
00221 TString<bool>*& strings, int32_t& num_str,
00222 int32_t& max_string_len);
00223 virtual void get_byte_string_list(
00224 TString<uint8_t>*& strings, int32_t& num_str,
00225 int32_t& max_string_len)=0;
00226 virtual void get_int8_string_list(
00227 TString<int8_t>*& strings, int32_t& num_str,
00228 int32_t& max_string_len)=0;
00229 virtual void get_char_string_list(
00230 TString<char>*& strings, int32_t& num_str,
00231 int32_t& max_string_len)=0;
00232 virtual void get_int_string_list(
00233 TString<int32_t>*& strings, int32_t& num_str,
00234 int32_t& max_string_len)=0;
00235 virtual void get_uint_string_list(
00236 TString<uint32_t>*& strings, int32_t& num_str,
00237 int32_t& max_string_len)=0;
00238 virtual void get_short_string_list(
00239 TString<int16_t>*& strings, int32_t& num_str,
00240 int32_t& max_string_len)=0;
00241 virtual void get_word_string_list(
00242 TString<uint16_t>*& strings, int32_t& num_str,
00243 int32_t& max_string_len)=0;
00244 virtual void get_long_string_list(
00245 TString<int64_t>*& strings, int32_t& num_str,
00246 int32_t& max_string_len)=0;
00247 virtual void get_ulong_string_list(
00248 TString<uint64_t>*& strings, int32_t& num_str,
00249 int32_t& max_string_len)=0;
00250 virtual void get_shortreal_string_list(
00251 TString<float32_t>*& strings, int32_t& num_str,
00252 int32_t& max_string_len)=0;
00253 virtual void get_real_string_list(
00254 TString<float64_t>*& strings, int32_t& num_str,
00255 int32_t& max_string_len)=0;
00256 virtual void get_longreal_string_list(
00257 TString<floatmax_t>*& strings, int32_t& num_str,
00258 int32_t& max_string_len)=0;
00260
00262
00263
00271 virtual void set_bool_vector(const bool* vector, int32_t len);
00272 virtual void set_byte_vector(const uint8_t* vector, int32_t len)=0;
00273 virtual void set_char_vector(const char* vector, int32_t len)=0;
00274 virtual void set_int_vector(const int32_t* vector, int32_t len)=0;
00275 virtual void set_shortreal_vector( const float32_t* vector, int32_t len)=0;
00276 virtual void set_real_vector(const float64_t* vector, int32_t len)=0;
00277 virtual void set_short_vector(const int16_t* vector, int32_t len)=0;
00278 virtual void set_word_vector(const uint16_t* vector, int32_t len)=0;
00280
00281
00289 virtual void set_bool_matrix(
00290 const bool* matrix, int32_t num_feat, int32_t num_vec);
00291 virtual void set_byte_matrix(
00292 const uint8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00293 virtual void set_int8_matrix(
00294 const int8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00295 virtual void set_char_matrix(
00296 const char* matrix, int32_t num_feat, int32_t num_vec)=0;
00297 virtual void set_int_matrix(
00298 const int32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00299 virtual void set_uint_matrix(
00300 const uint32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00301 virtual void set_long_matrix(
00302 const int64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00303 virtual void set_ulong_matrix(
00304 const uint64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00305 virtual void set_shortreal_matrix(
00306 const float32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00307 virtual void set_real_matrix(
00308 const float64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00309 virtual void set_longreal_matrix(
00310 const floatmax_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00311 virtual void set_short_matrix(
00312 const int16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00313 virtual void set_word_matrix(
00314 const uint16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00316
00324 virtual void set_bool_sparsematrix(
00325 const TSparse<bool>* matrix, int32_t num_feat, int32_t num_vec)=0;
00326 virtual void set_byte_sparsematrix(
00327 const TSparse<uint8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00328 virtual void set_int8_sparsematrix(
00329 const TSparse<int8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00330 virtual void set_char_sparsematrix(
00331 const TSparse<char>* matrix, int32_t num_feat, int32_t num_vec)=0;
00332 virtual void set_int_sparsematrix(
00333 const TSparse<int32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00334 virtual void set_uint_sparsematrix(
00335 const TSparse<uint32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00336 virtual void set_long_sparsematrix(
00337 const TSparse<int64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00338 virtual void set_ulong_sparsematrix(
00339 const TSparse<uint64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00340 virtual void set_short_sparsematrix(
00341 const TSparse<int16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00342 virtual void set_word_sparsematrix(
00343 const TSparse<uint16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00344 virtual void set_shortreal_sparsematrix(
00345 const TSparse<float32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00346 virtual void set_real_sparsematrix(
00347 const TSparse<float64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00348 virtual void set_longreal_sparsematrix(
00349 const TSparse<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00351
00352
00361 virtual void set_bool_string_list(
00362 const TString<bool>* strings, int32_t num_str);
00363 virtual void set_byte_string_list(
00364 const TString<uint8_t>* strings, int32_t num_str)=0;
00365 virtual void set_int8_string_list(
00366 const TString<int8_t>* strings, int32_t num_str)=0;
00367 virtual void set_char_string_list(
00368 const TString<char>* strings, int32_t num_str)=0;
00369 virtual void set_int_string_list(
00370 const TString<int32_t>* strings, int32_t num_str)=0;
00371 virtual void set_uint_string_list(
00372 const TString<uint32_t>* strings, int32_t num_str)=0;
00373 virtual void set_short_string_list(
00374 const TString<int16_t>* strings, int32_t num_str)=0;
00375 virtual void set_word_string_list(
00376 const TString<uint16_t>* strings, int32_t num_str)=0;
00377 virtual void set_long_string_list(
00378 const TString<int64_t>* strings, int32_t num_str)=0;
00379 virtual void set_ulong_string_list(
00380 const TString<uint64_t>* strings, int32_t num_str)=0;
00381 virtual void set_shortreal_string_list(
00382 const TString<float32_t>* strings, int32_t num_str)=0;
00383 virtual void set_real_string_list(
00384 const TString<float64_t>* strings, int32_t num_str)=0;
00385 virtual void set_longreal_string_list(
00386 const TString<floatmax_t>* strings, int32_t num_str)=0;
00388
00390 inline virtual const char* get_name() const { return "File"; }
00391
00392 protected:
00394 FILE* file;
00396 char task;
00398 char* filename;
00400 char* variable_name;
00401 };
00402 }
00403 #endif // __FILE_H__