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 "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     /*virtual DataType get_data_type()=0;*/
00086 
00088     /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
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     /*virtual void get_matrix(
00109             void*& matrix, int32_t& num_feat, int32_t& num_vec, DataType& dtype);*/
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     /*virtual void get_ndarray(
00149             void*& array, int32_t*& dims, int32_t& num_dims, DataType& dtype);*/
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     /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
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__
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation