26 #ifndef STEAM_ENGINE_JOB_TICKET_H 27 #define STEAM_ENGINE_JOB_TICKET_H 89 : prereqTicket{allocateTicket (node, allocateTicket)}
106 , invocationSeed(static_cast<JobClosure&>(func).buildInstanceID(seed))
133 return isnil (provision_.exitNode);
139 if (empty())
return false;
142 return not lumiera_invokey_eq (&util::unConst(provision_).invocationSeed, &empty)
143 and provision_.exitNode.isValid()
144 and util::and_all (provision_.prerequisites
145 ,[](
auto& pq){ return pq.prereqTicket.isValid(); });
158 : provision_.prerequisites.begin()
161 return prq.prereqTicket;
206 REQUIRE (not isnil (exitNode));
207 HashVal invoSeed = exitNode.getPipelineIdentity();
208 JobFunctor& func = exitNode.getInvocationFunctor();
209 Provision provisionSpec{func, exitNode, invoSeed};
210 for (
ExitNode const& preNode: exitNode.getPrerequisites())
211 provisionSpec.prerequisites.emplace(preNode, allocTicket);
212 return provisionSpec;
Basic set of definitions and includes commonly used together.
bool verifyInstance(JobFunctor &, InvocationInstanceID const &, Time) const
Helper for tests: verify the given invocation parameters match this JobTicket.
Intrusive single linked list, possibly taking ownership of node elements.
lumiera_uid * LUID
a Lumiera UID
Helper template(s) for creating Lumiera Forward Iterators.
Any copy and copy construction prohibited.
Effective top-level exit point to pull rendered data from the nodes network.
Steam-Layer implementation namespace root.
static JobTicket NOP
special »do nothing« JobTicket marker
Lumiera's internal time value datatype.
static InvocationInstanceID timeHash(Time, InvocationInstanceID const &)
Tag the precomputed invocation ID with the nominal frame time.
A top-level point in the render node network where data generation can be driven. ...
Another Lumiera Forward Iterator building block, based on incorporating a state type as »*State Core*...
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...
static Provision buildProvisionSpec(ExitNode const &, ALO &)
Intrusive single linked list with optional ownership.
Definition of a render job.
opaque ID attached to each individual job invocation.
size_t HashVal
a STL compatible hash value
Interface of the closure for frame rendering jobs.
Duration is the internal Lumiera time metric.
Individual frame rendering task, forwarding to a closure.
a family of time value like entities and their relationships.
auto transformIterator(IT const &src, FUN processingFunc)
Build a TransformIter: convenience free function shortcut, picking up the involved types automaticall...
Perform operations "for each element" of a collection.
auto getPrerequisites()
Core operation: iterate over the prerequisites, required to carry out a render operation based on thi...
execution plan for pulling a specific exit node.
Duration getExpectedRuntime()
Core operation: guess expected runtime for rendering.
Job createJobFor(Time nominalTime)
Core operation: build a concrete render job based on this blueprint.