12 #ifndef __PROTOBUFFILE_H__
13 #define __PROTOBUFFILE_H__
17 #include <google/protobuf/message.h>
57 CProtobufFile(
const char* fname,
char rw=
'r',
const char* name=NULL);
69 virtual void get_vector(int8_t*& vector, int32_t& len);
70 virtual void get_vector(uint8_t*& vector, int32_t& len);
71 virtual void get_vector(
char*& vector, int32_t& len);
72 virtual void get_vector(int32_t*& vector, int32_t& len);
73 virtual void get_vector(uint32_t*& vector, int32_t& len);
77 virtual void get_vector(int16_t*& vector, int32_t& len);
78 virtual void get_vector(uint16_t*& vector, int32_t& len);
79 virtual void get_vector(int64_t*& vector, int32_t& len);
80 virtual void get_vector(uint64_t*& vector, int32_t& len);
92 uint8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
94 int8_t*& matrix, int32_t& num_feat, int32_t& num_vec);
96 char*& matrix, int32_t& num_feat, int32_t& num_vec);
98 int32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
100 uint32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
102 int64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
104 uint64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
106 float32_t*& matrix, int32_t& num_feat, int32_t& num_vec);
108 float64_t*& matrix, int32_t& num_feat, int32_t& num_vec);
110 floatmax_t*& matrix, int32_t& num_feat, int32_t& num_vec);
112 int16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
114 uint16_t*& matrix, int32_t& num_feat, int32_t& num_vec);
126 uint8_t*& array, int32_t*& dims, int32_t& num_dims);
128 char*& array, int32_t*& dims, int32_t& num_dims);
130 int32_t*& array, int32_t*& dims, int32_t& num_dims);
132 float32_t*& array, int32_t*& dims, int32_t& num_dims);
134 float64_t*& array, int32_t*& dims, int32_t& num_dims);
136 int16_t*& array, int32_t*& dims, int32_t& num_dims);
138 uint16_t*& array, int32_t*& dims, int32_t& num_dims);
187 int32_t& max_string_len);
190 int32_t& max_string_len);
193 int32_t& max_string_len);
196 int32_t& max_string_len);
199 int32_t& max_string_len);
202 int32_t& max_string_len);
205 int32_t& max_string_len);
208 int32_t& max_string_len);
211 int32_t& max_string_len);
214 int32_t& max_string_len);
217 int32_t& max_string_len);
220 int32_t& max_string_len);
233 virtual void set_vector(
const int8_t* vector, int32_t len);
234 virtual void set_vector(
const uint8_t* vector, int32_t len);
235 virtual void set_vector(
const char* vector, int32_t len);
236 virtual void set_vector(
const int32_t* vector, int32_t len);
237 virtual void set_vector(
const uint32_t* vector, int32_t len);
241 virtual void set_vector(
const int16_t* vector, int32_t len);
242 virtual void set_vector(
const uint16_t* vector, int32_t len);
243 virtual void set_vector(
const int64_t* vector, int32_t len);
244 virtual void set_vector(
const uint64_t* vector, int32_t len);
255 const uint8_t* matrix, int32_t num_feat, int32_t num_vec);
257 const int8_t* matrix, int32_t num_feat, int32_t num_vec);
259 const char* matrix, int32_t num_feat, int32_t num_vec);
261 const int32_t* matrix, int32_t num_feat, int32_t num_vec);
263 const uint32_t* matrix, int32_t num_feat, int32_t num_vec);
265 const int64_t* matrix, int32_t num_feat, int32_t num_vec);
267 const uint64_t* matrix, int32_t num_feat, int32_t num_vec);
269 const float32_t* matrix, int32_t num_feat, int32_t num_vec);
271 const float64_t* matrix, int32_t num_feat, int32_t num_vec);
273 const floatmax_t* matrix, int32_t num_feat, int32_t num_vec);
275 const int16_t* matrix, int32_t num_feat, int32_t num_vec);
277 const uint16_t* matrix, int32_t num_feat, int32_t num_vec);
349 virtual const char*
get_name()
const {
return "ProtobufFile"; }
356 void write_big_endian_uint(uint32_t number, uint8_t* array, uint32_t size);
359 uint32_t read_big_endian_uint(uint8_t* array, uint32_t size);
362 int32_t compute_num_messages(uint64_t len, int32_t sizeof_type)
const;
380 void write_vector_header(int32_t len, int32_t num_messages);
381 void write_matrix_header(int32_t num_feat, int32_t num_vec, int32_t num_messages);
388 void write_sparse_matrix_header(
390 void write_sparse_matrix_header(
392 void write_sparse_matrix_header(
394 void write_sparse_matrix_header(
396 void write_sparse_matrix_header(
398 void write_sparse_matrix_header(
400 void write_sparse_matrix_header(
402 void write_sparse_matrix_header(
404 void write_sparse_matrix_header(
406 void write_sparse_matrix_header(
408 void write_sparse_matrix_header(
410 void write_sparse_matrix_header(
412 void write_sparse_matrix_header(
420 void write_string_list_header(
422 void write_string_list_header(
424 void write_string_list_header(
426 void write_string_list_header(
428 void write_string_list_header(
430 void write_string_list_header(
432 void write_string_list_header(
434 void write_string_list_header(
436 void write_string_list_header(
438 void write_string_list_header(
440 void write_string_list_header(
442 void write_string_list_header(
447 void read_message(google::protobuf::Message& message);
450 void write_message(
const google::protobuf::Message& message);
457 void read_memory_block(uint8_t*& vector, uint64_t len, int32_t num_messages);
458 void read_memory_block(int8_t*& vector, uint64_t len, int32_t num_messages);
459 void read_memory_block(
char*& vector, uint64_t len, int32_t num_messages);
460 void read_memory_block(int32_t*& vector, uint64_t len, int32_t num_messages);
461 void read_memory_block(uint32_t*& vector, uint64_t len, int32_t num_messages);
462 void read_memory_block(
float64_t*& vector, uint64_t len, int32_t num_messages);
463 void read_memory_block(
float32_t*& vector, uint64_t len, int32_t num_messages);
464 void read_memory_block(
floatmax_t*& vector, uint64_t len, int32_t num_messages);
465 void read_memory_block(int16_t*& vector, uint64_t len, int32_t num_messages);
466 void read_memory_block(uint16_t*& vector, uint64_t len, int32_t num_messages);
467 void read_memory_block(int64_t*& vector, uint64_t len, int32_t num_messages);
468 void read_memory_block(uint64_t*& vector, uint64_t len, int32_t num_messages);
476 void write_memory_block(
const int8_t* vector, uint64_t len, int32_t num_messages);
477 void write_memory_block(
const uint8_t* vector, uint64_t len, int32_t num_messages);
478 void write_memory_block(
const char* vector, uint64_t len, int32_t num_messages);
479 void write_memory_block(
const int32_t* vector, uint64_t len, int32_t num_messages);
480 void write_memory_block(
const uint32_t* vector, uint64_t len, int32_t num_messages);
481 void write_memory_block(
const float32_t* vector, uint64_t len, int32_t num_messages);
482 void write_memory_block(
const float64_t* vector, uint64_t len, int32_t num_messages);
483 void write_memory_block(
const floatmax_t* vector, uint64_t len, int32_t num_messages);
484 void write_memory_block(
const int16_t* vector, uint64_t len, int32_t num_messages);
485 void write_memory_block(
const uint16_t* vector, uint64_t len, int32_t num_messages);
486 void write_memory_block(
const int64_t* vector, uint64_t len, int32_t num_messages);
487 void write_memory_block(
const uint64_t* vector, uint64_t len, int32_t num_messages);
522 void write_sparse_matrix(
524 void write_sparse_matrix(
526 void write_sparse_matrix(
528 void write_sparse_matrix(
530 void write_sparse_matrix(
532 void write_sparse_matrix(
534 void write_sparse_matrix(
536 void write_sparse_matrix(
538 void write_sparse_matrix(
540 void write_sparse_matrix(
542 void write_sparse_matrix(
544 void write_sparse_matrix(
546 void write_sparse_matrix(
580 void write_string_list(
582 void write_string_list(
584 void write_string_list(
586 void write_string_list(
588 void write_string_list(
590 void write_string_list(
592 void write_string_list(
594 void write_string_list(
596 void write_string_list(
598 void write_string_list(
600 void write_string_list(
602 void write_string_list(
611 int32_t message_size;
617 uint8_t uint_buffer[4];