26typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
27typedef struct TaskQueue TaskQueue;
28typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
29typedef struct TQWorker TQWorker;
30typedef struct TQWorker_WeakRef TQWorker_WeakRef;
33typedef struct TaskRequiresTask_WeakRef TaskRequiresTask_WeakRef;
37typedef struct TaskRequiresTask_ClassIf {
42 uint32 (*state)(_In_
void* self,
ComplexTask* task);
43 int64 (*progress)(_In_
void* self);
44 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
45 bool (*release)(_In_
void* self,
ComplexTask* task);
46 void (*cancel)(_In_
void* self);
47 bool (*registerTask)(_In_
void* self, _In_
ComplexTask* task);
48} TaskRequiresTask_ClassIf;
49extern TaskRequiresTask_ClassIf TaskRequiresTask_ClassIf_tmpl;
54 TaskRequiresTask_ClassIf* _;
55 void* _is_TaskRequiresTask;
56 void* _is_TaskRequires;
68#define TaskRequiresTask(inst) ((TaskRequiresTask*)(unused_noeval((inst) && &((inst)->_is_TaskRequiresTask)), (inst)))
69#define TaskRequiresTaskNone ((TaskRequiresTask*)NULL)
71typedef struct TaskRequiresTask_WeakRef {
74 void* _is_TaskRequiresTask_WeakRef;
75 void* _is_TaskRequires_WeakRef;
76 void* _is_ObjInst_WeakRef;
80} TaskRequiresTask_WeakRef;
81#define TaskRequiresTask_WeakRef(inst) ((TaskRequiresTask_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TaskRequiresTask_WeakRef)), (inst)))
90#define taskrequirestaskCreate(deptask, failok) TaskRequiresTask_create(Task(deptask), failok)
93#define taskrequirestaskState(self, task) (self)->_->state(TaskRequiresTask(self), ComplexTask(task))
95#define taskrequirestaskProgress(self) (self)->_->progress(TaskRequiresTask(self))
97#define taskrequirestaskTryAcquire(self, task) (self)->_->tryAcquire(TaskRequiresTask(self), ComplexTask(task))
99#define taskrequirestaskRelease(self, task) (self)->_->release(TaskRequiresTask(self), ComplexTask(task))
101#define taskrequirestaskCancel(self) (self)->_->cancel(TaskRequiresTask(self))
103#define taskrequirestaskRegisterTask(self, task) (self)->_->registerTask(TaskRequiresTask(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.
Dependency on another task completing.
Task * task
Task that must complete.
int64 expires
Time after which requirement times out and fails (0 = no timeout)
bool failok
If true, allow dependent task to run even if this task fails.
Task with name, timing information, and completion callbacks.
Task object with name, timing, and completion callbacks.
Abstract base class for task requirements.