CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
taskresource.h
Go to the documentation of this file.
1
28
29#pragma once
30// This header file is auto-generated!
31// Do not make changes to this file or they will be overwritten.
32// clang-format off
33#include <cx/obj.h>
34
35typedef struct ComplexTask ComplexTask;
36typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
38typedef struct TaskResource_WeakRef TaskResource_WeakRef;
40saDeclarePtr(TaskResource_WeakRef);
41
42
43
44typedef struct TaskResource_ClassIf {
45 ObjIface* _implements;
46 ObjIface* _parent;
47 size_t _size;
48
49 bool (*registerTask)(_In_ void* self, ComplexTask* task);
50 bool (*canAcquire)(_In_ void* self, ComplexTask* task);
51 bool (*tryAcquire)(_In_ void* self, ComplexTask* task);
52 void (*release)(_In_ void* self, ComplexTask* task);
53} TaskResource_ClassIf;
54extern TaskResource_ClassIf TaskResource_ClassIf_tmpl;
55
57typedef struct TaskResource {
58 union {
59 TaskResource_ClassIf* _;
60 void* _is_TaskResource;
61 void* _is_ObjInst;
62 };
63 ObjClassInfo* _clsinfo;
64 atomic(uintptr) _ref;
65 atomic(ptr) _weakref;
66
68extern ObjClassInfo TaskResource_clsinfo;
69#define TaskResource(inst) ((TaskResource*)(unused_noeval((inst) && &((inst)->_is_TaskResource)), (inst)))
70#define TaskResourceNone ((TaskResource*)NULL)
71
72typedef struct TaskResource_WeakRef {
73 union {
74 ObjInst* _inst;
75 void* _is_TaskResource_WeakRef;
76 void* _is_ObjInst_WeakRef;
77 };
78 atomic(uintptr) _ref;
79 RWLock _lock;
80} TaskResource_WeakRef;
81#define TaskResource_WeakRef(inst) ((TaskResource_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TaskResource_WeakRef)), (inst)))
82
89#define taskresourceRegisterTask(self, task) (self)->_->registerTask(TaskResource(self), ComplexTask(task))
95#define taskresourceCanAcquire(self, task) (self)->_->canAcquire(TaskResource(self), ComplexTask(task))
102#define taskresourceTryAcquire(self, task) (self)->_->tryAcquire(TaskResource(self), ComplexTask(task))
108#define taskresourceRelease(self, task) (self)->_->release(TaskResource(self), ComplexTask(task))
109
#define saDeclarePtr(name)
Definition sarray.h:98
CX Object System - Object-oriented programming in C.
Complex task with dependencies, scheduling, and resource management.
Abstract base for shared resources with exclusive access.