CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
taskrequiresresource.h
Go to the documentation of this file.
1
15
16#pragma once
17// This header file is auto-generated!
18// Do not make changes to this file or they will be overwritten.
19// clang-format off
20#include <cx/obj.h>
21#include <cx/struct.h>
22#include "taskrequires.h"
24
25CX_C_BEGIN
26
27typedef struct ComplexTask ComplexTask;
28typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
29typedef struct ComplexTask ComplexTask;
30typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
32typedef struct TaskRequiresResource_WeakRef TaskRequiresResource_WeakRef;
34saDeclarePtr(TaskRequiresResource_WeakRef);
35#define _sti_TaskRequiresResource _sti_object
36#define SType_TaskRequiresResource TaskRequiresResource*
37#define STStorageType_TaskRequiresResource TaskRequiresResource*
38#define STypeArg_TaskRequiresResource(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(TaskRequiresResource, val))
39#define STypeArgPtr_TaskRequiresResource(type, val) (stgeneric*)objInstCheckClassPtr(TaskRequiresResource, val)
40#define STypeCheckedArg_TaskRequiresResource(type, val) stType(type), stArg(type, val)
41#define STypeCheckedPtrArg_TaskRequiresResource(type, val) stType(type), stArgPtr(type, val)
42
43typedef struct TaskRequiresResource_ClassIf {
44 ObjIface* _implements;
45 ObjIface* _parent;
46 size_t _size;
47
48 uint32 (*state)(_In_ void* self, ComplexTask* task);
49 int64 (*progress)(_In_ void* self);
50 bool (*tryAcquire)(_In_ void* self, ComplexTask* task);
51 bool (*release)(_In_ void* self, ComplexTask* task);
52 void (*cancel)(_In_ void* self);
53 bool (*registerTask)(_In_ void* self, _In_ ComplexTask* task);
54} TaskRequiresResource_ClassIf;
55extern TaskRequiresResource_ClassIf TaskRequiresResource_ClassIf_tmpl;
56
58typedef struct TaskRequiresResource {
59 union {
60 TaskRequiresResource_ClassIf* _;
61 void* _is_TaskRequiresResource;
62 void* _is_TaskRequires;
63 void* _is_ObjInst;
64 };
65 ObjClassInfo* _clsinfo;
66 atomic(uintptr) _ref;
67 atomic(ptr) _weakref;
68
69 int64 expires;
70 bool owned;
73extern ObjClassInfo TaskRequiresResource_clsinfo;
74#define TaskRequiresResource(inst) objInstCheckClass(TaskRequiresResource, inst)
75#define TaskRequiresResourceNone ((TaskRequiresResource*)NULL)
76
77typedef struct TaskRequiresResource_WeakRef {
78 union {
79 ObjInst* _inst;
80 void* _is_TaskRequiresResource_WeakRef;
81 void* _is_TaskRequires_WeakRef;
82 void* _is_ObjInst_WeakRef;
83 };
84 atomic(uintptr) _ref;
85 RWLock _lock;
86} TaskRequiresResource_WeakRef;
87#define TaskRequiresResource_WeakRef(inst) objWeakRefCheckClass(TaskRequiresResource, inst)
88
89_objfactory_guaranteed TaskRequiresResource* TaskRequiresResource_create(_In_ TaskResource* res);
95#define taskrequiresresourceCreate(res) TaskRequiresResource_create(TaskResource(res))
96
97// uint32 taskrequiresresourceState(TaskRequiresResource* self, ComplexTask* task);
98#define taskrequiresresourceState(self, task) (self)->_->state(TaskRequiresResource(self), ComplexTask(task))
99// int64 taskrequiresresourceProgress(TaskRequiresResource* self);
100#define taskrequiresresourceProgress(self) (self)->_->progress(TaskRequiresResource(self))
101// bool taskrequiresresourceTryAcquire(TaskRequiresResource* self, ComplexTask* task);
102#define taskrequiresresourceTryAcquire(self, task) (self)->_->tryAcquire(TaskRequiresResource(self), ComplexTask(task))
103// bool taskrequiresresourceRelease(TaskRequiresResource* self, ComplexTask* task);
104#define taskrequiresresourceRelease(self, task) (self)->_->release(TaskRequiresResource(self), ComplexTask(task))
105// void taskrequiresresourceCancel(TaskRequiresResource* self);
106#define taskrequiresresourceCancel(self) (self)->_->cancel(TaskRequiresResource(self))
107// bool taskrequiresresourceRegisterTask(TaskRequiresResource* self, ComplexTask* task);
108#define taskrequiresresourceRegisterTask(self, task) (self)->_->registerTask(TaskRequiresResource(self), ComplexTask(task))
109
110CX_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.
Complex task with dependencies, scheduling, and resource management.
Requirement for exclusive access to a shared resource.
int64 expires
Time after which requirement times out and fails (0 = no timeout)
bool owned
True if resource has been acquired by this requirement.
TaskResource * res
Resource to acquire.
Abstract base for shared resources with exclusive access.
Abstract base class for task requirements.
Abstract base class for shared resources.