1 /*---------------------------------------------------------------------------*
2 Project: Horizon
3 File: fs_FileSystem.h
4
5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
6
7 These coded instructions, statements, and computer programs contain
8 proprietary information of Nintendo of America Inc. and/or Nintendo
9 Company Ltd., and are protected by Federal copyright law. They may
10 not be disclosed to third parties or copied or duplicated in any form,
11 in whole or in part, without the prior written consent of Nintendo.
12
13 $Rev: 31479 $
14 *---------------------------------------------------------------------------*/
15
16 #ifndef NN_FS_FS_FILESYSTEM_H_
17 #define NN_FS_FS_FILESYSTEM_H_
18
19 #include <nn/Handle.h>
20 #include <nn/Result.h>
21 #include <nn/types.h>
22 #include <nn/util/util_Result.h>
23 #include <nn/fs/fs_Parameters.h>
24 #include <nn/fs/fs_FileSystemBase.h>
25
26 /*! @file
27 @brief ファイルおよびディレクトリの作成・削除・リネーム API の宣言
28 */
29
30 namespace nn {
31 namespace fs {
32
33 //----------------------------------------
34 //! @name ファイル・ディレクトリ操作
35 //@{
36
37 /*!
38 @brief ファイルを削除します。
39
40 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
41 基本的に @ref TryDeleteFile を使うようにしてください。
42
43 @param[in] pathName 削除するファイルのパス
44 */
45 void DeleteFile( const wchar_t* pathName );
46
47 /*!
48 @brief ファイルを削除します。
49
50 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
51 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
52
53 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
54 基本的に @ref TryDeleteFile を使うようにしてください。
55
56 @param[in] pathName 削除するファイルのパス
57 */
58 void DeleteFile( const char* pathName );
59
60 /*!
61 @brief ファイルを削除します。
62
63 ファイルを削除する途中でエラーが発生した場合はそのエラーを返します。
64
65 @param[in] pathName 削除するファイルのパス
66 */
67 Result TryDeleteFile( const wchar_t* pathName );
68
69 /*!
70 @brief ファイルを削除します。
71
72 ファイルを削除する途中でエラーが発生した場合はそのエラーを返します。
73
74 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
75 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
76
77 @param[in] pathName 削除するファイルのパス
78 */
79 Result TryDeleteFile( const char* pathName );
80
81 /*!
82 @brief ファイルをリネームします。
83
84 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
85 基本的に @ref TryRename を使うようにしてください。
86
87 @param[in] currentPath リネーム元のパス
88 @param[in] newPath リネーム先のパス
89 */
90 void RenameFile( const wchar_t* currentPath, const wchar_t* newPath);
91
92 /*!
93 @brief ファイルをリネームします。
94
95 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
96 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
97
98 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
99 基本的に @ref TryRename を使うようにしてください。
100
101 @param[in] currentPath リネーム元のパス
102 @param[in] newPath リネーム先のパス
103 */
104 void RenameFile( const char* currentPath, const char* newPath);
105
106 /*!
107 @brief ファイルをリネームします。
108
109 ファイルをリネームする途中でエラーが発生した場合はそのエラーを返します。
110
111 @param[in] currentPath リネーム元のパス
112 @param[in] newPath リネーム先のパス
113 */
114 Result TryRenameFile( const wchar_t* currentPath, const wchar_t* newPath);
115
116 /*!
117 @brief ファイルをリネームします。
118
119 ファイルをリネームする途中でエラーが発生した場合はそのエラーを返します。
120
121 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
122 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
123
124 @param[in] currentPath リネーム元のパス
125 @param[in] newPath リネーム先のパス
126 */
127 Result TryRenameFile( const char* currentPath, const char* newPath);
128
129 /*!
130 @brief ディレクトリを削除します。
131
132 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
133 基本的に @ref TryDeleteDirectory を使うようにしてください。
134
135 @param[in] pathName 削除するディレクトリのパス
136 */
137 void DeleteDirectory( const wchar_t* pathName );
138
139 /*!
140 @brief ディレクトリを削除します。
141
142 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
143 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
144
145 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
146 基本的に @ref TryDeleteDirectory を使うようにしてください。
147
148 @param[in] pathName 削除するディレクトリのパス
149 */
150 void DeleteDirectory( const char* pathName );
151
152 /*!
153 @brief ディレクトリを削除します。
154
155 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
156
157 @param[in] pathName 削除するディレクトリのパス
158 */
159 Result TryDeleteDirectory( const wchar_t* pathName );
160
161 /*!
162 @brief ディレクトリを削除します。
163
164 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
165
166 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
167 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
168
169 @param[in] pathName 削除するディレクトリのパス
170 */
171 Result TryDeleteDirectory( const char* pathName );
172
173 /*!
174 @brief ディレクトリを再帰的に削除します。
175
176 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
177
178 @param[in] pathName 削除するディレクトリのパス
179 */
180 Result TryDeleteDirectoryRecursively( const wchar_t* pathName );
181
182 /*!
183 @brief ディレクトリを再帰的に削除します。
184
185 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
186 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
187 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
188
189 @param[in] pathName 削除するディレクトリのパス
190 */
191 Result TryDeleteDirectoryRecursively( const char* pathName );
192
193 /*!
194 @brief ファイルを作成します。
195
196 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
197 基本的に @ref TryCreateFile を使うようにしてください。
198
199 @param[in] pathName 作成するファイルのパス
200 @param[in] size 作成するファイルのサイズ
201 */
202 void CreateFile( const wchar_t* pathName, s64 size );
203
204 /*!
205 @brief ファイルを作成します。
206
207 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
208 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
209
210 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
211 基本的に @ref TryCreateFile を使うようにしてください。
212
213 @param[in] pathName 作成するファイルのパス
214 @param[in] size 作成するファイルのサイズ
215 */
216 void CreateFile( const char* pathName, s64 size );
217
218 /*!
219 @brief ファイルを作成します。
220
221 ファイルを作成する途中でエラーが発生した場合はそのエラーを返します。
222
223 @param[in] pathName 作成するファイルのパス
224 @param[in] size 作成するファイルのサイズ
225 */
226 Result TryCreateFile( const wchar_t* pathName, s64 size );
227
228 /*!
229 @brief ファイルを作成します。
230
231 ファイルを作成する途中でエラーが発生した場合はそのエラーを返します。
232
233 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
234 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
235
236 @param[in] pathName 作成するファイルのパス
237 @param[in] size 作成するファイルのサイズ
238 */
239 Result TryCreateFile( const char* pathName, s64 size );
240
241 /*!
242 @brief ディレクトリを作成します。
243
244 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
245 基本的に @ref TryCreateDirectory を使うようにしてください。
246
247 @param[in] pathName 作成するディレクトリのパス
248 */
249 void CreateDirectory( const wchar_t* pathName );
250
251 /*!
252 @brief ディレクトリを作成します。
253
254 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
255 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
256
257 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
258 基本的に @ref TryCreateDirectory を使うようにしてください。
259
260 @param[in] pathName 作成するディレクトリのパス
261 */
262 void CreateDirectory( const char* pathName );
263
264 /*!
265 @brief ディレクトリを作成します。
266
267 ディレクトリを作成する途中でエラーが発生した場合はそのエラーを返します。
268
269 @param[in] pathName 作成するディレクトリのパス
270 */
271 Result TryCreateDirectory( const wchar_t* pathName );
272
273 /*!
274 @brief ディレクトリを作成します。
275
276 ディレクトリを作成する途中でエラーが発生した場合はそのエラーを返します。
277
278 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
279 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
280
281 @param[in] pathName 作成するディレクトリのパス
282 */
283 Result TryCreateDirectory( const char* pathName );
284
285 /*!
286 @brief ディレクトリをリネームします。
287
288 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
289 基本的に @ref TryRenameDirectory を使うようにしてください。
290
291 @param[in] currentPath リネーム元のパス
292 @param[in] newPath リネーム先のパス
293 */
294 void RenameDirectory( const wchar_t* currentPath, const wchar_t* newPath);
295
296 /*!
297 @brief ディレクトリをリネームします。
298
299 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
300 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
301
302 この関数は、処理の結果を返さないためエラーハンドリングを行なうことができません。
303 基本的に @ref TryRenameDirectory を使うようにしてください。
304
305 @param[in] currentPath リネーム元のパス
306 @param[in] newPath リネーム先のパス
307 */
308 void RenameDirectory( const char* currentPath, const char* newPath);
309
310 /*!
311 @brief ディレクトリをリネームします。
312
313 ディレクトリをリネームする途中でエラーが発生した場合はそのエラーを返します。
314
315 @param[in] currentPath リネーム元のパス
316 @param[in] newPath リネーム先のパス
317 */
318 Result TryRenameDirectory( const wchar_t* currentPath, const wchar_t* newPath);
319
320 /*!
321 @brief ディレクトリをリネームします。
322
323 ディレクトリをリネームする途中でエラーが発生した場合はそのエラーを返します。
324
325 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
326 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
327
328 @param[in] currentPath リネーム元のパス
329 @param[in] newPath リネーム先のパス
330 */
331 Result TryRenameDirectory( const char* currentPath, const char* newPath);
332
333 //@}
334
DeleteFile(const wchar_t * pathName)335 inline void DeleteFile(const wchar_t* pathName)
336 {
337 detail::GetGlobalFileSystemBase().DeleteFile(pathName);
338 }
DeleteFile(const char * pathName)339 inline void DeleteFile(const char* pathName)
340 {
341 detail::GetGlobalFileSystemBase().DeleteFile(pathName);
342 }
TryDeleteFile(const wchar_t * pathName)343 inline Result TryDeleteFile(const wchar_t* pathName)
344 {
345 return detail::GetGlobalFileSystemBase().TryDeleteFile(pathName);
346 }
TryDeleteFile(const char * pathName)347 inline Result TryDeleteFile(const char* pathName)
348 {
349 return detail::GetGlobalFileSystemBase().TryDeleteFile(pathName);
350 }
351
RenameFile(const wchar_t * currentPath,const wchar_t * newPath)352 inline void RenameFile( const wchar_t* currentPath, const wchar_t* newPath)
353 {
354 detail::GetGlobalFileSystemBase().RenameFile(currentPath, newPath);
355 }
RenameFile(const char * currentPath,const char * newPath)356 inline void RenameFile( const char* currentPath, const char* newPath)
357 {
358 detail::GetGlobalFileSystemBase().RenameFile(currentPath, newPath);
359 }
TryRenameFile(const wchar_t * currentPath,const wchar_t * newPath)360 inline Result TryRenameFile( const wchar_t* currentPath, const wchar_t* newPath)
361 {
362 return detail::GetGlobalFileSystemBase().TryRenameFile(currentPath, newPath);
363 }
TryRenameFile(const char * currentPath,const char * newPath)364 inline Result TryRenameFile( const char* currentPath, const char* newPath)
365 {
366 return detail::GetGlobalFileSystemBase().TryRenameFile(currentPath, newPath);
367 }
368
DeleteDirectory(const wchar_t * pathName)369 inline void DeleteDirectory(const wchar_t* pathName)
370 {
371 detail::GetGlobalFileSystemBase().DeleteDirectory(pathName);
372 }
DeleteDirectory(const char * pathName)373 inline void DeleteDirectory(const char* pathName)
374 {
375 detail::GetGlobalFileSystemBase().DeleteDirectory(pathName);
376 }
DeleteDirectoryRecursively(const wchar_t * pathName)377 inline void DeleteDirectoryRecursively(const wchar_t* pathName)
378 {
379 detail::GetGlobalFileSystemBase().DeleteDirectoryRecursively(pathName);
380 }
DeleteDirectoryRecursively(const char * pathName)381 inline void DeleteDirectoryRecursively(const char* pathName)
382 {
383 detail::GetGlobalFileSystemBase().DeleteDirectoryRecursively(pathName);
384 }
TryDeleteDirectory(const wchar_t * pathName)385 inline Result TryDeleteDirectory(const wchar_t* pathName)
386 {
387 return detail::GetGlobalFileSystemBase().TryDeleteDirectory(pathName);
388 }
TryDeleteDirectory(const char * pathName)389 inline Result TryDeleteDirectory(const char* pathName)
390 {
391 return detail::GetGlobalFileSystemBase().TryDeleteDirectory(pathName);
392 }
TryDeleteDirectoryRecursively(const wchar_t * pathName)393 inline Result TryDeleteDirectoryRecursively(const wchar_t* pathName)
394 {
395 return detail::GetGlobalFileSystemBase().TryDeleteDirectoryRecursively(pathName);
396 }
TryDeleteDirectoryRecursively(const char * pathName)397 inline Result TryDeleteDirectoryRecursively(const char* pathName)
398 {
399 return detail::GetGlobalFileSystemBase().TryDeleteDirectoryRecursively(pathName);
400 }
401
CreateFile(const wchar_t * pathName,s64 size)402 inline void CreateFile(const wchar_t* pathName, s64 size)
403 {
404 detail::GetGlobalFileSystemBase().CreateFile(pathName, size);
405 }
CreateFile(const char * pathName,s64 size)406 inline void CreateFile(const char* pathName, s64 size)
407 {
408 detail::GetGlobalFileSystemBase().CreateFile(pathName, size);
409 }
TryCreateFile(const wchar_t * pathName,s64 size)410 inline Result TryCreateFile(const wchar_t* pathName, s64 size)
411 {
412 return detail::GetGlobalFileSystemBase().TryCreateFile(pathName, size);
413 }
TryCreateFile(const char * pathName,s64 size)414 inline Result TryCreateFile(const char* pathName, s64 size)
415 {
416 return detail::GetGlobalFileSystemBase().TryCreateFile(pathName, size);
417 }
418
CreateDirectory(const wchar_t * pathName)419 inline void CreateDirectory(const wchar_t* pathName)
420 {
421 detail::GetGlobalFileSystemBase().CreateDirectory(pathName);
422 }
CreateDirectory(const char * pathName)423 inline void CreateDirectory(const char* pathName)
424 {
425 detail::GetGlobalFileSystemBase().CreateDirectory(pathName);
426 }
TryCreateDirectory(const wchar_t * pathName)427 inline Result TryCreateDirectory(const wchar_t* pathName)
428 {
429 return detail::GetGlobalFileSystemBase().TryCreateDirectory(pathName);
430 }
TryCreateDirectory(const char * pathName)431 inline Result TryCreateDirectory(const char* pathName)
432 {
433 return detail::GetGlobalFileSystemBase().TryCreateDirectory(pathName);
434 }
435
RenameDirectory(const wchar_t * currentPath,const wchar_t * newPath)436 inline void RenameDirectory( const wchar_t* currentPath, const wchar_t* newPath)
437 {
438 detail::GetGlobalFileSystemBase().RenameDirectory(currentPath, newPath);
439 }
RenameDirectory(const char * currentPath,const char * newPath)440 inline void RenameDirectory( const char* currentPath, const char* newPath)
441 {
442 detail::GetGlobalFileSystemBase().RenameDirectory(currentPath, newPath);
443 }
TryRenameDirectory(const wchar_t * currentPath,const wchar_t * newPath)444 inline Result TryRenameDirectory( const wchar_t* currentPath, const wchar_t* newPath)
445 {
446 return detail::GetGlobalFileSystemBase().TryRenameDirectory(currentPath, newPath);
447 }
TryRenameDirectory(const char * currentPath,const char * newPath)448 inline Result TryRenameDirectory( const char* currentPath, const char* newPath)
449 {
450 return detail::GetGlobalFileSystemBase().TryRenameDirectory(currentPath, newPath);
451 }
452
453 }
454 }
455 #endif // ifndef NN_FS_FS_FILESYSTEM_H_
456