36typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
38typedef struct TaskResource_WeakRef TaskResource_WeakRef;
44typedef struct TaskResource_ClassIf {
49 bool (*registerTask)(_In_
void* self,
ComplexTask* task);
50 bool (*canAcquire)(_In_
void* self,
ComplexTask* task);
51 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
52 void (*release)(_In_
void* self,
ComplexTask* task);
53} TaskResource_ClassIf;
54extern TaskResource_ClassIf TaskResource_ClassIf_tmpl;
59 TaskResource_ClassIf* _;
60 void* _is_TaskResource;
69#define TaskResource(inst) ((TaskResource*)(unused_noeval((inst) && &((inst)->_is_TaskResource)), (inst)))
70#define TaskResourceNone ((TaskResource*)NULL)
72typedef struct TaskResource_WeakRef {
75 void* _is_TaskResource_WeakRef;
76 void* _is_ObjInst_WeakRef;
80} TaskResource_WeakRef;
81#define TaskResource_WeakRef(inst) ((TaskResource_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TaskResource_WeakRef)), (inst)))
89#define taskresourceRegisterTask(self, task) (self)->_->registerTask(TaskResource(self), ComplexTask(task))
95#define taskresourceCanAcquire(self, task) (self)->_->canAcquire(TaskResource(self), ComplexTask(task))
102#define taskresourceTryAcquire(self, task) (self)->_->tryAcquire(TaskResource(self), ComplexTask(task))
108#define taskresourceRelease(self, task) (self)->_->release(TaskResource(self), ComplexTask(task))
#define saDeclarePtr(name)
CX Object System - Object-oriented programming in C.
Complex task with dependencies, scheduling, and resource management.
Abstract base for shared resources with exclusive access.