|
| static consteval const char * | special_method_name (std::meta::info) |
| | No operators are emitted (they are covered as virtuals when overridable), so none are "special".
|
| template<class T, auto Bases, std::size_t... I> |
| static class_handle | make_class (module_type &m, const char *, const char *, std::index_sequence< I... >) |
| | Emit T's trampoline iff it has overridable virtuals and is not a whole-type bind_flat.
|
| template<class T, std::meta::info Decl, auto Bases, std::size_t... I> |
| static class_handle | make_class (module_type &m, const char *, const char *, std::index_sequence< I... >) |
| | The declaring-entity-aware form the carriage prefers (see bind_type): Decl is the spelling of T — ^^T for a directly-declared class, or the namespace-scope alias through which a class-template specialization was welded.
|
| template<class T, auto Ctors, bool HasDefault, bool Aggregate> |
| static void | add_constructors (class_handle &) |
| template<std::meta::info, class = ::welder::naming::none> |
| static void | add_field (class_handle &) |
| template<auto Fns, class = ::welder::naming::none> |
| static void | add_method (class_handle &) |
| template<auto Fns, class = ::welder::naming::none> |
| static void | add_static_method (class_handle &) |
| template<auto Fns> |
| static void | add_operator (class_handle &) |
| template<class E> |
| static enum_handle | make_enum (module_type &, const char *, const char *) |
| template<std::meta::info, class = ::welder::naming::none> |
| static void | add_enumerator (enum_handle &) |
| template<class E> |
| static void | finish_enum (enum_handle &) |
| static session | open_module (module_type &) |
| static void | set_module_doc (module_type &, const char *) |
| template<auto Fns, class = ::welder::naming::none> |
| static void | add_function (module_type &, const char *=nullptr) |
| template<std::meta::info, class = ::welder::naming::none> |
| static void | add_variable (module_type &, session &, const char *=nullptr) |
| static module_type | add_submodule (module_type &m, const char *name) |
| | Recurse into a nested namespace, carrying the document handle through.
|
| static void | close_module (module_type &, session &) |
| template<std::meta::info Ns, class Style = ::welder::naming::none> |
| static void | generate (std::ostream &os) |
| | Emit the trampoline header for the welded types in namespace Ns to os.
|
The trampoline-generator rod: a stateless welder::rod that, instead of registering a live module, appends a compilable trampoline struct (plus its trampoline_for registration) for every welded virtual type it visits.
Only make_class does work — it emits the trampoline for a type carrying overridable virtuals (skipping a whole-type bind_flat). Every other primitive is a no-op: members, constructors, enums, free functions and variables contribute no trampolines.
Definition at line 56 of file rod.hpp.
template<std::meta::info Ns, class Style = ::welder::naming::none>
| void welder::rods::trampolines::rod::generate |
( |
std::ostream & | os | ) |
|
|
inlinestatic |
Emit the trampoline header for the welded types in namespace Ns to os.
Runs welder's generic driver over Ns with this text-emitting backend, so the header carries a trampoline for exactly the welded virtual types the Python rods bind — inherited virtuals covered, bind_flat honoured. Style is accepted for signature parity with the other rods but unused (a trampoline needs no target-language names).
- Template Parameters
-
| Ns | a reflection of the (top-level) namespace to scan. |
- Parameters
-
| os | the stream to write the finished header to. |
Definition at line 178 of file rod.hpp.
References welder::doc().
template<class T, std::meta::info Decl, auto Bases, std::size_t... I>
| class_handle welder::rods::trampolines::rod::make_class |
( |
module_type & | m, |
|
|
const char * | , |
|
|
const char * | , |
|
|
std::index_sequence< I... > | ) |
|
inlinestatic |
template<class T, auto Bases, std::size_t... I>
| class_handle welder::rods::trampolines::rod::make_class |
( |
module_type & | m, |
|
|
const char * | , |
|
|
const char * | , |
|
|
std::index_sequence< I... > | ) |
|
inlinestatic |