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

SHOGUN Machine Learning Toolbox - Documentation