2026-05-11 23:28:17 +02:00
# C++ Bindings for nim-timer
## Purpose
2026-05-31 19:31:39 +02:00
This folder contains **auto-generated C++ bindings** for the `my_timer` Nim library. It is generated from `../timer.nim` (with the default `both` ABI mode) and provides:
2026-05-11 23:28:17 +02:00
2026-05-31 19:31:39 +02:00
- `my_timer_cbor.hpp` : High-level C++ class (`MyTimerCtx` ) wrapping the **CBOR** FFI interface (inter-process)
- `my_timer.hpp` + `my_timer.h` : the **native** (zero-serialization, same-process) wrapper and the C ABI it builds on
- `main.cpp` : Example executable demonstrating how to use the CBOR bindings
2026-05-11 23:28:17 +02:00
- `CMakeLists.txt` : Build configuration that compiles the Nim library and links the C++ example
2026-05-31 19:31:39 +02:00
The native header is the bare `my_timer.hpp` and the CBOR header carries the `_cbor` suffix — the same convention as the C bindings (`my_timer.h` / `my_timer_cbor.h` ) and the underlying symbols (`<name>` / `<name>_cbor` ).
2026-05-11 23:28:17 +02:00
## How It's Generated
Generate or regenerate these bindings by running from the parent directory:
```sh
2026-05-16 01:08:42 +02:00
cd examples/timer
2026-05-11 23:28:17 +02:00
nimble genbindings_cpp
```
This command:
1. Invokes the Nim compiler with `-d:targetLang:cpp` flag
2026-05-16 01:08:42 +02:00
2. Triggers `genBindings("examples/timer/cpp_bindings", "../timer.nim")` in `timer.nim`
2026-05-11 23:28:17 +02:00
3. Creates/updates the generated binding files
## Building the Example
```sh
2026-05-16 01:08:42 +02:00
cd examples/timer/cpp_bindings
2026-05-11 23:28:17 +02:00
cmake -S . -B build
cmake --build build
./build/example
```
## Do Not Edit
The generated files in this folder are overwritten each time `nimble genbindings_cpp` runs. Any manual changes will be lost.