26#ifndef STEAM_ENGINE_JOB_TICKET_H
27#define STEAM_ENGINE_JOB_TICKET_H
139 if (
empty())
return false;
145 ,[](
auto& pq){ return pq.prereqTicket.isValid(); });
161 return prq.prereqTicket;
203 inline JobTicket::Provision
206 REQUIRE (not isnil (exitNode));
209 Provision provisionSpec{func, exitNode, invoSeed};
211 provisionSpec.prerequisites.emplace(preNode, allocTicket);
212 return provisionSpec;
Intrusive single linked list, possibly taking ownership of node elements.
IterStateWrapper< IterationState, N & > iterator
Duration is the internal Lumiera time metric.
Lumiera's internal time value datatype.
A top-level point in the render node network where data generation can be driven.
HashVal getPipelineIdentity() const
auto getPrerequisites() const
JobFunctor & getInvocationFunctor() const
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.
bool verifyInstance(JobFunctor &, InvocationInstanceID const &, Time) const
Helper for tests: verify the given invocation parameters match this JobTicket.
static Provision buildProvisionSpec(ExitNode const &, ALO &)
static JobTicket NOP
special »do nothing« JobTicket marker
static InvocationInstanceID timeHash(Time, InvocationInstanceID const &)
Tag the precomputed invocation ID with the nominal frame time.
JobTicket(ExitNode const &exitNode, ALO &allocator)
auto getPrerequisites()
Core operation: iterate over the prerequisites, required to carry out a render operation based on thi...
Any copy and copy construction prohibited.
Interface of the closure for frame rendering jobs.
Individual frame rendering task, forwarding to a closure.
Effective top-level exit point to pull rendered data from the nodes network.
Helper template(s) for creating Lumiera Forward Iterators.
int lumiera_invokey_eq(void *l, void *r)
Definition of a render job.
opaque ID attached to each individual job invocation.
Intrusive single linked list with optional ownership.
auto transformIterator(IT const &src, FUN processingFunc)
Build a TransformIter: convenience free function shortcut, picking up the involved types automaticall...
size_t HashVal
a STL compatible hash value
lumiera_uid * LUID
a Lumiera UID
Steam-Layer implementation namespace root.
bool and_all(IT i, IT end, FUN predicate)
All quantification: check if all elements of a collection satisfy the given predicate.
OBJ * unConst(const OBJ *)
shortcut to save some typing when having to define const and non-const variants of member functions
bool isnil(lib::time::Duration const &dur)
Basic set of definitions and includes commonly used together.
Prerequisite(ExitNode const &node, ALO &allocateTicket)
Prerequisites prerequisites
InvocationInstanceID invocationSeed
ExitNode const & exitNode
Provision(JobFunctor &func, ExitNode const &node, HashVal seed=0)
a family of time value like entities and their relationships.
Perform operations "for each element" of a collection.
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...