1 #ifndef BINARYGRAPHFILEREADER_H 2 #define BINARYGRAPHFILEREADER_H 10 #include <system_error> 14 #ifndef ATTRIBUTE_PACKED 15 #if !defined(_MSC_BUILD) 16 #define ATTRIBUTE_PACKED __attribute__ ((__packed__)) 18 #define ATTRIBUTE_PACKED 32 template <
typename Key,
typename Value>
35 template <
typename Key,
typename Value>
39 FILE *file = fopen(filename.c_str(),
"rb");
40 if (file ==
nullptr) {
41 throw std::system_error(errno,std::generic_category());
47 uint8_t keysize, valuesize;
52 if ((res = fread(&header,
sizeof(header), 1, file)) != 1) {
53 throw std::system_error(errno,std::generic_category());
56 if (
fromLittleEndian( header.signature ) != 0x01020304 || header.keysize !=
sizeof(Key) || header.valuesize !=
sizeof(Value)) {
57 throw std::system_error(0,std::generic_category(),
"Bad header or sizes");
68 if ((res = fread(&rec,
sizeof(rec), 1, file )) != 1) {
72 throw std::system_error(errno,std::generic_category());
76 throw std::system_error(0,std::generic_category(),
"cannot insert data");
90 #endif // BINARYGRAPHFILEREADER_H
Definition: decisiontreemanager.h:13
#define ATTRIBUTE_PACKED
Definition: binarygraphfilereader.h:16