CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
basictask.h
Go to the documentation of this file.
1
21
22#pragma once
23// This header file is auto-generated!
24// Do not make changes to this file or they will be overwritten.
25// clang-format off
26#include <cx/obj.h>
27#include <cx/struct.h>
29
30CX_C_BEGIN
31
32typedef struct TaskQueue TaskQueue;
33typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
34typedef struct TQWorker TQWorker;
35typedef struct TQWorker_WeakRef TQWorker_WeakRef;
36typedef struct TaskControl TaskControl;
37typedef struct BasicTask BasicTask;
38typedef struct BasicTask_WeakRef BasicTask_WeakRef;
40saDeclarePtr(BasicTask_WeakRef);
41#define _sti_BasicTask _sti_object
42#define SType_BasicTask BasicTask*
43#define STStorageType_BasicTask BasicTask*
44#define STypeArg_BasicTask(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(BasicTask, val))
45#define STypeArgPtr_BasicTask(type, val) (stgeneric*)objInstCheckClassPtr(BasicTask, val)
46#define STypeCheckedArg_BasicTask(type, val) stType(type), stArg(type, val)
47#define STypeCheckedPtrArg_BasicTask(type, val) stType(type), stArgPtr(type, val)
48
55
56typedef struct BasicTask_ClassIf {
57 ObjIface* _implements;
58 ObjIface* _parent;
59 size_t _size;
60
61 uint32 (*run)(_In_ void* self, _In_ TaskQueue* tq, _In_ TQWorker* worker, _Inout_ TaskControl* tcon);
62 void (*runCancelled)(_In_ void* self, _In_ TaskQueue* tq, _In_ TQWorker* worker);
63 bool (*cancel)(_In_ void* self);
64 bool (*reset)(_In_ void* self);
65} BasicTask_ClassIf;
66extern BasicTask_ClassIf BasicTask_ClassIf_tmpl;
67
69typedef struct BasicTask {
70 union {
71 BasicTask_ClassIf* _;
72 void* _is_BasicTask;
73 void* _is_ObjInst;
74 };
75 ObjClassInfo* _clsinfo;
76 atomic(uintptr) _ref;
77 atomic(ptr) _weakref;
78
79 atomic(uint32) state;
83 void* logctx;
84} BasicTask;
85extern ObjClassInfo BasicTask_clsinfo;
86#define BasicTask(inst) objInstCheckClass(BasicTask, inst)
87#define BasicTaskNone ((BasicTask*)NULL)
88
89typedef struct BasicTask_WeakRef {
90 union {
91 ObjInst* _inst;
92 void* _is_BasicTask_WeakRef;
93 void* _is_ObjInst_WeakRef;
94 };
95 atomic(uintptr) _ref;
96 RWLock _lock;
97} BasicTask_WeakRef;
98#define BasicTask_WeakRef(inst) objWeakRefCheckClass(BasicTask, inst)
99
100bool BasicTask__setState(_In_ BasicTask* self, uint32 newstate);
101// bool btask_setState(BasicTask* self, uint32 newstate);
102#define btask_setState(self, newstate) BasicTask__setState(BasicTask(self), newstate)
103
115#define btaskRun(self, tq, worker, tcon) (self)->_->run(BasicTask(self), TaskQueue(tq), TQWorker(worker), tcon)
121#define btaskRunCancelled(self, tq, worker) (self)->_->runCancelled(BasicTask(self), TaskQueue(tq), TQWorker(worker))
126#define btaskCancel(self) (self)->_->cancel(BasicTask(self))
131#define btaskReset(self) (self)->_->reset(BasicTask(self))
132
133CX_C_END
#define saDeclarePtr(name)
Definition sarray.h:100
BasicTaskRunResultEnum
Return values from BasicTask::run()
Definition basictask.h:50
@ TASK_Result_Failure
Task failed, will transition to TASK_Failed state.
Definition basictask.h:51
@ TASK_Result_Success
Task succeeded, will transition to TASK_Succeeded state.
Definition basictask.h:52
CX Struct System - Introspectable, serializable POD structures in C.
CX Object System - Object-oriented programming in C.
Bare minimum task object with state tracking and run method.
Definition basictask.h:69
atomic(uint32) state
void * logctx
Definition basictask.h:83
Shared types and configuration structures for the task queue system.