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 <shogun/base/SGObject.h>
00017 #include <shogun/lib/DataType.h>
00018
00019 namespace shogun
00020 {
00021 template <class ST> class SGString;
00022 template <class ST> struct SGSparseVector;
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
00058 void close()
00059 {
00060 SG_FREE(variable_name);
00061 SG_FREE(filename);
00062 if (file)
00063 fclose(file);
00064 variable_name=NULL;
00065 filename=NULL;
00066 file=NULL;
00067 }
00068
00075 void set_variable_name(const char* name);
00076
00083 char* get_variable_name();
00084
00086
00087
00089
00090
00098 virtual void get_vector(bool*& vector, int32_t& len);
00099 virtual void get_vector(uint8_t*& vector, int32_t& len)=0;
00100 virtual void get_vector(char*& vector, int32_t& len)=0;
00101 virtual void get_vector(int32_t*& vector, int32_t& len)=0;
00102 virtual void get_vector(float64_t*& vector, int32_t& len)=0;
00103 virtual void get_vector(float32_t*& vector, int32_t& len)=0;
00104 virtual void get_vector(int16_t*& vector, int32_t& len)=0;
00105 virtual void get_vector(uint16_t*& vector, int32_t& len)=0;
00107
00109
00110
00111
00120 virtual void get_matrix(
00121 bool*& matrix, int32_t& num_feat, int32_t& num_vec);
00122 virtual void get_matrix(
00123 uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00124 virtual void get_int8_matrix(
00125 int8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00126 virtual void get_matrix(
00127 char*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00128 virtual void get_matrix(
00129 int32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00130 virtual void get_uint_matrix(
00131 uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00132 virtual void get_long_matrix(
00133 int64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00134 virtual void get_ulong_matrix(
00135 uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00136 virtual void get_matrix(
00137 float32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00138 virtual void get_matrix(
00139 float64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00140 virtual void get_longreal_matrix(
00141 floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00142 virtual void get_matrix(
00143 int16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00144 virtual void get_matrix(
00145 uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00147
00149
00150
00151
00160 virtual void get_ndarray(
00161 uint8_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00162 virtual void get_ndarray(
00163 char*& array, int32_t*& dims, int32_t& num_dims)=0;
00164 virtual void get_ndarray(
00165 int32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00166 virtual void get_ndarray(
00167 float32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00168 virtual void get_ndarray(
00169 float64_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00170 virtual void get_ndarray(
00171 int16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00172 virtual void get_ndarray(
00173 uint16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00175
00184 virtual void get_sparse_matrix(
00185 SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00186 virtual void get_sparse_matrix(
00187 SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00188 virtual void get_int8_sparsematrix(
00189 SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00190 virtual void get_sparse_matrix(
00191 SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00192 virtual void get_sparse_matrix(
00193 SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00194 virtual void get_uint_sparsematrix(
00195 SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00196 virtual void get_long_sparsematrix(
00197 SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00198 virtual void get_ulong_sparsematrix(
00199 SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00200 virtual void get_sparse_matrix(
00201 SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00202 virtual void get_sparse_matrix(
00203 SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00204 virtual void get_sparse_matrix(
00205 SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00206 virtual void get_sparse_matrix(
00207 SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00208 virtual void get_longreal_sparsematrix(
00209 SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00211
00212
00221 virtual void get_string_list(
00222 SGString<bool>*& strings, int32_t& num_str,
00223 int32_t& max_string_len);
00224 virtual void get_string_list(
00225 SGString<uint8_t>*& strings, int32_t& num_str,
00226 int32_t& max_string_len)=0;
00227 virtual void get_int8_string_list(
00228 SGString<int8_t>*& strings, int32_t& num_str,
00229 int32_t& max_string_len)=0;
00230 virtual void get_string_list(
00231 SGString<char>*& strings, int32_t& num_str,
00232 int32_t& max_string_len)=0;
00233 virtual void get_string_list(
00234 SGString<int32_t>*& strings, int32_t& num_str,
00235 int32_t& max_string_len)=0;
00236 virtual void get_uint_string_list(
00237 SGString<uint32_t>*& strings, int32_t& num_str,
00238 int32_t& max_string_len)=0;
00239 virtual void get_string_list(
00240 SGString<int16_t>*& strings, int32_t& num_str,
00241 int32_t& max_string_len)=0;
00242 virtual void get_string_list(
00243 SGString<uint16_t>*& strings, int32_t& num_str,
00244 int32_t& max_string_len)=0;
00245 virtual void get_long_string_list(
00246 SGString<int64_t>*& strings, int32_t& num_str,
00247 int32_t& max_string_len)=0;
00248 virtual void get_ulong_string_list(
00249 SGString<uint64_t>*& strings, int32_t& num_str,
00250 int32_t& max_string_len)=0;
00251 virtual void get_string_list(
00252 SGString<float32_t>*& strings, int32_t& num_str,
00253 int32_t& max_string_len)=0;
00254 virtual void get_string_list(
00255 SGString<float64_t>*& strings, int32_t& num_str,
00256 int32_t& max_string_len)=0;
00257 virtual void get_longreal_string_list(
00258 SGString<floatmax_t>*& strings, int32_t& num_str,
00259 int32_t& max_string_len)=0;
00261
00263
00264
00272 virtual void set_vector(const bool* vector, int32_t len);
00273 virtual void set_vector(const uint8_t* vector, int32_t len)=0;
00274 virtual void set_vector(const char* vector, int32_t len)=0;
00275 virtual void set_vector(const int32_t* vector, int32_t len)=0;
00276 virtual void set_vector( const float32_t* vector, int32_t len)=0;
00277 virtual void set_vector(const float64_t* vector, int32_t len)=0;
00278 virtual void set_vector(const int16_t* vector, int32_t len)=0;
00279 virtual void set_vector(const uint16_t* vector, int32_t len)=0;
00281
00282
00290 virtual void set_matrix(
00291 const bool* matrix, int32_t num_feat, int32_t num_vec);
00292 virtual void set_matrix(
00293 const uint8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00294 virtual void set_int8_matrix(
00295 const int8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00296 virtual void set_matrix(
00297 const char* matrix, int32_t num_feat, int32_t num_vec)=0;
00298 virtual void set_matrix(
00299 const int32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00300 virtual void set_uint_matrix(
00301 const uint32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00302 virtual void set_long_matrix(
00303 const int64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00304 virtual void set_ulong_matrix(
00305 const uint64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00306 virtual void set_matrix(
00307 const float32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00308 virtual void set_matrix(
00309 const float64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00310 virtual void set_longreal_matrix(
00311 const floatmax_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00312 virtual void set_matrix(
00313 const int16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00314 virtual void set_matrix(
00315 const uint16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00317
00325 virtual void set_sparse_matrix(
00326 const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec)=0;
00327 virtual void set_sparse_matrix(
00328 const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00329 virtual void set_int8_sparsematrix(
00330 const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00331 virtual void set_sparse_matrix(
00332 const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec)=0;
00333 virtual void set_sparse_matrix(
00334 const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00335 virtual void set_uint_sparsematrix(
00336 const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00337 virtual void set_long_sparsematrix(
00338 const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00339 virtual void set_ulong_sparsematrix(
00340 const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00341 virtual void set_sparse_matrix(
00342 const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00343 virtual void set_sparse_matrix(
00344 const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00345 virtual void set_sparse_matrix(
00346 const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00347 virtual void set_sparse_matrix(
00348 const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00349 virtual void set_longreal_sparsematrix(
00350 const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00352
00353
00362 virtual void set_string_list(
00363 const SGString<bool>* strings, int32_t num_str);
00364 virtual void set_string_list(
00365 const SGString<uint8_t>* strings, int32_t num_str)=0;
00366 virtual void set_int8_string_list(
00367 const SGString<int8_t>* strings, int32_t num_str)=0;
00368 virtual void set_string_list(
00369 const SGString<char>* strings, int32_t num_str)=0;
00370 virtual void set_string_list(
00371 const SGString<int32_t>* strings, int32_t num_str)=0;
00372 virtual void set_uint_string_list(
00373 const SGString<uint32_t>* strings, int32_t num_str)=0;
00374 virtual void set_string_list(
00375 const SGString<int16_t>* strings, int32_t num_str)=0;
00376 virtual void set_string_list(
00377 const SGString<uint16_t>* strings, int32_t num_str)=0;
00378 virtual void set_long_string_list(
00379 const SGString<int64_t>* strings, int32_t num_str)=0;
00380 virtual void set_ulong_string_list(
00381 const SGString<uint64_t>* strings, int32_t num_str)=0;
00382 virtual void set_string_list(
00383 const SGString<float32_t>* strings, int32_t num_str)=0;
00384 virtual void set_string_list(
00385 const SGString<float64_t>* strings, int32_t num_str)=0;
00386 virtual void set_longreal_string_list(
00387 const SGString<floatmax_t>* strings, int32_t num_str)=0;
00389
00391 inline virtual const char* get_name() const { return "File"; }
00392
00393 protected:
00395 FILE* file;
00397 char task;
00399 char* filename;
00401 char* variable_name;
00402 };
00403 }
00404 #endif // __FILE_H__