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> 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     /*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_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     /*virtual void get_ndarray(
00147             void*& array, int32_t*& dims, int32_t& num_dims, DataType& dtype);*/
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     /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
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__
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation