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: 25433 $
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_IpcFile.h>
24 #include <nn/fs/fs_Parameters.h>
25 #include <nn/fs/fs_FileSystemBase.h>
26
27 /*! @file
28 @brief ファイルおよびディレクトリの作成・削除・リネーム API の宣言
29 */
30
31 namespace nn {
32 namespace fs {
33
34 /*!
35 @brief ファイルを削除します。
36
37 @param[in] pathName 削除するファイルのパス
38 */
39 void DeleteFile( const wchar_t* pathName );
40
41 /*!
42 @brief ファイルを削除します。
43 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
44 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
45
46 @param[in] pathName 削除するファイルのパス
47 */
48 void DeleteFile( const char* pathName );
49
50 /*!
51 @brief ファイルを削除します。
52
53 ファイルを削除する途中でエラーが発生した場合はそのエラーを返します。
54
55 @param[in] pathName 削除するファイルのパス
56 */
57 Result TryDeleteFile( const wchar_t* pathName );
58
59 /*!
60 @brief ファイルを削除します。
61
62 ファイルを削除する途中でエラーが発生した場合はそのエラーを返します。
63 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
64 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
65
66 @param[in] pathName 削除するファイルのパス
67 */
68 Result TryDeleteFile( const char* pathName );
69
70 /*!
71 @brief ファイルをリネームします。
72
73 @param[in] currentPath リネーム元のパス
74 @param[in] newPath リネーム先のパス
75 */
76 void RenameFile( const wchar_t* currentPath, const wchar_t* newPath);
77
78 /*!
79 @brief ファイルをリネームします。
80 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
81 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
82
83 @param[in] currentPath リネーム元のパス
84 @param[in] newPath リネーム先のパス
85 */
86 void RenameFile( const char* currentPath, const char* newPath);
87
88 /*!
89 @brief ファイルをリネームします。
90
91 ファイルをリネームする途中でエラーが発生した場合はそのエラーを返します。
92
93 @param[in] currentPath リネーム元のパス
94 @param[in] newPath リネーム先のパス
95 */
96 Result TryRenameFile( const wchar_t* currentPath, const wchar_t* newPath);
97
98 /*!
99 @brief ファイルをリネームします。
100
101 ファイルをリネームする途中でエラーが発生した場合はそのエラーを返します。
102 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
103 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
104
105 @param[in] currentPath リネーム元のパス
106 @param[in] newPath リネーム先のパス
107 */
108 Result TryRenameFile( const char* currentPath, const char* newPath);
109
110 /*!
111 @brief ディレクトリを削除します。
112
113 @param[in] pathName 削除するディレクトリのパス
114 */
115 void DeleteDirectory( const wchar_t* pathName );
116
117 /*!
118 @brief ディレクトリを削除します。
119
120 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
121 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
122
123 @param[in] pathName 削除するディレクトリのパス
124 */
125 void DeleteDirectory( const char* pathName );
126
127 /*!
128 @brief ディレクトリを削除します。
129
130 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
131
132 @param[in] pathName 削除するディレクトリのパス
133 */
134 Result TryDeleteDirectory( const wchar_t* pathName );
135
136 /*!
137 @brief ディレクトリを削除します。
138
139 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
140 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
141 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
142
143 @param[in] pathName 削除するディレクトリのパス
144 */
145 Result TryDeleteDirectory( const char* pathName );
146
147 /*!
148 @brief ディレクトリを再帰的に削除します。
149
150 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
151
152 @param[in] pathName 削除するディレクトリのパス
153 */
154 Result TryDeleteDirectoryRecursively( const wchar_t* pathName );
155
156 /*!
157 @brief ディレクトリを再帰的に削除します。
158
159 ディレクトリを削除する途中でエラーが発生した場合はそのエラーを返します。
160 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
161 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
162
163 @param[in] pathName 削除するディレクトリのパス
164 */
165 Result TryDeleteDirectoryRecursively( const char* pathName );
166
167 /*!
168 @brief ディレクトリを作成します。
169
170 @param[in] pathName 作成するディレクトリのパス
171 */
172 void CreateDirectory( const wchar_t* pathName );
173
174 /*!
175 @brief ディレクトリを作成します。
176
177 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
178 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
179
180 @param[in] pathName 作成するディレクトリのパス
181 */
182 void CreateDirectory( const char* pathName );
183
184 /*!
185 @brief ディレクトリを作成します。
186
187 ディレクトリを作成する途中でエラーが発生した場合はそのエラーを返します。
188
189 @param[in] pathName 作成するディレクトリのパス
190 */
191 Result TryCreateDirectory( const wchar_t* pathName );
192
193 /*!
194 @brief ディレクトリを作成します。
195
196 ディレクトリを作成する途中でエラーが発生した場合はそのエラーを返します。
197 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
198 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
199
200 @param[in] pathName 作成するディレクトリのパス
201 */
202 Result TryCreateDirectory( const char* pathName );
203
204 /*!
205 @brief ディレクトリをリネームします。
206
207 @param[in] currentPath リネーム元のパス
208 @param[in] newPath リネーム先のパス
209 */
210 void RenameDirectory( const wchar_t* currentPath, const wchar_t* newPath);
211
212 /*!
213 @brief ディレクトリをリネームします。
214 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
215 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
216
217 @param[in] currentPath リネーム元のパス
218 @param[in] newPath リネーム先のパス
219 */
220 void RenameDirectory( const char* currentPath, const char* newPath);
221
222 /*!
223 @brief ディレクトリをリネームします。
224
225 ディレクトリをリネームする途中でエラーが発生した場合はそのエラーを返します。
226
227 @param[in] currentPath リネーム元のパス
228 @param[in] newPath リネーム先のパス
229 */
230 Result TryRenameDirectory( const wchar_t* currentPath, const wchar_t* newPath);
231
232 /*!
233 @brief ディレクトリをリネームします。
234
235 ディレクトリをリネームする途中でエラーが発生した場合はそのエラーを返します。
236 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、
237 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。
238
239 @param[in] currentPath リネーム元のパス
240 @param[in] newPath リネーム先のパス
241 */
242 Result TryRenameDirectory( const char* currentPath, const char* newPath);
243
DeleteFile(const wchar_t * pathName)244 inline void DeleteFile(const wchar_t* pathName)
245 {
246 detail::GetGlobalFileSystemBase().DeleteFile(pathName);
247 }
DeleteFile(const char * pathName)248 inline void DeleteFile(const char* pathName)
249 {
250 detail::GetGlobalFileSystemBase().DeleteFile(pathName);
251 }
TryDeleteFile(const wchar_t * pathName)252 inline Result TryDeleteFile(const wchar_t* pathName)
253 {
254 return detail::GetGlobalFileSystemBase().TryDeleteFile(pathName);
255 }
TryDeleteFile(const char * pathName)256 inline Result TryDeleteFile(const char* pathName)
257 {
258 return detail::GetGlobalFileSystemBase().TryDeleteFile(pathName);
259 }
260
RenameFile(const wchar_t * currentPath,const wchar_t * newPath)261 inline void RenameFile( const wchar_t* currentPath, const wchar_t* newPath)
262 {
263 detail::GetGlobalFileSystemBase().RenameFile(currentPath, newPath);
264 }
RenameFile(const char * currentPath,const char * newPath)265 inline void RenameFile( const char* currentPath, const char* newPath)
266 {
267 detail::GetGlobalFileSystemBase().RenameFile(currentPath, newPath);
268 }
TryRenameFile(const wchar_t * currentPath,const wchar_t * newPath)269 inline Result TryRenameFile( const wchar_t* currentPath, const wchar_t* newPath)
270 {
271 return detail::GetGlobalFileSystemBase().TryRenameFile(currentPath, newPath);
272 }
TryRenameFile(const char * currentPath,const char * newPath)273 inline Result TryRenameFile( const char* currentPath, const char* newPath)
274 {
275 return detail::GetGlobalFileSystemBase().TryRenameFile(currentPath, newPath);
276 }
277
DeleteDirectory(const wchar_t * pathName)278 inline void DeleteDirectory(const wchar_t* pathName)
279 {
280 detail::GetGlobalFileSystemBase().DeleteDirectory(pathName);
281 }
DeleteDirectory(const char * pathName)282 inline void DeleteDirectory(const char* pathName)
283 {
284 detail::GetGlobalFileSystemBase().DeleteDirectory(pathName);
285 }
DeleteDirectoryRecursively(const wchar_t * pathName)286 inline void DeleteDirectoryRecursively(const wchar_t* pathName)
287 {
288 detail::GetGlobalFileSystemBase().DeleteDirectoryRecursively(pathName);
289 }
DeleteDirectoryRecursively(const char * pathName)290 inline void DeleteDirectoryRecursively(const char* pathName)
291 {
292 detail::GetGlobalFileSystemBase().DeleteDirectoryRecursively(pathName);
293 }
TryDeleteDirectory(const wchar_t * pathName)294 inline Result TryDeleteDirectory(const wchar_t* pathName)
295 {
296 return detail::GetGlobalFileSystemBase().TryDeleteDirectory(pathName);
297 }
TryDeleteDirectory(const char * pathName)298 inline Result TryDeleteDirectory(const char* pathName)
299 {
300 return detail::GetGlobalFileSystemBase().TryDeleteDirectory(pathName);
301 }
TryDeleteDirectoryRecursively(const wchar_t * pathName)302 inline Result TryDeleteDirectoryRecursively(const wchar_t* pathName)
303 {
304 return detail::GetGlobalFileSystemBase().TryDeleteDirectoryRecursively(pathName);
305 }
TryDeleteDirectoryRecursively(const char * pathName)306 inline Result TryDeleteDirectoryRecursively(const char* pathName)
307 {
308 return detail::GetGlobalFileSystemBase().TryDeleteDirectoryRecursively(pathName);
309 }
310
CreateDirectory(const wchar_t * pathName)311 inline void CreateDirectory(const wchar_t* pathName)
312 {
313 detail::GetGlobalFileSystemBase().CreateDirectory(pathName);
314 }
CreateDirectory(const char * pathName)315 inline void CreateDirectory(const char* pathName)
316 {
317 detail::GetGlobalFileSystemBase().CreateDirectory(pathName);
318 }
TryCreateDirectory(const wchar_t * pathName)319 inline Result TryCreateDirectory(const wchar_t* pathName)
320 {
321 return detail::GetGlobalFileSystemBase().TryCreateDirectory(pathName);
322 }
TryCreateDirectory(const char * pathName)323 inline Result TryCreateDirectory(const char* pathName)
324 {
325 return detail::GetGlobalFileSystemBase().TryCreateDirectory(pathName);
326 }
327
RenameDirectory(const wchar_t * currentPath,const wchar_t * newPath)328 inline void RenameDirectory( const wchar_t* currentPath, const wchar_t* newPath)
329 {
330 detail::GetGlobalFileSystemBase().RenameDirectory(currentPath, newPath);
331 }
RenameDirectory(const char * currentPath,const char * newPath)332 inline void RenameDirectory( const char* currentPath, const char* newPath)
333 {
334 detail::GetGlobalFileSystemBase().RenameDirectory(currentPath, newPath);
335 }
TryRenameDirectory(const wchar_t * currentPath,const wchar_t * newPath)336 inline Result TryRenameDirectory( const wchar_t* currentPath, const wchar_t* newPath)
337 {
338 return detail::GetGlobalFileSystemBase().TryRenameDirectory(currentPath, newPath);
339 }
TryRenameDirectory(const char * currentPath,const char * newPath)340 inline Result TryRenameDirectory( const char* currentPath, const char* newPath)
341 {
342 return detail::GetGlobalFileSystemBase().TryRenameDirectory(currentPath, newPath);
343 }
344
345 }
346 }
347 #endif // ifndef NN_FS_FS_FILESYSTEM_H_
348