CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
taskrequirestask.h
Go to the documentation of this file.
1
16
17#pragma once
18// This header file is auto-generated!
19// Do not make changes to this file or they will be overwritten.
20// clang-format off
21#include <cx/obj.h>
22#include "taskrequires.h"
24
25typedef struct ComplexTask ComplexTask;
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;
31typedef struct TaskControl TaskControl;
33typedef struct TaskRequiresTask_WeakRef TaskRequiresTask_WeakRef;
35saDeclarePtr(TaskRequiresTask_WeakRef);
36
37typedef struct TaskRequiresTask_ClassIf {
38 ObjIface* _implements;
39 ObjIface* _parent;
40 size_t _size;
41
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;
50
52typedef struct TaskRequiresTask {
53 union {
54 TaskRequiresTask_ClassIf* _;
55 void* _is_TaskRequiresTask;
56 void* _is_TaskRequires;
57 void* _is_ObjInst;
58 };
59 ObjClassInfo* _clsinfo;
60 atomic(uintptr) _ref;
61 atomic(ptr) _weakref;
62
63 int64 expires;
65 bool failok;
67extern ObjClassInfo TaskRequiresTask_clsinfo;
68#define TaskRequiresTask(inst) ((TaskRequiresTask*)(unused_noeval((inst) && &((inst)->_is_TaskRequiresTask)), (inst)))
69#define TaskRequiresTaskNone ((TaskRequiresTask*)NULL)
70
71typedef struct TaskRequiresTask_WeakRef {
72 union {
73 ObjInst* _inst;
74 void* _is_TaskRequiresTask_WeakRef;
75 void* _is_TaskRequires_WeakRef;
76 void* _is_ObjInst_WeakRef;
77 };
78 atomic(uintptr) _ref;
79 RWLock _lock;
80} TaskRequiresTask_WeakRef;
81#define TaskRequiresTask_WeakRef(inst) ((TaskRequiresTask_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TaskRequiresTask_WeakRef)), (inst)))
82
83_objfactory_guaranteed TaskRequiresTask* TaskRequiresTask_create(_In_ Task* deptask, bool failok);
90#define taskrequirestaskCreate(deptask, failok) TaskRequiresTask_create(Task(deptask), failok)
91
92// uint32 taskrequirestaskState(TaskRequiresTask* self, ComplexTask* task);
93#define taskrequirestaskState(self, task) (self)->_->state(TaskRequiresTask(self), ComplexTask(task))
94// int64 taskrequirestaskProgress(TaskRequiresTask* self);
95#define taskrequirestaskProgress(self) (self)->_->progress(TaskRequiresTask(self))
96// bool taskrequirestaskTryAcquire(TaskRequiresTask* self, ComplexTask* task);
97#define taskrequirestaskTryAcquire(self, task) (self)->_->tryAcquire(TaskRequiresTask(self), ComplexTask(task))
98// bool taskrequirestaskRelease(TaskRequiresTask* self, ComplexTask* task);
99#define taskrequirestaskRelease(self, task) (self)->_->release(TaskRequiresTask(self), ComplexTask(task))
100// void taskrequirestaskCancel(TaskRequiresTask* self);
101#define taskrequirestaskCancel(self) (self)->_->cancel(TaskRequiresTask(self))
102// bool taskrequirestaskRegisterTask(TaskRequiresTask* self, ComplexTask* task);
103#define taskrequirestaskRegisterTask(self, task) (self)->_->registerTask(TaskRequiresTask(self), ComplexTask(task))
104
#define saDeclarePtr(name)
Definition sarray.h:98
#define _objfactory_guaranteed
Definition objimpl.h:104
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.
Definition task.h:52
Task object with name, timing, and completion callbacks.
Abstract base class for task requirements.