00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __STREAMING_FILE_H__
00011 #define __STREAMING_FILE_H__
00012
00013 #include <shogun/lib/config.h>
00014 #include <shogun/base/DynArray.h>
00015 #include <shogun/lib/common.h>
00016 #include <shogun/io/File.h>
00017 #include <shogun/io/SGIO.h>
00018 #include <shogun/lib/DataType.h>
00019 #include <shogun/io/IOBuffer.h>
00020 #include <shogun/classifier/vw/vw_common.h>
00021
00022 #include <ctype.h>
00023 #include <fcntl.h>
00024 #include <unistd.h>
00025
00026 namespace shogun
00027 {
00038 class CStreamingFile: public CSGObject
00039 {
00040 public:
00042 CStreamingFile();
00043
00049 CStreamingFile(char* fname, char rw='r');
00050
00052 virtual ~CStreamingFile();
00053
00057 void close()
00058 {
00059 buf->close_file();
00060 }
00061
00067 inline virtual bool is_seekable() { return false; }
00068
00072 virtual void reset_stream() { SG_ERROR("Unable to reset the input stream!\n"); }
00073
00083 virtual void get_vector(bool*& vector, int32_t& len);
00084 virtual void get_vector(uint8_t*& vector, int32_t& len);
00085 virtual void get_vector(char*& vector, int32_t& len);
00086 virtual void get_vector(int32_t*& vector, int32_t& len);
00087 virtual void get_vector(float32_t*& vector, int32_t& len);
00088 virtual void get_vector(float64_t*& vector, int32_t& len);
00089 virtual void get_vector(int16_t*& vector, int32_t& len);
00090 virtual void get_vector(uint16_t*& vector, int32_t& len);
00091 virtual void get_vector(int8_t*& vector, int32_t& len);
00092 virtual void get_vector(uint32_t*& vector, int32_t& len);
00093 virtual void get_vector(int64_t*& vector, int32_t& len);
00094 virtual void get_vector(uint64_t*& vector, int32_t& len);
00095 virtual void get_vector(floatmax_t*& vector, int32_t& len);
00097
00107 virtual void get_vector_and_label
00108 (bool*& vector, int32_t& len, float64_t& label);
00109 virtual void get_vector_and_label
00110 (uint8_t*& vector, int32_t& len, float64_t& label);
00111 virtual void get_vector_and_label
00112 (char*& vector, int32_t& len, float64_t& label);
00113 virtual void get_vector_and_label
00114 (int32_t*& vector, int32_t& len, float64_t& label);
00115 virtual void get_vector_and_label
00116 (float32_t*& vector, int32_t& len, float64_t& label);
00117 virtual void get_vector_and_label
00118 (float64_t*& vector, int32_t& len, float64_t& label);
00119 virtual void get_vector_and_label
00120 (int16_t*& vector, int32_t& len, float64_t& label);
00121 virtual void get_vector_and_label
00122 (uint16_t*& vector, int32_t& len, float64_t& label);
00123 virtual void get_vector_and_label
00124 (int8_t*& vector, int32_t& len, float64_t& label);
00125 virtual void get_vector_and_label
00126 (uint32_t*& vector, int32_t& len, float64_t& label);
00127 virtual void get_vector_and_label
00128 (int64_t*& vector, int32_t& len, float64_t& label);
00129 virtual void get_vector_and_label
00130 (uint64_t*& vector, int32_t& len, float64_t& label);
00131 virtual void get_vector_and_label
00132 (floatmax_t*& vector, int32_t& len, float64_t& label);
00134
00144 virtual void get_string(bool*& vector, int32_t& len);
00145 virtual void get_string(uint8_t*& vector, int32_t& len);
00146 virtual void get_string(char*& vector, int32_t& len);
00147 virtual void get_string(int32_t*& vector, int32_t& len);
00148 virtual void get_string(float32_t*& vector, int32_t& len);
00149 virtual void get_string(float64_t*& vector, int32_t& len);
00150 virtual void get_string(int16_t*& vector, int32_t& len);
00151 virtual void get_string(uint16_t*& vector, int32_t& len);
00152 virtual void get_string(int8_t*& vector, int32_t& len);
00153 virtual void get_string(uint32_t*& vector, int32_t& len);
00154 virtual void get_string(int64_t*& vector, int32_t& len);
00155 virtual void get_string(uint64_t*& vector, int32_t& len);
00156 virtual void get_string(floatmax_t*& vector, int32_t& len);
00158
00168 virtual void get_string_and_label
00169 (bool*& vector, int32_t& len, float64_t& label);
00170 virtual void get_string_and_label
00171 (uint8_t*& vector, int32_t& len, float64_t& label);
00172 virtual void get_string_and_label
00173 (char*& vector, int32_t& len, float64_t& label);
00174 virtual void get_string_and_label
00175 (int32_t*& vector, int32_t& len, float64_t& label);
00176 virtual void get_string_and_label
00177 (float32_t*& vector, int32_t& len, float64_t& label);
00178 virtual void get_string_and_label
00179 (float64_t*& vector, int32_t& len, float64_t& label);
00180 virtual void get_string_and_label
00181 (int16_t*& vector, int32_t& len, float64_t& label);
00182 virtual void get_string_and_label
00183 (uint16_t*& vector, int32_t& len, float64_t& label);
00184 virtual void get_string_and_label
00185 (int8_t*& vector, int32_t& len, float64_t& label);
00186 virtual void get_string_and_label
00187 (uint32_t*& vector, int32_t& len, float64_t& label);
00188 virtual void get_string_and_label
00189 (int64_t*& vector, int32_t& len, float64_t& label);
00190 virtual void get_string_and_label
00191 (uint64_t*& vector, int32_t& len, float64_t& label);
00192 virtual void get_string_and_label
00193 (floatmax_t*& vector, int32_t& len, float64_t& label);
00195
00205 virtual void get_sparse_vector
00206 (SGSparseVectorEntry<bool>*& vector, int32_t& len);
00207 virtual void get_sparse_vector
00208 (SGSparseVectorEntry<uint8_t>*& vector, int32_t& len);
00209 virtual void get_sparse_vector
00210 (SGSparseVectorEntry<char>*& vector, int32_t& len);
00211 virtual void get_sparse_vector
00212 (SGSparseVectorEntry<int32_t>*& vector, int32_t& len);
00213 virtual void get_sparse_vector
00214 (SGSparseVectorEntry<float32_t>*& vector, int32_t& len);
00215 virtual void get_sparse_vector
00216 (SGSparseVectorEntry<float64_t>*& vector, int32_t& len);
00217 virtual void get_sparse_vector
00218 (SGSparseVectorEntry<int16_t>*& vector, int32_t& len);
00219 virtual void get_sparse_vector
00220 (SGSparseVectorEntry<uint16_t>*& vector, int32_t& len);
00221 virtual void get_sparse_vector
00222 (SGSparseVectorEntry<int8_t>*& vector, int32_t& len);
00223 virtual void get_sparse_vector
00224 (SGSparseVectorEntry<uint32_t>*& vector, int32_t& len);
00225 virtual void get_sparse_vector
00226 (SGSparseVectorEntry<int64_t>*& vector, int32_t& len);
00227 virtual void get_sparse_vector
00228 (SGSparseVectorEntry<uint64_t>*& vector, int32_t& len);
00229 virtual void get_sparse_vector
00230 (SGSparseVectorEntry<floatmax_t>*& vector, int32_t& len);
00232
00242 virtual void get_sparse_vector_and_label
00243 (SGSparseVectorEntry<bool>*& vector, int32_t& len, float64_t& label);
00244 virtual void get_sparse_vector_and_label
00245 (SGSparseVectorEntry<uint8_t>*& vector, int32_t& len, float64_t& label);
00246 virtual void get_sparse_vector_and_label
00247 (SGSparseVectorEntry<char>*& vector, int32_t& len, float64_t& label);
00248 virtual void get_sparse_vector_and_label
00249 (SGSparseVectorEntry<int32_t>*& vector, int32_t& len, float64_t& label);
00250 virtual void get_sparse_vector_and_label
00251 (SGSparseVectorEntry<float32_t>*& vector, int32_t& len, float64_t& label);
00252 virtual void get_sparse_vector_and_label
00253 (SGSparseVectorEntry<float64_t>*& vector, int32_t& len, float64_t& label);
00254 virtual void get_sparse_vector_and_label
00255 (SGSparseVectorEntry<int16_t>*& vector, int32_t& len, float64_t& label);
00256 virtual void get_sparse_vector_and_label
00257 (SGSparseVectorEntry<uint16_t>*& vector, int32_t& len, float64_t& label);
00258 virtual void get_sparse_vector_and_label
00259 (SGSparseVectorEntry<int8_t>*& vector, int32_t& len, float64_t& label);
00260 virtual void get_sparse_vector_and_label
00261 (SGSparseVectorEntry<uint32_t>*& vector, int32_t& len, float64_t& label);
00262 virtual void get_sparse_vector_and_label
00263 (SGSparseVectorEntry<int64_t>*& vector, int32_t& len, float64_t& label);
00264 virtual void get_sparse_vector_and_label
00265 (SGSparseVectorEntry<uint64_t>*& vector, int32_t& len, float64_t& label);
00266 virtual void get_sparse_vector_and_label
00267 (SGSparseVectorEntry<floatmax_t>*& vector, int32_t& len, float64_t& label);
00268
00270
00277 virtual void get_vector(VwExample*& ex, int32_t& len);
00278
00286 virtual void get_vector_and_label(VwExample*& ex, int32_t& len, float64_t& label);
00287
00289 inline virtual const char* get_name() const { return "StreamingFile"; }
00290
00291 protected:
00292
00294 CIOBuffer* buf;
00296 char task;
00298 char* filename;
00299
00300 };
00301 }
00302 #endif //__STREAMING_FILE_H__