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

継承図

SFXStreamReader クラスの継承図

協調図

SFXStreamReader クラスの協調図

解説

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

読み込むデータの種類に応じて、SFXStreamReader クラスを継承する SFXBinaryStreamReaderSFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスのインスタンスを使い分けます。

参照

SFXBinaryStreamReader | SFXAnsiStringStreamReader | SFXWideStringStreamReader | SFXStreamWriter

メンバ

コンストラクタ/デストラクタ
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 から継承)
コールバック関数を表す型です。

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

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

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

解説

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

デリゲートとは : オブジェクト指向プログラミングにおいて、あるオブジェクトの振る舞いを別のオブジェクトに肩代わりして振る舞ってもらうことです。 日本語では、「委譲」と訳されます。

参照

SFXStreamReader::Detach


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

解説

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

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

参照

SFXStreamReader::Fetch | SFXFile::Cancel | SFXTCPSocket::Cancel


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

参照

SFXStreamReader::Attach


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

戻り値

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

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

戻り値

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

解説

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

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

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

参照

SFXStreamReader::SetTrigger


SFXStreamReader::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 として数えます。

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

参照

SFXStreamReader::LastIndexOf


SFXStreamReader::GetReadableSize
読み込み可能なデータ サイズを取得します。
[ public, virtual, const ]
UInt32 GetReadableSize(Void);

解説

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

参照

SFXStreamReader::Read


SFXStreamReader::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 として数えます。

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

参照

SFXStreamReader::FirstIndexOf


SFXStreamReader::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

解説

読み込み可能なデータ サイズは SFXStreamReader::GetReadableSize 関数で取得します。

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

参照

SFXStreamReader::GetReadableSize


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

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

戻り値

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

解説

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

参照

SFXStreamReader::SetTrigger | SFXStreamReader::Fetch


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

戻り値

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

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

戻り値

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

解説

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

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

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

使用例

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

SetTrigger("\r\n", 2)

参照

SFXStreamReader::ResetTrigger | SFXStreamReader::Fetch


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

戻り値

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

解説

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

参照

SFXStreamReader::SetTrigger | SFXStreamReader::ResetTrigger | SFXStreamReader::Fetch