7#include <cx/taskqueue/taskqueue.h>
9typedef struct TaskQueue TaskQueue;
10typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
11typedef struct TQWorker TQWorker;
12typedef struct TQWorker_WeakRef TQWorker_WeakRef;
14typedef struct UserFuncTask UserFuncTask;
15typedef struct UserFuncTask_WeakRef UserFuncTask_WeakRef;
19typedef struct UserFuncTask_ClassIf {
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;
31typedef struct UserFuncTask {
33 UserFuncTask_ClassIf* _;
34 void* _is_UserFuncTask;
47#define UserFuncTask(inst) ((UserFuncTask*)(unused_noeval((inst) && &((inst)->_is_UserFuncTask)), (inst)))
48#define UserFuncTaskNone ((UserFuncTask*)NULL)
50typedef struct UserFuncTask_WeakRef {
53 void* _is_UserFuncTask_WeakRef;
54 void* _is_BasicTask_WeakRef;
55 void* _is_ObjInst_WeakRef;
59} UserFuncTask_WeakRef;
60#define UserFuncTask_WeakRef(inst) ((UserFuncTask_WeakRef*)(unused_noeval((inst) && &((inst)->_is_UserFuncTask_WeakRef)), (inst)))
64#define userfunctaskCreate(func, udata) UserFuncTask_create(func, udata)
67#define userfunctask_setState(self, newstate) BasicTask__setState(BasicTask(self), newstate)
70#define userfunctaskRun(self, tq, worker, tcon) (self)->_->run(UserFuncTask(self), TaskQueue(tq), TQWorker(worker), tcon)
72#define userfunctaskRunCancelled(self, tq, worker) (self)->_->runCancelled(UserFuncTask(self), TaskQueue(tq), TQWorker(worker))
74#define userfunctaskCancel(self) (self)->_->cancel(UserFuncTask(self))
76#define userfunctaskReset(self) (self)->_->reset(UserFuncTask(self))
Bare minimum task object (base class)
#define saDeclarePtr(name)
#define _objfactory_guaranteed
bool(* UserTaskCB)(TaskQueue *tq, void *data)
CX Object System - Object-oriented programming in C.