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(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(uint8_t*& vector, int32_t& len)=0;
00109     virtual void get_vector(char*& vector, int32_t& len)=0;
00110     virtual void get_vector(int32_t*& vector, int32_t& len)=0;
00111     virtual void get_vector(float64_t*& vector, int32_t& len)=0;
00112     virtual void get_vector(float32_t*& vector, int32_t& len)=0;
00113     virtual void get_vector(int16_t*& vector, int32_t& len)=0;
00114     virtual void get_vector(uint16_t*& vector, int32_t& len)=0;
00116 
00118     /*virtual void get_matrix(
00119             void*& matrix, int32_t& num_feat, int32_t& num_vec, DataType& dtype);*/
00120 
00129     virtual void get_matrix(
00130             bool*& matrix, int32_t& num_feat, int32_t& num_vec);
00131     virtual void get_matrix(
00132             uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00133     virtual void get_int8_matrix(
00134             int8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00135     virtual void get_matrix(
00136             char*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00137     virtual void get_matrix(
00138             int32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00139     virtual void get_uint_matrix(
00140             uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00141     virtual void get_long_matrix(
00142             int64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00143     virtual void get_ulong_matrix(
00144             uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00145     virtual void get_matrix(
00146             float32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00147     virtual void get_matrix(
00148             float64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00149     virtual void get_longreal_matrix(
00150             floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00151     virtual void get_matrix(
00152             int16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00153     virtual void get_matrix(
00154             uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00156 
00158     /*virtual void get_ndarray(
00159             void*& array, int32_t*& dims, int32_t& num_dims, DataType& dtype);*/
00160 
00169     virtual void get_ndarray(
00170             uint8_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00171     virtual void get_ndarray(
00172             char*& array, int32_t*& dims, int32_t& num_dims)=0;
00173     virtual void get_ndarray(
00174             int32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00175     virtual void get_ndarray(
00176             float32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00177     virtual void get_ndarray(
00178             float64_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00179     virtual void get_ndarray(
00180             int16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00181     virtual void get_ndarray(
00182             uint16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00184 
00193     virtual void get_sparse_matrix(
00194             SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00195     virtual void get_sparse_matrix(
00196             SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00197     virtual void get_int8_sparsematrix(
00198         SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00199     virtual void get_sparse_matrix(
00200             SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00201     virtual void get_sparse_matrix(
00202             SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00203     virtual void get_uint_sparsematrix(
00204             SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00205     virtual void get_long_sparsematrix(
00206             SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00207     virtual void get_ulong_sparsematrix(
00208             SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00209     virtual void get_sparse_matrix(
00210             SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00211     virtual void get_sparse_matrix(
00212             SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00213     virtual void get_sparse_matrix(
00214             SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00215     virtual void get_sparse_matrix(
00216             SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00217     virtual void get_longreal_sparsematrix(
00218             SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00220 
00221 
00230     virtual void get_string_list(
00231             SGString<bool>*& strings, int32_t& num_str,
00232             int32_t& max_string_len);
00233     virtual void get_string_list(
00234             SGString<uint8_t>*& strings, int32_t& num_str,
00235             int32_t& max_string_len)=0;
00236     virtual void get_int8_string_list(
00237             SGString<int8_t>*& strings, int32_t& num_str,
00238             int32_t& max_string_len)=0;
00239     virtual void get_string_list(
00240             SGString<char>*& strings, int32_t& num_str,
00241             int32_t& max_string_len)=0;
00242     virtual void get_string_list(
00243             SGString<int32_t>*& strings, int32_t& num_str,
00244             int32_t& max_string_len)=0;
00245     virtual void get_uint_string_list(
00246             SGString<uint32_t>*& strings, int32_t& num_str,
00247             int32_t& max_string_len)=0;
00248     virtual void get_string_list(
00249             SGString<int16_t>*& strings, int32_t& num_str,
00250             int32_t& max_string_len)=0;
00251     virtual void get_string_list(
00252             SGString<uint16_t>*& strings, int32_t& num_str,
00253             int32_t& max_string_len)=0;
00254     virtual void get_long_string_list(
00255             SGString<int64_t>*& strings, int32_t& num_str,
00256             int32_t& max_string_len)=0;
00257     virtual void get_ulong_string_list(
00258             SGString<uint64_t>*& strings, int32_t& num_str,
00259             int32_t& max_string_len)=0;
00260     virtual void get_string_list(
00261             SGString<float32_t>*& strings, int32_t& num_str,
00262             int32_t& max_string_len)=0;
00263     virtual void get_string_list(
00264             SGString<float64_t>*& strings, int32_t& num_str,
00265             int32_t& max_string_len)=0;
00266     virtual void get_longreal_string_list(
00267             SGString<floatmax_t>*& strings, int32_t& num_str,
00268             int32_t& max_string_len)=0;
00270 
00272     /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
00273 
00281     virtual void set_vector(const bool* vector, int32_t len);
00282     virtual void set_vector(const uint8_t* vector, int32_t len)=0;
00283     virtual void set_vector(const char* vector, int32_t len)=0;
00284     virtual void set_vector(const int32_t* vector, int32_t len)=0;
00285     virtual void set_vector( const float32_t* vector, int32_t len)=0;
00286     virtual void set_vector(const float64_t* vector, int32_t len)=0;
00287     virtual void set_vector(const int16_t* vector, int32_t len)=0;
00288     virtual void set_vector(const uint16_t* vector, int32_t len)=0;
00290 
00291 
00299     virtual void set_matrix(
00300             const bool* matrix, int32_t num_feat, int32_t num_vec);
00301     virtual void set_matrix(
00302             const uint8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00303     virtual void set_int8_matrix(
00304             const int8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00305     virtual void set_matrix(
00306             const char* matrix, int32_t num_feat, int32_t num_vec)=0;
00307     virtual void set_matrix(
00308             const int32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00309     virtual void set_uint_matrix(
00310             const uint32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00311     virtual void set_long_matrix(
00312             const int64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00313     virtual void set_ulong_matrix(
00314             const uint64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00315     virtual void set_matrix(
00316             const float32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00317     virtual void set_matrix(
00318             const float64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00319     virtual void set_longreal_matrix(
00320             const floatmax_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00321     virtual void set_matrix(
00322             const int16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00323     virtual void set_matrix(
00324             const uint16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00326 
00334     virtual void set_sparse_matrix(
00335             const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec)=0;
00336     virtual void set_sparse_matrix(
00337             const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00338     virtual void set_int8_sparsematrix(
00339             const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00340     virtual void set_sparse_matrix(
00341             const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec)=0;
00342     virtual void set_sparse_matrix(
00343             const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00344     virtual void set_uint_sparsematrix(
00345             const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00346     virtual void set_long_sparsematrix(
00347             const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00348     virtual void set_ulong_sparsematrix(
00349             const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00350     virtual void set_sparse_matrix(
00351             const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00352     virtual void set_sparse_matrix(
00353             const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec)=0; 
00354     virtual void set_sparse_matrix(
00355             const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00356     virtual void set_sparse_matrix(
00357             const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00358     virtual void set_longreal_sparsematrix(
00359             const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00361 
00362 
00371     virtual void set_string_list(
00372             const SGString<bool>* strings, int32_t num_str);
00373     virtual void set_string_list(
00374             const SGString<uint8_t>* strings, int32_t num_str)=0;
00375     virtual void set_int8_string_list(
00376             const SGString<int8_t>* strings, int32_t num_str)=0;
00377     virtual void set_string_list(
00378             const SGString<char>* strings, int32_t num_str)=0;
00379     virtual void set_string_list(
00380             const SGString<int32_t>* strings, int32_t num_str)=0;
00381     virtual void set_uint_string_list(
00382             const SGString<uint32_t>* strings, int32_t num_str)=0;
00383     virtual void set_string_list(
00384             const SGString<int16_t>* strings, int32_t num_str)=0;
00385     virtual void set_string_list(
00386             const SGString<uint16_t>* strings, int32_t num_str)=0;
00387     virtual void set_long_string_list(
00388             const SGString<int64_t>* strings, int32_t num_str)=0;
00389     virtual void set_ulong_string_list(
00390             const SGString<uint64_t>* strings, int32_t num_str)=0;
00391     virtual void set_string_list(
00392             const SGString<float32_t>* strings, int32_t num_str)=0;
00393     virtual void set_string_list(
00394             const SGString<float64_t>* strings, int32_t num_str)=0;
00395     virtual void set_longreal_string_list(
00396             const SGString<floatmax_t>* strings, int32_t num_str)=0;
00398 
00400     inline virtual const char* get_name() const { return "File"; }
00401 
00402 protected:
00404     FILE* file;
00406     char task;
00408     char* filename;
00410     char* variable_name;
00411 };
00412 }
00413 #endif // __FILE_H__
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation