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>
6#include <cx/struct.h>
8#include <cx/taskqueue/taskqueue.h>
9
10CX_C_BEGIN
11
12typedef struct TaskQueue TaskQueue;
13typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
14typedef struct TQWorker TQWorker;
15typedef struct TQWorker_WeakRef TQWorker_WeakRef;
16typedef struct TaskControl TaskControl;
17typedef struct UserFuncTask UserFuncTask;
18typedef struct UserFuncTask_WeakRef UserFuncTask_WeakRef;
19saDeclarePtr(UserFuncTask);
20saDeclarePtr(UserFuncTask_WeakRef);
21#define _sti_UserFuncTask _sti_object
22#define SType_UserFuncTask UserFuncTask*
23#define STStorageType_UserFuncTask UserFuncTask*
24#define STypeArg_UserFuncTask(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(UserFuncTask, val))
25#define STypeArgPtr_UserFuncTask(type, val) (stgeneric*)objInstCheckClassPtr(UserFuncTask, val)
26#define STypeCheckedArg_UserFuncTask(type, val) stType(type), stArg(type, val)
27#define STypeCheckedPtrArg_UserFuncTask(type, val) stType(type), stArgPtr(type, val)
28
29typedef struct UserFuncTask_ClassIf {
30 ObjIface* _implements;
31 ObjIface* _parent;
32 size_t _size;
33
34 uint32 (*run)(_In_ void* self, _In_ TaskQueue* tq, _In_ TQWorker* worker, _Inout_ TaskControl* tcon);
35 void (*runCancelled)(_In_ void* self, _In_ TaskQueue* tq, _In_ TQWorker* worker);
36 bool (*cancel)(_In_ void* self);
37 bool (*reset)(_In_ void* self);
38} UserFuncTask_ClassIf;
39extern UserFuncTask_ClassIf UserFuncTask_ClassIf_tmpl;
40
41typedef struct UserFuncTask {
42 union {
43 UserFuncTask_ClassIf* _;
44 void* _is_UserFuncTask;
45 void* _is_BasicTask;
46 void* _is_ObjInst;
47 };
48 ObjClassInfo* _clsinfo;
49 atomic(uintptr) _ref;
50 atomic(ptr) _weakref;
51
52 atomic(uint32) state;
56 void* logctx;
57 closure cls;
58} UserFuncTask;
59extern ObjClassInfo UserFuncTask_clsinfo;
60#define UserFuncTask(inst) objInstCheckClass(UserFuncTask, inst)
61#define UserFuncTaskNone ((UserFuncTask*)NULL)
62
63typedef struct UserFuncTask_WeakRef {
64 union {
65 ObjInst* _inst;
66 void* _is_UserFuncTask_WeakRef;
67 void* _is_BasicTask_WeakRef;
68 void* _is_ObjInst_WeakRef;
69 };
70 atomic(uintptr) _ref;
71 RWLock _lock;
72} UserFuncTask_WeakRef;
73#define UserFuncTask_WeakRef(inst) objWeakRefCheckClass(UserFuncTask, inst)
74
75_objfactory_guaranteed UserFuncTask* UserFuncTask_create(closure cls);
76// UserFuncTask* userfunctaskCreate(closure cls);
77#define userfunctaskCreate(cls) UserFuncTask_create(cls)
78
79// bool userfunctask_setState(UserFuncTask* self, uint32 newstate);
80#define userfunctask_setState(self, newstate) BasicTask__setState(BasicTask(self), newstate)
81
82// uint32 userfunctaskRun(UserFuncTask* self, TaskQueue* tq, TQWorker* worker, TaskControl* tcon);
83#define userfunctaskRun(self, tq, worker, tcon) (self)->_->run(UserFuncTask(self), TaskQueue(tq), TQWorker(worker), tcon)
84// void userfunctaskRunCancelled(UserFuncTask* self, TaskQueue* tq, TQWorker* worker);
85#define userfunctaskRunCancelled(self, tq, worker) (self)->_->runCancelled(UserFuncTask(self), TaskQueue(tq), TQWorker(worker))
86// bool userfunctaskCancel(UserFuncTask* self);
87#define userfunctaskCancel(self) (self)->_->cancel(UserFuncTask(self))
88// bool userfunctaskReset(UserFuncTask* self);
89#define userfunctaskReset(self) (self)->_->reset(UserFuncTask(self))
90
91CX_C_END
Bare minimum task object (base class)
#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.