MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_file_access_work.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_FILE_ACCESS_WORK_H_1611104568
12#define INCGUARD_MGL_FILE_ACCESS_WORK_H_1611104568
13
14#include <utility>
15
17#include <mgl/mgl_environment.h>
19
20namespace MGL::File
21{
24{
25public:
26 AccessWork(OpenMode mode, DelegateKey key) noexcept;
27
28 /* ------------------------------------------------------------------------- */
32 /* ------------------------------------------------------------------------- */
33 virtual ~AccessWork() noexcept
34 {
35 Close();
36 }
37
38 /* ------------------------------------------------------------------------- */
43 /* ------------------------------------------------------------------------- */
44 [[nodiscard]] constexpr OpenMode GetOpenMode() const noexcept
45 {
46 return _mode;
47 }
48
49 /* ------------------------------------------------------------------------- */
54 /* ------------------------------------------------------------------------- */
55 [[nodiscard]] constexpr DelegateKey GetDelegateKey() const noexcept
56 {
57 return _key;
58 }
59
60 /* ------------------------------------------------------------------------- */
65 /* ------------------------------------------------------------------------- */
66 void SetDelegate(SharedDelegate delegate) noexcept
67 {
68 if (_delegate == nullptr)
69 {
70 _delegate = std::move(delegate);
71 }
72 }
73
74 /* ------------------------------------------------------------------------- */
79 /* ------------------------------------------------------------------------- */
80 [[nodiscard]] Delegate *GetDelegate() const noexcept
81 {
82 return _delegate.get();
83 }
84
85 /* ------------------------------------------------------------------------- */
91 /* ------------------------------------------------------------------------- */
92 [[nodiscard]] constexpr bool IsOpen() const noexcept
93 {
94 return (_mode != OpenMode::None);
95 }
96
97 /* ------------------------------------------------------------------------- */
103 /* ------------------------------------------------------------------------- */
104 [[nodiscard]] constexpr bool IsReadable() const noexcept
105 {
106 return (_mode == OpenMode::Read);
107 }
108
109 /* ------------------------------------------------------------------------- */
115 /* ------------------------------------------------------------------------- */
116 [[nodiscard]] constexpr bool IsWritable() const noexcept
117 {
118 return (_mode == OpenMode::Write);
119 }
120
121 void Close() noexcept;
122
123private:
124 OpenMode _mode;
125 DelegateKey _key;
126 SharedDelegate _delegate;
127};
128
130using AccessWorkPtr = STL::unique_ptr<AccessWork>;
131
132} // namespace MGL::File
133#endif // INCGUARD_MGL_FILE_ACCESS_WORK_H_1611104568
134
135// vim: et ts=4 sw=4 sts=4
ファイルアクセスのための作業用クラス
Definition mgl_file_access_work.h:24
AccessWork(OpenMode mode, DelegateKey key) noexcept
コンストラクタ
Definition mgl_file_access_work.cc:24
constexpr bool IsOpen() const noexcept
このワークがオープンされているかを取得
Definition mgl_file_access_work.h:92
void Close() noexcept
このワークをクローズ
Definition mgl_file_access_work.cc:37
virtual ~AccessWork() noexcept
デストラクタ
Definition mgl_file_access_work.h:33
constexpr OpenMode GetOpenMode() const noexcept
オープンモードの取得
Definition mgl_file_access_work.h:44
constexpr DelegateKey GetDelegateKey() const noexcept
デリゲートキーの取得
Definition mgl_file_access_work.h:55
constexpr bool IsReadable() const noexcept
このワークが読み込み用にオープンされているかを取得
Definition mgl_file_access_work.h:104
Delegate * GetDelegate() const noexcept
デリゲートを取得
Definition mgl_file_access_work.h:80
constexpr bool IsWritable() const noexcept
このワークが書き込み用にオープンされているかを取得
Definition mgl_file_access_work.h:116
void SetDelegate(SharedDelegate delegate) noexcept
デリゲートを設定
Definition mgl_file_access_work.h:66
ファイルデリゲートクラス
Definition mgl_file_delegate.h:25
MGL 環境定義
STL::unique_ptr< AccessWork > AccessWorkPtr
ファイルアクセスのためのワークのポインタ型
Definition mgl_file_access_work.h:130
MGL ファイル用各種定義
DelegateKey
デリゲートキーの型
Definition mgl_file_defs.h:23
std::shared_ptr< Delegate > SharedDelegate
デリゲートの共有ポインタ
Definition mgl_file_defs.h:44
OpenMode
オープンモード
Definition mgl_file_defs.h:48
MGL STLのメモリ関連の代替