Skip to content

refactor(codegen): C++ header names follow native=bare / cbor=_cbor#65

Draft
Ivansete-status wants to merge 1 commit into
cpp-native-codegenfrom
cpp-name-reconciliation
Draft

refactor(codegen): C++ header names follow native=bare / cbor=_cbor#65
Ivansete-status wants to merge 1 commit into
cpp-native-codegenfrom
cpp-name-reconciliation

Conversation

@Ivansete-status

Copy link
Copy Markdown
Collaborator

What

Reconciles the C++ header filenames with the C generator and the symbol naming. Native (zero-serialization, same-process) is the bare <lib>.hpp; CBOR (inter-process) carries the _cbor suffix — matching the C headers (<lib>.h / <lib>_cbor.h) and the <name> / <name>_cbor exports.

Previously native was <lib>_native.hpp and CBOR was the bare <lib>.hpp — backwards from the convention, and a collision risk on the native <lib>.h when both ABIs emit into one dir. With the flip, a single genbindings_cpp run drops <lib>.hpp (native) + <lib>_cbor.hpp (CBOR) side by side, exactly like c_bindings holds both .h headers.

Consumers updated: the CBOR cpp example driver and the C++ e2e suite include *_cbor.hpp; the native example includes the bare <lib>.hpp.

Test

  • Native C++ example builds/runs on my_timer.hpp.
  • C++ e2e suite: 19/19 on the _cbor.hpp headers.
  • check_bindings_cpp regen is deterministic.

Stacked on #63.

🤖 Generated with Claude Code

…nvention

Aligns the C++ generators with the C generator and the symbol naming: the
native (zero-serialization, same-process) wrapper is the bare `<lib>.hpp` and
the CBOR (inter-process) wrapper carries the `_cbor` suffix — mirroring the C
headers (`<lib>.h` / `<lib>_cbor.h`) and the `<name>` / `<name>_cbor` exports.

Previously native was `<lib>_native.hpp` and CBOR was the bare `<lib>.hpp`,
which is backwards from the symbol convention and would collide on the native
`<lib>.h` when both ABIs emit into one dir (ffiMode=both). With the flip, a
single `genbindings_cpp` run now drops `<lib>.hpp` + `<lib>_cbor.hpp` side by
side, exactly like c_bindings holds both `.h` headers.

Consumers updated to match: the CBOR cpp_bindings driver and the C++ e2e suite
include `*_cbor.hpp`; the native example includes the bare `<lib>.hpp`.

Validated: native example runs on `my_timer.hpp`; C++ e2e suite 19/19 on the
`_cbor.hpp` headers; check_bindings_cpp regen is deterministic.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@gmelodie gmelodie self-assigned this Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants