CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
vfsvfsfile.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 "vfsvfs.h"
7#include <cx/fs/vfs.h>
8
9typedef struct VFSDir VFSDir;
10typedef struct VFSVFSFile VFSVFSFile;
11typedef struct VFSVFSFile_WeakRef VFSVFSFile_WeakRef;
12saDeclarePtr(VFSVFSFile);
13saDeclarePtr(VFSVFSFile_WeakRef);
14
15typedef struct VFSVFSFile_ClassIf {
16 ObjIface* _implements;
17 ObjIface* _parent;
18 size_t _size;
19
20 bool (*close)(_In_ void* self);
21 bool (*read)(_In_ void* self, _Out_writes_bytes_to_(sz, *bytesread) void* buf, size_t sz, _Out_ _Deref_out_range_(0, sz) size_t* bytesread);
22 bool (*write)(_In_ void* self, _In_reads_bytes_(sz) void* buf, size_t sz, _Out_opt_ _Deref_out_range_(0, sz) size_t* byteswritten);
23 int64 (*tell)(_In_ void* self);
24 int64 (*seek)(_In_ void* self, int64 off, FSSeekType seektype);
25 bool (*flush)(_In_ void* self);
26} VFSVFSFile_ClassIf;
27extern VFSVFSFile_ClassIf VFSVFSFile_ClassIf_tmpl;
28
29typedef struct VFSVFSFile {
30 union {
31 VFSVFSFile_ClassIf* _;
32 void* _is_VFSVFSFile;
33 void* _is_ObjInst;
34 };
35 ObjClassInfo* _clsinfo;
36 atomic(uintptr) _ref;
37 atomic(ptr) _weakref;
38
39 VFSFile* file;
40} VFSVFSFile;
41extern ObjClassInfo VFSVFSFile_clsinfo;
42#define VFSVFSFile(inst) ((VFSVFSFile*)(unused_noeval((inst) && &((inst)->_is_VFSVFSFile)), (inst)))
43#define VFSVFSFileNone ((VFSVFSFile*)NULL)
44
45typedef struct VFSVFSFile_WeakRef {
46 union {
47 ObjInst* _inst;
48 void* _is_VFSVFSFile_WeakRef;
49 void* _is_ObjInst_WeakRef;
50 };
51 atomic(uintptr) _ref;
52 RWLock _lock;
53} VFSVFSFile_WeakRef;
54#define VFSVFSFile_WeakRef(inst) ((VFSVFSFile_WeakRef*)(unused_noeval((inst) && &((inst)->_is_VFSVFSFile_WeakRef)), (inst)))
55
56_objfactory_guaranteed VFSVFSFile* VFSVFSFile_create(VFSFile* f);
57// VFSVFSFile* vfsvfsfileCreate(VFSFile* f);
58#define vfsvfsfileCreate(f) VFSVFSFile_create(f)
59
60// bool vfsvfsfileClose(VFSVFSFile* self);
61#define vfsvfsfileClose(self) (self)->_->close(VFSVFSFile(self))
62// bool vfsvfsfileRead(VFSVFSFile* self, void* buf, size_t sz, size_t* bytesread);
63#define vfsvfsfileRead(self, buf, sz, bytesread) (self)->_->read(VFSVFSFile(self), buf, sz, bytesread)
64// bool vfsvfsfileWrite(VFSVFSFile* self, void* buf, size_t sz, size_t* byteswritten);
65#define vfsvfsfileWrite(self, buf, sz, byteswritten) (self)->_->write(VFSVFSFile(self), buf, sz, byteswritten)
66// int64 vfsvfsfileTell(VFSVFSFile* self);
67#define vfsvfsfileTell(self) (self)->_->tell(VFSVFSFile(self))
68// int64 vfsvfsfileSeek(VFSVFSFile* self, int64 off, FSSeekType seektype);
69#define vfsvfsfileSeek(self, off, seektype) (self)->_->seek(VFSVFSFile(self), off, seektype)
70// bool vfsvfsfileFlush(VFSVFSFile* self);
71#define vfsvfsfileFlush(self) (self)->_->flush(VFSVFSFile(self))
72
#define saDeclarePtr(name)
Definition sarray.h:98
enum FSSeekTypeEnum FSSeekType
struct VFSFile VFSFile
Definition vfs.h:44
#define _objfactory_guaranteed
Definition objimpl.h:104
CX Object System - Object-oriented programming in C.
Virtual Filesystem (VFS)