51 #ifndef STEAM_ENGINE_TURNOUT_H 52 #define STEAM_ENGINE_TURNOUT_H 117 using Feed =
typename INVO::Feed;
119 static_assert (_verify_usable_as_InvocationAdapter<Feed>());
127 template<
typename...ARGS>
132 : INVO{forward<ARGS>(args)...}
135 , resultSlot{resultIdx}
142 return INVO::buildFeed();
148 for (uint i=0; i<leadPort.size(); ++i)
150 BuffHandle inputData = leadPort[i].get().weave (turnoutSys);
151 feed.inBuff.createAt(i, move(inputData));
156 shed (Feed& feed, OptionalBuff outBuff)
158 for (uint i=0; i<outTypes.size(); ++i)
161 i == resultSlot and outBuff? *outBuff
162 : outTypes[i].lockBuffer();
163 feed.outBuff.createAt(i, move(resultData));
165 feed.connect (leadPort.size(),outTypes.size());
177 for (uint i=0; i<leadPort.size(); ++i)
179 feed.inBuff[i].release();
181 for (uint i=0; i<outTypes.size(); ++i)
183 feed.outBuff[i].emit();
185 feed.outBuff[i].release();
187 ENSURE (resultSlot < INVO::MAX_SIZ,
"invalid result buffer configured.");
188 return feed.outBuff[resultSlot];
207 using Feed =
typename PAT::Feed;
210 template<
typename...INIT>
213 , PAT{forward<INIT> (init)...}
224 Feed feed = PAT::mount();
225 PAT::pull(feed, turnoutSys);
226 PAT::shed(feed, outBuff);
228 return PAT::fix (feed);
Basic set of definitions and includes commonly used together.
Processing structure to activate a Render Node and produce result data.
SimpleWeavingPattern(Several< PortRef > &&pr, Several< BuffDescr > &&dr, uint resultIdx, ARGS &&...args)
forwarding-ctor to provide the detailed input/output connections
Standard implementation for a Weaving Pattern to connect the input and output data feeds (buffers) in...
#define ASSERT_MEMBER_FUNCTOR(_EXPR_, _SIG_)
Macro for a compile-time check to verify some member is present and comprises something invokable wit...
Communication hub to coordinate and activate the »Render Node Network« performance.
Steam-Layer implementation namespace root.
Abstraction interface: array-like random access by subscript.
Metaprogramming tools for transforming functor types.
Abstraction: Fixed array of elements.
Interface to the processing nodes and the render nodes network.
BuffHandle weave(TurnoutSystem &turnoutSys, OptionalBuff outBuff=std::nullopt) override
Entrance point to the next recursive step of media processing.
Handle for a buffer for processing data, abstracting away the actual implementation.
THe actual state of a frame rendering evaluation parametrised for a single job.
constexpr bool _verify_usable_as_InvocationAdapter()
Definition to emulate a Concept for the Invocation Adapter.