1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: fs_Directory.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: 32512 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_FS_FS_DIRECTORY_H_ 17 #define NN_FS_FS_DIRECTORY_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_DirectoryBase.h> 25 26 #include <nn/fs/fs_DirectoryBase.h> 27 28 namespace nn { 29 namespace fs { 30 31 /*! 32 :category ファイル・ディレクトリ操作 33 34 @brief ディレクトリを操作するためのクラスです。 35 36 パス名で指定されたディレクトリを開き、そのエントリを読み込むことができます。 37 また、パス名を指定して、ディレクトリの作成・リネーム・削除ができます。@n 38 パス名の指定には、ワイド文字列とマルチバイト文字列の両方が使えますが、 39 特別な理由が無い限りは、ワイド文字列を使うようにしてください。 40 */ 41 class Directory : private nn::util::NonCopyable<Directory>, private detail::DirectoryBase 42 { 43 public: 44 45 /*! 46 :overload noparam 47 48 @brief コンストラクタです。 49 50 引数の無いオーバロードでは、ディレクトリは開きません。 51 ディレクトリのエントリを読み込むためには、別途 @ref TryInitialize を呼ぶ必要があります。 52 53 パス名を指定したオーバロードでは、指定されたパスのディレクトリを開きます。 54 */ Directory()55 Directory() {} 56 57 /*! 58 :overload wcharparam 59 60 @brief オブジェクトを構築し、指定されたディレクトリを開くコンストラクタです。 61 62 指定されたパスのディレクトリを開きます。 63 64 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。 65 rom アーカイブ以外では @ref TryInitialize を使用してください。 66 67 @param[in] pathName 開くディレクトリのパス 68 */ Directory(const wchar_t * pathName)69 Directory( const wchar_t* pathName ) : DirectoryBase(pathName) {} 70 71 /*! 72 :overload charparam 73 74 @brief オブジェクトを構築し、指定されたディレクトリを開くコンストラクタです。 75 76 指定されたパスのディレクトリを開きます。@n 77 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、 78 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。 79 80 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。 81 rom アーカイブ以外では @ref TryInitialize を使用してください。 82 83 @param[in] pathName 開くディレクトリのパス(ASCII 文字以外を含むことはできません) 84 */ Directory(const char * pathName)85 Directory( const char* pathName ) : DirectoryBase(pathName) {} 86 87 /*! 88 :overload wcharparam 89 90 @brief 指定されたディレクトリを開きます。 91 92 指定されたパスのディレクトリを開きます。 93 既にこのオブジェクトでディレクトリを開いている場合に呼ぶことはできません。 94 95 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。 96 rom アーカイブ以外では @ref TryInitialize を使用してください。 97 98 @param[in] pathName 開くディレクトリのパス 99 */ Initialize(const wchar_t * pathName)100 void Initialize( const wchar_t* pathName ) { DirectoryBase::Initialize(pathName); } 101 102 /*! 103 :overload charparam 104 105 @brief 指定されたディレクトリを開きます。 106 107 指定されたパスのディレクトリを開きます。 108 既にこのオブジェクトでディレクトリを開いている場合に呼ぶことはできません。@n 109 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、 110 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。 111 112 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。 113 rom アーカイブ以外では @ref TryInitialize を使用してください。 114 115 @param[in] pathName 開くディレクトリのパス(ASCII 文字以外を含むことはできません) 116 */ Initialize(const char * pathName)117 void Initialize( const char* pathName ) { DirectoryBase::Initialize(pathName); } 118 119 /*! 120 :overload wcharparam 121 122 @brief 指定されたディレクトリを開くことを試みます。 123 124 指定されたパスのディレクトリを開きます。 125 既にこのオブジェクトでディレクトリを開いている場合には、エラーを返します。 126 127 @param[in] pathName 開くディレクトリのパス 128 129 @return ディレクトリを開いた結果。 130 */ TryInitialize(const wchar_t * pathName)131 Result TryInitialize( const wchar_t* pathName ) { return DirectoryBase::TryInitialize(pathName); } 132 133 /*! 134 :overload charparam 135 136 @brief 指定されたディレクトリを開くことを試みます。 137 138 指定されたパスのディレクトリを開きます。 139 既にこのオブジェクトでディレクトリを開いている場合には、エラーを返します。@n 140 この関数では、内部でパス名をマルチバイト文字列からワイド文字列に変換するために、 141 大きくスタック上にバッファを取るので、スタックの大きさには注意してください。 142 143 @param[in] pathName 開くディレクトリのパス 144 145 @return ディレクトリを開いた結果。 146 */ TryInitialize(const char * pathName)147 Result TryInitialize( const char* pathName ) { return DirectoryBase::TryInitialize(pathName); } 148 149 /*! 150 @brief ディレクトリを閉じます。 151 152 ディレクトリを閉じます。ディレクトリが開かれていなかった場合は何もしません。 153 */ Finalize()154 void Finalize() { DirectoryBase::Finalize(); } 155 156 /*! 157 @brief デストラクタです。 158 159 ディレクトリが開かれていればディレクトリを閉じます。 160 */ ~Directory()161 virtual ~Directory() {} 162 163 /*! 164 @brief ディレクトリから指定された数のディレクトリエントリを読み込みます。 165 166 ファイルの現在位置から最大 numEntries エントリを読み込み、 167 pEntries で指定されたアドレスの領域にコピーします。 168 169 この関数は処理の結果を返さないため、アプリケーション側でエラーハンドリングを行なうことができません。 170 rom アーカイブ以外では @ref TryRead を使用してください。 171 172 @param[out] pEntries ディレクトリエントリの読み込み先 173 @param[in] numEntries 読み込む最大のディレクトリエントリ数 174 175 @return 実際に読み込んだエントリ数を返します。エントリを全て走査し終わっているときは、0 を返します。 176 */ Read(DirectoryEntry pEntries[],s32 numEntries)177 s32 Read( DirectoryEntry pEntries[], s32 numEntries ) { return DirectoryBase::Read(pEntries, numEntries); } 178 179 /*! 180 @brief ディレクトリから指定された数のディレクトリエントリを読み込みます。 181 182 ファイルの現在位置から最大 numEntries エントリを読み込み、 183 pEntries で指定されたアドレスの領域にコピーします。 184 185 @param[out] pNumEntriesOut 実際に読み込んだエントリ数を返します。エントリを全て走査し終わっているときは、0 を返します。 186 @param[out] pEntries ディレクトリエントリの読み込み先 187 @param[in] numEntries 読み込む最大のディレクトリエントリ数 188 189 @return 処理の結果を返します。 190 */ TryRead(s32 * pNumEntriesOut,DirectoryEntry pEntries[],s32 numEntries)191 Result TryRead( s32* pNumEntriesOut, DirectoryEntry pEntries[], s32 numEntries ) { return DirectoryBase::TryRead(pNumEntriesOut, pEntries, numEntries); } 192 }; 193 194 } // end of namespace fs 195 } // end of namespace nn 196 197 #endif // ifndef NN_FS_FS_DIRECTORY_H_ 198