Lumiera
0.pre.03
»edit your freedom«
|
#include "steam/engine/weaving-pattern-builder.hpp"
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.
POL | allocation and context configuration policy |
N | maximum number of input and output slots |
FUN | function 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< EngineCtx > | ctx |
FUN | fun_ |
DataBuilder< POL, PortRef > | leadPorts |
StrView | nodeSymb_ |
StrView | portSpec_ |
std::vector< ProviderRef > | providers |
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 | |
MoveOnly & | operator= (MoveOnly &&)=delete |
MoveOnly & | operator= (MoveOnly const &)=delete |