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