96#ifndef STEAM_ENGINE_PROC_NODE_H
97#define STEAM_ENGINE_PROC_NODE_H
125 class ProcNodeDiagnostic;
209 throw err::Logic{
_Fmt{
"Accessing node-port #%d, while only %d ports are defined."}
267 return 0 <
ports().size();
A front-end to support the buffer management within the render nodes.
Lumiera's internal time value datatype.
Handle for a buffer for processing data, abstracting away the actual implementation.
Interface: Description of the input and output ports, processing function and predecessor nodes for a...
Connectivity(Ports &&pr, Leads &&lr)
string getProcName()
generate a combined name for the node and the qualification of the port
HashVal getProcHash()
calculate an unique, stable and reproducible hash-key to identify the associated operation
PortDiagnostic watchLead(uint leadIdx)
PortDiagnostic(Port &thePort)
string getProcSpec()
generate a descriptive diagnostic Spec for the Turnout sitting behind this Port
bool verify_connected(Port &)
bool verify_connected(uint input, Port &)
lib::Several< PortRef > const & srcPorts()
friend bool operator!=(Port const &pl, Port const &pr)
virtual BuffHandle weave(TurnoutSystem &, OptionalBuff=std::nullopt)=0
friend bool operator==(Port const &pl, Port const &pr)
Port has reference semantics: all instances are distinct.
virtual ~Port()
this is an interface
Metadata to qualify a Port (and implicitly the enclosing Node).
string getPortSpec(uint portIdx)
generate a descriptive diagnostic Spec for the designated Turnout
string getNodeSpec()
generate a descriptive Spec of this ProcNode for diagnostics
PortDiagnostic watchPort(uint portIdx)
HashVal getNodeHash()
calculate an unique hash-key to designate this node
string getNodeName()
show the node's descriptive name
ProcNodeDiagnostic(ProcNode &theNode)
ProcNodeDiagnostic watchLead(uint leadIdx)
HashVal getPortHash(uint portIdx)
calculate an unique, stable and reproducible hash-key to identify the Turnout
Key abstraction of the Render Engine: A Data processing Node.
Port & getPort(uint portIdx)
friend bool operator!=(ProcNode const &nl, ProcNode const &nr)
ProcNode(Connectivity &&con)
friend bool operator==(ProcNode const &nl, ProcNode const &nr)
ProcNode has reference semantics: all instances are distinct.
BuffHandle pull(uint portIdx, BuffHandle output, Time nomTime, ProcessKey procKey)
Engine Core operation: render and pull output from this node.
Communication hub to coordinate and activate the »Render Node Network« performance.
Helper for connectivity-checks in tests.
ProcNodeDiagnostic anchor
_ConCheck to(ProcNode &n)
_ConCheck atPort(uint idx)
_ConCheck asSrc(uint idx)
_ConCheck asLead(uint idx)
_ConCheck toLead(uint idx)
Types marked with this mix-in may be moved but not copied.
Any copy and copy construction prohibited.
A front-end for using printf-style formatting.
Lumiera error handling (C++ interface).
Hash value types and utilities.
#define LUMIERA_MAX_ORDINAL_NUMBER
size_t HashVal
a STL compatible hash value
LumieraError< LERR_(LOGIC)> Logic
std::reference_wrapper< ProcNode > ProcNodeRef
ProcNodeDiagnostic watch(ProcNode &theNode)
const size_t MAX_NODE_ARG
arbitrary safety limit on fain-in / fan-out
_ConCheck is_linked(ProcNode &n)
start a DSL expression to verify node connectivity.
std::optional< BuffHandle > OptionalBuff
std::reference_wrapper< Port > PortRef
Steam-Layer implementation namespace root.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
Abstraction interface: array-like random access by subscript.
A actual state of a rendering evaluation parametrised for a single job.