Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
NodeBuilder< POL, DAT > Class Template Reference

#include "steam/engine/node-builder.hpp"

Description

template<class POL, class DAT = PatternDataAnchor>
class steam::engine::NodeBuilder< POL, DAT >

Top-level builder to create a single Render Node.

Note
Template Parameters
POLpolicy to control allocation etc...
DATpattern data structure built during chained NodeBuilder invocations

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

Public Member Functions

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)
 
PortBuilderRoot< POL, DAT > preparePort ()
 recursively enter detailed setup of a single processing port
 
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
 
Connectivity build ()
 Terminal: complete the ProcNode Connectivity defined thus far.
 

Friends

template<class P , class D0 >
class NodeBuilder
 

Protected Attributes

StrView symbol_
 
LeadRefs leads_
 
DAT patternData_
 

Private Types

using PortData = DataBuilder< POL, Port >
 
using LeadRefs = DataBuilder< POL, ProcNodeRef >
 

Additional Inherited Members

- Private Member Functions inherited from MoveOnly
 ~MoveOnly ()=default
 
 MoveOnly ()=default
 
 MoveOnly (MoveOnly &&)=default
 
 MoveOnly (MoveOnly const &)=delete
 
MoveOnlyoperator= (MoveOnly &&)=delete
 
MoveOnlyoperator= (MoveOnly const &)=delete
 

Constructor & Destructor Documentation

◆ NodeBuilder() [1/2]

template<class POL , class DAT = PatternDataAnchor>
template<typename... INIT>
NodeBuilder ( StrView  nodeSymbol,
INIT &&...  alloInit 
)
inline

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

◆ NodeBuilder() [2/2]

template<class POL , class DAT = PatternDataAnchor>
template<class BUILD , uint siz, class D0 >
NodeBuilder ( NodeBuilder< POL, D0 > &&  pred,
SizMark< siz >  ,
BUILD &&  entryBuilder 
)
inline

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

Member Typedef Documentation

◆ PortData

template<class POL , class DAT = PatternDataAnchor>
using PortData = DataBuilder<POL, Port>
private

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

◆ LeadRefs

template<class POL , class DAT = PatternDataAnchor>
using LeadRefs = DataBuilder<POL, ProcNodeRef>
private

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

Member Function Documentation

◆ addLead()

template<class POL , class DAT = PatternDataAnchor>
NodeBuilder && addLead ( ProcNode const &  lead)
inline

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

References NodeBuilder< POL, DAT >::leads_.

◆ preparePort()

template<class POL , class DAT >
PortBuilderRoot< POL, DAT > preparePort ( )
inline

recursively enter detailed setup of a single processing port

Remarks
while logically this builder-function descends into the definition of a port, for the implementation we wrap the existing NodeBuilder and layer a PortBuilder subclass „on top“ — thereby shadowing the enclosed original builder temporarily; the terminal builder operation PortBuilder::completePort() will unwrap and return the original NodeBuilder.

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

◆ withAllocator()

template<class POL , class DAT = PatternDataAnchor>
template<template< typename > class ALO = std::void_t, typename... INIT>
auto withAllocator ( INIT &&...  alloInit)
inline

cross-builder function to specify usage of a dedicated node allocator

Template Parameters
ALO(optional) spec for the allocator to use
INIT(optional) initialisation arguments for the allocator
Remarks
this is a front-end to the extension point for allocator specification exposed through lib::SeveralBuilder::withAllocator(). The actual meaning of the given parameters and the choice of the actual allocator happens through resolution of partial template specialisations of the extension point lib::allo::SetupSeveral. Some notable examples
  • withAllocator<ALO>() attaches to a monostate allocator type.
  • withAllocator<ALO> (ALO<X> allo) uses a C++ standard allocator instance allo, dedicated to produce objects of type X
  • withAllocator (AllocationCluster&) attaches to a specific AllocationCluster; this is the most relevant usage pattern.

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

References NodeBuilder< POL, DAT >::symbol_.

◆ build()

template<class POL , class DAT = PatternDataAnchor>
Connectivity build ( )
inline

Terminal: complete the ProcNode Connectivity defined thus far.

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

References NodeBuilder< POL, DAT >::leads_, and NodeBuilder< POL, DAT >::patternData_.

Referenced by PortBuilder< POL, DAT, WAB >::completePort().

+ Here is the caller graph for this function:

Member Data Documentation

◆ symbol_

template<class POL , class DAT = PatternDataAnchor>
StrView symbol_
protected

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

Referenced by NodeBuilder< POL, DAT >::withAllocator().

◆ leads_

template<class POL , class DAT = PatternDataAnchor>
LeadRefs leads_
protected

◆ patternData_

template<class POL , class DAT = PatternDataAnchor>
DAT patternData_
protected

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

Referenced by NodeBuilder< POL, DAT >::build().

Friends And Related Symbol Documentation

◆ NodeBuilder

template<class POL , class DAT = PatternDataAnchor>
template<class P , class D0 >
friend class NodeBuilder
friend

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

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

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