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: 32512 $
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 rom アーカイブ以外では @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 rom アーカイブ以外では @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 @return 処理の結果を返します。
68 */
69 Result TryDeleteFile( const wchar_t* pathName );
70
71 /*!
72 @brief ファイルを削除します。
73
74 ファイルを削除する途中でエラーが発生した場合はそのエラーを返します。
75
76 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
77 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
78
79 @param[in] pathName 削除するファイルのパス
80
81 @return 処理の結果を返します。
82 */
83 Result TryDeleteFile( const char* pathName );
84
85 /*!
86 @brief ファイルをリネームします。
87
88 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。
89 rom アーカイブ以外では @ref TryRenameFile を使用してください。
90
91 @param[in] currentPath リネーム元のパス
92 @param[in] newPath リネーム先のパス
93 */
94 void RenameFile( const wchar_t* currentPath, const wchar_t* newPath);
95
96 /*!
97 @brief ファイルをリネームします。
98
99 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
100 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
101
102 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。
103 rom アーカイブ以外では @ref TryRenameFile を使用してください。
104
105 @param[in] currentPath リネーム元のパス
106 @param[in] newPath リネーム先のパス
107 */
108 void RenameFile( const char* currentPath, const char* newPath);
109
110 /*!
111 @brief ファイルをリネームします。
112
113 ファイルをリネームする途中でエラーが発生した場合はそのエラーを返します。
114
115 @param[in] currentPath リネーム元のパス
116 @param[in] newPath リネーム先のパス
117
118 @return 処理の結果を返します。
119 */
120 Result TryRenameFile( const wchar_t* currentPath, const wchar_t* newPath);
121
122 /*!
123 @brief ファイルをリネームします。
124
125 ファイルをリネームする途中でエラーが発生した場合はそのエラーを返します。
126
127 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
128 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
129
130 @param[in] currentPath リネーム元のパス
131 @param[in] newPath リネーム先のパス
132
133 @return 処理の結果を返します。
134 */
135 Result TryRenameFile( const char* currentPath, const char* newPath);
136
137 /*!
138 @brief ディレクトリを削除します。
139
140 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。
141 rom アーカイブ以外では @ref TryDeleteDirectory を使用してください。
142
143 @param[in] pathName 削除するディレクトリのパス
144 */
145 void DeleteDirectory( const wchar_t* pathName );
146
147 /*!
148 @brief ディレクトリを削除します。
149
150 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
151 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
152
153 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。
154 rom アーカイブ以外では @ref TryDeleteDirectory を使用してください。
155
156 @param[in] pathName 削除するディレクトリのパス
157 */
158 void DeleteDirectory( const char* pathName );
159
160 /*!
161 @brief ディレクトリを削除します。
162
163 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
164
165 @param[in] pathName 削除するディレクトリのパス
166
167 @return 処理の結果を返します。
168 */
169 Result TryDeleteDirectory( const wchar_t* pathName );
170
171 /*!
172 @brief ディレクトリを削除します。
173
174 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
175
176 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
177 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
178
179 @param[in] pathName 削除するディレクトリのパス
180
181 @return 処理の結果を返します。
182 */
183 Result TryDeleteDirectory( const char* pathName );
184
185 /*!
186 @brief ディレクトリを再帰的に削除します。
187
188 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
189
190 @param[in] pathName 削除するディレクトリのパス
191
192 @return 処理の結果を返します。
193 */
194 Result TryDeleteDirectoryRecursively( const wchar_t* pathName );
195
196 /*!
197 @brief ディレクトリを再帰的に削除します。
198
199 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
200 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
201 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
202
203 @param[in] pathName 削除するディレクトリのパス
204
205 @return 処理の結果を返します。
206 */
207 Result TryDeleteDirectoryRecursively( const char* pathName );
208
209 /*!
210 @brief ファイルを作成します。
211
212 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。
213 rom アーカイブ以外では @ref TryCreateFile を使用してください。
214
215 @param[in] pathName 作成するファイルのパス
216 @param[in] size 作成するファイルのサイズ
217 */
218 void CreateFile( const wchar_t* pathName, s64 size );
219
220 /*!
221 @brief ファイルを作成します。
222
223 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
224 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
225
226 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。
227 rom アーカイブ以外では @ref TryCreateFile を使用してください。
228
229 @param[in] pathName 作成するファイルのパス
230 @param[in] size 作成するファイルのサイズ
231 */
232 void CreateFile( const char* pathName, s64 size );
233
234 /*!
235 @brief ファイルを作成します。
236
237 ファイルを作成する途中でエラーが発生した場合はそのエラーを返します。
238
239 @param[in] pathName 作成するファイルのパス
240 @param[in] size 作成するファイルのサイズ
241
242 @return 処理の結果を返します。
243 */
244 Result TryCreateFile( const wchar_t* pathName, s64 size );
245
246 /*!
247 @brief ファイルを作成します。
248
249 ファイルを作成する途中でエラーが発生した場合はそのエラーを返します。
250
251 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
252 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
253
254 @param[in] pathName 作成するファイルのパス
255 @param[in] size 作成するファイルのサイズ
256
257 @return 処理の結果を返します。
258 */
259 Result TryCreateFile( const char* pathName, s64 size );
260
261 /*!
262 @brief ディレクトリを作成します。
263
264 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。
265 rom アーカイブ以外では @ref TryCreateDirectory を使用してください。
266
267 @param[in] pathName 作成するディレクトリのパス
268 */
269 void CreateDirectory( const wchar_t* pathName );
270
271 /*!
272 @brief ディレクトリを作成します。
273
274 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
275 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
276
277 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。
278 rom アーカイブ以外では @ref TryCreateDirectory を使用してください。
279
280 @param[in] pathName 作成するディレクトリのパス
281 */
282 void CreateDirectory( const char* pathName );
283
284 /*!
285 @brief ディレクトリを作成します。
286
287 ディレクトリを作成する途中でエラーが発生した場合はそのエラーを返します。
288
289 @param[in] pathName 作成するディレクトリのパス
290
291 @return 処理の結果を返します。
292 */
293 Result TryCreateDirectory( const wchar_t* pathName );
294
295 /*!
296 @brief ディレクトリを作成します。
297
298 ディレクトリを作成する途中でエラーが発生した場合はそのエラーを返します。
299
300 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
301 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
302
303 @param[in] pathName 作成するディレクトリのパス
304
305 @return 処理の結果を返します。
306 */
307 Result TryCreateDirectory( const char* pathName );
308
309 /*!
310 @brief ディレクトリをリネームします。
311
312 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。
313 rom アーカイブ以外では @ref TryRenameDirectory を使用してください。
314
315 @param[in] currentPath リネーム元のパス
316 @param[in] newPath リネーム先のパス
317 */
318 void RenameDirectory( const wchar_t* currentPath, const wchar_t* newPath);
319
320 /*!
321 @brief ディレクトリをリネームします。
322
323 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
324 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
325
326 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。
327 rom アーカイブ以外では @ref TryRenameDirectory を使用してください。
328
329 @param[in] currentPath リネーム元のパス
330 @param[in] newPath リネーム先のパス
331 */
332 void RenameDirectory( const char* currentPath, const char* newPath);
333
334 /*!
335 @brief ディレクトリをリネームします。
336
337 ディレクトリをリネームする途中でエラーが発生した場合はそのエラーを返します。
338
339 @param[in] currentPath リネーム元のパス
340 @param[in] newPath リネーム先のパス
341
342 @return 処理の結果を返します。
343 */
344 Result TryRenameDirectory( const wchar_t* currentPath, const wchar_t* newPath);
345
346 /*!
347 @brief ディレクトリをリネームします。
348
349 ディレクトリをリネームする途中でエラーが発生した場合はそのエラーを返します。
350
351 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
352 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
353
354 @param[in] currentPath リネーム元のパス
355 @param[in] newPath リネーム先のパス
356
357 @return 処理の結果を返します。
358 */
359 Result TryRenameDirectory( const char* currentPath, const char* newPath);
360
361 //@}
362
DeleteFile(const wchar_t * pathName)363 inline void DeleteFile(const wchar_t* pathName)
364 {
365 detail::GetGlobalFileSystemBase().DeleteFile(pathName);
366 }
DeleteFile(const char * pathName)367 inline void DeleteFile(const char* pathName)
368 {
369 detail::GetGlobalFileSystemBase().DeleteFile(pathName);
370 }
TryDeleteFile(const wchar_t * pathName)371 inline Result TryDeleteFile(const wchar_t* pathName)
372 {
373 return detail::GetGlobalFileSystemBase().TryDeleteFile(pathName);
374 }
TryDeleteFile(const char * pathName)375 inline Result TryDeleteFile(const char* pathName)
376 {
377 return detail::GetGlobalFileSystemBase().TryDeleteFile(pathName);
378 }
379
RenameFile(const wchar_t * currentPath,const wchar_t * newPath)380 inline void RenameFile( const wchar_t* currentPath, const wchar_t* newPath)
381 {
382 detail::GetGlobalFileSystemBase().RenameFile(currentPath, newPath);
383 }
RenameFile(const char * currentPath,const char * newPath)384 inline void RenameFile( const char* currentPath, const char* newPath)
385 {
386 detail::GetGlobalFileSystemBase().RenameFile(currentPath, newPath);
387 }
TryRenameFile(const wchar_t * currentPath,const wchar_t * newPath)388 inline Result TryRenameFile( const wchar_t* currentPath, const wchar_t* newPath)
389 {
390 return detail::GetGlobalFileSystemBase().TryRenameFile(currentPath, newPath);
391 }
TryRenameFile(const char * currentPath,const char * newPath)392 inline Result TryRenameFile( const char* currentPath, const char* newPath)
393 {
394 return detail::GetGlobalFileSystemBase().TryRenameFile(currentPath, newPath);
395 }
396
DeleteDirectory(const wchar_t * pathName)397 inline void DeleteDirectory(const wchar_t* pathName)
398 {
399 detail::GetGlobalFileSystemBase().DeleteDirectory(pathName);
400 }
DeleteDirectory(const char * pathName)401 inline void DeleteDirectory(const char* pathName)
402 {
403 detail::GetGlobalFileSystemBase().DeleteDirectory(pathName);
404 }
DeleteDirectoryRecursively(const wchar_t * pathName)405 inline void DeleteDirectoryRecursively(const wchar_t* pathName)
406 {
407 detail::GetGlobalFileSystemBase().DeleteDirectoryRecursively(pathName);
408 }
DeleteDirectoryRecursively(const char * pathName)409 inline void DeleteDirectoryRecursively(const char* pathName)
410 {
411 detail::GetGlobalFileSystemBase().DeleteDirectoryRecursively(pathName);
412 }
TryDeleteDirectory(const wchar_t * pathName)413 inline Result TryDeleteDirectory(const wchar_t* pathName)
414 {
415 return detail::GetGlobalFileSystemBase().TryDeleteDirectory(pathName);
416 }
TryDeleteDirectory(const char * pathName)417 inline Result TryDeleteDirectory(const char* pathName)
418 {
419 return detail::GetGlobalFileSystemBase().TryDeleteDirectory(pathName);
420 }
TryDeleteDirectoryRecursively(const wchar_t * pathName)421 inline Result TryDeleteDirectoryRecursively(const wchar_t* pathName)
422 {
423 return detail::GetGlobalFileSystemBase().TryDeleteDirectoryRecursively(pathName);
424 }
TryDeleteDirectoryRecursively(const char * pathName)425 inline Result TryDeleteDirectoryRecursively(const char* pathName)
426 {
427 return detail::GetGlobalFileSystemBase().TryDeleteDirectoryRecursively(pathName);
428 }
429
CreateFile(const wchar_t * pathName,s64 size)430 inline void CreateFile(const wchar_t* pathName, s64 size)
431 {
432 detail::GetGlobalFileSystemBase().CreateFile(pathName, size);
433 }
CreateFile(const char * pathName,s64 size)434 inline void CreateFile(const char* pathName, s64 size)
435 {
436 detail::GetGlobalFileSystemBase().CreateFile(pathName, size);
437 }
TryCreateFile(const wchar_t * pathName,s64 size)438 inline Result TryCreateFile(const wchar_t* pathName, s64 size)
439 {
440 return detail::GetGlobalFileSystemBase().TryCreateFile(pathName, size);
441 }
TryCreateFile(const char * pathName,s64 size)442 inline Result TryCreateFile(const char* pathName, s64 size)
443 {
444 return detail::GetGlobalFileSystemBase().TryCreateFile(pathName, size);
445 }
446
CreateDirectory(const wchar_t * pathName)447 inline void CreateDirectory(const wchar_t* pathName)
448 {
449 detail::GetGlobalFileSystemBase().CreateDirectory(pathName);
450 }
CreateDirectory(const char * pathName)451 inline void CreateDirectory(const char* pathName)
452 {
453 detail::GetGlobalFileSystemBase().CreateDirectory(pathName);
454 }
TryCreateDirectory(const wchar_t * pathName)455 inline Result TryCreateDirectory(const wchar_t* pathName)
456 {
457 return detail::GetGlobalFileSystemBase().TryCreateDirectory(pathName);
458 }
TryCreateDirectory(const char * pathName)459 inline Result TryCreateDirectory(const char* pathName)
460 {
461 return detail::GetGlobalFileSystemBase().TryCreateDirectory(pathName);
462 }
463
RenameDirectory(const wchar_t * currentPath,const wchar_t * newPath)464 inline void RenameDirectory( const wchar_t* currentPath, const wchar_t* newPath)
465 {
466 detail::GetGlobalFileSystemBase().RenameDirectory(currentPath, newPath);
467 }
RenameDirectory(const char * currentPath,const char * newPath)468 inline void RenameDirectory( const char* currentPath, const char* newPath)
469 {
470 detail::GetGlobalFileSystemBase().RenameDirectory(currentPath, newPath);
471 }
TryRenameDirectory(const wchar_t * currentPath,const wchar_t * newPath)472 inline Result TryRenameDirectory( const wchar_t* currentPath, const wchar_t* newPath)
473 {
474 return detail::GetGlobalFileSystemBase().TryRenameDirectory(currentPath, newPath);
475 }
TryRenameDirectory(const char * currentPath,const char * newPath)476 inline Result TryRenameDirectory( const char* currentPath, const char* newPath)
477 {
478 return detail::GetGlobalFileSystemBase().TryRenameDirectory(currentPath, newPath);
479 }
480
481 }
482 }
483 #endif // ifndef NN_FS_FS_FILESYSTEM_H_
484