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

継承図

SFXStreamWriter クラスの継承図

協調図

SFXStreamWriter クラスの協調図

解説

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

書き込むデータの種類に応じて、SFXStreamWriter クラスを継承する SFXBinaryStreamWriter クラス、 SFXAnsiStringStreamWriter クラス、 SFXWideStringStreamWriter クラスのいずれかを使います。

参照

SFXBinaryStreamWriter | SFXAnsiStringStreamWriter | SFXWideStringStreamWriter | SFXStreamReader

メンバ

コンストラクタ/デストラクタ
SFXStreamWriter( Void )
SFXStreamWriter クラスのコンストラクタです。
~SFXStreamWriter( Void )
SFXStreamWriter クラスのデストラクタです。
パブリック関数
Void Attach( SFXOutputStreamPtr stream )
SFXOutputStream クラスのインスタンスの動作や管理権限を SFXStreamWriter クラスのインスタンスにデリゲート(委譲)します。
Void Cancel( Void )
ストレージ クラスの Cancel 関数を呼び出します。登録したコールバック関数もキャンセルします。
SFXOutputStreamPtr Detach( Void )
SFXStreamWriter クラスのインスタンスの動作と管理権限を SFXOutputStream クラスのインスタンスにデリゲート(委譲)します。
SFCError Flush( Void )
Flush( CallbackSPP spp , VoidPtr reference )
書き込んだデータをフラッシュします。
UInt32 GetWritableSize( Void )
書き込み可能なデータ サイズを取得します。
Void Release( Void )
ストリームを解放します。
SFCError ResetTrigger( Void )
コールバック関数が呼ばれるトリガーをリセットします。
SFCError SetTrigger( UInt32 size )
SetTrigger( VoidConstPtr buffer , UInt32 size )
SetTrigger( SFXBufferConstRef buffer )
コールバック関数が呼ばれるトリガーを設定します。
Bool Triggers( Void )
トリガーによりコールバック関数が呼ばれたか判定します。
SFCError Write( SFXBufferConstRef buffer )
Write( VoidConstPtr buffer , UInt32 size )
ストリームにデータを書き込みます。
CallbackSPP (SFXStream から継承)
コールバック関数を表す型です。

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

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

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

解説

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

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

参照

SFXStreamWriter::Detach


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

解説

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

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

参照

SFXStreamWriter::Flush | SFXFile::Cancel | SFXTCPSocket::Cancel


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

参照

SFXStreamWriter::Attach


SFXStreamWriter::Flush
書き込んだデータをフラッシュします。
[ public, virtual ]
SFCError Flush(Void);
[ public, virtual ]
SFCError Flush(
    CallbackSPP spp     // コールバック関数
    VoidPtr reference   // コールバック関数へ渡すデータ
);

戻り値

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

解説

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

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

コールバック関数を登録しない SFXStreamWriter::Flush 関数を呼び出すと、データはすぐにフラッシュされます。


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

解説

書き込むデータ サイズが、SFXStreamWriter::GetWritableSize 関数で得られる値より大きい場合、SFXStreamWriter::Flush 関数を呼び出す必要があります。

参照

SFXStreamWriter::Flush


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

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

戻り値

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

解説

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

参照

SFXStreamWriter::SetTrigger | SFXStreamWriter::Flush


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

戻り値

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

解説

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

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

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

使用例

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

SetTrigger("\r\n", 2)

参照

SFXStreamWriter::ResetTrigger | SFXStreamWriter::Flush


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

戻り値

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

解説

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

参照

SFXStreamWriter::SetTrigger | SFXStreamWriter::ResetTrigger | SFXStreamWriter::Flush


SFXStreamWriter::Write
ストリームにデータを書き込みます。
[ public, virtual ]
SFCError Write(
    SFXBufferConstRef buffer   // 書き込むデータ
);
[ public, virtual ]
SFCError Write(
    VoidConstPtr buffer   // 書き込むデータ
    UInt32 size           // 書き込むデータのサイズ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ストリームが設定されていないとき : SFERR_INVALID_STATE
  • 引数が不正なとき : SFERR_INVALID_PARAM
  • 書き込めないとき : SFERR_FAILED

解説

書き込むデータ サイズが SFXStreamWriter::GetWritableSize 関数で得られる値より大きい場合、SFXStreamWriter::Flush 関数を呼び出す必要があります。

参照

SFXStreamWriter::GetWritableSize | SFXStreamWriter::Flush