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