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