CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
taskrequires.h
Go to the documentation of this file.
1
24
25#pragma once
26// This header file is auto-generated!
27// Do not make changes to this file or they will be overwritten.
28// clang-format off
29#include <cx/obj.h>
30#include <cx/struct.h>
31
32CX_C_BEGIN
33
34typedef struct ComplexTask ComplexTask;
35typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
37typedef struct TaskRequires_WeakRef TaskRequires_WeakRef;
39saDeclarePtr(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)
47
48
51
60
61typedef struct TaskRequires_ClassIf {
62 ObjIface* _implements;
63 ObjIface* _parent;
64 size_t _size;
65
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;
74
76typedef struct TaskRequires {
77 union {
78 TaskRequires_ClassIf* _;
79 void* _is_TaskRequires;
80 void* _is_ObjInst;
81 };
82 ObjClassInfo* _clsinfo;
83 atomic(uintptr) _ref;
84 atomic(ptr) _weakref;
85
86 int64 expires;
88extern ObjClassInfo TaskRequires_clsinfo;
89#define TaskRequires(inst) objInstCheckClass(TaskRequires, inst)
90#define TaskRequiresNone ((TaskRequires*)NULL)
91
92typedef struct TaskRequires_WeakRef {
93 union {
94 ObjInst* _inst;
95 void* _is_TaskRequires_WeakRef;
96 void* _is_ObjInst_WeakRef;
97 };
98 atomic(uintptr) _ref;
99 RWLock _lock;
100} TaskRequires_WeakRef;
101#define TaskRequires_WeakRef(inst) objWeakRefCheckClass(TaskRequires, inst)
102
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))
142
143CX_C_END
#define saDeclarePtr(name)
Definition sarray.h:100
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)