CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
userfunctask.h
1#pragma once
2// This header file is auto-generated!
3// Do not make changes to this file or they will be overwritten.
4// clang-format off
5#include <cx/obj.h>
7#include <cx/taskqueue/taskqueue.h>
8
9typedef struct TaskQueue TaskQueue;
10typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
11typedef struct TQWorker TQWorker;
12typedef struct TQWorker_WeakRef TQWorker_WeakRef;
13typedef struct TaskControl TaskControl;
14typedef struct UserFuncTask UserFuncTask;
15typedef struct UserFuncTask_WeakRef UserFuncTask_WeakRef;
16saDeclarePtr(UserFuncTask);
17saDeclarePtr(UserFuncTask_WeakRef);
18
19typedef struct UserFuncTask_ClassIf {
20 ObjIface* _implements;
21 ObjIface* _parent;
22 size_t _size;
23
24 uint32 (*run)(_In_ void* self, _In_ TaskQueue* tq, _In_ TQWorker* worker, _Inout_ TaskControl* tcon);
25 void (*runCancelled)(_In_ void* self, _In_ TaskQueue* tq, _In_ TQWorker* worker);
26 bool (*cancel)(_In_ void* self);
27 bool (*reset)(_In_ void* self);
28} UserFuncTask_ClassIf;
29extern UserFuncTask_ClassIf UserFuncTask_ClassIf_tmpl;
30
31typedef struct UserFuncTask {
32 union {
33 UserFuncTask_ClassIf* _;
34 void* _is_UserFuncTask;
35 void* _is_BasicTask;
36 void* _is_ObjInst;
37 };
38 ObjClassInfo* _clsinfo;
39 atomic(uintptr) _ref;
40 atomic(ptr) _weakref;
41
42 atomic(uint32) state;
43 UserTaskCB func;
44 void* udata;
45} UserFuncTask;
46extern ObjClassInfo UserFuncTask_clsinfo;
47#define UserFuncTask(inst) ((UserFuncTask*)(unused_noeval((inst) && &((inst)->_is_UserFuncTask)), (inst)))
48#define UserFuncTaskNone ((UserFuncTask*)NULL)
49
50typedef struct UserFuncTask_WeakRef {
51 union {
52 ObjInst* _inst;
53 void* _is_UserFuncTask_WeakRef;
54 void* _is_BasicTask_WeakRef;
55 void* _is_ObjInst_WeakRef;
56 };
57 atomic(uintptr) _ref;
58 RWLock _lock;
59} UserFuncTask_WeakRef;
60#define UserFuncTask_WeakRef(inst) ((UserFuncTask_WeakRef*)(unused_noeval((inst) && &((inst)->_is_UserFuncTask_WeakRef)), (inst)))
61
62_objfactory_guaranteed UserFuncTask* UserFuncTask_create(UserTaskCB func, void* udata);
63// UserFuncTask* userfunctaskCreate(UserTaskCB func, void* udata);
64#define userfunctaskCreate(func, udata) UserFuncTask_create(func, udata)
65
66// bool userfunctask_setState(UserFuncTask* self, uint32 newstate);
67#define userfunctask_setState(self, newstate) BasicTask__setState(BasicTask(self), newstate)
68
69// uint32 userfunctaskRun(UserFuncTask* self, TaskQueue* tq, TQWorker* worker, TaskControl* tcon);
70#define userfunctaskRun(self, tq, worker, tcon) (self)->_->run(UserFuncTask(self), TaskQueue(tq), TQWorker(worker), tcon)
71// void userfunctaskRunCancelled(UserFuncTask* self, TaskQueue* tq, TQWorker* worker);
72#define userfunctaskRunCancelled(self, tq, worker) (self)->_->runCancelled(UserFuncTask(self), TaskQueue(tq), TQWorker(worker))
73// bool userfunctaskCancel(UserFuncTask* self);
74#define userfunctaskCancel(self) (self)->_->cancel(UserFuncTask(self))
75// bool userfunctaskReset(UserFuncTask* self);
76#define userfunctaskReset(self) (self)->_->reset(UserFuncTask(self))
77
Bare minimum task object (base class)
#define saDeclarePtr(name)
Definition sarray.h:98
#define _objfactory_guaranteed
Definition objimpl.h:104
bool(* UserTaskCB)(TaskQueue *tq, void *data)
Definition taskqueue.h:175
CX Object System - Object-oriented programming in C.