前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0
SFXElasticStreamReader
可変長バッファ入力ストリームにアクセスするためのクラスです。
#include <SFXElasticStreamReader.h.hpp>
class SFXElasticStreamReader : public SFXInputStream;
SFMTYPEDEFCLASS(SFXElasticStreamReader)

継承図

SFXElasticStreamReader クラスの継承図

協調図

SFXElasticStreamReader クラスの協調図

解説

SFXElasticStreamReader とは

SFXElasticStreamReader は、ファイルや TCP ソケットなどの、可変長バッファストリームからデータを読み込むときに使います。

SFXBinaryStreamReaderSFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスは、内部的に SFXElasticStreamReader クラスを使って可変長バッファストリームを取得できます。 従って、通常、明示的に SFXElasticStreamReader クラスを使う必要はありません。

Attach 関数 と Detach 関数

SFXElasticStreamReader::Attach 関数を使って、読み込むデータの種類に応じて、SFXInputStream クラスを継承する SFXBinaryStreamReaderSFXAnsiStringStreamReader、または 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 から継承)
コールバック関数を表す型です。

SFXElasticStreamReader::SFXElasticStreamReader
SFXElasticStreamReader クラスのコンストラクタです。
[ public, explicit ]
SFXElasticStreamReader(Void);

SFXElasticStreamReader::~SFXElasticStreamReader
SFXElasticStreamReader クラスのデストラクタです。
[ public, virtual ]
virtual ~SFXElasticStreamReader(Void);

SFXElasticStreamReader::Attach
SFXInputStream クラスのインスタンスの動作や管理権限を SFXElasticStreamReader クラスのインスタンスにデリゲート(委譲)します。
[ public ]
Void Attach(
    SFXInputStreamPtr stream   // 設定するストリーム
);

解説

SFXElasticStreamReader::Attach 関数を呼び出す前に設定されていた SFXElasticStreamReader クラスのインスタンスの内容は破棄されます。

参照

SFXElasticStreamReader::Detach


SFXElasticStreamReader::Cancel
ストレージの Cancel 関数を呼び出します。登録したコールバック関数もキャンセルします。
[ public, virtual ]
Void Cancel(Void);

解説

ファイルの場合は SFXFile::Cancel 関数、TCP ソケットの場合は SFXTCPSocket::Cancel 関数を呼び出します。

また、SFXElasticStreamReader::Fetch 関数によるコールバック関数の登録もキャンセルします。

参照

SFXElasticStreamReader::Fetch | SFXFile::Cancel | SFXTCPSocket::Cancel


SFXElasticStreamReader::Detach
SFXElasticStreamReader クラスのインスタンスの動作と管理権限を SFXInputStream クラスのインスタンスにデリゲート(委譲)します。
[ public ]
SFXInputStreamPtr Detach(Void);

参照

SFXElasticStreamReader::Attach


SFXElasticStreamReader::Ends
ストリームの終端か判定します。
[ public, virtual, const ]
Bool Ends(Void);

戻り値

  • ストリームの終端に到達し、かつ読み込むデータがないとき : true
  • そうでないとき : false

SFXElasticStreamReader::Fetch
新たに読み込むデータを要求します。
[ public, virtual ]
SFCError Fetch(Void);
[ public, virtual ]
SFCError Fetch(
    CallbackSPP spp     // コールバック関数
    VoidPtr reference   // コールバック関数へ渡すデータ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が不正なとき : SFERR_INVALID_PARAM
  • ストリームが設定されていない、または既に SFXElasticStreamReader::Fetch 関数が処理中のとき : SFERR_INVALID_STATE
  • 失敗したとき : SFERR_FAILED
  • その他のエラーのとき : AEEError.h で定義されているエラー値

解説

コールバック関数を登録するタイプと登録しないタイプがあります。利用可能なタイプはストレージの種類に依存します。

例えば、TCP ストリームはコールバック関数を登録するタイプだけが利用可能です。ファイル ストリームは両方のタイプが使えます。

コールバック関数を登録しない SFXElasticStreamReader::Fetch 関数を呼び出すと、データはすぐに内部バッファに読み込まれます。

参照

SFXElasticStreamReader::SetTrigger


SFXElasticStreamReader::FirstIndexOf
ストリームを先頭から検索して、指定したデータと一致する最初のインデックスを取得します。
[ 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   // 検索開始位置
);

戻り値

  • 成功したとき : 見つかった位置のインデックス
  • 失敗したとき : -1

解説

ストリームから文字列を検索し、最初に見つかった位置のインデックスを返します。 インデックスは基点を 0 として数えます。

検索開始位置を指定することで、基点以外の位置から検索できます。

参照

SFXElasticStreamReader::LastIndexOf


SFXElasticStreamReader::GetReadableSize
読み込みできるデータ サイズを取得します。
[ public, virtual, const ]
UInt32 GetReadableSize(Void);

解説

読み込むべきサイズが不明の場合、SFXElasticStreamReader::Read 関数の前にこの関数を呼び出して読み込み可能サイズを調べる必要があります。

参照

SFXElasticStreamReader::Read


SFXElasticStreamReader::LastIndexOf
ストリームを終端から検索して、指定したデータと一致する最後のインデックスを取得します。
[ 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   // 検索開始位置
);

戻り値

  • 成功したとき : 見つかった位置のインデックス
  • 失敗したとき : -1

解説

ストリームの終端から先頭に向かって文字列を検索し、最初に見つかった位置のインデックスを返します。 インデックスは先頭を 0 として数えます。

検索開始位置を指定することで、終端以外の位置から検索できます。

参照

SFXElasticStreamReader::FirstIndexOf


SFXElasticStreamReader::Read
ストリームからデータを読み込みます。
[ public, virtual ]
SFCError Read(
    SFXBufferPtr buffer   // 読み込んだデータを格納するバッファ
);
[ public, virtual ]
SFCError Read(
    VoidPtr buffer   // 読み込んだデータを格納するバッファへのポインタ
    UInt32 size      // 読み込んだデータを格納するバッファのサイズ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ストリームが設定されていないとき : SFERR_INVALID_STATE
  • 引数が不正なとき : SFERR_INVALID_PARAM
  • サイズが終端を越えるとき : SFERR_FAILED

解説

読み込みできるデータサイズは SFXElasticStreamReader::GetReadableSize 関数で取得します。

データの受け取りに SFXBuffer クラスを使うときは、受け取りたいデータのサイズを SFXBuffer::SetSize 関数で設定します。

参照

SFXElasticStreamReader::GetReadableSize


SFXElasticStreamReader::Release
ストリームを解放します。
[ public ]
Void Release(Void);

SFXElasticStreamReader::ResetTrigger
コールバック関数が呼ばれるトリガーをリセットします。
[ public, virtual ]
SFCError ResetTrigger(Void);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ストリームが設定されていない、または SFXElasticStreamReader::Fetch 関数が処理中のとき : SFERR_INVALID_STATE

解説

SFXElasticStreamReader::SetTrigger 関数で設定したコールバック関数が呼ばれるトリガーをリセットします。

参照

SFXElasticStreamReader::SetTrigger | SFXElasticStreamReader::Fetch


SFXElasticStreamReader::Seek
読み込みポインタを進めます。
[ public, virtual ]
SFCError Seek(
    UInt32 size   // 進めるサイズ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ストリームが設定されていないとき : SFERR_INVALID_STATE
  • 読み込みポインタが終端を越えたとき : SFERR_FAILED

SFXElasticStreamReader::Triggers
トリガーによりコールバックが呼ばれたか判定します。
[ public, virtual, const ]
Bool Triggers(Void);

戻り値

  • SFXElasticStreamReader::SetTrigger 関数で設定したトリガーによって、コールバック関数が呼び出されたとき : true
  • そうでないとき : false

解説

SFXElasticStreamReader::Triggers 関数は SFXElasticStreamReader::Fetch 関数で登録したコールバック関数の中で使います。

参照

SFXElasticStreamReader::SetTrigger | SFXElasticStreamReader::ResetTrigger | SFXElasticStreamReader::Fetch


SFXElasticStreamReader::SetTrigger
コールバック関数が呼ばれるトリガーを設定します。
[ public, virtual ]
SFCError SetTrigger(
    UInt32 size   // 入力ストリームを介して読み込まれたデータのサイズ
);
[ public, virtual ]
SFCError SetTrigger(
    SFXBufferConstRef buffer   // 入力ストリームを介して読み込まれたバッファ オブジェクト
);
[ public, virtual ]
SFCError SetTrigger(
    VoidConstPtr buffer   // 入力ストリームを介して読み込まれたデータ
    UInt32 size           // 入力ストリームを介して読み込まれたデータのサイズ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ストリームが設定されていない、または SFXElasticStreamReader::Fetch 関数が処理中のとき : SFERR_INVALID_STATE
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

コールバック関数付きの SFXElasticStreamReader::Fetch 関数を呼ぶと、ストリームのバッファが一杯になったときや、データの終端でコールバック関数が呼び出されます。

SFXElasticStreamReader::SetTrigger 関数の size パラメータを指定した場合、その文字数を読み込む毎にコールバック関数が呼び出されます。

buffer パラメータを指定した場合、それと同じデータをを読み込む毎にコールバック関数が呼び出されます。

使用例

改行文字を読み込む毎にコールバック関数を呼び出す方法

SetTrigger("\r\n", 2)

参照

SFXElasticStreamReader::ResetTrigger | SFXElasticStreamReader::Fetch