28typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
30typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
32typedef struct TaskRequiresResource_WeakRef TaskRequiresResource_WeakRef;
35#define _sti_TaskRequiresResource _sti_object
36#define SType_TaskRequiresResource TaskRequiresResource*
37#define STStorageType_TaskRequiresResource TaskRequiresResource*
38#define STypeArg_TaskRequiresResource(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TaskRequiresResource, val))
39#define STypeArgPtr_TaskRequiresResource(type, val) (stgeneric*)objInstCheckClassPtr(TaskRequiresResource, val)
40#define STypeCheckedArg_TaskRequiresResource(type, val) stType(type), stArg(type, val)
41#define STypeCheckedPtrArg_TaskRequiresResource(type, val) stType(type), stArgPtr(type, val)
43typedef struct TaskRequiresResource_ClassIf {
48 uint32 (*state)(_In_
void* self,
ComplexTask* task);
49 int64 (*progress)(_In_
void* self);
50 bool (*tryAcquire)(_In_
void* self,
ComplexTask* task);
51 bool (*release)(_In_
void* self,
ComplexTask* task);
52 void (*cancel)(_In_
void* self);
53 bool (*registerTask)(_In_
void* self, _In_
ComplexTask* task);
54} TaskRequiresResource_ClassIf;
55extern TaskRequiresResource_ClassIf TaskRequiresResource_ClassIf_tmpl;
60 TaskRequiresResource_ClassIf* _;
61 void* _is_TaskRequiresResource;
62 void* _is_TaskRequires;
74#define TaskRequiresResource(inst) objInstCheckClass(TaskRequiresResource, inst)
75#define TaskRequiresResourceNone ((TaskRequiresResource*)NULL)
77typedef struct TaskRequiresResource_WeakRef {
80 void* _is_TaskRequiresResource_WeakRef;
81 void* _is_TaskRequires_WeakRef;
82 void* _is_ObjInst_WeakRef;
86} TaskRequiresResource_WeakRef;
87#define TaskRequiresResource_WeakRef(inst) objWeakRefCheckClass(TaskRequiresResource, inst)
95#define taskrequiresresourceCreate(res) TaskRequiresResource_create(TaskResource(res))
98#define taskrequiresresourceState(self, task) (self)->_->state(TaskRequiresResource(self), ComplexTask(task))
100#define taskrequiresresourceProgress(self) (self)->_->progress(TaskRequiresResource(self))
102#define taskrequiresresourceTryAcquire(self, task) (self)->_->tryAcquire(TaskRequiresResource(self), ComplexTask(task))
104#define taskrequiresresourceRelease(self, task) (self)->_->release(TaskRequiresResource(self), ComplexTask(task))
106#define taskrequiresresourceCancel(self) (self)->_->cancel(TaskRequiresResource(self))
108#define taskrequiresresourceRegisterTask(self, task) (self)->_->registerTask(TaskRequiresResource(self), ComplexTask(task))
#define saDeclarePtr(name)
#define _objfactory_guaranteed
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.
Requirement for exclusive access to a shared resource.
int64 expires
Time after which requirement times out and fails (0 = no timeout)
bool owned
True if resource has been acquired by this requirement.
TaskResource * res
Resource to acquire.
Abstract base for shared resources with exclusive access.
Abstract base class for task requirements.
Abstract base class for shared resources.