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