A header only framework for binary file formats
single insert (append EntryType)
Number
Time (s)
1k
1.35
10k
12.82
100k
128.65
vector insert (append std::vector)
Number
Time (ms)
1k
1
10k
1
100k
6
1M
40
Number
Time (ms)
1k
0
10k
0
100k
0
1M
8
#include < iostream>
#include < binfmt.h>
struct LogHeader : public BinaryFileHeaderBase {
LogHeader (): BinaryFileHeaderBase(1 , 88448844 ) {}
};
struct LogEntry {
char message[128 ];
};
using LogEntryContainer = BinaryEntryContainer<LogEntry>;
using LogFile = BinaryFile<LogHeader, LogEntry, LogEntryContainer, 1000 >;
int main () {
LogFile log (" mylog.bin" );
log .append (LogEntry{" This is a log message" });
log .append (LogEntry{" Another message" });
std::vector<LogEntryContainer> entries;
if (log .getAllEntries (entries)) {
for (auto e : entries) {
if (e.isEntryValid ()) {
std::cout << e.entry .message << std::endl;
}
}
}
return 0 ;
}
$ /home/nbdy/CLionProjects/binfmt/cmake-build-debug/binfmt_ex_min
This is a log message
Another message