File.h

Go to the documentation of this file.
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) 1999-2009 Soeren Sonnenburg
00008  * Copyright (C) 1999-2009 Fraunhofer Institute FIRST and Max-Planck-Society
00009  * Copyright (C) 2010 Berlin Institute of Technology
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> class SGSparseVector;
00023 
00033 class CFile : public CSGObject
00034 {
00035 public:
00037     CFile();
00038 
00044     CFile(FILE* f, const char* name=NULL);
00045 
00052     CFile(const 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 
00073     FILE* get_file_descriptor()
00074     {
00075         return file;
00076     }
00077 
00084     void set_variable_name(const char* name);
00085 
00092     char* get_variable_name();
00093 
00095     /*virtual DataType get_data_type()=0;*/
00096 
00098     /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
00099 
00107     virtual void get_vector(bool*& vector, int32_t& len);
00108     virtual void get_vector(int8_t*& vector, int32_t& len)=0;
00109     virtual void get_vector(uint8_t*& vector, int32_t& len)=0;
00110     virtual void get_vector(char*& vector, int32_t& len)=0;
00111     virtual void get_vector(int32_t*& vector, int32_t& len)=0;
00112     virtual void get_vector(uint32_t*& vector, int32_t& len)=0;
00113     virtual void get_vector(float64_t*& vector, int32_t& len)=0;
00114     virtual void get_vector(float32_t*& vector, int32_t& len)=0;
00115     virtual void get_vector(floatmax_t*& vector, int32_t& len)=0;
00116     virtual void get_vector(int16_t*& vector, int32_t& len)=0;
00117     virtual void get_vector(uint16_t*& vector, int32_t& len)=0;
00118     virtual void get_vector(int64_t*& vector, int32_t& len)=0;
00119     virtual void get_vector(uint64_t*& vector, int32_t& len)=0;
00121 
00123     /*virtual void get_matrix(
00124             void*& matrix, int32_t& num_feat, int32_t& num_vec, DataType& dtype);*/
00125 
00134     virtual void get_matrix(
00135             bool*& matrix, int32_t& num_feat, int32_t& num_vec);
00136     virtual void get_matrix(
00137             uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00138     virtual void get_int8_matrix(
00139             int8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00140     virtual void get_matrix(
00141             char*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00142     virtual void get_matrix(
00143             int32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00144     virtual void get_uint_matrix(
00145             uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00146     virtual void get_long_matrix(
00147             int64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00148     virtual void get_ulong_matrix(
00149             uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00150     virtual void get_matrix(
00151             float32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00152     virtual void get_matrix(
00153             float64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00154     virtual void get_longreal_matrix(
00155             floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00156     virtual void get_matrix(
00157             int16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00158     virtual void get_matrix(
00159             uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00161 
00163     /*virtual void get_ndarray(
00164             void*& array, int32_t*& dims, int32_t& num_dims, DataType& dtype);*/
00165 
00174     virtual void get_ndarray(
00175             uint8_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00176     virtual void get_ndarray(
00177             char*& array, int32_t*& dims, int32_t& num_dims)=0;
00178     virtual void get_ndarray(
00179             int32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00180     virtual void get_ndarray(
00181             float32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00182     virtual void get_ndarray(
00183             float64_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00184     virtual void get_ndarray(
00185             int16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00186     virtual void get_ndarray(
00187             uint16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00189 
00198     virtual void get_sparse_matrix(
00199             SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00200     virtual void get_sparse_matrix(
00201             SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00202     virtual void get_int8_sparsematrix(
00203         SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00204     virtual void get_sparse_matrix(
00205             SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00206     virtual void get_sparse_matrix(
00207             SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00208     virtual void get_uint_sparsematrix(
00209             SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00210     virtual void get_long_sparsematrix(
00211             SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00212     virtual void get_ulong_sparsematrix(
00213             SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00214     virtual void get_sparse_matrix(
00215             SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00216     virtual void get_sparse_matrix(
00217             SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00218     virtual void get_sparse_matrix(
00219             SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00220     virtual void get_sparse_matrix(
00221             SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00222     virtual void get_longreal_sparsematrix(
00223             SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00225 
00226 
00235     virtual void get_string_list(
00236             SGString<bool>*& strings, int32_t& num_str,
00237             int32_t& max_string_len);
00238     virtual void get_string_list(
00239             SGString<uint8_t>*& strings, int32_t& num_str,
00240             int32_t& max_string_len)=0;
00241     virtual void get_int8_string_list(
00242             SGString<int8_t>*& strings, int32_t& num_str,
00243             int32_t& max_string_len)=0;
00244     virtual void get_string_list(
00245             SGString<char>*& strings, int32_t& num_str,
00246             int32_t& max_string_len)=0;
00247     virtual void get_string_list(
00248             SGString<int32_t>*& strings, int32_t& num_str,
00249             int32_t& max_string_len)=0;
00250     virtual void get_uint_string_list(
00251             SGString<uint32_t>*& strings, int32_t& num_str,
00252             int32_t& max_string_len)=0;
00253     virtual void get_string_list(
00254             SGString<int16_t>*& strings, int32_t& num_str,
00255             int32_t& max_string_len)=0;
00256     virtual void get_string_list(
00257             SGString<uint16_t>*& strings, int32_t& num_str,
00258             int32_t& max_string_len)=0;
00259     virtual void get_long_string_list(
00260             SGString<int64_t>*& strings, int32_t& num_str,
00261             int32_t& max_string_len)=0;
00262     virtual void get_ulong_string_list(
00263             SGString<uint64_t>*& strings, int32_t& num_str,
00264             int32_t& max_string_len)=0;
00265     virtual void get_string_list(
00266             SGString<float32_t>*& strings, int32_t& num_str,
00267             int32_t& max_string_len)=0;
00268     virtual void get_string_list(
00269             SGString<float64_t>*& strings, int32_t& num_str,
00270             int32_t& max_string_len)=0;
00271     virtual void get_longreal_string_list(
00272             SGString<floatmax_t>*& strings, int32_t& num_str,
00273             int32_t& max_string_len)=0;
00275 
00277     /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
00278 
00286     virtual void set_vector(const bool* vector, int32_t len);
00287     virtual void set_vector(const int8_t* vector, int32_t len)=0;
00288     virtual void set_vector(const uint8_t* vector, int32_t len)=0;
00289     virtual void set_vector(const char* vector, int32_t len)=0;
00290     virtual void set_vector(const int32_t* vector, int32_t len)=0;
00291     virtual void set_vector(const uint32_t* vector, int32_t len)=0;
00292     virtual void set_vector(const float32_t* vector, int32_t len)=0;
00293     virtual void set_vector(const float64_t* vector, int32_t len)=0;
00294     virtual void set_vector(const floatmax_t* vector, int32_t len)=0;
00295     virtual void set_vector(const int16_t* vector, int32_t len)=0;
00296     virtual void set_vector(const uint16_t* vector, int32_t len)=0;
00297     virtual void set_vector(const int64_t* vector, int32_t len)=0;
00298     virtual void set_vector(const uint64_t* vector, int32_t len)=0;
00300 
00301 
00309     virtual void set_matrix(
00310             const bool* matrix, int32_t num_feat, int32_t num_vec);
00311     virtual void set_matrix(
00312             const uint8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00313     virtual void set_int8_matrix(
00314             const int8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00315     virtual void set_matrix(
00316             const char* matrix, int32_t num_feat, int32_t num_vec)=0;
00317     virtual void set_matrix(
00318             const int32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00319     virtual void set_uint_matrix(
00320             const uint32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00321     virtual void set_long_matrix(
00322             const int64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00323     virtual void set_ulong_matrix(
00324             const uint64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00325     virtual void set_matrix(
00326             const float32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00327     virtual void set_matrix(
00328             const float64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00329     virtual void set_longreal_matrix(
00330             const floatmax_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00331     virtual void set_matrix(
00332             const int16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00333     virtual void set_matrix(
00334             const uint16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00336 
00344     virtual void set_sparse_matrix(
00345             const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec)=0;
00346     virtual void set_sparse_matrix(
00347             const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00348     virtual void set_int8_sparsematrix(
00349             const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00350     virtual void set_sparse_matrix(
00351             const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec)=0;
00352     virtual void set_sparse_matrix(
00353             const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00354     virtual void set_uint_sparsematrix(
00355             const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00356     virtual void set_long_sparsematrix(
00357             const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00358     virtual void set_ulong_sparsematrix(
00359             const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00360     virtual void set_sparse_matrix(
00361             const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00362     virtual void set_sparse_matrix(
00363             const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00364     virtual void set_sparse_matrix(
00365             const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00366     virtual void set_sparse_matrix(
00367             const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00368     virtual void set_longreal_sparsematrix(
00369             const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00371 
00372 
00381     virtual void set_string_list(
00382             const SGString<bool>* strings, int32_t num_str);
00383     virtual void set_string_list(
00384             const SGString<uint8_t>* strings, int32_t num_str)=0;
00385     virtual void set_int8_string_list(
00386             const SGString<int8_t>* strings, int32_t num_str)=0;
00387     virtual void set_string_list(
00388             const SGString<char>* strings, int32_t num_str)=0;
00389     virtual void set_string_list(
00390             const SGString<int32_t>* strings, int32_t num_str)=0;
00391     virtual void set_uint_string_list(
00392             const SGString<uint32_t>* strings, int32_t num_str)=0;
00393     virtual void set_string_list(
00394             const SGString<int16_t>* strings, int32_t num_str)=0;
00395     virtual void set_string_list(
00396             const SGString<uint16_t>* strings, int32_t num_str)=0;
00397     virtual void set_long_string_list(
00398             const SGString<int64_t>* strings, int32_t num_str)=0;
00399     virtual void set_ulong_string_list(
00400             const SGString<uint64_t>* strings, int32_t num_str)=0;
00401     virtual void set_string_list(
00402             const SGString<float32_t>* strings, int32_t num_str)=0;
00403     virtual void set_string_list(
00404             const SGString<float64_t>* strings, int32_t num_str)=0;
00405     virtual void set_longreal_string_list(
00406             const SGString<floatmax_t>* strings, int32_t num_str)=0;
00408 
00410     virtual const char* get_name() const { return "File"; }
00411 
00418     static char* read_whole_file(char* fname, size_t& len);
00419 
00420 protected:
00422     FILE* file;
00424     char task;
00426     char* filename;
00428     char* variable_name;
00429 };
00430 }
00431 #endif // __FILE_H__
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation