Index: /trunk/Include/Classes/System/IO/BynaryReader.ab
===================================================================
--- /trunk/Include/Classes/System/IO/BynaryReader.ab	(revision 433)
+++ /trunk/Include/Classes/System/IO/BynaryReader.ab	(revision 433)
@@ -0,0 +1,286 @@
+NameSpace System
+NameSpace IO
+
+Class BinaryReader
+
+Public 'constructor
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief BinaryReaderクラスの新しいインスタンスを初期化します。
+	@param 対象となるストリーム
+	*/
+	Sub BinaryReader(input As Stream)
+		stream = input
+		coding = New System.Text.UTF8Encoding()
+	End Sub
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief BinaryReaderクラスの新しいインスタンスを初期化します。
+	@param 対象となるストリーム
+	@param 文字列操作時のエンコーディングを指定
+	*/
+	Sub BinaryReader(input As Stream, encoding As System.Text.Encoding)
+		This.stream = input
+		This.coding = encoding
+	End Sub
+
+	Sub ~BinaryReader()
+		This.Close()
+	End Sub
+
+Public 'propaty
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief BinaryReader の基になるストリームへのアクセスを公開します。
+	@return 基となったストリーム
+	*/	
+	Function BaseStream() As System.IO.Stream
+		Return stream
+	End Function
+
+Public 'method
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のBinaryReaderの基となったストリームをクローズします。
+	*/	 
+	Virtual Sub Close()
+		This.Dispose()
+	End Sub
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief BinaryReaderクラスで使われたリソースを解放します。
+	*/	 
+	Virtual Sub Dispose()
+		This.Dispose(True)
+	End Sub
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 読み取り可能な次の文字を返します。バイトの位置または文字の位置は変化しません。
+	@return 読み取り可能な次の文字
+	*/
+	Virtual Function PeekChar() As Long
+		'TODO
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 基になるストリームからエンコーディングに従って文字を読み取り、ストリームの現在位置を進めます。
+	@return 読み込んだ文字
+	*/
+	Virtual Function Read() As Long
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 基になるストリームからデータを読み取り、ストリームの現在位置を進めます。
+	@param ストリームから読み込んだデータを格納するバッファ
+	@param データを格納するバッファの読み取り開始位置
+	@param 読み込むデータサイズ
+	@retval 実際に読み込んだデータのバイト数
+	@retval 0 ストリームの末尾に達している
+	*/
+	Virtual Function Read(buffer As *Byte, index As Long, count As Long) As Long
+		Return This.stream.Read(buffer, index, count)
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 基になるストリームから指定されたエンコーディングに従って文字列を読み取り、ストリームの現在位置を進めます。
+	@param ストリームから読み込んだ文字列を格納する文字列バッファ
+	@param データを格納する文字配列の読み取り開始位置
+	@param 読み込む文字の長さ
+	@retval 実際に読み込んだ合計文字数
+	@retval 0 ストリームの末尾に達している
+	*/
+	Virtual Function Read(buffer As *Char, index As Long, count As Long) As Long
+		Return This.stream.Read(buffer As *Byte, index, count)
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから Boolean値を読み取り、ストリームの現在位置を 1 バイトだけ進めます。
+	@return 1byteのBoolean値
+	*/
+	Virtual Function ReadBoolean() As Boolean
+		Return This.stream.ReadByte() As Boolean
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから次のバイトを読み取り、ストリームの現在位置を 1 バイトだけ進めます。
+	@return 符号無しの1バイト整数
+	*/
+	Virtual Function ReadByte() As Byte
+		Return This.stream.ReadByte() As Byte
+	End Function
+
+	'現在のストリームからバイト配列に count で指定したバイト数分のバイトを読み取り、count で指定したバイト数だけ現在位置を進めます。
+/*	Virtual Function ReadBytes() As Array<Byte>
+		TODO:
+	End Function*/
+
+	'現在のストリームの次の文字を読み取り、使用した Encoding とストリームから読み取った特定の文字に従ってストリームの現在位置を進めます。
+/*	Virtual Function ReadChar() As Char
+	End Function*/
+
+	'現在のストリームから count で指定した文字数分の文字を読み取り、そのデータを文字配列として返します。使用した Encoding とストリームから読み取った特定の文字に従って現在位置を進めます。
+/*	Virtual Function ReadChars() As Array<Char>
+		TODO:
+	End Function*/
+
+	'現在のストリームから10進数値を読み取り、ストリームの現在位置を16バイトだけ進めます。
+/*	Virtual Function ReadDecimal() As ActiveBasic.COM.Decimal
+		TODO:
+	End Function*/
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから8バイト浮動小数点値を読み取り、ストリームの現在位置を8バイトだけ進めます。
+	@return 8バイト浮動小数点値
+	*/
+	Virtual Function ReadDouble() As Double
+		Dim buffer As Double
+		This.stream.Read(VarPtr(buffer) As *Byte, 0, 8)
+		Return buffer
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから2バイト符号付き整数を読み取り、ストリームの現在位置を2バイトだけ進めます。
+	@return 2バイト符号付き整数値
+	*/
+	Virtual Function ReadInt16() As Integer
+		Dim buffer As Integer
+		This.stream.Read(VarPtr(buffer) As *Byte, 0, 2)
+		Return buffer
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから4バイト符号付き整数を読み取り、ストリームの現在位置を4バイトだけ進めます。
+	@return 4バイト符号付き整数値
+	*/
+	Virtual Function ReadInt32() As Long
+		Dim buffer As Long
+		This.stream.Read(VarPtr(buffer) As *Byte, 0, 4)
+		Return buffer
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから8バイト符号付き整数を読み取り、ストリームの現在位置を8バイトだけ進めます。
+	@return 8バイト符号付き整数値
+	*/
+	Virtual Function ReadInt64() As Int64
+		Dim buffer As Int64
+		This.stream.Read(VarPtr(buffer) As *Byte, 0, 8)
+		Return buffer
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから符号付きバイトを読み取り、ストリームの現在位置を1バイトだけ進めます。
+	@return 1バイト符号付き整数値
+	*/
+	Virtual Function ReadSByte() As SByte
+		Dim buffer As SByte
+		This.stream.Read(VarPtr(buffer) As *Byte, 0, 1)
+		Return buffer
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから4バイト浮動小数点値を読み取り、ストリームの現在位置を4バイトだけ進めます。
+	@return 4バイト浮動小数点値
+	*/
+	Virtual Function ReadSingle() As Single
+		Dim buffer As Single
+		This.stream.Read(VarPtr(buffer) As *Byte, 0, 4)
+		Return buffer
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから文字列を読み取ります。文字列の先頭に長さを付け、7ビットの整数としてまとめてエンコードします。
+	@return String値
+	*/
+	Virtual Function ReadString() As String
+		Return ""
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief リトルエンディアンエンコーディングを使用して現在のストリームから2バイト符号なし整数を読み取り、ストリームの位置を2バイトだけ進めます。
+	@return 2バイト符号なし整数値
+	*/
+	Virtual Function ReadUInt16() As Word
+		Dim buffer As Word
+		This.stream.Read(VarPtr(buffer) As *Byte, 0, 2)
+		Return buffer
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから4バイト符号なし整数を読み取り、ストリームの位置を4バイトだけ進めます。
+	@return 4バイト符号なし整数値
+	*/
+	Virtual Function ReadUInt32() As DWord
+		Dim buffer As DWord
+		This.stream.Read(VarPtr(buffer) As *Byte, 0, 4)
+		Return buffer
+	End Function
+
+	/*!
+	@date 2008/02/27
+	@auther NoWest
+	@brief 現在のストリームから8バイト符号なし整数を読み取り、ストリームの位置を8バイトだけ進めます。
+	@return 8バイト符号なし整数値
+	*/
+	Virtual Function ReadUInt64() As QWord
+		Dim buffer As QWord
+		This.stream.Read(VarPtr(buffer) As *Byte, 0, 8)
+		Return buffer
+	End Function
+
+Protected 'method
+	'BinaryReader によって使用されているアンマネージ リソースを解放し、オプションでマネージリソースも解放します。
+	Virtual Sub Dispose(disposing As Boolean)
+		This.stream.Close()
+	End Sub
+
+	'指定したバイト数分だけストリームから読み取ったバイトを内部バッファに格納します。
+	Virtual Sub FillBuffer(numBytes As Long)
+		'TODO:
+	End Sub
+
+'	Read7BitEncodedInt	32 ビット整数を圧縮形式で読み取ります。
+
+Private
+	stream As Stream
+	coding As System.Text.Encoding
+End Class
+
+End Namespace
+End Namespace
