8#include <cx/taskqueue/taskqueue.h>
12typedef struct TaskQueue TaskQueue;
13typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
14typedef struct TQWorker TQWorker;
15typedef struct TQWorker_WeakRef TQWorker_WeakRef;
17typedef struct UserFuncTask UserFuncTask;
18typedef struct UserFuncTask_WeakRef 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)
29typedef struct UserFuncTask_ClassIf {
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;
41typedef struct UserFuncTask {
43 UserFuncTask_ClassIf* _;
44 void* _is_UserFuncTask;
60#define UserFuncTask(inst) objInstCheckClass(UserFuncTask, inst)
61#define UserFuncTaskNone ((UserFuncTask*)NULL)
63typedef struct UserFuncTask_WeakRef {
66 void* _is_UserFuncTask_WeakRef;
67 void* _is_BasicTask_WeakRef;
68 void* _is_ObjInst_WeakRef;
72} UserFuncTask_WeakRef;
73#define UserFuncTask_WeakRef(inst) objWeakRefCheckClass(UserFuncTask, inst)
77#define userfunctaskCreate(cls) UserFuncTask_create(cls)
80#define userfunctask_setState(self, newstate) BasicTask__setState(BasicTask(self), newstate)
83#define userfunctaskRun(self, tq, worker, tcon) (self)->_->run(UserFuncTask(self), TaskQueue(tq), TQWorker(worker), tcon)
85#define userfunctaskRunCancelled(self, tq, worker) (self)->_->runCancelled(UserFuncTask(self), TaskQueue(tq), TQWorker(worker))
87#define userfunctaskCancel(self) (self)->_->cancel(UserFuncTask(self))
89#define userfunctaskReset(self) (self)->_->reset(UserFuncTask(self))
Bare minimum task object (base class)
#define saDeclarePtr(name)
#define _objfactory_guaranteed
CX Struct System - Introspectable, serializable POD structures in C.
CX Object System - Object-oriented programming in C.