MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_file_handle.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_FILE_HANDLE_H_1611364672
12#define INCGUARD_MGL_FILE_HANDLE_H_1611364672
13
15
16namespace MGL::File
17{
19class Handle
20{
21public:
22 /* ------------------------------------------------------------------------- */
26 /* ------------------------------------------------------------------------- */
27 constexpr Handle() noexcept
28 : _work(nullptr)
29 {
30 }
31
32 Handle(const PathView &path, OpenMode mode = OpenMode::Read) noexcept;
33 Result Open(const PathView &path, OpenMode mode = OpenMode::Read) noexcept;
34 Result Close() noexcept;
35
36 /* ------------------------------------------------------------------------- */
42 /* ------------------------------------------------------------------------- */
43 [[nodiscard]] constexpr bool IsOpen() const noexcept
44 {
45 return (_work) ? _work->IsOpen() : false;
46 }
47
48 size_t Read(void *buffer, size_t size) noexcept;
49 size_t Write(const void *buffer, size_t size) noexcept;
50 size_t Seek(SeekType seekType, int32_t offset) noexcept;
51 size_t Seek(SeekType seekType, size_t offset) noexcept;
52 size_t Skip(size_t size) noexcept;
53 [[nodiscard]] size_t GetOffset() noexcept;
54 [[nodiscard]] bool IsEOF() noexcept;
55 [[nodiscard]] size_t GetSize() noexcept;
56
57 /* ------------------------------------------------------------------------- */
62 /* ------------------------------------------------------------------------- */
63 [[nodiscard]] constexpr const Result &GetResult() const noexcept
64 {
65 return _result;
66 }
67
68 /* ------------------------------------------------------------------------- */
74 /* ------------------------------------------------------------------------- */
75 [[nodiscard]] constexpr bool HasError() const noexcept
76 {
77 return _result.HasError();
78 }
79
80 // コピー禁止
81 Handle(const Handle &) = delete;
82 Handle &operator=(const Handle &) = delete;
83
84 /* ------------------------------------------------------------------------- */
89 /* ------------------------------------------------------------------------- */
90 Handle(Handle &&other) noexcept
91 : _work(std::move(other._work))
92 , _result(other._result)
93 {
94 other._work.reset();
95 other._result = Result();
96 }
97
98 /* ------------------------------------------------------------------------- */
103 /* ------------------------------------------------------------------------- */
104 Handle &operator=(Handle &&other) noexcept
105 {
106 if (this != &other)
107 {
108 Close();
109
110 _work = std::move(other._work);
111 _result = other._result;
112
113 other._work.reset();
114 other._result = Result();
115 }
116
117 return *this;
118 }
119
120private:
121 AccessWorkPtr _work;
122 Result _result;
123};
124
125} // namespace MGL::File
126
127#endif // INCGUARD_MGL_FILE_HANDLE_H_1611364672
128
129// vim: et ts=4 sw=4 sts=4
ファイルハンドルクラス
Definition mgl_file_handle.h:20
constexpr bool IsOpen() const noexcept
ファイルがオープンされているかを取得
Definition mgl_file_handle.h:43
constexpr bool HasError() const noexcept
最後の処理でエラーが発生しているかの取得
Definition mgl_file_handle.h:75
constexpr const Result & GetResult() const noexcept
処理結果の取得
Definition mgl_file_handle.h:63
Handle & operator=(Handle &&other) noexcept
ムーブ代入演算
Definition mgl_file_handle.h:104
bool IsEOF() noexcept
ファイルストリームが終端に達しているかを取得
Definition mgl_file_handle.cc:155
Handle(Handle &&other) noexcept
ムーブコンストラクタ
Definition mgl_file_handle.h:90
size_t GetOffset() noexcept
ストリーム位置を取得
Definition mgl_file_handle.cc:141
Result Open(const PathView &path, OpenMode mode=OpenMode::Read) noexcept
ファイルをオープン
Definition mgl_file_handle.cc:39
Result Close() noexcept
ファイルをクローズ
Definition mgl_file_handle.cc:53
size_t Seek(SeekType seekType, int32_t offset) noexcept
ストリーム位置を設定
Definition mgl_file_handle.cc:102
constexpr Handle() noexcept
コンストラクタ
Definition mgl_file_handle.h:27
size_t GetSize() noexcept
オープンしているファイルのサイズを取得
Definition mgl_file_handle.cc:167
size_t Skip(size_t size) noexcept
ストリーム位置をスキップ
Definition mgl_file_handle.cc:129
文字列の参照のみを行うファイルパスクラス
Definition mgl_file_path_view.h:20
constexpr bool HasError() const noexcept
エラーが発生しているかを取得
Definition mgl_result_wrapper.h:151
STL::unique_ptr< AccessWork > AccessWorkPtr
ファイルアクセスのためのワークのポインタ型
Definition mgl_file_access_work.h:130
SeekType
シークタイプ
Definition mgl_file_defs.h:63
OpenMode
オープンモード
Definition mgl_file_defs.h:48
MGL ファイルマウンタ