LeviLamina
Loading...
Searching...
No Matches
FileImpl.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/file/PathBuffer.h"
7#include "mc/platform/threading/UniqueLock.h"
8
9// auto generated forward declare list
10// clang-format off
11namespace Bedrock::Threading { class Mutex; }
12namespace Core { class FileOpenMode; }
13namespace Core { class FileSystemImpl; }
14namespace Core { class Result; }
15// clang-format on
16
17namespace Core {
18
19class FileImpl {
20public:
21 // FileImpl inner types declare
22 // clang-format off
23 struct WriteBufferInfo;
24 // clang-format on
25
26 // FileImpl inner types define
27 struct WriteBufferInfo {
28 public:
29 // member variables
30 // NOLINTBEGIN
33 // NOLINTEND
34
35 public:
36 // prevent constructor by default
37 WriteBufferInfo& operator=(WriteBufferInfo const&);
38 WriteBufferInfo(WriteBufferInfo const&);
39 WriteBufferInfo();
40 };
41
42public:
43 // member variables
44 // NOLINTBEGIN
49 // NOLINTEND
50
51public:
52 // prevent constructor by default
53 FileImpl& operator=(FileImpl const&);
54 FileImpl(FileImpl const&);
55 FileImpl();
56
57public:
58 // virtual functions
59 // NOLINTBEGIN
60 virtual ~FileImpl();
61
62 virtual ::Core::PathBuffer<::std::string> _getPath() const = 0;
63
64 virtual uint64 _getBlockSize() const = 0;
65
66 virtual bool _isOpen() = 0;
67
68 virtual ::Core::Result _close() = 0;
69
70 virtual ::Core::Result _read(void* buf, uint64 numBytes, uint64* pNumBytesRead) = 0;
71
72 virtual ::Core::Result _readExactly(void* buf, uint64 numBytes) = 0;
73
74 virtual ::Core::Result _skip(uint64 numBytes) = 0;
75
76 virtual ::Core::Result _readAtPosition(uint64 position, void* buf, uint64 numBytes, uint64* pNumBytesRead) = 0;
77
78 virtual ::Core::Result _getPosition(uint64* pSizeOut) = 0;
79
80 virtual ::Core::Result _setPosition(uint64 position) = 0;
81
82 virtual ::Core::Result _write(void const* buf, uint64 numBytes) = 0;
83
84 virtual ::Core::Result _flush() = 0;
85
86 virtual ::Core::Result _getSize(uint64* pSizeOut) = 0;
87
88 virtual ::Core::Result _getRemainingSize(uint64* pSizeOut) = 0;
89 // NOLINTEND
90
91public:
92 // member functions
93 // NOLINTBEGIN
94 MCNAPI FileImpl(::Core::FileSystemImpl* pTransaction, ::Core::FileOpenMode openMode);
95
96 MCNAPI ::Bedrock::Threading::UniqueLock<::std::recursive_mutex> _lockIfWriteBuffered(bool flushBuffer);
97
98 MCNAPI ::Core::Result _writeOperation(::Core::Result&& result, uint64 numBytesWritten);
99
100 MCNAPI ::Core::Result close();
101
103
104 MCNAPI ::Core::Result flush();
105
106 MCNAPI ::Core::FileOpenMode const& getOpenMode() const;
107
108#ifdef LL_PLAT_C
109 MCNAPI ::Core::PathBuffer<::std::string> getPath() const;
110#endif
111
112 MCNAPI ::Core::Result getPosition(uint64* pPosition);
113
114 MCNAPI ::Core::Result getRemainingSize(uint64* pSize);
115
116 MCNAPI ::Core::Result getSize(uint64* pSize);
117
118 MCNAPI ::Core::FileSystemImpl* getTransaction();
119
120 MCNAPI bool isOpen();
121
122 MCNAPI ::Core::Result read(void* buf, uint64 numBytes, uint64* pNumBytesRead);
123
124 MCNAPI ::Core::Result readAtPosition(uint64 position, void* pBuf, uint64 numBytes, uint64* pNumBytesRead);
125
126 MCNAPI ::Core::Result readExactly(void* buf, uint64 numBytes);
127
128 MCNAPI ::Core::Result setPosition(uint64 position);
129
130 MCNAPI ::Core::Result skip(uint64 numBytes);
131
132 MCNAPI ::Core::Result write(void const* pBuf, uint64 numBytes);
133 // NOLINTEND
134
135public:
136 // static variables
137 // NOLINTBEGIN
138 MCNAPI static ::std::vector<::Core::FileImpl*>& sAllFiles();
139
140 MCNAPI static ::Bedrock::Threading::Mutex& sAllFilesLock();
141 // NOLINTEND
142
143public:
144 // constructor thunks
145 // NOLINTBEGIN
146 MCNAPI void* $ctor(::Core::FileSystemImpl* pTransaction, ::Core::FileOpenMode openMode);
147 // NOLINTEND
148
149public:
150 // destructor thunk
151 // NOLINTBEGIN
152 MCNAPI void $dtor();
153 // NOLINTEND
154
155public:
156 // virtual function thunks
157 // NOLINTBEGIN
158
159 // NOLINTEND
160
161public:
162 // vftables
163 // NOLINTBEGIN
164 MCNAPI static void** $vftable();
165 // NOLINTEND
166};
167
168} // namespace Core
Definition Mutex.h:10
MCAPI::Core::Result getRemainingSize(uint64 *pSize)
MCAPI::Core::Result readExactly(void *buf, uint64 numBytes)
MCAPI::Core::Result flush()
MCAPI::Core::Result write(void const *pBuf, uint64 numBytes)
MCAPI ::Bedrock::Threading::UniqueLock<::std::recursive_mutex > _lockIfWriteBuffered(bool flushBuffer)
MCAPI::Core::FileSystemImpl * getTransaction()
MCAPI::Core::Result readAtPosition(uint64 position, void *pBuf, uint64 numBytes, uint64 *pNumBytesRead)
MCAPI::Core::FileOpenMode const & getOpenMode() const
MCAPI bool isOpen()
MCAPI::Core::Result close()
MCAPI void detachFromTransaction()
MCAPI::Core::Result setPosition(uint64 position)
MCAPI void * $ctor(::Core::FileSystemImpl *pTransaction, ::Core::FileOpenMode openMode)
MCAPI::Core::Result getPosition(uint64 *pPosition)
MCAPI::Core::Result getSize(uint64 *pSize)
static MCAPI ::Bedrock::Threading::Mutex & sAllFilesLock()
static MCAPI void ** $vftable()
MCAPI::Core::Result skip(uint64 numBytes)
MCAPI::Core::Result read(void *buf, uint64 numBytes, uint64 *pNumBytesRead)
MCAPI::Core::Result _writeOperation(::Core::Result &&result, uint64 numBytesWritten)
MCAPI FileImpl(::Core::FileSystemImpl *pTransaction, ::Core::FileOpenMode openMode)
static MCAPI ::std::vector<::Core::FileImpl * > & sAllFiles()
MCAPI void $dtor()
Definition FileOpenMode.h:7
Definition FileSystemImpl.h:30
Definition Result.h:11
Definition FileImpl.h:27
Definition Alias.h:14