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 <cx/struct.h>
23#include "taskrequires.h"
25
26CX_C_BEGIN
27
28typedef struct ComplexTask ComplexTask;
29typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
30typedef struct TaskQueue TaskQueue;
31typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
32typedef struct TQWorker TQWorker;
33typedef struct TQWorker_WeakRef TQWorker_WeakRef;
34typedef struct TaskControl TaskControl;
36typedef struct TaskRequiresTask_WeakRef TaskRequiresTask_WeakRef;
38saDeclarePtr(TaskRequiresTask_WeakRef);
39#define _sti_TaskRequiresTask _sti_object
40#define SType_TaskRequiresTask TaskRequiresTask*
41#define STStorageType_TaskRequiresTask TaskRequiresTask*
42#define STypeArg_TaskRequiresTask(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TaskRequiresTask, val))
43#define STypeArgPtr_TaskRequiresTask(type, val) (stgeneric*)objInstCheckClassPtr(TaskRequiresTask, val)
44#define STypeCheckedArg_TaskRequiresTask(type, val) stType(type), stArg(type, val)
45#define STypeCheckedPtrArg_TaskRequiresTask(type, val) stType(type), stArgPtr(type, val)
46
47typedef struct TaskRequiresTask_ClassIf {
48 ObjIface* _implements;
49 ObjIface* _parent;
50 size_t _size;
51
52 uint32 (*state)(_In_ void* self, ComplexTask* task);
53 int64 (*progress)(_In_ void* self);
54 bool (*tryAcquire)(_In_ void* self, ComplexTask* task);
55 bool (*release)(_In_ void* self, ComplexTask* task);
56 void (*cancel)(_In_ void* self);
57 bool (*registerTask)(_In_ void* self, _In_ ComplexTask* task);
58} TaskRequiresTask_ClassIf;
59extern TaskRequiresTask_ClassIf TaskRequiresTask_ClassIf_tmpl;
60
62typedef struct TaskRequiresTask {
63 union {
64 TaskRequiresTask_ClassIf* _;
65 void* _is_TaskRequiresTask;
66 void* _is_TaskRequires;
67 void* _is_ObjInst;
68 };
69 ObjClassInfo* _clsinfo;
70 atomic(uintptr) _ref;
71 atomic(ptr) _weakref;
72
73 int64 expires;
75 bool failok;
77extern ObjClassInfo TaskRequiresTask_clsinfo;
78#define TaskRequiresTask(inst) objInstCheckClass(TaskRequiresTask, inst)
79#define TaskRequiresTaskNone ((TaskRequiresTask*)NULL)
80
81typedef struct TaskRequiresTask_WeakRef {
82 union {
83 ObjInst* _inst;
84 void* _is_TaskRequiresTask_WeakRef;
85 void* _is_TaskRequires_WeakRef;
86 void* _is_ObjInst_WeakRef;
87 };
88 atomic(uintptr) _ref;
89 RWLock _lock;
90} TaskRequiresTask_WeakRef;
91#define TaskRequiresTask_WeakRef(inst) objWeakRefCheckClass(TaskRequiresTask, inst)
92
93_objfactory_guaranteed TaskRequiresTask* TaskRequiresTask_create(_In_ Task* deptask, bool failok);
100#define taskrequirestaskCreate(deptask, failok) TaskRequiresTask_create(Task(deptask), failok)
101
102// uint32 taskrequirestaskState(TaskRequiresTask* self, ComplexTask* task);
103#define taskrequirestaskState(self, task) (self)->_->state(TaskRequiresTask(self), ComplexTask(task))
104// int64 taskrequirestaskProgress(TaskRequiresTask* self);
105#define taskrequirestaskProgress(self) (self)->_->progress(TaskRequiresTask(self))
106// bool taskrequirestaskTryAcquire(TaskRequiresTask* self, ComplexTask* task);
107#define taskrequirestaskTryAcquire(self, task) (self)->_->tryAcquire(TaskRequiresTask(self), ComplexTask(task))
108// bool taskrequirestaskRelease(TaskRequiresTask* self, ComplexTask* task);
109#define taskrequirestaskRelease(self, task) (self)->_->release(TaskRequiresTask(self), ComplexTask(task))
110// void taskrequirestaskCancel(TaskRequiresTask* self);
111#define taskrequirestaskCancel(self) (self)->_->cancel(TaskRequiresTask(self))
112// bool taskrequirestaskRegisterTask(TaskRequiresTask* self, ComplexTask* task);
113#define taskrequirestaskRegisterTask(self, task) (self)->_->registerTask(TaskRequiresTask(self), ComplexTask(task))
114
115CX_C_END
#define saDeclarePtr(name)
Definition sarray.h:100
#define _objfactory_guaranteed
Definition objimpl.h:106
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.
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:62
Task object with name, timing, and completion callbacks.
Abstract base class for task requirements.