Lumiera  0.pre.03
»edit your freedom«
PortBuilderRoot< POL, DAT > Class Template Reference

Description

template<class POL, class DAT>
class steam::engine::PortBuilderRoot< POL, DAT >

Definition at line 137 of file node-builder.hpp.

Public Member Functions

template<class ADA , typename... ARGS>
auto adaptInvocation (ARGS &&...args)
 specify an InvocationAdapter to use explicitly. More...
 
NodeBuilder< POL, DAT > completePort ()
 
template<typename FUN >
auto invoke (StrView portSpec, FUN fun)
 setup standard wiring to adapt the given processing function. More...
 

Private Member Functions

 PortBuilderRoot (NodeBuilder< POL > &&anchor)
 

Additional Inherited Members

- Protected Member Functions inherited from NodeBuilder< POL, DAT >
template<typename... INIT>
 NodeBuilder (StrView nodeSymbol, INIT &&...alloInit)
 
template<class BUILD , uint siz, class D0 >
 NodeBuilder (NodeBuilder< POL, D0 > &&pred, SizMark< siz >, BUILD &&entryBuilder)
 
NodeBuilder addLead (ProcNode const &lead)
 
Connectivity build ()
 Terminal: complete the ProcNode Connectivity defined thus far.
 
PortBuilderRoot< POL, DAT > preparePort ()
 recursively enter detailed setup of a single processing port More...
 
template<template< typename > class ALO = std::void_t, typename... INIT>
auto withAllocator (INIT &&...alloInit)
 cross-builder function to specify usage of a dedicated node allocator More...
 
- Protected Attributes inherited from NodeBuilder< POL, DAT >
LeadRefs leads_
 
DAT patternData_
 
StrView symbol_
 

Member Function Documentation

◆ invoke()

auto invoke ( StrView  portSpec,
FUN  fun 
)

setup standard wiring to adapt the given processing function.

Returns
a PortBuilder specialised to wrap the given FUN
Parameters
qualifiera semantic distinction of the implementation function
funinvocation of the actual data processing operation.
Remarks
  • a »weaving pattern« is applied for the actual implementation, which amounts to a specific style how to route data input and output and how to actually integrate with the underlying media handling library, which exposes the processing functionality.
  • the standard case of this connectivity is to associate input and output connections directly with the »parameter slots« of the processing function; a function suitable for this pattern takes two arguments (input, output) — each of which is a std::array of buffer pointers, corresponding to the »parameter slots«
  • what is bound as FUN here thus typically is either an adapter function provided by the media-library plug-in, or it is a lambda directly invoking implementation functions of the underlying library, using a buffer type (size) suitable for this library and for the actual media frame data to be processed.
  • the fun is deliberately taken by-value and then moved into a »prototype copy« within the generated Turnout, from which an actual copy is drawn anew for each node invocation.
  • notably this implies that the implementation code of a lambda will be inlined into the actual invocation call, while possibly creating a copy of value-captured closure data; this arrangement aims at exposing the actual invocation for the optimiser.

Definition at line 406 of file node-builder.hpp.

◆ adaptInvocation()

auto adaptInvocation ( ARGS &&...  args)

specify an InvocationAdapter to use explicitly.

+ Inheritance diagram for PortBuilderRoot< POL, DAT >:
+ Collaboration diagram for PortBuilderRoot< POL, DAT >:

The documentation for this class was generated from the following file: