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: 33174 $
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   @param[in]    pathName 作成するファイルのパス
216   @param[in]    size     作成するファイルのサイズ
217 
218   @return 処理の結果を返します。
219 */
220 Result TryCreateFile( const wchar_t* pathName, s64 size );
221 
222 /*!
223   @brief        ファイルを作成します。
224 
225                 ファイルを作成する途中でエラーが発生した場合はそのエラーを返します。
226 
227                 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
228                 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
229 
230   @param[in]    pathName 作成するファイルのパス
231   @param[in]    size     作成するファイルのサイズ
232 
233   @return 処理の結果を返します。
234 */
235 Result TryCreateFile( const char* pathName, s64 size );
236 
237 /*!
238   @brief        ディレクトリを作成します。
239 
240   @param[in]    pathName 作成するディレクトリのパス
241 */
242 void CreateDirectory( const wchar_t* pathName );
243 
244 /*!
245   @brief        ディレクトリを作成します。
246 
247                 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
248                 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
249 
250   @param[in]    pathName 作成するディレクトリのパス
251 */
252 void CreateDirectory( const char* pathName );
253 
254 /*!
255   @brief        ディレクトリを作成します。
256 
257                 ディレクトリを作成する途中でエラーが発生した場合はそのエラーを返します。
258 
259   @param[in]    pathName 作成するディレクトリのパス
260 
261   @return 処理の結果を返します。
262 */
263 Result TryCreateDirectory( const wchar_t* pathName );
264 
265 /*!
266   @brief        ディレクトリを作成します。
267 
268                 ディレクトリを作成する途中でエラーが発生した場合はそのエラーを返します。
269 
270                 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
271                 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
272 
273   @param[in]    pathName 作成するディレクトリのパス
274 
275   @return 処理の結果を返します。
276 */
277 Result TryCreateDirectory( const char* pathName );
278 
279 /*!
280   @brief        ディレクトリをリネームします。
281 
282   @param[in]    currentPath リネーム元のパス
283   @param[in]    newPath     リネーム先のパス
284 */
285 void RenameDirectory( const wchar_t* currentPath, const wchar_t* newPath);
286 
287 /*!
288   @brief        ディレクトリをリネームします。
289 
290                 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
291                 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
292 
293   @param[in]    currentPath リネーム元のパス
294   @param[in]    newPath     リネーム先のパス
295 */
296 void RenameDirectory( const char* currentPath, const char* newPath);
297 
298 /*!
299   @brief        ディレクトリをリネームします。
300 
301                 ディレクトリをリネームする途中でエラーが発生した場合はそのエラーを返します。
302 
303   @param[in]    currentPath リネーム元のパス
304   @param[in]    newPath     リネーム先のパス
305 
306   @return 処理の結果を返します。
307 */
308 Result TryRenameDirectory( const wchar_t* currentPath, const wchar_t* newPath);
309 
310 /*!
311   @brief        ディレクトリをリネームします。
312 
313                 ディレクトリをリネームする途中でエラーが発生した場合はそのエラーを返します。
314 
315                 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
316                 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
317 
318   @param[in]    currentPath リネーム元のパス
319   @param[in]    newPath     リネーム先のパス
320 
321   @return 処理の結果を返します。
322 */
323 Result TryRenameDirectory( const char* currentPath, const char* newPath);
324 
325 //@}
326 
DeleteFile(const wchar_t * pathName)327 inline void DeleteFile(const wchar_t* pathName)
328 {
329     detail::GetGlobalFileSystemBase().DeleteFile(pathName);
330 }
DeleteFile(const char * pathName)331 inline void DeleteFile(const char* pathName)
332 {
333     detail::GetGlobalFileSystemBase().DeleteFile(pathName);
334 }
TryDeleteFile(const wchar_t * pathName)335 inline Result TryDeleteFile(const wchar_t* pathName)
336 {
337     return detail::GetGlobalFileSystemBase().TryDeleteFile(pathName);
338 }
TryDeleteFile(const char * pathName)339 inline Result TryDeleteFile(const char* pathName)
340 {
341     return detail::GetGlobalFileSystemBase().TryDeleteFile(pathName);
342 }
343 
RenameFile(const wchar_t * currentPath,const wchar_t * newPath)344 inline void RenameFile( const wchar_t* currentPath, const wchar_t* newPath)
345 {
346     detail::GetGlobalFileSystemBase().RenameFile(currentPath, newPath);
347 }
RenameFile(const char * currentPath,const char * newPath)348 inline void RenameFile( const char* currentPath, const char* newPath)
349 {
350     detail::GetGlobalFileSystemBase().RenameFile(currentPath, newPath);
351 }
TryRenameFile(const wchar_t * currentPath,const wchar_t * newPath)352 inline Result TryRenameFile( const wchar_t* currentPath, const wchar_t* newPath)
353 {
354     return detail::GetGlobalFileSystemBase().TryRenameFile(currentPath, newPath);
355 }
TryRenameFile(const char * currentPath,const char * newPath)356 inline Result TryRenameFile( const char* currentPath, const char* newPath)
357 {
358     return detail::GetGlobalFileSystemBase().TryRenameFile(currentPath, newPath);
359 }
360 
DeleteDirectory(const wchar_t * pathName)361 inline void DeleteDirectory(const wchar_t* pathName)
362 {
363     detail::GetGlobalFileSystemBase().DeleteDirectory(pathName);
364 }
DeleteDirectory(const char * pathName)365 inline void DeleteDirectory(const char* pathName)
366 {
367     detail::GetGlobalFileSystemBase().DeleteDirectory(pathName);
368 }
DeleteDirectoryRecursively(const wchar_t * pathName)369 inline void DeleteDirectoryRecursively(const wchar_t* pathName)
370 {
371     detail::GetGlobalFileSystemBase().DeleteDirectoryRecursively(pathName);
372 }
DeleteDirectoryRecursively(const char * pathName)373 inline void DeleteDirectoryRecursively(const char* pathName)
374 {
375     detail::GetGlobalFileSystemBase().DeleteDirectoryRecursively(pathName);
376 }
TryDeleteDirectory(const wchar_t * pathName)377 inline Result TryDeleteDirectory(const wchar_t* pathName)
378 {
379     return detail::GetGlobalFileSystemBase().TryDeleteDirectory(pathName);
380 }
TryDeleteDirectory(const char * pathName)381 inline Result TryDeleteDirectory(const char* pathName)
382 {
383     return detail::GetGlobalFileSystemBase().TryDeleteDirectory(pathName);
384 }
TryDeleteDirectoryRecursively(const wchar_t * pathName)385 inline Result TryDeleteDirectoryRecursively(const wchar_t* pathName)
386 {
387     return detail::GetGlobalFileSystemBase().TryDeleteDirectoryRecursively(pathName);
388 }
TryDeleteDirectoryRecursively(const char * pathName)389 inline Result TryDeleteDirectoryRecursively(const char* pathName)
390 {
391     return detail::GetGlobalFileSystemBase().TryDeleteDirectoryRecursively(pathName);
392 }
393 
CreateFile(const wchar_t * pathName,s64 size)394 inline void CreateFile(const wchar_t* pathName, s64 size)
395 {
396     detail::GetGlobalFileSystemBase().CreateFile(pathName, size);
397 }
CreateFile(const char * pathName,s64 size)398 inline void CreateFile(const char* pathName, s64 size)
399 {
400     detail::GetGlobalFileSystemBase().CreateFile(pathName, size);
401 }
TryCreateFile(const wchar_t * pathName,s64 size)402 inline Result TryCreateFile(const wchar_t* pathName, s64 size)
403 {
404     return detail::GetGlobalFileSystemBase().TryCreateFile(pathName, size);
405 }
TryCreateFile(const char * pathName,s64 size)406 inline Result TryCreateFile(const char* pathName, s64 size)
407 {
408     return detail::GetGlobalFileSystemBase().TryCreateFile(pathName, size);
409 }
410 
CreateDirectory(const wchar_t * pathName)411 inline void CreateDirectory(const wchar_t* pathName)
412 {
413     detail::GetGlobalFileSystemBase().CreateDirectory(pathName);
414 }
CreateDirectory(const char * pathName)415 inline void CreateDirectory(const char* pathName)
416 {
417     detail::GetGlobalFileSystemBase().CreateDirectory(pathName);
418 }
TryCreateDirectory(const wchar_t * pathName)419 inline Result TryCreateDirectory(const wchar_t* pathName)
420 {
421     return detail::GetGlobalFileSystemBase().TryCreateDirectory(pathName);
422 }
TryCreateDirectory(const char * pathName)423 inline Result TryCreateDirectory(const char* pathName)
424 {
425     return detail::GetGlobalFileSystemBase().TryCreateDirectory(pathName);
426 }
427 
RenameDirectory(const wchar_t * currentPath,const wchar_t * newPath)428 inline void RenameDirectory( const wchar_t* currentPath, const wchar_t* newPath)
429 {
430     detail::GetGlobalFileSystemBase().RenameDirectory(currentPath, newPath);
431 }
RenameDirectory(const char * currentPath,const char * newPath)432 inline void RenameDirectory( const char* currentPath, const char* newPath)
433 {
434     detail::GetGlobalFileSystemBase().RenameDirectory(currentPath, newPath);
435 }
TryRenameDirectory(const wchar_t * currentPath,const wchar_t * newPath)436 inline Result TryRenameDirectory( const wchar_t* currentPath, const wchar_t* newPath)
437 {
438     return detail::GetGlobalFileSystemBase().TryRenameDirectory(currentPath, newPath);
439 }
TryRenameDirectory(const char * currentPath,const char * newPath)440 inline Result TryRenameDirectory( const char* currentPath, const char* newPath)
441 {
442     return detail::GetGlobalFileSystemBase().TryRenameDirectory(currentPath, newPath);
443 }
444 
445 }
446 }
447 #endif  // ifndef NN_FS_FS_FILESYSTEM_H_
448