35typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
37typedef struct TaskRequires_WeakRef TaskRequires_WeakRef;
40#define _sti_TaskRequires _sti_object
41#define SType_TaskRequires TaskRequires*
42#define STStorageType_TaskRequires TaskRequires*
43#define STypeArg_TaskRequires(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TaskRequires, val))
44#define STypeArgPtr_TaskRequires(type, val) (stgeneric*)objInstCheckClassPtr(TaskRequires, val)
45#define STypeCheckedArg_TaskRequires(type, val) stType(type), stArg(type, val)
46#define STypeCheckedPtrArg_TaskRequires(type, val) stType(type), stArgPtr(type, val)
61typedef struct TaskRequires_ClassIf {
66 uint32 (*state)(_In_
void* self,
ComplexTask* task);
67 int64 (*progress)(_In_
void* self);
68 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
69 bool (*release)(_In_
void* self,
ComplexTask* task);
70 void (*cancel)(_In_
void* self);
71 bool (*registerTask)(_In_
void* self, _In_
ComplexTask* task);
72} TaskRequires_ClassIf;
73extern TaskRequires_ClassIf TaskRequires_ClassIf_tmpl;
78 TaskRequires_ClassIf* _;
79 void* _is_TaskRequires;
89#define TaskRequires(inst) objInstCheckClass(TaskRequires, inst)
90#define TaskRequiresNone ((TaskRequires*)NULL)
92typedef struct TaskRequires_WeakRef {
95 void* _is_TaskRequires_WeakRef;
96 void* _is_ObjInst_WeakRef;
100} TaskRequires_WeakRef;
101#define TaskRequires_WeakRef(inst) objWeakRefCheckClass(TaskRequires, inst)
108#define taskrequiresState(self, task) (self)->_->state(TaskRequires(self), ComplexTask(task))
113#define taskrequiresProgress(self) (self)->_->progress(TaskRequires(self))
121#define taskrequiresTryAcquire(self, task) (self)->_->tryAcquire(TaskRequires(self), ComplexTask(task))
128#define taskrequiresRelease(self, task) (self)->_->release(TaskRequires(self), ComplexTask(task))
133#define taskrequiresCancel(self) (self)->_->cancel(TaskRequires(self))
141#define taskrequiresRegisterTask(self, task) (self)->_->registerTask(TaskRequires(self), ComplexTask(task))
#define saDeclarePtr(name)
TaskRequiresStateEnum
Possible states of a requirement.
@ TASK_Requires_Wait
Not satisfied yet, but may be in the future (task should wait)
@ TASK_Requires_Acquire
Will be satisfied only if tryAcquire() succeeds.
@ TASK_Requires_Fail_Permanent
Cannot be satisfied, task should fail.
@ TASK_Requires_Ok
Currently satisfied, but may change (check again later)
@ TASK_Requires_Ok_Permanent
Permanently satisfied, can be removed from checks.
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 class for task requirements (dependencies, resources, gates).
int64 expires
Time after which requirement times out and fails (0 = no timeout)