MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_file_accessor.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_FILE_ACCESSOR_H_1611109313
12#define INCGUARD_MGL_FILE_ACCESSOR_H_1611109313
13
17#include <mgl/mgl_environment.h>
19
20namespace MGL::File::Accessor
21{
22AccessWorkPtr Open(Result &result, const PathView &path, OpenMode mode) noexcept;
23Result Close(AccessWorkPtr &work) noexcept;
24
25size_t Read(AccessWorkPtr &work, Result &result, void *buffer, size_t size) noexcept;
26size_t Write(AccessWorkPtr &work, Result &result, const void *buffer, size_t size) noexcept;
27size_t Seek(AccessWorkPtr &work, Result &result, SeekType seekType, int32_t offset) noexcept;
28size_t GetOffset(AccessWorkPtr &work, Result &result) noexcept;
29bool IsEOF(AccessWorkPtr &work, Result &result) noexcept;
30size_t GetSize(AccessWorkPtr &work, Result &result) noexcept;
31
32size_t GetSize(Result &result, const PathView &path) noexcept;
33Result MakeDirectory(const PathView &path) noexcept;
34Result Move(const PathView &sourcePath, const PathView &destPath) noexcept;
35Result Remove(const PathView &path) noexcept;
36Result Copy(const PathView &sourcePath, const PathView &destPath) noexcept;
37bool Exists(Result &result, const PathView &path) noexcept;
38bool IsSystemNativeFile(Result &result, const PathView &path) noexcept;
39
40Result Mount(const PathView &mountName, const PathView &path, MountAccessType accessType, DelegateKey delegateKey = Mounter::kDefaultDelegateKey) noexcept;
41Result Unmount(const PathView &mountName) noexcept;
42Result Remount(const PathView &mountName, const PathView &path, MountAccessType accessType, DelegateKey delegateKey = Mounter::kDefaultDelegateKey) noexcept;
43
44/* ------------------------------------------------------------------------- */
51/* ------------------------------------------------------------------------- */
52[[nodiscard]] inline bool IsMounted(const PathView &mountName) noexcept
53{
54 return Mounter::GetInstance().IsMounted(mountName);
55}
56
57STL::string GetSystemNativePath(Result &result, const PathView &path) noexcept;
58
59/* ------------------------------------------------------------------------- */
67/* ------------------------------------------------------------------------- */
68template<class DelegateClass, class... Args>
69constexpr Result AddDelegate(DelegateKey key, Args... args) noexcept
70{
71 return Mounter::GetInstance().AddDelegate(key, STL::make_shared<DelegateClass>(args...));
72}
73
74/* ------------------------------------------------------------------------- */
80/* ------------------------------------------------------------------------- */
81inline Result RemoveDelegate(DelegateKey key) noexcept
82{
83 return Mounter::GetInstance().RemoveDelegate(key);
84}
85
86/* ------------------------------------------------------------------------- */
91/* ------------------------------------------------------------------------- */
92inline void SetDefaultDelegate(DelegateKey key) noexcept
93{
94 Mounter::GetInstance().SetDefaultDelegate(key);
95}
96} // namespace MGL::File::Accessor
97
98#endif // INCGUARD_MGL_FILE_ACCESSOR_H_1611109313
99
100// vim: et ts=4 sw=4 sts=4
static constexpr DelegateKey kDefaultDelegateKey
デフォルトを表す予約デリゲートキー
Definition mgl_file_mounter.h:43
文字列の参照のみを行うファイルパスクラス
Definition mgl_file_path_view.h:20
static Mounter & GetInstance() noexcept
Definition mgl_singleton.h:74
MGL 環境定義
MGL ファイルアクセスのための作業用クラス
STL::unique_ptr< AccessWork > AccessWorkPtr
ファイルアクセスのためのワークのポインタ型
Definition mgl_file_access_work.h:130
Result Close(AccessWorkPtr &work) noexcept
ファイルをクローズ
Definition mgl_file_accessor.cc:138
size_t GetOffset(AccessWorkPtr &work, Result &result) noexcept
ストリーム位置を取得
Definition mgl_file_accessor.cc:300
void SetDefaultDelegate(DelegateKey key) noexcept
デフォルトのデリゲートを設定
Definition mgl_file_accessor.h:92
Result MakeDirectory(const PathView &path) noexcept
ディレクトリを作成する
Definition mgl_file_accessor.cc:439
AccessWorkPtr Open(Result &result, const PathView &path, OpenMode mode) noexcept
ファイルをオープン
Definition mgl_file_accessor.cc:94
Result Remove(const PathView &path) noexcept
ファイルの削除
Definition mgl_file_accessor.cc:510
Result Copy(const PathView &sourcePath, const PathView &destPath) noexcept
ファイルのコピー
Definition mgl_file_accessor.cc:539
bool IsSystemNativeFile(Result &result, const PathView &path) noexcept
パスがシステム標準のファイルかを取得
Definition mgl_file_accessor.cc:623
Result Remount(const PathView &mountName, const PathView &path, MountAccessType accessType, DelegateKey delegateKey=Mounter::kDefaultDelegateKey) noexcept
再マウント
Definition mgl_file_accessor.cc:694
size_t Seek(AccessWorkPtr &work, Result &result, SeekType seekType, int32_t offset) noexcept
ストリーム位置を設定
Definition mgl_file_accessor.cc:257
Result RemoveDelegate(DelegateKey key) noexcept
デリゲートの削除
Definition mgl_file_accessor.h:81
size_t Read(AccessWorkPtr &work, Result &result, void *buffer, size_t size) noexcept
ファイルを読み込み
Definition mgl_file_accessor.cc:181
Result Unmount(const PathView &mountName) noexcept
マウント解除
Definition mgl_file_accessor.cc:678
size_t GetSize(AccessWorkPtr &work, Result &result) noexcept
オープンしているファイルのサイズを取得
Definition mgl_file_accessor.cc:374
Result Mount(const PathView &mountName, const PathView &path, MountAccessType accessType, DelegateKey delegateKey=Mounter::kDefaultDelegateKey) noexcept
マウント
Definition mgl_file_accessor.cc:658
bool IsEOF(AccessWorkPtr &work, Result &result) noexcept
ファイルストリームが終端に達しているかを取得
Definition mgl_file_accessor.cc:338
size_t Write(AccessWorkPtr &work, Result &result, const void *buffer, size_t size) noexcept
ファイルに書き込み
Definition mgl_file_accessor.cc:219
Result Move(const PathView &sourcePath, const PathView &destPath) noexcept
ファイルの移動・リネーム
Definition mgl_file_accessor.cc:463
bool Exists(Result &result, const PathView &path) noexcept
ファイルの存在をチェック
Definition mgl_file_accessor.cc:598
bool IsMounted(const PathView &mountName) noexcept
マウントされているかを取得
Definition mgl_file_accessor.h:52
constexpr Result AddDelegate(DelegateKey key, Args... args) noexcept
デリゲートの追加
Definition mgl_file_accessor.h:69
DelegateKey
デリゲートキーの型
Definition mgl_file_defs.h:23
MGL::ResultWrapper< Error, Error::None, Error::NoOperation > Result
ファイル関連の処理結果
Definition mgl_file_defs.h:106
MGL ファイルマウンタ
文字列の参照のみを行うファイルパスクラス
MGL STLコンテナの代替
basic_string< char > string
std::stringの代替
Definition mgl_stl_string.h:25