25typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
27typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
29typedef struct TaskRequiresResource_WeakRef TaskRequiresResource_WeakRef;
33typedef struct TaskRequiresResource_ClassIf {
38 uint32 (*state)(_In_
void* self,
ComplexTask* task);
39 int64 (*progress)(_In_
void* self);
40 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
41 bool (*release)(_In_
void* self,
ComplexTask* task);
42 void (*cancel)(_In_
void* self);
43 bool (*registerTask)(_In_
void* self, _In_
ComplexTask* task);
44} TaskRequiresResource_ClassIf;
45extern TaskRequiresResource_ClassIf TaskRequiresResource_ClassIf_tmpl;
50 TaskRequiresResource_ClassIf* _;
51 void* _is_TaskRequiresResource;
52 void* _is_TaskRequires;
64#define TaskRequiresResource(inst) ((TaskRequiresResource*)(unused_noeval((inst) && &((inst)->_is_TaskRequiresResource)), (inst)))
65#define TaskRequiresResourceNone ((TaskRequiresResource*)NULL)
67typedef struct TaskRequiresResource_WeakRef {
70 void* _is_TaskRequiresResource_WeakRef;
71 void* _is_TaskRequires_WeakRef;
72 void* _is_ObjInst_WeakRef;
76} TaskRequiresResource_WeakRef;
77#define TaskRequiresResource_WeakRef(inst) ((TaskRequiresResource_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TaskRequiresResource_WeakRef)), (inst)))
85#define taskrequiresresourceCreate(res) TaskRequiresResource_create(TaskResource(res))
88#define taskrequiresresourceState(self, task) (self)->_->state(TaskRequiresResource(self), ComplexTask(task))
90#define taskrequiresresourceProgress(self) (self)->_->progress(TaskRequiresResource(self))
92#define taskrequiresresourceTryAcquire(self, task) (self)->_->tryAcquire(TaskRequiresResource(self), ComplexTask(task))
94#define taskrequiresresourceRelease(self, task) (self)->_->release(TaskRequiresResource(self), ComplexTask(task))
96#define taskrequiresresourceCancel(self) (self)->_->cancel(TaskRequiresResource(self))
98#define taskrequiresresourceRegisterTask(self, task) (self)->_->registerTask(TaskRequiresResource(self), ComplexTask(task))
#define saDeclarePtr(name)
#define _objfactory_guaranteed
CX Object System - Object-oriented programming in C.
Complex task with dependencies, scheduling, and resource management.
Requirement for exclusive access to a shared resource.
int64 expires
Time after which requirement times out and fails (0 = no timeout)
bool owned
True if resource has been acquired by this requirement.
TaskResource * res
Resource to acquire.
Abstract base for shared resources with exclusive access.
Abstract base class for task requirements.
Abstract base class for shared resources.