|
welder 0.1.0
Bindings for annotated C++ types, from C++26 reflection
|
The carriage: welder's reflection-driven traversal driver, kept separate from the welder::welder<> entry point (<welder/welder.hpp>) it feeds. More...
#include <array>#include <cstddef>#include <meta>#include <type_traits>#include <utility>#include <welder/bind_traits.hpp>#include <welder/bindable.hpp>#include <welder/concepts.hpp>#include <welder/doc.hpp>#include <welder/naming.hpp>#include <welder/reflect.hpp>Go to the source code of this file.
Classes | |
| struct | welder::detail::scoped_registration< Resolution, Scope > |
| The scope-aware registration oracle: Resolution widened with the member-alias registrations of one class. More... | |
| struct | welder::carriages::marker_resolution |
| Stitch-welding resolution: bind only where welder's markers say to. More... | |
| struct | welder::carriages::greedy_resolution< WeldProtected > |
| Tack-welding resolution: bind an unmarked library greedily. More... | |
| struct | welder::carriages::basic_carriage< Resolution > |
| A carriage: welder's reflection-driven traversal, parameterized on a Resolution (which markers it obeys). More... | |
Namespaces | |
| namespace | welder |
| namespace | welder::detail |
| The stored forms of the annotation vocabulary. | |
| namespace | welder::carriages |
Typedefs | |
| using | welder::stitch_welding_carriage = carriages::basic_carriage<carriages::marker_resolution> |
| The stitch-welding carriage (the default): binds only where welder's weld / policy / marks direct — intermittent, marker-driven, like a stitch weld. | |
| using | welder::tack_welding_carriage |
| The tack-welding carriage: binds an unmarked library greedily — every reflectable type / function / global, namespaces recursed, bases flattened — ignoring the weld markers, while still enforcing the bindability gate. | |
| using | welder::carriage = stitch_welding_carriage |
| The default carriage — an alias for welder::stitch_welding_carriage. | |
Functions | |
| template<class Resolution, std::meta::info Ns, std::meta::info Alias> | |
| consteval bool | welder::detail::sole_alias_of_target (lang L, policy_kind pol) |
| Is Alias the only participating alias in Ns welding its specialization? | |
| template<std::meta::info Alias, lang L, class Style, ent_kind Kind = ent_kind::class_> | |
| consteval const char * | welder::detail::alias_bound_name () |
| The bound name of the type welded through Alias (a namespace-scope alias to a specialization, or a member alias inside a welded class). | |
| consteval bool | welder::is_nested_type (std::meta::info type) |
| Is type declared at class scope — a nested (member) type? | |
| template<class Resolution> | |
| consteval bool | welder::detail::nested_type_registered (std::meta::info type, lang L) |
| The GATE side of the nested-type sweep: does class-scoped type register with its enclosing class's binding under Resolution? | |
| template<class Resolution, std::meta::info Outer, std::meta::info Alias> | |
| consteval bool | welder::detail::sole_member_alias_of_target (lang L, policy_kind pol) |
| Is Alias the only member alias of Outer whose participation would register its target? | |
| template<class Resolution> | |
| consteval bool | welder::detail::registered_by_member_alias (std::meta::info scope, std::meta::info type, lang L) |
| Does a participating member alias of scope name type — i.e. | |
The carriage: welder's reflection-driven traversal driver, kept separate from the welder::welder<> entry point (<welder/welder.hpp>) it feeds.
In welding, the carriage (or tractor) is the mechanism that drives the torch — fed by the rod — steadily along the joint. Here it is the entity that walks a reflected type or namespace and drives a welder::rod's emission primitives along it: it owns all the traversal and emission orchestration (base flattening, the bindability gate, name resolution, sessions), delegating only the which participates decisions to a resolution policy and the framework-specific emission to the rod.
Two resolutions and their carriage aliases ship: marker_resolution / welder::stitch_welding_carriage (the default — honor weld/policy/marks) and greedy_resolution / welder::tack_welding_carriage (ignore the markers, bind an unmarked library greedily). The seam is open: inject a custom basic_carriage<Resolution> as welder::welder's third template argument.
Provide the vocabulary first — #include <welder/vocabulary.hpp> — then this header (<welder/welder.hpp>, and each backend header, includes it for you).
Definition in file carriage.hpp.