MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_file_delegate.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_FILE_DELEGATE_H_1611104162
12#define INCGUARD_MGL_FILE_DELEGATE_H_1611104162
13
14#include <cstddef>
15
20
21namespace MGL::File
22{
25{
26public:
27 virtual ~Delegate() noexcept = default;
28
29 /* ------------------------------------------------------------------------- */
35 /* ------------------------------------------------------------------------- */
36 [[nodiscard]] virtual bool IsManagedSystemNativeFile() const noexcept = 0;
37
38 /* ------------------------------------------------------------------------- */
44 /* ------------------------------------------------------------------------- */
45 [[nodiscard]] virtual bool IsWritable() const noexcept = 0;
46
47 /* ------------------------------------------------------------------------- */
55 /* ------------------------------------------------------------------------- */
56 virtual Result Mount(SharedMountWork &mountWork, const PathView &path, MountAccessType accessType) noexcept = 0;
57
58 /* ------------------------------------------------------------------------- */
63 /* ------------------------------------------------------------------------- */
64 virtual void Unmount(SharedMountWork &mountWork) noexcept = 0;
65
66 /* ------------------------------------------------------------------------- */
75 /* ------------------------------------------------------------------------- */
76 virtual AccessWorkPtr Open(Result &result, SharedMountWork &mountWork, const PathView &path, OpenMode mode) noexcept = 0;
77
78 /* ------------------------------------------------------------------------- */
84 /* ------------------------------------------------------------------------- */
85 virtual Result Close(AccessWork *work) noexcept = 0;
86
87 /* ------------------------------------------------------------------------- */
96 /* ------------------------------------------------------------------------- */
97 virtual size_t Read(AccessWork *work, Result &result, void *buffer, size_t size) noexcept = 0;
98
99 /* ------------------------------------------------------------------------- */
108 /* ------------------------------------------------------------------------- */
109 virtual size_t Write(AccessWork *work, Result &result, const void *buffer, size_t size) noexcept = 0;
110
111 /* ------------------------------------------------------------------------- */
120 /* ------------------------------------------------------------------------- */
121 virtual size_t Seek(AccessWork *work, Result &result, SeekType seekType, int32_t offset) noexcept = 0;
122
123 /* ------------------------------------------------------------------------- */
130 /* ------------------------------------------------------------------------- */
131 virtual size_t GetOffset(AccessWork *work, Result &result) const noexcept = 0;
132
133 /* ------------------------------------------------------------------------- */
141 /* ------------------------------------------------------------------------- */
142 virtual bool IsEOF(AccessWork *work, Result &result) const noexcept = 0;
143
144 /* ------------------------------------------------------------------------- */
151 /* ------------------------------------------------------------------------- */
152 virtual size_t GetSize(AccessWork *work, Result &result) const noexcept = 0;
153
154 /* ------------------------------------------------------------------------- */
162 /* ------------------------------------------------------------------------- */
163 virtual size_t GetSize(MountWork *mountWork, Result &result, const PathView &path) const noexcept = 0;
164
165 /* ------------------------------------------------------------------------- */
172 /* ------------------------------------------------------------------------- */
173 virtual Result MakeDirectory(MountWork *mountWork, const PathView &path) noexcept = 0;
174
175 /* ------------------------------------------------------------------------- */
183 /* ------------------------------------------------------------------------- */
184 virtual Result Move(MountWork *mountWork, const PathView &sourcePath, const PathView &destPath) noexcept = 0;
185
186 /* ------------------------------------------------------------------------- */
193 /* ------------------------------------------------------------------------- */
194 virtual Result Remove(MountWork *mountWork, const PathView &path) noexcept = 0;
195
196 /* ------------------------------------------------------------------------- */
204 /* ------------------------------------------------------------------------- */
205 virtual bool Exists(MountWork *mountWork, Result &result, const PathView &path) noexcept = 0;
206};
207
208} // namespace MGL::File
209
210#endif // INCGUARD_MGL_FILE_DELEGATE_H_1611104162
211
212// vim: et ts=4 sw=4 sts=4
ファイルアクセスのための作業用クラス
Definition mgl_file_access_work.h:24
ファイルデリゲートクラス
Definition mgl_file_delegate.h:25
virtual bool IsWritable() const noexcept=0
このデリゲートが書き込みに対応しているかを取得
virtual Result Remove(MountWork *mountWork, const PathView &path) noexcept=0
ファイルの削除
virtual bool Exists(MountWork *mountWork, Result &result, const PathView &path) noexcept=0
ファイルの存在をチェック
virtual bool IsManagedSystemNativeFile() const noexcept=0
このデリゲートがシステム標準のファイルを扱うものかを取得
virtual Result Mount(SharedMountWork &mountWork, const PathView &path, MountAccessType accessType) noexcept=0
マウント時の処理
virtual Result MakeDirectory(MountWork *mountWork, const PathView &path) noexcept=0
ディレクトリを作成する
virtual bool IsEOF(AccessWork *work, Result &result) const noexcept=0
ファイルストリームが終端に達しているかを取得
virtual size_t GetSize(AccessWork *work, Result &result) const noexcept=0
オープンしているファイルのサイズを取得
virtual void Unmount(SharedMountWork &mountWork) noexcept=0
マウント解除時の処理
virtual size_t GetOffset(AccessWork *work, Result &result) const noexcept=0
ストリーム位置を取得
virtual Result Move(MountWork *mountWork, const PathView &sourcePath, const PathView &destPath) noexcept=0
ファイルの移動・リネーム
virtual size_t Seek(AccessWork *work, Result &result, SeekType seekType, int32_t offset) noexcept=0
ストリーム位置を設定
virtual Result Close(AccessWork *work) noexcept=0
ファイルをクローズ
virtual AccessWorkPtr Open(Result &result, SharedMountWork &mountWork, const PathView &path, OpenMode mode) noexcept=0
ファイルをオープン
マウント毎のワークの基底クラス
Definition mgl_file_mount_work.h:20
文字列の参照のみを行うファイルパスクラス
Definition mgl_file_path_view.h:20
MGL ファイルアクセスのための作業用クラス
STL::unique_ptr< AccessWork > AccessWorkPtr
ファイルアクセスのためのワークのポインタ型
Definition mgl_file_access_work.h:130
MGL ファイル用各種定義
MountAccessType
マウント時のアクセスタイプ
Definition mgl_file_defs.h:56
SeekType
シークタイプ
Definition mgl_file_defs.h:63
OpenMode
オープンモード
Definition mgl_file_defs.h:48
MGL ファイルアクセスに使用するマウント毎の作業用クラス
std::shared_ptr< MountWork > SharedMountWork
マウント毎のワークの共有ポインタ
Definition mgl_file_mount_work.h:51
文字列の参照のみを行うファイルパスクラス