40 #include <boost/functional/hash.hpp> 50 myClosure (
const Job *
const self)
53 ASSERT (self->jobClosure);
54 return *
static_cast<JobClosure*
> (
self->jobClosure);
61 using util::isSameObject;
73 NopJobFunctor::NopJobFunctor() { }
79 Job::triggerJob()
const 81 myClosure(
this).invokeJobOperation (parameter);
93 return myClosure(
this).getJobKind();
98 Job::usesClosure (
JobClosure const& otherClosure)
const 100 return isSameObject (myClosure(
this), otherClosure);
113 hash_value (
Job const& job)
115 return myClosure(&job).hash_value (job.parameter);
119 JobClosure::hash_value (JobParameter parameter)
const 121 HashVal hash = this->hashOfInstance (parameter.invoKey);
122 boost::hash_combine(hash,
typeid(*this).hash_code());
123 boost::hash_combine(hash, parameter.nominalTime);
134 forwardInvocation (lumiera_jobDefinition& jobDef)
136 Job& job =
static_cast<Job&
> (jobDef);
149 forwardInvocation(*jobDef).triggerJob();
156 return hash_value (forwardInvocation (*jobDef));
163 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