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