31 #include <boost/functional/hash.hpp> 41 myClosure (
const Job *
const self)
44 ASSERT (self->jobClosure);
45 return *
static_cast<JobClosure*
> (
self->jobClosure);
52 using util::isSameObject;
64 NopJobFunctor::NopJobFunctor() { }
70 Job::triggerJob()
const 72 myClosure(
this).invokeJobOperation (parameter);
84 return myClosure(
this).getJobKind();
89 Job::usesClosure (
JobClosure const& otherClosure)
const 91 return isSameObject (myClosure(
this), otherClosure);
104 hash_value (
Job const& job)
106 return myClosure(&job).hash_value (job.parameter);
110 JobClosure::hash_value (JobParameter parameter)
const 112 HashVal hash = this->hashOfInstance (parameter.invoKey);
113 boost::hash_combine(hash,
typeid(*this).hash_code());
114 boost::hash_combine(hash, parameter.nominalTime);
125 forwardInvocation (lumiera_jobDefinition& jobDef)
127 Job& job =
static_cast<Job&
> (jobDef);
140 forwardInvocation(*jobDef).triggerJob();
147 return hash_value (forwardInvocation (*jobDef));
154 lumiera_invokey_eq (
void* l,
void* r)
void lumiera_job_invoke(LumieraJobDefinition jobDef)
trigger execution of a specific job, assuming availability of all prerequisites
Generic implementation of a JobFunctor to perform no calculations.
virtual ~JobFunctor()
this is an interface
Lumiera unique object identifier.
size_t lumiera_job_get_hash(LumieraJobDefinition jobDef)
calculate a hash value based on the Job's identity.
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...
JobKind getKind() const
find out about the classification of this job.
int lumiera_uid_eq(const lumiera_uid *luida, const lumiera_uid *luidb)
Test 2 luid's for equality.
Definition of a render job.
size_t HashVal
a STL compatible hash value
Interface of the closure for frame rendering jobs.
Individual frame rendering task, forwarding to a closure.
Vault-Layer implementation namespace root.
virtual ~JobClosure()
this is an interface