An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# binfmt

[![CodeFactor](https://www.codefactor.io/repository/github/nbdy/binfmt/badge)](https://www.codefactor.io/repository/github/nbdy/binfmt)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/b485b4bdb1a546f8aac332245013bb81)](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
```