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>
28
29typedef struct TaskQueue TaskQueue;
30typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
31typedef struct TQWorker TQWorker;
32typedef struct TQWorker_WeakRef TQWorker_WeakRef;
33typedef struct TaskControl TaskControl;
34typedef struct BasicTask BasicTask;
35typedef struct BasicTask_WeakRef BasicTask_WeakRef;
37saDeclarePtr(BasicTask_WeakRef);
38
45
46typedef struct BasicTask_ClassIf {
47 ObjIface* _implements;
48 ObjIface* _parent;
49 size_t _size;
50
51 uint32 (*run)(_In_ void* self, _In_ TaskQueue* tq, _In_ TQWorker* worker, _Inout_ TaskControl* tcon);
52 void (*runCancelled)(_In_ void* self, _In_ TaskQueue* tq, _In_ TQWorker* worker);
53 bool (*cancel)(_In_ void* self);
54 bool (*reset)(_In_ void* self);
55} BasicTask_ClassIf;
56extern BasicTask_ClassIf BasicTask_ClassIf_tmpl;
57
59typedef struct BasicTask {
60 union {
61 BasicTask_ClassIf* _;
62 void* _is_BasicTask;
63 void* _is_ObjInst;
64 };
65 ObjClassInfo* _clsinfo;
66 atomic(uintptr) _ref;
67 atomic(ptr) _weakref;
68
69 atomic(uint32) state;
70} BasicTask;
71extern ObjClassInfo BasicTask_clsinfo;
72#define BasicTask(inst) ((BasicTask*)(unused_noeval((inst) && &((inst)->_is_BasicTask)), (inst)))
73#define BasicTaskNone ((BasicTask*)NULL)
74
75typedef struct BasicTask_WeakRef {
76 union {
77 ObjInst* _inst;
78 void* _is_BasicTask_WeakRef;
79 void* _is_ObjInst_WeakRef;
80 };
81 atomic(uintptr) _ref;
82 RWLock _lock;
83} BasicTask_WeakRef;
84#define BasicTask_WeakRef(inst) ((BasicTask_WeakRef*)(unused_noeval((inst) && &((inst)->_is_BasicTask_WeakRef)), (inst)))
85
86bool BasicTask__setState(_In_ BasicTask* self, uint32 newstate);
87// bool btask_setState(BasicTask* self, uint32 newstate);
88#define btask_setState(self, newstate) BasicTask__setState(BasicTask(self), newstate)
89
101#define btaskRun(self, tq, worker, tcon) (self)->_->run(BasicTask(self), TaskQueue(tq), TQWorker(worker), tcon)
107#define btaskRunCancelled(self, tq, worker) (self)->_->runCancelled(BasicTask(self), TaskQueue(tq), TQWorker(worker))
112#define btaskCancel(self) (self)->_->cancel(BasicTask(self))
117#define btaskReset(self) (self)->_->reset(BasicTask(self))
118
#define saDeclarePtr(name)
Definition sarray.h:98
BasicTaskRunResultEnum
Return values from BasicTask::run()
Definition basictask.h:40
@ TASK_Result_Failure
Task failed, will transition to TASK_Failed state.
Definition basictask.h:41
@ TASK_Result_Success
Task succeeded, will transition to TASK_Succeeded state.
Definition basictask.h:42
CX Object System - Object-oriented programming in C.
Bare minimum task object with state tracking and run method.
Definition basictask.h:59
atomic(uint32) state
Current task state and flags.
Shared types and configuration structures for the task queue system.