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