SHOGUN  4.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ProtobufFile.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * Written (W) 2013 Evgeniy Andreev (gsomix)
8  */
9 
10 #ifndef __PROTOBUFFILE_H__
11 #define __PROTOBUFFILE_H__
12 
13 #include <shogun/lib/config.h>
14 
15 #ifdef HAVE_PROTOBUF
16 
17 #include <shogun/io/File.h>
18 
19 // a hack to avoid clashes with apple's ConditionalMacros.h
20 #ifdef __APPLE__
21  #ifdef TYPE_BOOL
22  #define ___APPLE_TYPE_BOOL TYPE_BOOL
23  #undef TYPE_BOOL
24  #endif
25 #endif
26 
27 #ifdef __APPLE__
28  #ifdef ___APPLE_TYPE_BOOL
29  #define TYPE_BOOL ___APPLE_TYPE_BOOL
30  #undef ___APPLE_TYPE_BOOL
31  #endif
32 #endif
33 
34 #include <shogun/io/protobuf/ShogunVersion.pb.h>
35 #include <shogun/io/protobuf/Headers.pb.h>
36 #include <shogun/io/protobuf/Chunks.pb.h>
37 
38 namespace shogun
39 {
40 
53 class CProtobufFile : public CFile
54 {
55 public:
57  CProtobufFile();
58 
64  CProtobufFile(FILE* f, const char* name=NULL);
65 
72  CProtobufFile(const char* fname, char rw='r', const char* name=NULL);
73 
75  virtual ~CProtobufFile();
76 
77 #ifndef SWIG // SWIG should skip this
78 
85  virtual void get_vector(int8_t*& vector, int32_t& len);
86  virtual void get_vector(uint8_t*& vector, int32_t& len);
87  virtual void get_vector(char*& vector, int32_t& len);
88  virtual void get_vector(int32_t*& vector, int32_t& len);
89  virtual void get_vector(uint32_t*& vector, int32_t& len);
90  virtual void get_vector(float64_t*& vector, int32_t& len);
91  virtual void get_vector(float32_t*& vector, int32_t& len);
92  virtual void get_vector(floatmax_t*& vector, int32_t& len);
93  virtual void get_vector(int16_t*& vector, int32_t& len);
94  virtual void get_vector(uint16_t*& vector, int32_t& len);
95  virtual void get_vector(int64_t*& vector, int32_t& len);
96  virtual void get_vector(uint64_t*& vector, int32_t& len);
98 
107  virtual void get_matrix(
108  uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
109  virtual void get_matrix(
110  int8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
111  virtual void get_matrix(
112  char*& matrix, int32_t& num_feat, int32_t& num_vec);
113  virtual void get_matrix(
114  int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
115  virtual void get_matrix(
116  uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
117  virtual void get_matrix(
118  int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
119  virtual void get_matrix(
120  uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
121  virtual void get_matrix(
122  float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
123  virtual void get_matrix(
124  float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
125  virtual void get_matrix(
126  floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
127  virtual void get_matrix(
128  int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
129  virtual void get_matrix(
130  uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
132 
141  virtual void get_ndarray(
142  uint8_t*& array, int32_t*& dims, int32_t& num_dims);
143  virtual void get_ndarray(
144  char*& array, int32_t*& dims, int32_t& num_dims);
145  virtual void get_ndarray(
146  int32_t*& array, int32_t*& dims, int32_t& num_dims);
147  virtual void get_ndarray(
148  float32_t*& array, int32_t*& dims, int32_t& num_dims);
149  virtual void get_ndarray(
150  float64_t*& array, int32_t*& dims, int32_t& num_dims);
151  virtual void get_ndarray(
152  int16_t*& array, int32_t*& dims, int32_t& num_dims);
153  virtual void get_ndarray(
154  uint16_t*& array, int32_t*& dims, int32_t& num_dims);
156 
165  virtual void get_sparse_matrix(
166  SGSparseVector<bool>*& matrix, int32_t& num_feat, int32_t& num_vec);
167  virtual void get_sparse_matrix(
168  SGSparseVector<uint8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
169  virtual void get_sparse_matrix(
170  SGSparseVector<int8_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
171  virtual void get_sparse_matrix(
172  SGSparseVector<char>*& matrix, int32_t& num_feat, int32_t& num_vec);
173  virtual void get_sparse_matrix(
174  SGSparseVector<int32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
175  virtual void get_sparse_matrix(
176  SGSparseVector<uint32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
177  virtual void get_sparse_matrix(
178  SGSparseVector<int64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
179  virtual void get_sparse_matrix(
180  SGSparseVector<uint64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
181  virtual void get_sparse_matrix(
182  SGSparseVector<int16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
183  virtual void get_sparse_matrix(
184  SGSparseVector<uint16_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
185  virtual void get_sparse_matrix(
186  SGSparseVector<float32_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
187  virtual void get_sparse_matrix(
188  SGSparseVector<float64_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
189  virtual void get_sparse_matrix(
190  SGSparseVector<floatmax_t>*& matrix, int32_t& num_feat, int32_t& num_vec);
192 
201  virtual void get_string_list(
202  SGString<uint8_t>*& strings, int32_t& num_str,
203  int32_t& max_string_len);
204  virtual void get_string_list(
205  SGString<int8_t>*& strings, int32_t& num_str,
206  int32_t& max_string_len);
207  virtual void get_string_list(
208  SGString<char>*& strings, int32_t& num_str,
209  int32_t& max_string_len);
210  virtual void get_string_list(
211  SGString<int32_t>*& strings, int32_t& num_str,
212  int32_t& max_string_len);
213  virtual void get_string_list(
214  SGString<uint32_t>*& strings, int32_t& num_str,
215  int32_t& max_string_len);
216  virtual void get_string_list(
217  SGString<int16_t>*& strings, int32_t& num_str,
218  int32_t& max_string_len);
219  virtual void get_string_list(
220  SGString<uint16_t>*& strings, int32_t& num_str,
221  int32_t& max_string_len);
222  virtual void get_string_list(
223  SGString<int64_t>*& strings, int32_t& num_str,
224  int32_t& max_string_len);
225  virtual void get_string_list(
226  SGString<uint64_t>*& strings, int32_t& num_str,
227  int32_t& max_string_len);
228  virtual void get_string_list(
229  SGString<float32_t>*& strings, int32_t& num_str,
230  int32_t& max_string_len);
231  virtual void get_string_list(
232  SGString<float64_t>*& strings, int32_t& num_str,
233  int32_t& max_string_len);
234  virtual void get_string_list(
235  SGString<floatmax_t>*& strings, int32_t& num_str,
236  int32_t& max_string_len);
238 
240  /*virtual void get_vector(void*& vector, int32_t& len, DataType& dtype);*/
241 
249  virtual void set_vector(const int8_t* vector, int32_t len);
250  virtual void set_vector(const uint8_t* vector, int32_t len);
251  virtual void set_vector(const char* vector, int32_t len);
252  virtual void set_vector(const int32_t* vector, int32_t len);
253  virtual void set_vector(const uint32_t* vector, int32_t len);
254  virtual void set_vector(const float32_t* vector, int32_t len);
255  virtual void set_vector(const float64_t* vector, int32_t len);
256  virtual void set_vector(const floatmax_t* vector, int32_t len);
257  virtual void set_vector(const int16_t* vector, int32_t len);
258  virtual void set_vector(const uint16_t* vector, int32_t len);
259  virtual void set_vector(const int64_t* vector, int32_t len);
260  virtual void set_vector(const uint64_t* vector, int32_t len);
262 
270  virtual void set_matrix(
271  const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
272  virtual void set_matrix(
273  const int8_t* matrix, int32_t num_feat, int32_t num_vec);
274  virtual void set_matrix(
275  const char* matrix, int32_t num_feat, int32_t num_vec);
276  virtual void set_matrix(
277  const int32_t* matrix, int32_t num_feat, int32_t num_vec);
278  virtual void set_matrix(
279  const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
280  virtual void set_matrix(
281  const int64_t* matrix, int32_t num_feat, int32_t num_vec);
282  virtual void set_matrix(
283  const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
284  virtual void set_matrix(
285  const float32_t* matrix, int32_t num_feat, int32_t num_vec);
286  virtual void set_matrix(
287  const float64_t* matrix, int32_t num_feat, int32_t num_vec);
288  virtual void set_matrix(
289  const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
290  virtual void set_matrix(
291  const int16_t* matrix, int32_t num_feat, int32_t num_vec);
292  virtual void set_matrix(
293  const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
295 
303  virtual void set_sparse_matrix(
304  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
305  virtual void set_sparse_matrix(
306  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
307  virtual void set_sparse_matrix(
308  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
309  virtual void set_sparse_matrix(
310  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
311  virtual void set_sparse_matrix(
312  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
313  virtual void set_sparse_matrix(
314  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
315  virtual void set_sparse_matrix(
316  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
317  virtual void set_sparse_matrix(
318  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
319  virtual void set_sparse_matrix(
320  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
321  virtual void set_sparse_matrix(
322  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
323  virtual void set_sparse_matrix(
324  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
325  virtual void set_sparse_matrix(
326  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
327  virtual void set_sparse_matrix(
328  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
330 
339  virtual void set_string_list(
340  const SGString<uint8_t>* strings, int32_t num_str);
341  virtual void set_string_list(
342  const SGString<int8_t>* strings, int32_t num_str);
343  virtual void set_string_list(
344  const SGString<char>* strings, int32_t num_str);
345  virtual void set_string_list(
346  const SGString<int32_t>* strings, int32_t num_str);
347  virtual void set_string_list(
348  const SGString<uint32_t>* strings, int32_t num_str);
349  virtual void set_string_list(
350  const SGString<int16_t>* strings, int32_t num_str);
351  virtual void set_string_list(
352  const SGString<uint16_t>* strings, int32_t num_str);
353  virtual void set_string_list(
354  const SGString<int64_t>* strings, int32_t num_str);
355  virtual void set_string_list(
356  const SGString<uint64_t>* strings, int32_t num_str);
357  virtual void set_string_list(
358  const SGString<float32_t>* strings, int32_t num_str);
359  virtual void set_string_list(
360  const SGString<float64_t>* strings, int32_t num_str);
361  virtual void set_string_list(
362  const SGString<floatmax_t>* strings, int32_t num_str);
364 #endif // #ifndef SWIG // SWIG should skip this
365 
366  virtual const char* get_name() const { return "ProtobufFile"; }
367 
368 private:
370  void init();
371 
373  void write_big_endian_uint(uint32_t number, uint8_t* array, uint32_t size);
374 
376  uint32_t read_big_endian_uint(uint8_t* array, uint32_t size);
377 
379  int32_t compute_num_messages(uint64_t len, int32_t sizeof_type) const;
380 
382  void read_and_validate_global_header(ShogunVersion_SGDataType type);
383 
385  void write_global_header(ShogunVersion_SGDataType type);
386 
389  VectorHeader read_vector_header();
390  MatrixHeader read_matrix_header();
391  SparseMatrixHeader read_sparse_matrix_header();
392  StringListHeader read_string_list_header();
394 
397  void write_vector_header(int32_t len, int32_t num_messages);
398  void write_matrix_header(int32_t num_feat, int32_t num_vec, int32_t num_messages);
400 
405  void write_sparse_matrix_header(
406  const SGSparseVector<bool>* matrix, int32_t num_feat, int32_t num_vec);
407  void write_sparse_matrix_header(
408  const SGSparseVector<uint8_t>* matrix, int32_t num_feat, int32_t num_vec);
409  void write_sparse_matrix_header(
410  const SGSparseVector<int8_t>* matrix, int32_t num_feat, int32_t num_vec);
411  void write_sparse_matrix_header(
412  const SGSparseVector<char>* matrix, int32_t num_feat, int32_t num_vec);
413  void write_sparse_matrix_header(
414  const SGSparseVector<int32_t>* matrix, int32_t num_feat, int32_t num_vec);
415  void write_sparse_matrix_header(
416  const SGSparseVector<uint32_t>* matrix, int32_t num_feat, int32_t num_vec);
417  void write_sparse_matrix_header(
418  const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec);
419  void write_sparse_matrix_header(
420  const SGSparseVector<float32_t>* matrix, int32_t num_feat, int32_t num_vec);
421  void write_sparse_matrix_header(
422  const SGSparseVector<floatmax_t>* matrix, int32_t num_feat, int32_t num_vec);
423  void write_sparse_matrix_header(
424  const SGSparseVector<int16_t>* matrix, int32_t num_feat, int32_t num_vec);
425  void write_sparse_matrix_header(
426  const SGSparseVector<uint16_t>* matrix, int32_t num_feat, int32_t num_vec);
427  void write_sparse_matrix_header(
428  const SGSparseVector<int64_t>* matrix, int32_t num_feat, int32_t num_vec);
429  void write_sparse_matrix_header(
430  const SGSparseVector<uint64_t>* matrix, int32_t num_feat, int32_t num_vec);
432 
437  void write_string_list_header(
438  const SGString<uint8_t>* strings, int32_t num_str);
439  void write_string_list_header(
440  const SGString<int8_t>* strings, int32_t num_str);
441  void write_string_list_header(
442  const SGString<char>* strings, int32_t num_str);
443  void write_string_list_header(
444  const SGString<int32_t>* strings, int32_t num_str);
445  void write_string_list_header(
446  const SGString<uint32_t>* strings, int32_t num_str);
447  void write_string_list_header(
448  const SGString<float64_t>* strings, int32_t num_str);
449  void write_string_list_header(
450  const SGString<float32_t>* strings, int32_t num_str);
451  void write_string_list_header(
452  const SGString<floatmax_t>* strings, int32_t num_str);
453  void write_string_list_header(
454  const SGString<int16_t>* strings, int32_t num_str);
455  void write_string_list_header(
456  const SGString<uint16_t>* strings, int32_t num_str);
457  void write_string_list_header(
458  const SGString<int64_t>* strings, int32_t num_str);
459  void write_string_list_header(
460  const SGString<uint64_t>* strings, int32_t num_str);
462 
464  void read_message(google::protobuf::Message& message);
465 
467  void write_message(const google::protobuf::Message& message);
468 
474  void read_memory_block(uint8_t*& vector, uint64_t len, int32_t num_messages);
475  void read_memory_block(int8_t*& vector, uint64_t len, int32_t num_messages);
476  void read_memory_block(char*& vector, uint64_t len, int32_t num_messages);
477  void read_memory_block(int32_t*& vector, uint64_t len, int32_t num_messages);
478  void read_memory_block(uint32_t*& vector, uint64_t len, int32_t num_messages);
479  void read_memory_block(float64_t*& vector, uint64_t len, int32_t num_messages);
480  void read_memory_block(float32_t*& vector, uint64_t len, int32_t num_messages);
481  void read_memory_block(floatmax_t*& vector, uint64_t len, int32_t num_messages);
482  void read_memory_block(int16_t*& vector, uint64_t len, int32_t num_messages);
483  void read_memory_block(uint16_t*& vector, uint64_t len, int32_t num_messages);
484  void read_memory_block(int64_t*& vector, uint64_t len, int32_t num_messages);
485  void read_memory_block(uint64_t*& vector, uint64_t len, int32_t num_messages);
487 
493  void write_memory_block(const int8_t* vector, uint64_t len, int32_t num_messages);
494  void write_memory_block(const uint8_t* vector, uint64_t len, int32_t num_messages);
495  void write_memory_block(const char* vector, uint64_t len, int32_t num_messages);
496  void write_memory_block(const int32_t* vector, uint64_t len, int32_t num_messages);
497  void write_memory_block(const uint32_t* vector, uint64_t len, int32_t num_messages);
498  void write_memory_block(const float32_t* vector, uint64_t len, int32_t num_messages);
499  void write_memory_block(const float64_t* vector, uint64_t len, int32_t num_messages);
500  void write_memory_block(const floatmax_t* vector, uint64_t len, int32_t num_messages);
501  void write_memory_block(const int16_t* vector, uint64_t len, int32_t num_messages);
502  void write_memory_block(const uint16_t* vector, uint64_t len, int32_t num_messages);
503  void write_memory_block(const int64_t* vector, uint64_t len, int32_t num_messages);
504  void write_memory_block(const uint64_t* vector, uint64_t len, int32_t num_messages);
506 
508  void read_sparse_matrix(SGSparseVector<bool>*& matrix,
509  const SparseMatrixHeader& data_header);
510  void read_sparse_matrix(SGSparseVector<uint8_t>*& matrix,
511  const SparseMatrixHeader& data_header);
512  void read_sparse_matrix(SGSparseVector<int8_t>*& matrix,
513  const SparseMatrixHeader& data_header);
514  void read_sparse_matrix(SGSparseVector<char>*& matrix,
515  const SparseMatrixHeader& data_header);
516  void read_sparse_matrix(SGSparseVector<int32_t>*& matrix,
517  const SparseMatrixHeader& data_header);
518  void read_sparse_matrix(SGSparseVector<uint32_t>*& matrix,
519  const SparseMatrixHeader& data_header);
520  void read_sparse_matrix(SGSparseVector<int16_t>*& matrix,
521  const SparseMatrixHeader& data_header);
522  void read_sparse_matrix(SGSparseVector<uint16_t>*& matrix,
523  const SparseMatrixHeader& data_header);
524  void read_sparse_matrix(SGSparseVector<int64_t>*& matrix,
525  const SparseMatrixHeader& data_header);
526  void read_sparse_matrix(SGSparseVector<uint64_t>*& matrix,
527  const SparseMatrixHeader& data_header);
528  void read_sparse_matrix(SGSparseVector<float32_t>*& matrix,
529  const SparseMatrixHeader& data_header);
530  void read_sparse_matrix(SGSparseVector<float64_t>*& matrix,
531  const SparseMatrixHeader& data_header);
532  void read_sparse_matrix(SGSparseVector<floatmax_t>*& matrix,
533  const SparseMatrixHeader& data_header);
535 
539  void write_sparse_matrix(
540  const SGSparseVector<bool>* matrix, int32_t num_vec);
541  void write_sparse_matrix(
542  const SGSparseVector<uint8_t>* matrix, int32_t num_vec);
543  void write_sparse_matrix(
544  const SGSparseVector<int8_t>* matrix, int32_t num_vec);
545  void write_sparse_matrix(
546  const SGSparseVector<char>* matrix, int32_t num_vec);
547  void write_sparse_matrix(
548  const SGSparseVector<int32_t>* matrix, int32_t num_vec);
549  void write_sparse_matrix(
550  const SGSparseVector<uint32_t>* matrix, int32_t num_vec);
551  void write_sparse_matrix(
552  const SGSparseVector<int16_t>* matrix, int32_t num_vec);
553  void write_sparse_matrix(
554  const SGSparseVector<uint16_t>* matrix, int32_t num_vec);
555  void write_sparse_matrix(
556  const SGSparseVector<int64_t>* matrix, int32_t num_vec);
557  void write_sparse_matrix(
558  const SGSparseVector<uint64_t>* matrix, int32_t num_vec);
559  void write_sparse_matrix(
560  const SGSparseVector<float32_t>* matrix, int32_t num_vec);
561  void write_sparse_matrix(
562  const SGSparseVector<float64_t>* matrix, int32_t num_vec);
563  void write_sparse_matrix(
564  const SGSparseVector<floatmax_t>* matrix, int32_t num_vec);
566 
568  void read_string_list(SGString<uint8_t>*& strings,
569  const StringListHeader& data_header);
570  void read_string_list(SGString<int8_t>*& strings,
571  const StringListHeader& data_header);
572  void read_string_list(SGString<char>*& strings,
573  const StringListHeader& data_header);
574  void read_string_list(SGString<int32_t>*& strings,
575  const StringListHeader& data_header);
576  void read_string_list(SGString<uint32_t>*& strings,
577  const StringListHeader& data_header);
578  void read_string_list(SGString<int16_t>*& strings,
579  const StringListHeader& data_header);
580  void read_string_list(SGString<uint16_t>*& strings,
581  const StringListHeader& data_header);
582  void read_string_list(SGString<int64_t>*& strings,
583  const StringListHeader& data_header);
584  void read_string_list(SGString<uint64_t>*& strings,
585  const StringListHeader& data_header);
586  void read_string_list(SGString<float32_t>*& strings,
587  const StringListHeader& data_header);
588  void read_string_list(SGString<float64_t>*& strings,
589  const StringListHeader& data_header);
590  void read_string_list(SGString<floatmax_t>*& strings,
591  const StringListHeader& data_header);
593 
597  void write_string_list(
598  const SGString<uint8_t>* strings, int32_t num_str);
599  void write_string_list(
600  const SGString<int8_t>* strings, int32_t num_str);
601  void write_string_list(
602  const SGString<char>* strings, int32_t num_str);
603  void write_string_list(
604  const SGString<int32_t>* strings, int32_t num_str);
605  void write_string_list(
606  const SGString<uint32_t>* strings, int32_t num_str);
607  void write_string_list(
608  const SGString<int16_t>* strings, int32_t num_str);
609  void write_string_list(
610  const SGString<uint16_t>* strings, int32_t num_str);
611  void write_string_list(
612  const SGString<int64_t>* strings, int32_t num_str);
613  void write_string_list(
614  const SGString<uint64_t>* strings, int32_t num_str);
615  void write_string_list(
616  const SGString<float32_t>* strings, int32_t num_str);
617  void write_string_list(
618  const SGString<float64_t>* strings, int32_t num_str);
619  void write_string_list(
620  const SGString<floatmax_t>* strings, int32_t num_str);
622 
623 private:
625  int32_t version;
626 
628  int32_t message_size;
629 
631  uint8_t* buffer;
632 
634  uint8_t uint_buffer[4];
635 };
636 
637 }
638 
639 #endif
640 #endif
virtual void set_string_list(const SGString< uint8_t > *strings, int32_t num_str)
virtual void get_string_list(SGString< uint8_t > *&strings, int32_t &num_str, int32_t &max_string_len)
virtual void get_ndarray(uint8_t *&array, int32_t *&dims, int32_t &num_dims)
virtual void get_vector(int8_t *&vector, int32_t &len)
virtual void get_matrix(uint8_t *&matrix, int32_t &num_feat, int32_t &num_vec)
double float64_t
Definition: common.h:50
long double floatmax_t
Definition: common.h:51
virtual void set_sparse_matrix(const SGSparseVector< bool > *matrix, int32_t num_feat, int32_t num_vec)
A File access base class.
Definition: File.h:34
virtual void set_vector(const int8_t *vector, int32_t len)
float float32_t
Definition: common.h:49
virtual void get_sparse_matrix(SGSparseVector< bool > *&matrix, int32_t &num_feat, int32_t &num_vec)
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:18
virtual void set_matrix(const uint8_t *matrix, int32_t num_feat, int32_t num_vec)
Class for work with binary file in protobuf format.
Definition: ProtobufFile.h:53
template class SGSparseVector The assumtion is that the stored SGSparseVectorEntry* vector is orde...
virtual const char * get_name() const
Definition: ProtobufFile.h:366

SHOGUN Machine Learning Toolbox - Documentation