MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_savedata_defs.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_SAVEDATA_DEFS_H_1628120644
12#define INCGUARD_MGL_SAVEDATA_DEFS_H_1628120644
13
14#include <cstddef>
15#include <cstdint>
16
17#include <mgl/file/mgl_file.h>
19
20namespace MGL::Savedata
21{
23enum class AccessType : uint8_t
24{
25 Save,
26 Load
27};
28
30using DataIdentifier = uint32_t;
31
33using ChunkIdentifier = uint32_t;
34
37{
39 size_t size;
40};
41
43enum class Error : uint8_t
44{
45 None,
46 NoOperation,
47 BadImplement,
55 Unknown
56};
57
60{
62 uint32_t index;
63
64 /* ------------------------------------------------------------------------- */
70 /* ------------------------------------------------------------------------- */
71 constexpr RequestInfo(DataIdentifier inIdentifier, uint32_t inIndex = 0) noexcept
72 : identifier(inIdentifier)
73 , index(inIndex)
74 {
75 }
76};
77
79struct Result
80{
84
85 /* ------------------------------------------------------------------------- */
92 /* ------------------------------------------------------------------------- */
93 constexpr Result(DataIdentifier inIdentifier, Error inError, File::Error inFileAccessError = File::Error::None) noexcept
94 : identifier(inIdentifier)
95 , error(inError)
96 , fileAccessError(inFileAccessError)
97 {
98 }
99
100 /* ------------------------------------------------------------------------- */
104 /* ------------------------------------------------------------------------- */
105 constexpr Result() noexcept
106 : Result(0, Error::NoOperation, File::Error::None)
107 {
108 }
109
110 /* ------------------------------------------------------------------------- */
116 /* ------------------------------------------------------------------------- */
117 explicit constexpr operator bool() const noexcept
118 {
119 return error == Error::None;
120 }
121
122 /* ------------------------------------------------------------------------- */
128 /* ------------------------------------------------------------------------- */
129 constexpr bool operator!() const noexcept
130 {
131 return !static_cast<bool>(*this);
132 }
133
134 /* ------------------------------------------------------------------------- */
141 /* ------------------------------------------------------------------------- */
142 [[nodiscard]] constexpr bool HasError(bool errorOnFileNotExist = true) const noexcept
143 {
144 if (error == Error::None)
145 {
146 return false;
147 }
148
149 if (!errorOnFileNotExist)
150 {
151 if ((error == Error::FailedToFileAccess) && (fileAccessError == File::Error::FileNotExist))
152 {
153 return false;
154 }
155 }
156
157 return true;
158 }
159};
160
161/* ------------------------------------------------------------------------- */
170/* ------------------------------------------------------------------------- */
171constexpr uint32_t MakeDateVersion(uint32_t year, uint32_t month, uint32_t day, uint32_t revision = 0)
172{
173 return year * 1'000'000 + month * 10'000 + day * 100 + revision;
174}
175} // namespace MGL::Savedata
176#endif // INCGUARD_MGL_SAVEDATA_DEFS_H_1628120644
177
178// vim: et ts=4 sw=4 sts=4
文字列の参照のみを行うファイルパスクラス
Definition mgl_file_path_view.h:20
MGL ファイルアクセス用ヘッダ
Error
エラー定義
Definition mgl_file_defs.h:71
constexpr uint32_t MakeDateVersion(uint32_t year, uint32_t month, uint32_t day, uint32_t revision=0)
日付からバージョンに変換
Definition mgl_savedata_defs.h:171
Error
エラーの種類
Definition mgl_savedata_defs.h:44
@ BufferNotEnough
バッファが足りない
@ DelegateHasError
デリゲートでエラーが発生
@ FailedToChunkParse
チャンクのパースに失敗
@ IdentifierNotFound
識別子が見つからない
@ DelegateNotReady
デリゲートが準備できていない
@ FailedToFileAccess
ファイルアクセスの際にエラーが発生
@ MarkerNotMatching
マーカーの不一致
uint32_t ChunkIdentifier
チャンク識別子
Definition mgl_savedata_defs.h:33
AccessType
アクセスタイプ
Definition mgl_savedata_defs.h:24
uint32_t DataIdentifier
セーブデータ識別子
Definition mgl_savedata_defs.h:30
MGL STL文字列クラスの代替
ファイル情報
Definition mgl_savedata_defs.h:37
const File::PathView path
パス
Definition mgl_savedata_defs.h:38
size_t size
サイズ
Definition mgl_savedata_defs.h:39
リクエスト情報
Definition mgl_savedata_defs.h:60
uint32_t index
インデックス
Definition mgl_savedata_defs.h:62
DataIdentifier identifier
データ識別子
Definition mgl_savedata_defs.h:61
constexpr RequestInfo(DataIdentifier inIdentifier, uint32_t inIndex=0) noexcept
コンストラクタ
Definition mgl_savedata_defs.h:71
処理結果
Definition mgl_savedata_defs.h:80
constexpr bool HasError(bool errorOnFileNotExist=true) const noexcept
エラーが発生しているかを取得
Definition mgl_savedata_defs.h:142
constexpr Result() noexcept
コンストラクタ
Definition mgl_savedata_defs.h:105
constexpr Result(DataIdentifier inIdentifier, Error inError, File::Error inFileAccessError=File::Error::None) noexcept
コンストラクタ
Definition mgl_savedata_defs.h:93
File::Error fileAccessError
ファイルアクセスで発生したエラーの種類(typeがFailedToFileAccessの際に有効)
Definition mgl_savedata_defs.h:83
constexpr bool operator!() const noexcept
否定演算子
Definition mgl_savedata_defs.h:129
DataIdentifier identifier
セーブデータの識別子
Definition mgl_savedata_defs.h:81
Error error
エラーの種類
Definition mgl_savedata_defs.h:82