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


SFXElasticStreamReader とは
SFXElasticStreamReader は、ファイルや TCP ソケットなどの、可変長バッファ ストリームからデータを読み込むときに使います。
SFXBinaryStreamReader、SFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスは、内部的に SFXElasticStreamReader クラスを使って可変長バッファ ストリームを取得できます。 従って、通常、明示的に SFXElasticStreamReader クラスを使う必要はありません。
Attach 関数 と Detach 関数
SFXElasticStreamReader::Attach 関数を使って、読み込むデータの種類に応じて、SFXInputStream クラスを継承する SFXBinaryStreamReader、 SFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスのインスタンスの動作や管理権限を SFXElasticStreamReader クラスのインスタンスにデリゲート(委譲)することで、可変長バッファ入力ストリームを利用できます。
SFXElasticStreamReader::Detach 関数はその逆の操作を行います。
デリゲートとは : オブジェクト指向プログラミングにおいて、あるオブジェクトの振る舞いを別のオブジェクトに肩代わりして振る舞ってもらうことです。 日本語では、「委譲」と訳されます。
SFXBinaryStreamReader | SFXAnsiStringStreamReader | SFXWideStringStreamReader | SFXElasticStreamWriter
| コンストラクタ/デストラクタ |
|---|
|
SFXElasticStreamReader( Void ) SFXElasticStreamReader クラスのコンストラクタです。
|
|
~SFXElasticStreamReader( Void ) SFXElasticStreamReader クラスのデストラクタです。
|
| パブリック関数 | |
|---|---|
| Void |
Attach(
SFXInputStreamPtr stream
) SFXInputStream クラスのインスタンスの動作や管理権限を SFXElasticStreamReader クラスのインスタンスにデリゲート(委譲)します。
|
| Void |
Cancel( Void ) ストレージの Cancel 関数を呼び出します。登録したコールバック関数もキャンセルします。
|
| SFXInputStreamPtr |
Detach( Void ) SFXElasticStreamReader クラスのインスタンスの動作と管理権限を 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 ] SFXElasticStreamReader(Void);
[ public, virtual ] virtual ~SFXElasticStreamReader(Void);
[ public ] Void Attach( SFXInputStreamPtr stream // 設定するストリーム );
SFXElasticStreamReader::Attach 関数を呼び出す前に設定されていた SFXElasticStreamReader クラスのインスタンスの内容は破棄されます。
[ public, virtual ] Void Cancel(Void);
ファイルの場合は SFXFile::Cancel 関数、TCP ソケットの場合は SFXTCPSocket::Cancel 関数を呼び出します。
また、SFXElasticStreamReader::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 ストリームはコールバック関数を登録するタイプだけが利用可能です。ファイル ストリームは両方のタイプが使えます。
コールバック関数を登録しない SFXElasticStreamReader::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);
読み込むべきサイズが不明の場合、SFXElasticStreamReader::Read 関数の前にこの関数を呼び出して読み込み可能サイズを調べる必要があります。
[ 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 // 読み込んだデータを格納するバッファのサイズ );
読み込みできるデータサイズは SFXElasticStreamReader::GetReadableSize 関数で取得します。
データの受け取りに SFXBuffer クラスを使うときは、受け取りたいデータのサイズを SFXBuffer::SetSize 関数で設定します。
[ public ] Void Release(Void);
[ public, virtual ] SFCError ResetTrigger(Void);
SFXElasticStreamReader::SetTrigger 関数で設定したコールバック関数が呼ばれるトリガーをリセットします。
[ public, virtual, const ] Bool Triggers(Void);
SFXElasticStreamReader::Triggers 関数は SFXElasticStreamReader::Fetch 関数で登録したコールバック関数の中で使います。
SFXElasticStreamReader::SetTrigger | SFXElasticStreamReader::ResetTrigger | SFXElasticStreamReader::Fetch
[ public, virtual ] SFCError SetTrigger( UInt32 size // 入力ストリームを介して読み込まれたデータのサイズ );
[ public, virtual ] SFCError SetTrigger( SFXBufferConstRef buffer // 入力ストリームを介して読み込まれたバッファ オブジェクト );
[ public, virtual ] SFCError SetTrigger( VoidConstPtr buffer // 入力ストリームを介して読み込まれたデータ UInt32 size // 入力ストリームを介して読み込まれたデータのサイズ );
コールバック関数付きの SFXElasticStreamReader::Fetch 関数を呼ぶと、ストリームのバッファが一杯になったときや、データの終端でコールバック関数が呼び出されます。
SFXElasticStreamReader::SetTrigger 関数の size パラメーターを指定した場合、その文字数を読み込む毎にコールバック関数が呼び出されます。
buffer パラメーターを指定した場合、それと同じデータをを読み込む毎にコールバック関数が呼び出されます。
改行文字を読み込む毎にコールバック関数を呼び出す方法
SetTrigger("\r\n", 2)
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|