49namespace welder::inline v0::rods::python {
98 return !std::meta::annotations_of_with_type(type, ^^
trampoline_spec).empty();
119 for (
auto mem : std::meta::members_of(std::meta::parent_of(base),
120 std::meta::access_context::current())) {
121 if (mem == base || !std::meta::is_type(mem) || !
is_trampoline(mem))
124 std::meta::bases_of(mem, std::meta::access_context::current())) {
125 if (std::meta::dealias(std::meta::type_of(b)) ==
126 std::meta::dealias(base)) {
127 if (result.
type != std::meta::info{})
158 scanned.type != std::meta::info{})
180 auto name{std::meta::identifier_of(vfn)};
181 auto sig{std::meta::type_of(vfn)};
183 std::meta::members_of(tramp, std::meta::access_context::unchecked())) {
184 if (std::meta::is_function(m) && !std::meta::is_special_member_function(m) &&
185 std::meta::identifier_of(m) == name && std::meta::type_of(m) == sig) {
welder's consteval diagnostics, collected in one place: every hand-rolled compile-time error the libr...
consteval bool is_trampoline(std::meta::info type)
Does type carry a trampoline mark?
consteval scanned_trampoline scanned_trampoline_of(std::meta::info base)
Find the trampoline-annotated class deriving directly from base by scanning base's enclosing namespac...
consteval bool trampoline_covers(std::meta::info type, std::meta::info tramp)
Does tramp override every virtual method of type — inherited ones included?
constexpr trampoline_spec trampoline
Mark a class as the trampoline for the base it derives from — the annotation form of trampoline_for.
consteval bool declares_override(std::meta::info tramp, std::meta::info vfn)
Does trampoline declare an override for the virtual method vfn?
consteval std::meta::info construction_type_of()
The type welder constructs when binding T: its registered/annotated trampoline if one exists,...
constexpr std::meta::info trampoline_for
The trampoline subclass registered for T, or a null reflection if none.
consteval bool has_virtual_methods(std::meta::info type)
Does type declare or inherit any overridable virtual method?
consteval std::vector< std::meta::info > overridable_virtuals(std::meta::info type)
Every overridable virtual slot of type — the ones welder routes through a trampoline — folding in vir...
The outcome of scanning a base's namespace for its trampoline-annotated subclass.
bool ambiguous
true iff more than one candidate was found.
std::meta::info type
the trampoline, or a null reflection if none found.
The stored form of a trampoline mark (a plain tag — it carries no state).
welder's backend-neutral virtual-slot machinery: which virtual member functions of a type are overrid...
welder's annotation vocabulary — the single header a consuming TU includes to get the markers it atta...