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
31typedef struct ComplexTask ComplexTask;
32typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
34typedef struct TaskRequires_WeakRef TaskRequires_WeakRef;
36saDeclarePtr(TaskRequires_WeakRef);
37
38
41
50
51typedef struct TaskRequires_ClassIf {
52 ObjIface* _implements;
53 ObjIface* _parent;
54 size_t _size;
55
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;
64
66typedef struct TaskRequires {
67 union {
68 TaskRequires_ClassIf* _;
69 void* _is_TaskRequires;
70 void* _is_ObjInst;
71 };
72 ObjClassInfo* _clsinfo;
73 atomic(uintptr) _ref;
74 atomic(ptr) _weakref;
75
76 int64 expires;
78extern ObjClassInfo TaskRequires_clsinfo;
79#define TaskRequires(inst) ((TaskRequires*)(unused_noeval((inst) && &((inst)->_is_TaskRequires)), (inst)))
80#define TaskRequiresNone ((TaskRequires*)NULL)
81
82typedef struct TaskRequires_WeakRef {
83 union {
84 ObjInst* _inst;
85 void* _is_TaskRequires_WeakRef;
86 void* _is_ObjInst_WeakRef;
87 };
88 atomic(uintptr) _ref;
89 RWLock _lock;
90} TaskRequires_WeakRef;
91#define TaskRequires_WeakRef(inst) ((TaskRequires_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TaskRequires_WeakRef)), (inst)))
92
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))
132
#define saDeclarePtr(name)
Definition sarray.h:98
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)