32typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
34typedef struct TaskRequires_WeakRef TaskRequires_WeakRef;
51typedef struct TaskRequires_ClassIf {
56 uint32 (*state)(_In_
void* self,
ComplexTask* task);
57 int64 (*progress)(_In_
void* self);
58 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
59 bool (*release)(_In_
void* self,
ComplexTask* task);
60 void (*cancel)(_In_
void* self);
61 bool (*registerTask)(_In_
void* self, _In_
ComplexTask* task);
62} TaskRequires_ClassIf;
63extern TaskRequires_ClassIf TaskRequires_ClassIf_tmpl;
68 TaskRequires_ClassIf* _;
69 void* _is_TaskRequires;
79#define TaskRequires(inst) ((TaskRequires*)(unused_noeval((inst) && &((inst)->_is_TaskRequires)), (inst)))
80#define TaskRequiresNone ((TaskRequires*)NULL)
82typedef struct TaskRequires_WeakRef {
85 void* _is_TaskRequires_WeakRef;
86 void* _is_ObjInst_WeakRef;
90} TaskRequires_WeakRef;
91#define TaskRequires_WeakRef(inst) ((TaskRequires_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TaskRequires_WeakRef)), (inst)))
98#define taskrequiresState(self, task) (self)->_->state(TaskRequires(self), ComplexTask(task))
103#define taskrequiresProgress(self) (self)->_->progress(TaskRequires(self))
111#define taskrequiresTryAcquire(self, task) (self)->_->tryAcquire(TaskRequires(self), ComplexTask(task))
118#define taskrequiresRelease(self, task) (self)->_->release(TaskRequires(self), ComplexTask(task))
123#define taskrequiresCancel(self) (self)->_->cancel(TaskRequires(self))
131#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 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)