|
welder 0.1.0
Bindings for annotated C++ types, from C++26 reflection
|
welder's binding entry point: the welder::welder struct. More...
#include <meta>#include <type_traits>#include <welder/carriage.hpp>#include <welder/concepts.hpp>#include <welder/naming.hpp>Go to the source code of this file.
Classes | |
| struct | welder::welder< B, Style, Carriage > |
| welder's binding entry point, parameterized on a rod. More... | |
Namespaces | |
| namespace | welder |
welder's binding entry point: the welder::welder struct.
welder's core walks a reflected type/namespace and decides what to bind (bind_traits.hpp) and whether each type can be represented (bindable.hpp); the reflection-driven traversal that orchestrates it — the carriage — lives in <welder/carriage.hpp>, and the rod contract every backend satisfies is the welder::rod concept in <welder/concepts.hpp>. Everything language-specific — how to register a class, method, property or module attribute — is delegated to a rod (a welding rod: the backend that lays down the bindings): a stateless policy type (welder::rods::pybind11::rod<>, …::nanobind::rod, …::sol2::rod) supplying a fixed set of emission primitives.
The public face of all of it is welder::welder<Rod> here: one struct, parameterized on the rod, whose static members run the reflection-driven binding at whichever stage of the usual hand-binding flow you want to automate (a single type, a namespace into an existing module, a namespace as a fresh submodule, or a whole module), each a one-line forward to the carriage.
Provide the vocabulary first — #include <welder/vocabulary.hpp> — then this header (each backend header includes it for you).
Definition in file welder.hpp.