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> struct T_STRING;
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_char_matrix(
00124 char*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00125 virtual void get_int_matrix(
00126 int32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00127 virtual void get_uint_matrix(
00128 uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00129 virtual void get_long_matrix(
00130 int64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00131 virtual void get_ulong_matrix(
00132 uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00133 virtual void get_shortreal_matrix(
00134 float32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00135 virtual void get_real_matrix(
00136 float64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00137 virtual void get_longreal_matrix(
00138 floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00139 virtual void get_short_matrix(
00140 int16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00141 virtual void get_word_matrix(
00142 uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00144
00146
00147
00148
00157 virtual void get_byte_ndarray(
00158 uint8_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00159 virtual void get_char_ndarray(
00160 char*& array, int32_t*& dims, int32_t& num_dims)=0;
00161 virtual void get_int_ndarray(
00162 int32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00163 virtual void get_shortreal_ndarray(
00164 float32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00165 virtual void get_real_ndarray(
00166 float64_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00167 virtual void get_short_ndarray(
00168 int16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00169 virtual void get_word_ndarray(
00170 uint16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00172
00181 virtual void get_bool_sparsematrix(
00182 TSparse<bool>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00183 virtual void get_byte_sparsematrix(
00184 TSparse<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00185 virtual void get_char_sparsematrix(
00186 TSparse<char>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00187 virtual void get_int_sparsematrix(
00188 TSparse<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00189 virtual void get_uint_sparsematrix(
00190 TSparse<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00191 virtual void get_long_sparsematrix(
00192 TSparse<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00193 virtual void get_ulong_sparsematrix(
00194 TSparse<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00195 virtual void get_short_sparsematrix(
00196 TSparse<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00197 virtual void get_word_sparsematrix(
00198 TSparse<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00199 virtual void get_shortreal_sparsematrix(
00200 TSparse<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00201 virtual void get_real_sparsematrix(
00202 TSparse<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00203 virtual void get_longreal_sparsematrix(
00204 TSparse<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00206
00207
00216 virtual void get_bool_string_list(
00217 T_STRING<bool>*& strings, int32_t& num_str,
00218 int32_t& max_string_len);
00219 virtual void get_byte_string_list(
00220 T_STRING<uint8_t>*& strings, int32_t& num_str,
00221 int32_t& max_string_len)=0;
00222 virtual void get_char_string_list(
00223 T_STRING<char>*& strings, int32_t& num_str,
00224 int32_t& max_string_len)=0;
00225 virtual void get_int_string_list(
00226 T_STRING<int32_t>*& strings, int32_t& num_str,
00227 int32_t& max_string_len)=0;
00228 virtual void get_uint_string_list(
00229 T_STRING<uint32_t>*& strings, int32_t& num_str,
00230 int32_t& max_string_len)=0;
00231 virtual void get_short_string_list(
00232 T_STRING<int16_t>*& strings, int32_t& num_str,
00233 int32_t& max_string_len)=0;
00234 virtual void get_word_string_list(
00235 T_STRING<uint16_t>*& strings, int32_t& num_str,
00236 int32_t& max_string_len)=0;
00237 virtual void get_long_string_list(
00238 T_STRING<int64_t>*& strings, int32_t& num_str,
00239 int32_t& max_string_len)=0;
00240 virtual void get_ulong_string_list(
00241 T_STRING<uint64_t>*& strings, int32_t& num_str,
00242 int32_t& max_string_len)=0;
00243 virtual void get_shortreal_string_list(
00244 T_STRING<float32_t>*& strings, int32_t& num_str,
00245 int32_t& max_string_len)=0;
00246 virtual void get_real_string_list(
00247 T_STRING<float64_t>*& strings, int32_t& num_str,
00248 int32_t& max_string_len)=0;
00249 virtual void get_longreal_string_list(
00250 T_STRING<floatmax_t>*& strings, int32_t& num_str,
00251 int32_t& max_string_len)=0;
00253
00255
00256
00264 virtual void set_bool_vector(const bool* vector, int32_t len);
00265 virtual void set_byte_vector(const uint8_t* vector, int32_t len)=0;
00266 virtual void set_char_vector(const char* vector, int32_t len)=0;
00267 virtual void set_int_vector(const int32_t* vector, int32_t len)=0;
00268 virtual void set_shortreal_vector( const float32_t* vector, int32_t len)=0;
00269 virtual void set_real_vector(const float64_t* vector, int32_t len)=0;
00270 virtual void set_short_vector(const int16_t* vector, int32_t len)=0;
00271 virtual void set_word_vector(const uint16_t* vector, int32_t len)=0;
00273
00274
00282 virtual void set_bool_matrix(
00283 const bool* matrix, int32_t num_feat, int32_t num_vec);
00284 virtual void set_byte_matrix(
00285 const uint8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00286 virtual void set_char_matrix(
00287 const char* matrix, int32_t num_feat, int32_t num_vec)=0;
00288 virtual void set_int_matrix(
00289 const int32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00290 virtual void set_uint_matrix(
00291 const uint32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00292 virtual void set_long_matrix(
00293 const int64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00294 virtual void set_ulong_matrix(
00295 const uint64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00296 virtual void set_shortreal_matrix(
00297 const float32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00298 virtual void set_real_matrix(
00299 const float64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00300 virtual void set_longreal_matrix(
00301 const floatmax_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00302 virtual void set_short_matrix(
00303 const int16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00304 virtual void set_word_matrix(
00305 const uint16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00307
00315 virtual void set_bool_sparsematrix(
00316 const TSparse<bool>* matrix, int32_t num_feat, int32_t num_vec)=0;
00317 virtual void set_byte_sparsematrix(
00318 const TSparse<uint8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00319 virtual void set_char_sparsematrix(
00320 const TSparse<char>* matrix, int32_t num_feat, int32_t num_vec)=0;
00321 virtual void set_int_sparsematrix(
00322 const TSparse<int32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00323 virtual void set_uint_sparsematrix(
00324 const TSparse<uint32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00325 virtual void set_long_sparsematrix(
00326 const TSparse<int64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00327 virtual void set_ulong_sparsematrix(
00328 const TSparse<uint64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00329 virtual void set_short_sparsematrix(
00330 const TSparse<int16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00331 virtual void set_word_sparsematrix(
00332 const TSparse<uint16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00333 virtual void set_shortreal_sparsematrix(
00334 const TSparse<float32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00335 virtual void set_real_sparsematrix(
00336 const TSparse<float64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00337 virtual void set_longreal_sparsematrix(
00338 const TSparse<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00340
00341
00350 virtual void set_bool_string_list(
00351 const T_STRING<bool>* strings, int32_t num_str);
00352 virtual void set_byte_string_list(
00353 const T_STRING<uint8_t>* strings, int32_t num_str)=0;
00354 virtual void set_char_string_list(
00355 const T_STRING<char>* strings, int32_t num_str)=0;
00356 virtual void set_int_string_list(
00357 const T_STRING<int32_t>* strings, int32_t num_str)=0;
00358 virtual void set_uint_string_list(
00359 const T_STRING<uint32_t>* strings, int32_t num_str)=0;
00360 virtual void set_short_string_list(
00361 const T_STRING<int16_t>* strings, int32_t num_str)=0;
00362 virtual void set_word_string_list(
00363 const T_STRING<uint16_t>* strings, int32_t num_str)=0;
00364 virtual void set_long_string_list(
00365 const T_STRING<int64_t>* strings, int32_t num_str)=0;
00366 virtual void set_ulong_string_list(
00367 const T_STRING<uint64_t>* strings, int32_t num_str)=0;
00368 virtual void set_shortreal_string_list(
00369 const T_STRING<float32_t>* strings, int32_t num_str)=0;
00370 virtual void set_real_string_list(
00371 const T_STRING<float64_t>* strings, int32_t num_str)=0;
00372 virtual void set_longreal_string_list(
00373 const T_STRING<floatmax_t>* strings, int32_t num_str)=0;
00375
00377 inline virtual const char* get_name() const { return "File"; }
00378
00379 protected:
00381 FILE* file;
00383 char task;
00385 char* filename;
00387 char* variable_name;
00388 };
00389 }
00390 #endif // __FILE_H__