![]() ![]() ![]()
|
SophiaFramework 2.2 |
#include <SFUSourceStream.hpp>
class SFUSourceStream : public SFUStream;
typedef SFUSourceStream& SFUSourceStreamRef; typedef SFUSourceStream* SFUSourceStreamPtr; typedef SFUSourceStream** SFUSourceStreamHandle; typedef const SFUSourceStream ConstSFUSourceStream; typedef const SFUSourceStream& ConstSFUSourceStreamRef; typedef const SFUSourceStream* ConstSFUSourceStreamPtr; typedef const SFUSourceStream** ConstSFUSourceStreamHandle;
BREW API の ISource インターフェイスからデータを読み取るストリームです。
制限事項
このストリームは、書き込みをサポートしません。 読み取り位置の移動もサポートしません。
使用の一般手順
SFUSourceStream は一般に次の手順で使用します。
| コンストラクタ/デストラクタ | ||
|---|---|---|
| public |
SFUSourceStream | SFUSourceStream クラスのコンストラクタです。 |
| public |
~SFUSourceStream | SFUSourceStream クラスのデストラクタです。 |
| パブリック関数 | ||
|---|---|---|
| public |
Available | 読み取り可能なデータサイズを返します。 |
| public |
Close | ソースストリームをクローズします。 |
| public |
Exception (SFAException から継承) | エラーコードを取得/設定します。 |
| public |
Fetch | ISource からストリームの内部バッファにデータを読み取ります。 |
| public |
Get | 内部バッファからデータを読み取ります。 |
| public |
GetReadBufferSize | 内部バッファのサイズを取得します。 |
| public |
IsEOS | ストリームの終端に達したかを判定します。 |
| public |
IsFetchable | ISource からストリームの内部バッファにデータを読み取ることができるかどうかを判定します。 |
| public |
Open | ストリームをオープンします。 |
| public |
Put | SFUSourceStream ではストリームへの書き込みはできません。 |
| public |
Seek | SFUSourceStream ではストリームポインタの移動はできません。 |
| public |
SetReadBufferSize | 内部バッファのサイズを設定します。 |
| public |
Tell | 読み取った総データ量を返します。 |
| public |
operator<< (SFUStream から継承) | ストリームのインサータ (書き込み演算子) です。 |
| public |
operator>> (SFUStream から継承) | ストリームのエクストラクタ (読み取り演算子) です。 |
| プロテクト関数 | ||
|---|---|---|
| public |
Exception (SFAException から継承) | エラーコードを取得/設定します。 |
| protected |
endianbig (SFUStream から継承) | 読み込みモード/書き込みモードのエンディアンをビッグエンディアンに設定します。 |
| protected |
endianlittle (SFUStream から継承) | 読み込みモード/書き込みモードのエンディアンをリトルエンディアンに設定します。 |
| protected |
multi (SFUStream から継承) | 任意のサイズのデータを読み書きします。 |
| protected |
offset (SFUStream から継承) | ストリームの読み込み/書き込みポインタを指定された位置に移動します。 |
| protected |
seek (SFUStream から継承) | ストリームの読み込み/書き込みポインタを指定された位置に移動します。 |
| 型 | ||
|---|---|---|
| EndianEnum (SFUStream から継承) | ストリームのエンディアン変換を表す定数です。 | |
| NO_ERROR (SFAException から継承) | エラーがないことを表す定数です。 | |
| NotifyEnum | コールバック関数に渡される通知定数です。 | |
| SeekEnum (SFUStream から継承) | ストリームのシークモードを表す定数です。 | |
| SourceStreamSPP | ソースストリームのコールバック関数を表す型です。 | |
[ public ] SFUSourceStream(Void);
データメンバを初期化します。 エラー値 SFERR_NO_ERROR が設定されます。
[ public, virtual ] ~SFUSourceStream(Void);
ストリームがオープンされている場合は、自動的にクローズされます。
[ public, virtual ] UInt32 Available(Void);
ストリームがオープンされていれば、 内部バッファから読み取り可能なサイズを返します。 ストリームがオープン状態でなければ、0 を返します。 エラー値は設定されません。
下記の例では、現在のバッファにデータがなくなったら、 Fetch を呼び出して、ISource から追加のデータを読み取っています。
while(stream.Available() > 0) {
Byte b;
stream >> b;
....
}
if (stream.IsFetchable()) {
stream.Fetch();
}
[ public ] Void Close(Void);
ISource インスタンスを解放してストリームをクローズます。 エラー値 SFERR_NO_ERROR が設定されます。
[ public ] Void Fetch(Void);
ISource からデータの取得を試みます。 最大で読み取りバッファの空き容量に等しいサイズの取得を試みます。
成功すると、読み取りが完了した時点で、 Open で登録されたコールバック関数に通知されます。 読み取り時のエラーは、エラー値として設定されず、 コールバック関数の第二引数に渡されます。
失敗すると 0 を返します。 成功すると読み取ったデータサイズ (size) を返します。
内部バッファからデータを読み取ります。
この関数が失敗すると、読み取りポインタが進むことはありません。
[ public ] UInt32 GetReadBufferSize(Void);
[ public, virtual ] Bool IsEOS(Void);
ストリームの終端に達したかを判定します。 Available が 0 を返すからといって、ストリームの終端であるわけではありません。 Fetch を呼び出すことで、さらなるデータを読み取ることができる場合があるからです。
IsFetchable が TRUE で、かつ、 Available が 0 の場合に、 ストリームが終端であると判断されます。
[ public ] Bool IsFetchable(Void);
この関数が TRUE を返す場合、 Fetch を呼び出すことで、さらなるデータを内部バッファに読み取ることができます。
この関数が FALSE を返す場合、 現在内部バッファに格納されているデータで終了となります。
[ public ] SFCError Open( const SFUBrewPtr< SFBSource > & src // ISource インスタンス SourceStreamSPP func // コールバック関数 VoidPtr data // コールバック関数に渡すデータ );
エラー値を返します。 エラー値は Exception 関数で取得することもできます。
ISource からデータを読み込むストリームをオープンします。
[ public, virtual ] UInt32 Put( ConstVoidPtr ptr UInt32 size );
SFUSourceStream ではストリームへの書き込みはできません。 この関数を呼び出すと、エラー値 SFERR_UNAVAILABLE が設定され、 UInt32(-1) が返ります。
この関数を呼び出すと、 エラー値 SFERR_UNAVAILABLE が設定され、 UInt32(-1) が返ります。
内部バッファのサイズを指定します。 このサイズは、次回の SFUSourceStream::Open 呼び出し時に使用されます。
[ public, virtual ] UInt32 Tell( ModeEnum mode // SFUStream::MODE_READ を指定してください );
ストリームがオープン状態で mode が SFUStream::MODE_READ の場合、 現在までに読み取ったデータ量を返します。 それ以外の場合は UInt32(-1) を返します。
enum NotifyEnum {
NOTIFY_READ = 1
};
コールバック関数に渡される通知定数です。 SFUSourceStream::Fetch 呼び出しの後、ISource からのデータ読み取りが完了すると、 NOTIFY_READ を指定してコールバック関数が呼び出されます。
typedef Void(* SFUSourceStream::SourceStreamSPP)(NotifyEnum notify, SFCError error, VoidPtr data)
| Copyright(C) 2003-2004 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|