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 <cx/struct.h>
7#include "tqworker.h"
8
9CX_C_BEGIN
10
11typedef struct TaskQueue TaskQueue;
12typedef struct TaskQueue_WeakRef TaskQueue_WeakRef;
13typedef struct TQManualWorker TQManualWorker;
14typedef struct TQManualWorker_WeakRef TQManualWorker_WeakRef;
15saDeclarePtr(TQManualWorker);
16saDeclarePtr(TQManualWorker_WeakRef);
17#define _sti_TQManualWorker _sti_object
18#define SType_TQManualWorker TQManualWorker*
19#define STStorageType_TQManualWorker TQManualWorker*
20#define STypeArg_TQManualWorker(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TQManualWorker, val))
21#define STypeArgPtr_TQManualWorker(type, val) (stgeneric*)objInstCheckClassPtr(TQManualWorker, val)
22#define STypeCheckedArg_TQManualWorker(type, val) stType(type), stArg(type, val)
23#define STypeCheckedPtrArg_TQManualWorker(type, val) stType(type), stArgPtr(type, val)
24
25typedef struct TQManualWorker_ClassIf {
26 ObjIface* _implements;
27 ObjIface* _parent;
28 size_t _size;
29
30 // hooks for derived classes to override if desired
31 // worker is starting up
32 void (*onStart)(_In_ void* self, _In_ TaskQueue* tq);
33 // worker should process tasks (call parent!)
34 int64 (*tick)(_In_ void* self, _In_ TaskQueue* tq);
35 // worker is shutting down
36 void (*onStop)(_In_ void* self, _In_ TaskQueue* tq);
37} TQManualWorker_ClassIf;
38extern TQManualWorker_ClassIf TQManualWorker_ClassIf_tmpl;
39
40typedef struct TQManualWorker {
41 union {
42 TQManualWorker_ClassIf* _;
43 void* _is_TQManualWorker;
44 void* _is_TQWorker;
45 void* _is_ObjInst;
46 };
47 ObjClassInfo* _clsinfo;
48 atomic(uintptr) _ref;
49 atomic(ptr) _weakref;
50
51} TQManualWorker;
52extern ObjClassInfo TQManualWorker_clsinfo;
53#define TQManualWorker(inst) objInstCheckClass(TQManualWorker, inst)
54#define TQManualWorkerNone ((TQManualWorker*)NULL)
55
56typedef struct TQManualWorker_WeakRef {
57 union {
58 ObjInst* _inst;
59 void* _is_TQManualWorker_WeakRef;
60 void* _is_TQWorker_WeakRef;
61 void* _is_ObjInst_WeakRef;
62 };
63 atomic(uintptr) _ref;
64 RWLock _lock;
65} TQManualWorker_WeakRef;
66#define TQManualWorker_WeakRef(inst) objWeakRefCheckClass(TQManualWorker, inst)
67
68_objfactory_guaranteed TQManualWorker* TQManualWorker_create();
69// TQManualWorker* tqmanualworkerCreate();
70#define tqmanualworkerCreate() TQManualWorker_create()
71
72// void tqmanualworkerOnStart(TQManualWorker* self, TaskQueue* tq);
73//
74// hooks for derived classes to override if desired
75// worker is starting up
76#define tqmanualworkerOnStart(self, tq) (self)->_->onStart(TQManualWorker(self), TaskQueue(tq))
77// int64 tqmanualworkerTick(TQManualWorker* self, TaskQueue* tq);
78//
79// worker should process tasks (call parent!)
80#define tqmanualworkerTick(self, tq) (self)->_->tick(TQManualWorker(self), TaskQueue(tq))
81// void tqmanualworkerOnStop(TQManualWorker* self, TaskQueue* tq);
82//
83// worker is shutting down
84#define tqmanualworkerOnStop(self, tq) (self)->_->onStop(TQManualWorker(self), TaskQueue(tq))
85
86CX_C_END
#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.