https://github.com/nbdy/binfmt
cpp binary file framework
https://github.com/nbdy/binfmt
binary cpp file-format framework
Last synced: about 1 year ago
JSON representation
cpp binary file framework
- Host: GitHub
- URL: https://github.com/nbdy/binfmt
- Owner: nbdy
- License: mit
- Created: 2021-08-20T17:08:06.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-08-28T22:49:36.000Z (over 2 years ago)
- Last Synced: 2025-03-19T20:01:04.269Z (about 1 year ago)
- Topics: binary, cpp, file-format, framework
- Language: C++
- Homepage:
- Size: 78.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# binfmt
[](https://www.codefactor.io/repository/github/nbdy/binfmt)
[](https://www.codacy.com/gh/nbdy/binfmt/dashboard?utm_source=github.com&utm_medium=referral&utm_content=nbdy/binfmt&utm_campaign=Badge_Grade)
`A header only framework for binary file formats`
## [benchmarks](doc/Benchmarks.md)
### 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 |
### read
| Number | Time (ms) |
|--------|----------|
| 1k | 0 |
| 10k | 0 |
| 100k | 0 |
| 1M | 8 |
## Minimal example
```c++
#include
#include
struct LogHeader : public BinaryFileHeaderBase {
LogHeader(): BinaryFileHeaderBase(1, 88448844) {}
};
struct LogEntry {
char message[128];
};
using LogEntryContainer = BinaryEntryContainer;
using LogFile = BinaryFile;
int main() {
LogFile log("mylog.bin");
log.append(LogEntry{"This is a log message"});
log.append(LogEntry{"Another message"});
std::vector entries;
if (log.getAllEntries(entries)) {
for (auto e : entries) {
if(e.isEntryValid()) {
std::cout << e.entry.message << std::endl;
}
}
}
return 0;
}
```
```shell
$ /home/nbdy/CLionProjects/binfmt/cmake-build-debug/binfmt_ex_min
This is a log message
Another message
```