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