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#include <cx/struct.h>
35
36CX_C_BEGIN
37
38typedef struct ComplexTask ComplexTask;
39typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
41typedef struct TaskResource_WeakRef TaskResource_WeakRef;
43saDeclarePtr(TaskResource_WeakRef);
44#define _sti_TaskResource _sti_object
45#define SType_TaskResource TaskResource*
46#define STStorageType_TaskResource TaskResource*
47#define STypeArg_TaskResource(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TaskResource, val))
48#define STypeArgPtr_TaskResource(type, val) (stgeneric*)objInstCheckClassPtr(TaskResource, val)
49#define STypeCheckedArg_TaskResource(type, val) stType(type), stArg(type, val)
50#define STypeCheckedPtrArg_TaskResource(type, val) stType(type), stArgPtr(type, val)
51
52
53
54typedef struct TaskResource_ClassIf {
55 ObjIface* _implements;
56 ObjIface* _parent;
57 size_t _size;
58
59 bool (*registerTask)(_In_ void* self, ComplexTask* task);
60 bool (*canAcquire)(_In_ void* self, ComplexTask* task);
61 bool (*tryAcquire)(_In_ void* self, ComplexTask* task);
62 void (*release)(_In_ void* self, ComplexTask* task);
63} TaskResource_ClassIf;
64extern TaskResource_ClassIf TaskResource_ClassIf_tmpl;
65
67typedef struct TaskResource {
68 union {
69 TaskResource_ClassIf* _;
70 void* _is_TaskResource;
71 void* _is_ObjInst;
72 };
73 ObjClassInfo* _clsinfo;
74 atomic(uintptr) _ref;
75 atomic(ptr) _weakref;
76
78extern ObjClassInfo TaskResource_clsinfo;
79#define TaskResource(inst) objInstCheckClass(TaskResource, inst)
80#define TaskResourceNone ((TaskResource*)NULL)
81
82typedef struct TaskResource_WeakRef {
83 union {
84 ObjInst* _inst;
85 void* _is_TaskResource_WeakRef;
86 void* _is_ObjInst_WeakRef;
87 };
88 atomic(uintptr) _ref;
89 RWLock _lock;
90} TaskResource_WeakRef;
91#define TaskResource_WeakRef(inst) objWeakRefCheckClass(TaskResource, inst)
92
99#define taskresourceRegisterTask(self, task) (self)->_->registerTask(TaskResource(self), ComplexTask(task))
105#define taskresourceCanAcquire(self, task) (self)->_->canAcquire(TaskResource(self), ComplexTask(task))
112#define taskresourceTryAcquire(self, task) (self)->_->tryAcquire(TaskResource(self), ComplexTask(task))
118#define taskresourceRelease(self, task) (self)->_->release(TaskResource(self), ComplexTask(task))
119
120CX_C_END
#define saDeclarePtr(name)
Definition sarray.h:100
CX Struct System - Introspectable, serializable POD structures in C.
CX Object System - Object-oriented programming in C.
Complex task with dependencies, scheduling, and resource management.
Abstract base for shared resources with exclusive access.