AsciiFile.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) 2010 Soeren Sonnenburg
00008  * Copyright (C) 2010 Berlin Institute of Technology
00009  */
00010 #ifndef __ASCII_FILE_H__
00011 #define __ASCII_FILE_H__
00012 
00013 #include <lib/config.h>
00014 #include <base/DynArray.h>
00015 #include <lib/common.h>
00016 #include <lib/File.h>
00017 #include <lib/io.h>
00018 
00019 namespace shogun
00020 {
00030 class CAsciiFile: public CFile
00031 {
00032 public:
00034     CAsciiFile(void);
00035 
00041     CAsciiFile(FILE* f, const char* name=NULL);
00042 
00049     CAsciiFile(char* fname, char rw='r', const char* name=NULL);
00050 
00052     virtual ~CAsciiFile();
00053 
00061     virtual void get_byte_vector(uint8_t*& vector, int32_t& len);
00062     virtual void get_char_vector(char*& vector, int32_t& len);
00063     virtual void get_int_vector(int32_t*& vector, int32_t& len);
00064     virtual void get_real_vector(float64_t*& vector, int32_t& len);
00065     virtual void get_shortreal_vector(float32_t*& vector, int32_t& len);
00066     virtual void get_short_vector(int16_t*& vector, int32_t& len);
00067     virtual void get_word_vector(uint16_t*& vector, int32_t& len);
00069 
00078     virtual void get_byte_matrix(
00079             uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00080     virtual void get_int8_matrix(
00081             int8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00082     virtual void get_char_matrix(
00083             char*& matrix, int32_t& num_feat, int32_t& num_vec);
00084     virtual void get_int_matrix(
00085             int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00086     virtual void get_uint_matrix(
00087             uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00088     virtual void get_long_matrix(
00089             int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00090     virtual void get_ulong_matrix(
00091             uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00092     virtual void get_shortreal_matrix(
00093             float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00094     virtual void get_real_matrix(
00095             float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00096     virtual void get_longreal_matrix(
00097             floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00098     virtual void get_short_matrix(
00099             int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00100     virtual void get_word_matrix(
00101             uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
00103 
00112     virtual void get_byte_ndarray(
00113             uint8_t*& array, int32_t*& dims, int32_t& num_dims);
00114     virtual void get_char_ndarray(
00115             char*& array, int32_t*& dims, int32_t& num_dims);
00116     virtual void get_int_ndarray(
00117             int32_t*& array, int32_t*& dims, int32_t& num_dims);
00118     virtual void get_shortreal_ndarray(
00119             float32_t*& array, int32_t*& dims, int32_t& num_dims);
00120     virtual void get_real_ndarray(
00121             float64_t*& array, int32_t*& dims, int32_t& num_dims);
00122     virtual void get_short_ndarray(
00123             int16_t*& array, int32_t*& dims, int32_t& num_dims);
00124     virtual void get_word_ndarray(
00125             uint16_t*& array, int32_t*& dims, int32_t& num_dims);
00127 
00136     virtual void get_bool_sparsematrix(
00137             TSparse<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
00138     virtual void get_byte_sparsematrix(
00139             TSparse<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00140     virtual void get_int8_sparsematrix(
00141             TSparse<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00142     virtual void get_char_sparsematrix(
00143             TSparse<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
00144     virtual void get_int_sparsematrix(
00145             TSparse<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00146     virtual void get_uint_sparsematrix(
00147             TSparse<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00148     virtual void get_long_sparsematrix(
00149             TSparse<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00150     virtual void get_ulong_sparsematrix(
00151             TSparse<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00152     virtual void get_short_sparsematrix(
00153             TSparse<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00154     virtual void get_word_sparsematrix(
00155             TSparse<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00156     virtual void get_shortreal_sparsematrix(
00157             TSparse<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00158     virtual void get_real_sparsematrix(
00159             TSparse<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00160     virtual void get_longreal_sparsematrix(
00161             TSparse<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
00163 
00164 
00173     virtual void get_byte_string_list(
00174             TString<uint8_t>*& strings, int32_t& num_str,
00175             int32_t& max_string_len);
00176     virtual void get_int8_string_list(
00177             TString<int8_t>*& strings, int32_t& num_str,
00178             int32_t& max_string_len);
00179     virtual void get_char_string_list(
00180             TString<char>*& strings, int32_t& num_str,
00181             int32_t& max_string_len);
00182     virtual void get_int_string_list(
00183             TString<int32_t>*& strings, int32_t& num_str,
00184             int32_t& max_string_len);
00185     virtual void get_uint_string_list(
00186             TString<uint32_t>*& strings, int32_t& num_str,
00187             int32_t& max_string_len);
00188     virtual void get_short_string_list(
00189             TString<int16_t>*& strings, int32_t& num_str,
00190             int32_t& max_string_len);
00191     virtual void get_word_string_list(
00192             TString<uint16_t>*& strings, int32_t& num_str,
00193             int32_t& max_string_len);
00194     virtual void get_long_string_list(
00195             TString<int64_t>*& strings, int32_t& num_str,
00196             int32_t& max_string_len);
00197     virtual void get_ulong_string_list(
00198             TString<uint64_t>*& strings, int32_t& num_str,
00199             int32_t& max_string_len);
00200     virtual void get_shortreal_string_list(
00201             TString<float32_t>*& strings, int32_t& num_str,
00202             int32_t& max_string_len);
00203     virtual void get_real_string_list(
00204             TString<float64_t>*& strings, int32_t& num_str,
00205             int32_t& max_string_len);
00206     virtual void get_longreal_string_list(
00207             TString<floatmax_t>*& strings, int32_t& num_str,
00208             int32_t& max_string_len);
00210 
00218     virtual void set_byte_vector(const uint8_t* vector, int32_t len);
00219     virtual void set_char_vector(const char* vector, int32_t len);
00220     virtual void set_int_vector(const int32_t* vector, int32_t len);
00221     virtual void set_shortreal_vector( const float32_t* vector, int32_t len);
00222     virtual void set_real_vector(const float64_t* vector, int32_t len);
00223     virtual void set_short_vector(const int16_t* vector, int32_t len);
00224     virtual void set_word_vector(const uint16_t* vector, int32_t len);
00226 
00227 
00235     virtual void set_byte_matrix(
00236             const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
00237     virtual void set_int8_matrix(
00238             const int8_t* matrix, int32_t num_feat, int32_t num_vec);
00239     virtual void set_char_matrix(
00240             const char* matrix, int32_t num_feat, int32_t num_vec);
00241     virtual void set_int_matrix(
00242             const int32_t* matrix, int32_t num_feat, int32_t num_vec);
00243     virtual void set_uint_matrix(
00244             const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
00245     virtual void set_long_matrix(
00246             const int64_t* matrix, int32_t num_feat, int32_t num_vec);
00247     virtual void set_ulong_matrix(
00248             const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
00249     virtual void set_shortreal_matrix(
00250             const float32_t* matrix, int32_t num_feat, int32_t num_vec);
00251     virtual void set_real_matrix(
00252             const float64_t* matrix, int32_t num_feat, int32_t num_vec);
00253     virtual void set_longreal_matrix(
00254             const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
00255     virtual void set_short_matrix(
00256             const int16_t* matrix, int32_t num_feat, int32_t num_vec);
00257     virtual void set_word_matrix(
00258             const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
00260 
00268     virtual void set_bool_sparsematrix(
00269             const TSparse<bool>* matrix, int32_t num_feat, int32_t num_vec);
00270     virtual void set_byte_sparsematrix(
00271             const TSparse<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
00272     virtual void set_int8_sparsematrix(
00273             const TSparse<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
00274     virtual void set_char_sparsematrix(
00275             const TSparse<char>* matrix, int32_t num_feat, int32_t num_vec);
00276     virtual void set_int_sparsematrix(
00277             const TSparse<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
00278     virtual void set_uint_sparsematrix(
00279             const TSparse<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
00280     virtual void set_long_sparsematrix(
00281             const TSparse<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
00282     virtual void set_ulong_sparsematrix(
00283             const TSparse<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
00284     virtual void set_short_sparsematrix(
00285             const TSparse<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
00286     virtual void set_word_sparsematrix(
00287             const TSparse<uint16_t>* matrix, int32_t num_feat, int32_t num_vec); 
00288     virtual void set_shortreal_sparsematrix(
00289             const TSparse<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
00290     virtual void set_real_sparsematrix(
00291             const TSparse<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
00292     virtual void set_longreal_sparsematrix(
00293             const TSparse<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
00295 
00296 
00305     virtual void set_byte_string_list(
00306             const TString<uint8_t>* strings, int32_t num_str);
00307     virtual void set_int8_string_list(
00308             const TString<int8_t>* strings, int32_t num_str);
00309     virtual void set_char_string_list(
00310             const TString<char>* strings, int32_t num_str);
00311     virtual void set_int_string_list(
00312             const TString<int32_t>* strings, int32_t num_str);
00313     virtual void set_uint_string_list(
00314             const TString<uint32_t>* strings, int32_t num_str);
00315     virtual void set_short_string_list(
00316             const TString<int16_t>* strings, int32_t num_str);
00317     virtual void set_word_string_list(
00318             const TString<uint16_t>* strings, int32_t num_str);
00319     virtual void set_long_string_list(
00320             const TString<int64_t>* strings, int32_t num_str);
00321     virtual void set_ulong_string_list(
00322             const TString<uint64_t>* strings, int32_t num_str);
00323     virtual void set_shortreal_string_list(
00324             const TString<float32_t>* strings, int32_t num_str);
00325     virtual void set_real_string_list(
00326             const TString<float64_t>* strings, int32_t num_str);
00327     virtual void set_longreal_string_list(
00328             const TString<floatmax_t>* strings, int32_t num_str);
00330 
00332     inline virtual const char* get_name() const { return "AsciiFile"; }
00333 
00334 private:
00341     template <class T> void append_item(DynArray<T>* items, char* ptr_data, char* ptr_item);
00342 };
00343 }
00344 #endif //__ASCII_FILE_H__
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation