CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
tqmanualworker.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 "tqworker.h"
7
8typedef struct TaskQueue TaskQueue;
9typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
10typedef struct TQManualWorker TQManualWorker;
11typedef struct TQManualWorker_WeakRef TQManualWorker_WeakRef;
12saDeclarePtr(TQManualWorker);
13saDeclarePtr(TQManualWorker_WeakRef);
14
15typedef struct TQManualWorker_ClassIf {
16 ObjIface* _implements;
17 ObjIface* _parent;
18 size_t _size;
19
20 // hooks for derived classes to override if desired
21 // worker is starting up
22 void (*onStart)(_In_ void* self, _In_ TaskQueue* tq);
23 // worker should process tasks (call parent!)
24 int64 (*tick)(_In_ void* self, _In_ TaskQueue* tq);
25 // worker is shutting down
26 void (*onStop)(_In_ void* self, _In_ TaskQueue* tq);
27} TQManualWorker_ClassIf;
28extern TQManualWorker_ClassIf TQManualWorker_ClassIf_tmpl;
29
30typedef struct TQManualWorker {
31 union {
32 TQManualWorker_ClassIf* _;
33 void* _is_TQManualWorker;
34 void* _is_TQWorker;
35 void* _is_ObjInst;
36 };
37 ObjClassInfo* _clsinfo;
38 atomic(uintptr) _ref;
39 atomic(ptr) _weakref;
40
41} TQManualWorker;
42extern ObjClassInfo TQManualWorker_clsinfo;
43#define TQManualWorker(inst) ((TQManualWorker*)(unused_noeval((inst) && &((inst)->_is_TQManualWorker)), (inst)))
44#define TQManualWorkerNone ((TQManualWorker*)NULL)
45
46typedef struct TQManualWorker_WeakRef {
47 union {
48 ObjInst* _inst;
49 void* _is_TQManualWorker_WeakRef;
50 void* _is_TQWorker_WeakRef;
51 void* _is_ObjInst_WeakRef;
52 };
53 atomic(uintptr) _ref;
54 RWLock _lock;
55} TQManualWorker_WeakRef;
56#define TQManualWorker_WeakRef(inst) ((TQManualWorker_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TQManualWorker_WeakRef)), (inst)))
57
58_objfactory_guaranteed TQManualWorker* TQManualWorker_create();
59// TQManualWorker* tqmanualworkerCreate();
60#define tqmanualworkerCreate() TQManualWorker_create()
61
62// void tqmanualworkerOnStart(TQManualWorker* self, TaskQueue* tq);
63//
64// hooks for derived classes to override if desired
65// worker is starting up
66#define tqmanualworkerOnStart(self, tq) (self)->_->onStart(TQManualWorker(self), TaskQueue(tq))
67// int64 tqmanualworkerTick(TQManualWorker* self, TaskQueue* tq);
68//
69// worker should process tasks (call parent!)
70#define tqmanualworkerTick(self, tq) (self)->_->tick(TQManualWorker(self), TaskQueue(tq))
71// void tqmanualworkerOnStop(TQManualWorker* self, TaskQueue* tq);
72//
73// worker is shutting down
74#define tqmanualworkerOnStop(self, tq) (self)->_->onStop(TQManualWorker(self), TaskQueue(tq))
75
#define saDeclarePtr(name)
Definition sarray.h:98
#define _objfactory_guaranteed
Definition objimpl.h:104
CX Object System - Object-oriented programming in C.