39typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
41typedef struct TaskResource_WeakRef TaskResource_WeakRef;
44#define _sti_TaskResource _sti_object
45#define SType_TaskResource TaskResource*
46#define STStorageType_TaskResource TaskResource*
47#define STypeArg_TaskResource(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TaskResource, val))
48#define STypeArgPtr_TaskResource(type, val) (stgeneric*)objInstCheckClassPtr(TaskResource, val)
49#define STypeCheckedArg_TaskResource(type, val) stType(type), stArg(type, val)
50#define STypeCheckedPtrArg_TaskResource(type, val) stType(type), stArgPtr(type, val)
54typedef struct TaskResource_ClassIf {
59 bool (*registerTask)(_In_
void* self,
ComplexTask* task);
60 bool (*canAcquire)(_In_
void* self,
ComplexTask* task);
61 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
62 void (*release)(_In_
void* self,
ComplexTask* task);
63} TaskResource_ClassIf;
64extern TaskResource_ClassIf TaskResource_ClassIf_tmpl;
69 TaskResource_ClassIf* _;
70 void* _is_TaskResource;
79#define TaskResource(inst) objInstCheckClass(TaskResource, inst)
80#define TaskResourceNone ((TaskResource*)NULL)
82typedef struct TaskResource_WeakRef {
85 void* _is_TaskResource_WeakRef;
86 void* _is_ObjInst_WeakRef;
90} TaskResource_WeakRef;
91#define TaskResource_WeakRef(inst) objWeakRefCheckClass(TaskResource, inst)
99#define taskresourceRegisterTask(self, task) (self)->_->registerTask(TaskResource(self), ComplexTask(task))
105#define taskresourceCanAcquire(self, task) (self)->_->canAcquire(TaskResource(self), ComplexTask(task))
112#define taskresourceTryAcquire(self, task) (self)->_->tryAcquire(TaskResource(self), ComplexTask(task))
118#define taskresourceRelease(self, task) (self)->_->release(TaskResource(self), ComplexTask(task))
#define saDeclarePtr(name)
CX Struct System - Introspectable, serializable POD structures in C.
CX Object System - Object-oriented programming in C.
Complex task with dependencies, scheduling, and resource management.
Abstract base for shared resources with exclusive access.