SHOGUN  v3.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
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 template <class ST> struct SGSparseVectorEntry;
00024 
00034 class CFile : public CSGObject
00035 {
00036 public:
00038     CFile();
00039 
00045     CFile(FILE* f, const char* name=NULL);
00046 
00053     CFile(int fd, const char* mode, const char* name=NULL);
00054 
00061     CFile(const char* fname, char rw='r', const char* name=NULL);
00062 
00064     virtual ~CFile();
00065 
00067     void close()
00068     {
00069         SG_FREE(variable_name);
00070         SG_FREE(filename);
00071         if (file)
00072           fclose(file);
00073         variable_name=NULL;
00074         filename=NULL;
00075         file=NULL;
00076     }
00077 
00082     FILE* get_file_descriptor()
00083     {
00084         return file;
00085     }
00086 
00093     void set_variable_name(const char* name);
00094 
00101     char* get_variable_name();
00102 
00104     /*virtual DataType get_data_type()=0;*/
00105 
00107     /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
00108 
00116     virtual void get_vector(bool*& vector, int32_t& len);
00117     virtual void get_vector(int8_t*& vector, int32_t& len)=0;
00118     virtual void get_vector(uint8_t*& vector, int32_t& len)=0;
00119     virtual void get_vector(char*& vector, int32_t& len)=0;
00120     virtual void get_vector(int32_t*& vector, int32_t& len)=0;
00121     virtual void get_vector(uint32_t*& vector, int32_t& len)=0;
00122     virtual void get_vector(float64_t*& vector, int32_t& len)=0;
00123     virtual void get_vector(float32_t*& vector, int32_t& len)=0;
00124     virtual void get_vector(floatmax_t*& vector, int32_t& len)=0;
00125     virtual void get_vector(int16_t*& vector, int32_t& len)=0;
00126     virtual void get_vector(uint16_t*& vector, int32_t& len)=0;
00127     virtual void get_vector(int64_t*& vector, int32_t& len)=0;
00128     virtual void get_vector(uint64_t*& vector, int32_t& len)=0;
00130 
00132     /*virtual void get_matrix(
00133             void*& matrix, int32_t& num_feat, int32_t& num_vec, DataType& dtype);*/
00134 
00143     virtual void get_matrix(
00144             bool*& matrix, int32_t& num_feat, int32_t& num_vec);
00145     virtual void get_matrix(
00146             uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00147     virtual void get_matrix(
00148             int8_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00149     virtual void get_matrix(
00150             char*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00151     virtual void get_matrix(
00152             int32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00153     virtual void get_matrix(
00154             uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00155     virtual void get_matrix(
00156             int64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00157     virtual void get_matrix(
00158             uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00159     virtual void get_matrix(
00160             float32_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00161     virtual void get_matrix(
00162             float64_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00163     virtual void get_matrix(
00164             floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00165     virtual void get_matrix(
00166             int16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00167     virtual void get_matrix(
00168             uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00170 
00172     /*virtual void get_ndarray(
00173             void*& array, int32_t*& dims, int32_t& num_dims, DataType& dtype);*/
00174 
00183     virtual void get_ndarray(
00184             uint8_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00185     virtual void get_ndarray(
00186             char*& array, int32_t*& dims, int32_t& num_dims)=0;
00187     virtual void get_ndarray(
00188             int32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00189     virtual void get_ndarray(
00190             float32_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00191     virtual void get_ndarray(
00192             float64_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00193     virtual void get_ndarray(
00194             int16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00195     virtual void get_ndarray(
00196             uint16_t*& array, int32_t*& dims, int32_t& num_dims)=0;
00198     //
00206     virtual void get_sparse_vector(
00207             SGSparseVectorEntry<bool>*& entries, int32_t& num_feat);
00208     virtual void get_sparse_vector(
00209             SGSparseVectorEntry<uint8_t>*& entries, int32_t& num_feat);
00210     virtual void get_sparse_vector(
00211             SGSparseVectorEntry<int8_t>*& entries, int32_t& num_feat);
00212     virtual void get_sparse_vector(
00213             SGSparseVectorEntry<char>*& entries, int32_t& num_feat);
00214     virtual void get_sparse_vector(
00215             SGSparseVectorEntry<int32_t>*& entries, int32_t& num_feat);
00216     virtual void get_sparse_vector(
00217             SGSparseVectorEntry<uint32_t>*& entries, int32_t& num_feat);
00218     virtual void get_sparse_vector(
00219             SGSparseVectorEntry<int64_t>*& entries, int32_t& num_feat);
00220     virtual void get_sparse_vector(
00221             SGSparseVectorEntry<uint64_t>*& entries, int32_t& num_feat);
00222     virtual void get_sparse_vector(
00223             SGSparseVectorEntry<int16_t>*& entries, int32_t& num_feat);
00224     virtual void get_sparse_vector(
00225             SGSparseVectorEntry<uint16_t>*& entries, int32_t& num_feat);
00226     virtual void get_sparse_vector(
00227             SGSparseVectorEntry<float32_t>*& entries, int32_t& num_feat);
00228     virtual void get_sparse_vector(
00229             SGSparseVectorEntry<float64_t>*& entries, int32_t& num_feat);
00230     virtual void get_sparse_vector(
00231             SGSparseVectorEntry<floatmax_t>*& entries, int32_t& num_feat);
00233 
00242     virtual void get_sparse_matrix(
00243             SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00244     virtual void get_sparse_matrix(
00245             SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00246     virtual void get_sparse_matrix(
00247         SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00248     virtual void get_sparse_matrix(
00249             SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00250     virtual void get_sparse_matrix(
00251             SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00252     virtual void get_sparse_matrix(
00253             SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00254     virtual void get_sparse_matrix(
00255             SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00256     virtual void get_sparse_matrix(
00257             SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00258     virtual void get_sparse_matrix(
00259             SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00260     virtual void get_sparse_matrix(
00261             SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00262     virtual void get_sparse_matrix(
00263             SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00264     virtual void get_sparse_matrix(
00265             SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00266     virtual void get_sparse_matrix(
00267             SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec)=0;
00269 
00270 
00279     virtual void get_string_list(
00280             SGString<bool>*& strings, int32_t& num_str,
00281             int32_t& max_string_len);
00282     virtual void get_string_list(
00283             SGString<uint8_t>*& strings, int32_t& num_str,
00284             int32_t& max_string_len)=0;
00285     virtual void get_string_list(
00286             SGString<int8_t>*& strings, int32_t& num_str,
00287             int32_t& max_string_len)=0;
00288     virtual void get_string_list(
00289             SGString<char>*& strings, int32_t& num_str,
00290             int32_t& max_string_len)=0;
00291     virtual void get_string_list(
00292             SGString<int32_t>*& strings, int32_t& num_str,
00293             int32_t& max_string_len)=0;
00294     virtual void get_string_list(
00295             SGString<uint32_t>*& strings, int32_t& num_str,
00296             int32_t& max_string_len)=0;
00297     virtual void get_string_list(
00298             SGString<int16_t>*& strings, int32_t& num_str,
00299             int32_t& max_string_len)=0;
00300     virtual void get_string_list(
00301             SGString<uint16_t>*& strings, int32_t& num_str,
00302             int32_t& max_string_len)=0;
00303     virtual void get_string_list(
00304             SGString<int64_t>*& strings, int32_t& num_str,
00305             int32_t& max_string_len)=0;
00306     virtual void get_string_list(
00307             SGString<uint64_t>*& strings, int32_t& num_str,
00308             int32_t& max_string_len)=0;
00309     virtual void get_string_list(
00310             SGString<float32_t>*& strings, int32_t& num_str,
00311             int32_t& max_string_len)=0;
00312     virtual void get_string_list(
00313             SGString<float64_t>*& strings, int32_t& num_str,
00314             int32_t& max_string_len)=0;
00315     virtual void get_string_list(
00316             SGString<floatmax_t>*& strings, int32_t& num_str,
00317             int32_t& max_string_len)=0;
00319 
00321     /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
00322 
00330     virtual void set_vector(const bool* vector, int32_t len);
00331     virtual void set_vector(const int8_t* vector, int32_t len)=0;
00332     virtual void set_vector(const uint8_t* vector, int32_t len)=0;
00333     virtual void set_vector(const char* vector, int32_t len)=0;
00334     virtual void set_vector(const int32_t* vector, int32_t len)=0;
00335     virtual void set_vector(const uint32_t* vector, int32_t len)=0;
00336     virtual void set_vector(const float32_t* vector, int32_t len)=0;
00337     virtual void set_vector(const float64_t* vector, int32_t len)=0;
00338     virtual void set_vector(const floatmax_t* vector, int32_t len)=0;
00339     virtual void set_vector(const int16_t* vector, int32_t len)=0;
00340     virtual void set_vector(const uint16_t* vector, int32_t len)=0;
00341     virtual void set_vector(const int64_t* vector, int32_t len)=0;
00342     virtual void set_vector(const uint64_t* vector, int32_t len)=0;
00344 
00345 
00353     virtual void set_matrix(
00354             const bool* matrix, int32_t num_feat, int32_t num_vec);
00355     virtual void set_matrix(
00356             const uint8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00357     virtual void set_matrix(
00358             const int8_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00359     virtual void set_matrix(
00360             const char* matrix, int32_t num_feat, int32_t num_vec)=0;
00361     virtual void set_matrix(
00362             const int32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00363     virtual void set_matrix(
00364             const uint32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00365     virtual void set_matrix(
00366             const int64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00367     virtual void set_matrix(
00368             const uint64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00369     virtual void set_matrix(
00370             const float32_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00371     virtual void set_matrix(
00372             const float64_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00373     virtual void set_matrix(
00374             const floatmax_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00375     virtual void set_matrix(
00376             const int16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00377     virtual void set_matrix(
00378             const uint16_t* matrix, int32_t num_feat, int32_t num_vec)=0;
00380     //
00388     virtual void set_sparse_vector(
00389             const SGSparseVectorEntry<bool>* entries, int32_t num_feat);
00390     virtual void set_sparse_vector(
00391             const SGSparseVectorEntry<uint8_t>* entries, int32_t num_feat);
00392     virtual void set_sparse_vector(
00393             const SGSparseVectorEntry<int8_t>* entries, int32_t num_feat);
00394     virtual void set_sparse_vector(
00395             const SGSparseVectorEntry<char>* entries, int32_t num_feat);
00396     virtual void set_sparse_vector(
00397             const SGSparseVectorEntry<int32_t>* entries, int32_t num_feat);
00398     virtual void set_sparse_vector(
00399             const SGSparseVectorEntry<uint32_t>* entries, int32_t num_feat);
00400     virtual void set_sparse_vector(
00401             const SGSparseVectorEntry<int64_t>* entries, int32_t num_feat);
00402     virtual void set_sparse_vector(
00403             const SGSparseVectorEntry<uint64_t>* entries, int32_t num_feat);
00404     virtual void set_sparse_vector(
00405             const SGSparseVectorEntry<int16_t>* entries, int32_t num_feat);
00406     virtual void set_sparse_vector(
00407             const SGSparseVectorEntry<uint16_t>* entries, int32_t num_feat);
00408     virtual void set_sparse_vector(
00409             const SGSparseVectorEntry<float32_t>* entries, int32_t num_feat);
00410     virtual void set_sparse_vector(
00411             const SGSparseVectorEntry<float64_t>* entries, int32_t num_feat);
00412     virtual void set_sparse_vector(
00413             const SGSparseVectorEntry<floatmax_t>* entries, int32_t num_feat);
00415 
00423     virtual void set_sparse_matrix(
00424             const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec)=0;
00425     virtual void set_sparse_matrix(
00426             const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00427     virtual void set_sparse_matrix(
00428             const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00429     virtual void set_sparse_matrix(
00430             const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec)=0;
00431     virtual void set_sparse_matrix(
00432             const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00433     virtual void set_sparse_matrix(
00434             const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00435     virtual void set_sparse_matrix(
00436             const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00437     virtual void set_sparse_matrix(
00438             const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00439     virtual void set_sparse_matrix(
00440             const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00441     virtual void set_sparse_matrix(
00442             const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00443     virtual void set_sparse_matrix(
00444             const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00445     virtual void set_sparse_matrix(
00446             const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00447     virtual void set_sparse_matrix(
00448             const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
00450 
00451 
00460     virtual void set_string_list(
00461             const SGString<bool>* strings, int32_t num_str);
00462     virtual void set_string_list(
00463             const SGString<uint8_t>* strings, int32_t num_str)=0;
00464     virtual void set_string_list(
00465             const SGString<int8_t>* strings, int32_t num_str)=0;
00466     virtual void set_string_list(
00467             const SGString<char>* strings, int32_t num_str)=0;
00468     virtual void set_string_list(
00469             const SGString<int32_t>* strings, int32_t num_str)=0;
00470     virtual void set_string_list(
00471             const SGString<uint32_t>* strings, int32_t num_str)=0;
00472     virtual void set_string_list(
00473             const SGString<int16_t>* strings, int32_t num_str)=0;
00474     virtual void set_string_list(
00475             const SGString<uint16_t>* strings, int32_t num_str)=0;
00476     virtual void set_string_list(
00477             const SGString<int64_t>* strings, int32_t num_str)=0;
00478     virtual void set_string_list(
00479             const SGString<uint64_t>* strings, int32_t num_str)=0;
00480     virtual void set_string_list(
00481             const SGString<float32_t>* strings, int32_t num_str)=0;
00482     virtual void set_string_list(
00483             const SGString<float64_t>* strings, int32_t num_str)=0;
00484     virtual void set_string_list(
00485             const SGString<floatmax_t>* strings, int32_t num_str)=0;
00487 
00489     virtual const char* get_name() const { return "File"; }
00490 
00497     static char* read_whole_file(char* fname, size_t& len);
00498 
00499 protected:
00501     FILE* file;
00503     char task;
00505     char* filename;
00507     char* variable_name;
00508 };
00509 }
00510 #endif // __FILE_H__
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation