We should be able to emit a well-formatted C++ header from regz so we can also support users to have C code in their project that can access registers.
Imho, we can support registers way better in C++ than in C and provide features similar to MicroZig where we can have something like
using regs = microzig::chip::registers;
using pinfunc = regs::io::bank0::gpio0::function;
regs::io::bank0::gpio0::ctrl.access() // returns a current value + pointer to register as a struct
.set_ctrl(pinfunc::uart) // modifies bits in the saved state
.apply(); // writes back the bits to the register
We should be able to emit a well-formatted C++ header from regz so we can also support users to have C code in their project that can access registers.
Imho, we can support registers way better in C++ than in C and provide features similar to MicroZig where we can have something like
instead of
With such an API, several changes can be written at once, providing a high level readable API similar to what we have in Zig.