welder 0.1.0
Bindings for annotated C++ types, from C++26 reflection
Loading...
Searching...
No Matches
welder.hpp File Reference

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>
Include dependency graph for welder.hpp:
This graph shows which files directly or indirectly include this file:

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

Detailed Description

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.