Lumiera  0.pre.03
»edit your freedom«
WeavingBuilder< POL, N, FUN > Struct Template Reference

#include "steam/engine/weaving-pattern-builder.hpp"

Description

template<class POL, uint N, class FUN>
struct steam::engine::WeavingBuilder< POL, N, FUN >

A low-level Builder to prepare and adapt for a specific node invocation.

In this context, »weaving« refers to the way parameters and results of an processing function are provided, combined and forwarded within the setup for an actual Render Node invocation. When the invocation happens, a kind of preconfigured blue print or invocation plan is executed; the purpose of the build at »Level-2« (≙the purpose of this code) is to preconfigure this invocation scheme. Using a low level builder as controlled by the actual NodeBuilder and PortBuilder allows to introduce extension points and helps to abstract away internal technical details of the invocation.

Template Parameters
POLallocation and context configuration policy
Nmaximum number of input and output slots
FUNfunction or invocation adapter to invoke

Definition at line 368 of file weaving-pattern-builder.hpp.

Public Types

using FunSpec = _ProcFun< FUN >
 
using ProviderRef = std::reference_wrapper< BufferProvider >
 
using TurnoutWeaving = Turnout< SimpleDirectInvoke< N, FUN > >
 
using TypeMarker = std::function< BuffDescr(BufferProvider &)>
 

Public Member Functions

template<typename... INIT>
 WeavingBuilder (FUN &&init, StrView nodeSymb, StrView portSpec, INIT &&...alloInit)
 
template<class BU >
WeavingBuilder && appendBufferTypes (uint cnt)
 
WeavingBuilder && attachToLeadPort (ProcNode &lead, uint portNr)
 
auto build ()
 
WeavingBuilder && connectRemainingInputs (DataBuilder< POL, ProcNodeRef > &knownLeads, uint defaultPort)
 
WeavingBuilder && fillRemainingBufferTypes ()
 
WeavingBuilder && selectResultSlot (uint idx)
 

Static Public Attributes

static constexpr uint FAN_I = FunSpec::FAN_I
 
static constexpr uint FAN_O = FunSpec::FAN_O
 
static constexpr SizMark< sizeof(TurnoutWeaving)> sizMark {}
 

Public Attributes

std::vector< TypeMarker > buffTypes
 
Depend< EngineCtxctx
 
FUN fun_
 
DataBuilder< POL, PortRefleadPorts
 
StrView nodeSymb_
 
StrView portSpec_
 
std::vector< ProviderRefproviders
 
uint resultSlot {0}
 

Private Member Functions

void maybeFillDefaultProviders (size_t maxSlots)
 

Additional Inherited Members

- Protected Member Functions inherited from MoveOnly
 MoveOnly (MoveOnly &&)=default
 
 MoveOnly (MoveOnly const &)=delete
 
MoveOnlyoperator= (MoveOnly &&)=delete
 
MoveOnlyoperator= (MoveOnly const &)=delete
 
+ Inheritance diagram for WeavingBuilder< POL, N, FUN >:
+ Collaboration diagram for WeavingBuilder< POL, N, FUN >:

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