![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |
#include <SFXStreamReader.h.hpp>
class SFXStreamReader : public SFXInputStream;
SFMTYPEDEFCLASS(SFXStreamReader)


ファイルや TCP ソケットなどのストリームからデータを読み込むときに使います。
読み込むデータの種類に応じて、SFXStreamReader クラスを継承する SFXBinaryStreamReader、 SFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスのインスタンスを使い分けます。
| コンストラクタ/デストラクタ |
|---|
|
SFXStreamReader( Void ) SFXStreamReader クラスのコンストラクタです。
|
|
~SFXStreamReader( Void ) SFXStreamReader クラスのデストラクタです。
|
| パブリック関数 | |
|---|---|
| Void |
Attach(
SFXInputStreamPtr stream
) SFXInputStream クラスのインスタンスの動作や管理権限を SFXStreamReader クラスのインスタンスにデリゲート(委譲)します。
|
| Void |
Cancel( Void ) ストレージクラスの Cancel 関数を呼び出します。登録したコールバック関数もキャンセルします。
|
| SFXInputStreamPtr |
Detach( Void ) SFXStreamReader クラスのインスタンスの動作と管理権限を SFXInputStream クラスのインスタンスにデリゲート(委譲)します。
|
| Bool |
Ends( Void ) ストリームの終端かどうかを判定します。
|
| SFCError |
Fetch( Void ) Fetch( CallbackSPP spp , VoidPtr reference ) 新たに読み込むデータを要求します。
|
| SInt32 |
FirstIndexOf(
Byte byte
, SInt32 index = SINT32_MINIMUM
) FirstIndexOf( VoidConstPtr buffer , UInt32 size , SInt32 index = SINT32_MINIMUM ) FirstIndexOf( SFXBufferConstRef buffer , SInt32 index = SINT32_MINIMUM ) ストリームを先頭から検索して、指定したデータと一致する最初のインデックスを取得します。
|
| UInt32 |
GetReadableSize( Void ) 読み込み可能なデータ サイズを取得します。
|
| SInt32 |
LastIndexOf(
Byte byte
, SInt32 index = SINT32_MAXIMUM
) LastIndexOf( VoidConstPtr buffer , UInt32 size , SInt32 index = SINT32_MAXIMUM ) LastIndexOf( SFXBufferConstRef buffer , SInt32 index = SINT32_MAXIMUM ) ストリームを終端から検索して、指定したデータと一致する最後のインデックスを取得します。
|
| SFCError |
Read(
SFXBufferPtr buffer
) Read( VoidPtr buffer , UInt32 size ) ストリームからデータを読み込みます。
|
| Void |
Release( Void ) ストリームを解放します。
|
| SFCError |
ResetTrigger( Void ) コールバック関数が呼ばれるトリガーをリセットします。
|
| SFCError |
Seek(
UInt32 size
) 読み込みポインタを進めます。
|
| SFCError |
SetTrigger(
UInt32 size
) SetTrigger( VoidConstPtr buffer , UInt32 size ) SetTrigger( SFXBufferConstRef buffer ) コールバック関数が呼ばれるトリガーを設定します。
|
| Bool |
Triggers( Void ) トリガーによりコールバック関数が呼ばれたか判定します。
|
| 型 |
|---|
|
CallbackSPP
(SFXStream から継承)
コールバック関数を表す型です。
|
[ public, explicit ] SFXStreamReader(Void);
[ public, virtual ] virtual ~SFXStreamReader(Void);
[ public ] Void Attach( SFXInputStreamPtr stream // 設定するストリーム );
SFXStreamReader::Attach 関数を呼び出す前に設定されていた SFXStreamReader クラスのインスタンスの内容は破棄されます。
デリゲートとは : オブジェクト指向プログラミングにおいて、あるオブジェクトの振る舞いを別のオブジェクトに肩代わりして振る舞ってもらうことです。 日本語では、「委譲」と訳されます。
[ public, virtual ] Void Cancel(Void);
ファイルの場合は SFXFile::Cancel 関数を、TCP ソケットの場合は SFXTCPSocket::Cancel 関数を呼び出します。
また、SFXStreamReader::Fetch 関数によるコールバック関数の登録もキャンセルします。
[ public ] SFXInputStreamPtr Detach(Void);
[ public, virtual, const ] Bool Ends(Void);
[ public, virtual ] SFCError Fetch(Void);
[ public, virtual ] SFCError Fetch( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数へ渡すデータ );
コールバック関数を登録するタイプと登録しないタイプがあります。利用可能なタイプはストレージの種類に依存します。
例えば、TCP ストリームはコールバック関数を登録するタイプだけが利用可能です。ファイル ストリームは両方のタイプが使えます。
コールバック関数を登録しない SFXStreamReader::Fetch 関数を呼び出すと、データはすぐに内部バッファに読み込まれます。
[ public, virtual, const ] SInt32 FirstIndexOf( Byte byte // 検索する Byte データ SInt32 index = SINT32_MINIMUM // 検索開始位置 );
[ public, virtual, const ] SInt32 FirstIndexOf( SFXBufferConstRef buffer // 検索するバッファ SInt32 index = SINT32_MINIMUM // 検索開始位置 );
[ public, virtual, const ] SInt32 FirstIndexOf( VoidConstPtr buffer // 検索するデータ UInt32 size // 検索するデータのサイズ SInt32 index = SINT32_MINIMUM // 検索開始位置 );
ストリームからデータを検索し、最初に見つかった位置のインデックスを返します。 インデックスは先頭を 0 として数えます。
検索開始位置を指定することで、先頭以外の位置から検索できます。
[ public, virtual, const ] UInt32 GetReadableSize(Void);
読み込むサイズが不明の場合、SFXStreamReader::Read 関数の前に SFXStreamReader::GetReadableSize 関数を呼び出して読み込み可能サイズを調べる必要があります。
[ public, virtual, const ] SInt32 LastIndexOf( Byte byte // 検索する Byte データ SInt32 index = SINT32_MAXIMUM // 検索開始位置 );
[ public, virtual, const ] SInt32 LastIndexOf( SFXBufferConstRef buffer // 検索するバッファ SInt32 index = SINT32_MAXIMUM // 検索開始位置 );
[ public, virtual, const ] SInt32 LastIndexOf( VoidConstPtr buffer // 検索するデータ UInt32 size // 検索するデータのサイズ SInt32 index = SINT32_MAXIMUM // 検索開始位置 );
ストリームの終端から先頭に向かってデータを検索し、最初に見つかった位置のインデックスを返します。 インデックスは先頭を 0 として数えます。
検索開始位置を指定することで、終端以外の位置から検索できます。
[ public, virtual ] SFCError Read( SFXBufferPtr buffer // 読み込んだデータを格納するバッファ );
[ public, virtual ] SFCError Read( VoidPtr buffer // 読み込んだデータを格納するバッファへのポインタ UInt32 size // 読み込んだデータを格納するバッファのサイズ );
読み込み可能なデータ サイズは SFXStreamReader::GetReadableSize 関数で取得します。
データの受け取りに SFXBuffer クラスを使うときは、受け取るデータ サイズを SFXBuffer::SetSize 関数で設定します。
[ public ] Void Release(Void);
[ public, virtual ] SFCError ResetTrigger(Void);
SFXStreamReader::SetTrigger 関数で設定したコールバック関数が呼ばれるタイミングをトリガーをリセットします。
[ public, virtual ] SFCError SetTrigger( UInt32 size // 入力ストリームを介して読み込まれたデータのサイズ );
[ public, virtual ] SFCError SetTrigger( SFXBufferConstRef buffer // 入力ストリームを介して読み込まれたバッファ オブジェクト );
[ public, virtual ] SFCError SetTrigger( VoidConstPtr buffer // 入力ストリームを介して読み込まれたデータ UInt32 size // 入力ストリームを介して読み込まれたデータのサイズ );
コールバック関数付きの SFXStreamReader::Fetch 関数を呼ぶと、ストリームのバッファが一杯になったときや、データの終端で登録されたコールバック関数が呼び出されます。
SFXStreamReader::SetTrigger 関数の size パラメータを指定した場合、その文字数を読み込む毎にコールバック関数が呼び出されます。
buffer パラメータを指定した場合は、それと同じデータを読み込む毎にコールバック関数が呼び出されます。
改行文字を読み込む毎にコールバック関数を呼び出す方法
SetTrigger("\r\n", 2)
[ public, virtual, const ] Bool Triggers(Void);
SFXStreamReader::Triggers 関数は SFXStreamReader::Fetch 関数で登録したコールバック関数の中で使います。
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|