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 "taskrequires.h"
23
24typedef struct ComplexTask ComplexTask;
25typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
26typedef struct ComplexTask ComplexTask;
27typedef struct ComplexTask_WeakRef ComplexTask_WeakRef;
29typedef struct TaskRequiresResource_WeakRef TaskRequiresResource_WeakRef;
31saDeclarePtr(TaskRequiresResource_WeakRef);
32
33typedef struct TaskRequiresResource_ClassIf {
34 ObjIface* _implements;
35 ObjIface* _parent;
36 size_t _size;
37
38 uint32 (*state)(_In_ void* self, ComplexTask* task);
39 int64 (*progress)(_In_ void* self);
40 bool (*tryAcquire)(_In_ void* self, ComplexTask* task);
41 bool (*release)(_In_ void* self, ComplexTask* task);
42 void (*cancel)(_In_ void* self);
43 bool (*registerTask)(_In_ void* self, _In_ ComplexTask* task);
44} TaskRequiresResource_ClassIf;
45extern TaskRequiresResource_ClassIf TaskRequiresResource_ClassIf_tmpl;
46
48typedef struct TaskRequiresResource {
49 union {
50 TaskRequiresResource_ClassIf* _;
51 void* _is_TaskRequiresResource;
52 void* _is_TaskRequires;
53 void* _is_ObjInst;
54 };
55 ObjClassInfo* _clsinfo;
56 atomic(uintptr) _ref;
57 atomic(ptr) _weakref;
58
59 int64 expires;
60 bool owned;
63extern ObjClassInfo TaskRequiresResource_clsinfo;
64#define TaskRequiresResource(inst) ((TaskRequiresResource*)(unused_noeval((inst) && &((inst)->_is_TaskRequiresResource)), (inst)))
65#define TaskRequiresResourceNone ((TaskRequiresResource*)NULL)
66
67typedef struct TaskRequiresResource_WeakRef {
68 union {
69 ObjInst* _inst;
70 void* _is_TaskRequiresResource_WeakRef;
71 void* _is_TaskRequires_WeakRef;
72 void* _is_ObjInst_WeakRef;
73 };
74 atomic(uintptr) _ref;
75 RWLock _lock;
76} TaskRequiresResource_WeakRef;
77#define TaskRequiresResource_WeakRef(inst) ((TaskRequiresResource_WeakRef*)(unused_noeval((inst) && &((inst)->_is_TaskRequiresResource_WeakRef)), (inst)))
78
79_objfactory_guaranteed TaskRequiresResource* TaskRequiresResource_create(_In_ TaskResource* res);
85#define taskrequiresresourceCreate(res) TaskRequiresResource_create(TaskResource(res))
86
87// uint32 taskrequiresresourceState(TaskRequiresResource* self, ComplexTask* task);
88#define taskrequiresresourceState(self, task) (self)->_->state(TaskRequiresResource(self), ComplexTask(task))
89// int64 taskrequiresresourceProgress(TaskRequiresResource* self);
90#define taskrequiresresourceProgress(self) (self)->_->progress(TaskRequiresResource(self))
91// bool taskrequiresresourceTryAcquire(TaskRequiresResource* self, ComplexTask* task);
92#define taskrequiresresourceTryAcquire(self, task) (self)->_->tryAcquire(TaskRequiresResource(self), ComplexTask(task))
93// bool taskrequiresresourceRelease(TaskRequiresResource* self, ComplexTask* task);
94#define taskrequiresresourceRelease(self, task) (self)->_->release(TaskRequiresResource(self), ComplexTask(task))
95// void taskrequiresresourceCancel(TaskRequiresResource* self);
96#define taskrequiresresourceCancel(self) (self)->_->cancel(TaskRequiresResource(self))
97// bool taskrequiresresourceRegisterTask(TaskRequiresResource* self, ComplexTask* task);
98#define taskrequiresresourceRegisterTask(self, task) (self)->_->registerTask(TaskRequiresResource(self), ComplexTask(task))
99
#define saDeclarePtr(name)
Definition sarray.h:98
#define _objfactory_guaranteed
Definition objimpl.h:104
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.