CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
vfsfsfile.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 "vfsfs.h"
7#include <cx/fs/file.h>
8
9typedef struct VFSFSFile VFSFSFile;
10typedef struct VFSFSFile_WeakRef VFSFSFile_WeakRef;
11saDeclarePtr(VFSFSFile);
12saDeclarePtr(VFSFSFile_WeakRef);
13
14typedef struct VFSFSFile_ClassIf {
15 ObjIface* _implements;
16 ObjIface* _parent;
17 size_t _size;
18
19 bool (*close)(_In_ void* self);
20 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);
21 bool (*write)(_In_ void* self, _In_reads_bytes_(sz) void* buf, size_t sz, _Out_opt_ _Deref_out_range_(0, sz) size_t* byteswritten);
22 int64 (*tell)(_In_ void* self);
23 int64 (*seek)(_In_ void* self, int64 off, FSSeekType seektype);
24 bool (*flush)(_In_ void* self);
25} VFSFSFile_ClassIf;
26extern VFSFSFile_ClassIf VFSFSFile_ClassIf_tmpl;
27
28typedef struct VFSFSFile {
29 union {
30 VFSFSFile_ClassIf* _;
31 void* _is_VFSFSFile;
32 void* _is_ObjInst;
33 };
34 ObjClassInfo* _clsinfo;
35 atomic(uintptr) _ref;
36 atomic(ptr) _weakref;
37
38 FSFile* file;
39} VFSFSFile;
40extern ObjClassInfo VFSFSFile_clsinfo;
41#define VFSFSFile(inst) ((VFSFSFile*)(unused_noeval((inst) && &((inst)->_is_VFSFSFile)), (inst)))
42#define VFSFSFileNone ((VFSFSFile*)NULL)
43
44typedef struct VFSFSFile_WeakRef {
45 union {
46 ObjInst* _inst;
47 void* _is_VFSFSFile_WeakRef;
48 void* _is_ObjInst_WeakRef;
49 };
50 atomic(uintptr) _ref;
51 RWLock _lock;
52} VFSFSFile_WeakRef;
53#define VFSFSFile_WeakRef(inst) ((VFSFSFile_WeakRef*)(unused_noeval((inst) && &((inst)->_is_VFSFSFile_WeakRef)), (inst)))
54
55_objfactory_guaranteed VFSFSFile* VFSFSFile_create(FSFile* f);
56// VFSFSFile* vfsfsfileCreate(FSFile* f);
57#define vfsfsfileCreate(f) VFSFSFile_create(f)
58
59// bool vfsfsfileClose(VFSFSFile* self);
60#define vfsfsfileClose(self) (self)->_->close(VFSFSFile(self))
61// bool vfsfsfileRead(VFSFSFile* self, void* buf, size_t sz, size_t* bytesread);
62#define vfsfsfileRead(self, buf, sz, bytesread) (self)->_->read(VFSFSFile(self), buf, sz, bytesread)
63// bool vfsfsfileWrite(VFSFSFile* self, void* buf, size_t sz, size_t* byteswritten);
64#define vfsfsfileWrite(self, buf, sz, byteswritten) (self)->_->write(VFSFSFile(self), buf, sz, byteswritten)
65// int64 vfsfsfileTell(VFSFSFile* self);
66#define vfsfsfileTell(self) (self)->_->tell(VFSFSFile(self))
67// int64 vfsfsfileSeek(VFSFSFile* self, int64 off, FSSeekType seektype);
68#define vfsfsfileSeek(self, off, seektype) (self)->_->seek(VFSFSFile(self), off, seektype)
69// bool vfsfsfileFlush(VFSFSFile* self);
70#define vfsfsfileFlush(self) (self)->_->flush(VFSFSFile(self))
71
Low-level file I/O operations.
#define saDeclarePtr(name)
Definition sarray.h:98
struct FSFile FSFile
Definition file.h:29
enum FSSeekTypeEnum FSSeekType
#define _objfactory_guaranteed
Definition objimpl.h:104
CX Object System - Object-oriented programming in C.