![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1 |


メモリ ストレージ ( SFXMemory クラス ) は、 SFXMemory::GetStreamReader 関数、SFXMemory::GetStreamWriter 関数で 取得するストリームを使って、その内部バッファを読み書きします。
SFXMemory クラスは、読み書きポインターを 1 つ持ちます。 SFXMemory::Read 関数や SFXMemory::Write 関数は、 ポインターの位置からデータを読み書きし、その分ポインターを移動します。
■ SFXMemory クラスの使用手順
例 483. メモリ ストリームの使用方法
SFXMemory memory; SFXBinaryStreamWriter writer; // 書き込み用ストリーム SFXBinaryStreamReader reader; // 読み込み用ストリーム SFXAnsiString string; // メモリ ストレージから読み込む変数 // メモリ ストレージをオープンする if (memory.Open() == SFERR_NO_ERROR) { // 書き込み用ストリームを取得する if (memory.GetStreamWriter(1024, &writer)== SFERR_NO_ERROR) { writer << "abc"; // 書き込み用ストリームに "abc" を書き込む writer.Flush(); // 書き込み用ストリームからメモリ ストレージに "abc" を書き込む // メモリに書き込んだ内容を表示する TRACE("size = %d", memory.GetSize()); // バッファ サイズを表示する: "size = 4" TRACE("wrire = %s", memory.GetBuffer()); // 内部バッファを表示する: "write = abc + '\0'" writer.Release(); // 書き込み用ストリームを解放する } // 先頭へシークする memory.SeekStart(0); // 読み込み用ストリームを取得する if (memory.GetStreamReader(1024, &reader) == SFERR_NO_ERROR) { reader.Fetch(); // メモリ ストレージから読み込み用ストリームにデータを読み込む reader >> string; // 読み込み用ストリームから string にデータを読み込む // メモリ ストレージから読み込んだ内容を表示する TRACE("size = %d", string.GetLength()); // 文字列の長さを表示する: "size = 3" TRACE("read = %s", string.GetCString()); // 文字列を表示する: "read = abc" reader.Release(); // 読み込み用ストリームを解放する } memory.Close(); // メモリ ストレージをクローズする }
SFXBinaryStreamReader | SFXAnsiStringStreamReader | SFXWideStringStreamReader | SFXBinaryStreamWriter | SFXAnsiStringStreamWriter | SFXWideStringStreamWriter
| コンストラクタ/デストラクタ |
|---|
|
SFXMemory( Void ) SFXMemory( UInt16 threshold , UInt16 cluster ) SFXMemory クラスのコンストラクタです。
|
|
~SFXMemory( Void ) SFXMemory クラスのデストラクタです。
|
| パブリック関数 | |
|---|---|
| Void |
Cancel( Void ) 【 現在、この関数は使えません。 】
|
| SFCError |
Close(
SFXBufferPtr buffer
) メモリをクローズします。
|
| Void |
Close( Void ) メモリをクローズします。
|
| VoidConstPtr |
GetBuffer( Void ) 内部バッファへのポインターを取得します。
|
| UInt16 |
GetCluster( Void ) 内部バッファ メモリのクラスタ サイズを取得します。
|
| UInt32 |
GetSize( Void ) 内部で確保しているバッファ サイズを取得します。
|
| SFCError |
GetStreamReader(
UInt32 size
, SFXStreamReaderPtr result
) GetStreamReader( SFXStreamReaderPtr result ) メモリ読み込み用ストリームを取得します。
|
| SFCError |
GetStreamWriter(
UInt32 size
, SFXStreamWriterPtr result
) GetStreamWriter( SFXStreamWriterPtr result ) メモリ書き込み用ストリームを取得します。
|
| UInt16 |
GetThreshold( Void ) 内部バッファ サイズの最小値を取得します。
|
| SFCError |
Open(
SFXBufferConstRef buffer
) Open( Void ) Open( VoidConstPtr buffer , UInt32 size ) メモリ ストレージをオープンします。
|
| SFCError |
Read(
VoidPtr buffer
, UInt32Ptr size
) 読み込み用ストリームを使わずにメモリからデータを読み込みます。
|
| SFCError |
ScheduleRead(
CallbackSPP spp
, VoidPtr reference
) 【 現在、この関数は使えません。 】
|
| SFCError |
ScheduleWrite(
CallbackSPP spp
, VoidPtr reference
) 【 現在、この関数は使えません。 】
|
| SFCError |
Seek(
SInt32 distance
) 現在の位置から指定した移動量だけメモリ ポインターの位置を移動します。
|
| SFCError |
SeekEnd(
SInt32 distance
) 終端から指定した移動量だけメモリ ポインターを移動します。
|
| SFCError |
SeekStart(
SInt32 distance
) 先頭から指定した移動量だけメモリ ポインターを移動します。
|
| Void |
SetCluster(
UInt16 size
) 内部バッファ メモリのクラスタ サイズを設定します。
|
| Void |
SetThreshold(
UInt16 size
) 内部バッファ サイズの最小値を設定します。
|
| UInt32 |
Tell( Void ) 読み書きポインターの現在位置を取得します。
|
| SFCError |
Truncate(
UInt32 position
) 内部バッファを指定したサイズで切り捨てます。
|
| SFCError |
Write(
VoidConstPtr buffer
, UInt32Ptr size
) 書き込み用ストリームを使わずにメモリにデータを書き込みます。
|
| 型 |
|---|
|
DefaultEnum メモリ ストレージに関する各種パラメーターの初期値から構成される列挙型です。
|
|
CallbackSPP
(SFXStorage から継承)
コールバック関数を表す型です。
|
[ public, explicit ] SFXMemory(Void);
[ public, explicit ]
SFXMemory(
UInt16 threshold // 内部バッファの閾値
UInt16 cluster // 内部バッファのクラスタ サイズ
);
内部バッファは確保されません。
[ public, virtual ] virtual ~SFXMemory(Void);
[ public, virtual ] Void Cancel(Void);
[ public ] SFCError Close( SFXBufferPtr buffer // 内部バッファをコピーするバッファへのポインター );
[ public ] Void Close(Void);
引数を指定しない場合は何も返しません。
引数に SFXBufferPtr を指定した場合はエラー値を返します。
引数を指定しない場合は内部バッファを解放します。
引数に SFXBufferPtr を指定した場合は内部バッファを指定したバッファにコピーした後、内部バッファを解放します。
[ public, const ] VoidConstPtr GetBuffer(Void);
[ public, const ] UInt16 GetCluster(Void);
[ public, const ] UInt32 GetSize(Void);
[ public, virtual ] SFCError GetStreamReader( UInt32 size // バッファサイズ SFXStreamReaderPtr result // メモリ読み込み用ストリームへのポインター );
[ public, virtual ] SFCError GetStreamReader( SFXStreamReaderPtr result // メモリ読み込み用ストリームへのポインター );
メモリ読み込み用ストリームのバッファ サイズを指定することも可能です。 メモリ読み込み用ストリームは、読み込むデータの種類に応じて SFXBinaryStreamReader、SFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスを使い分けます。
SFXMemory::GetStreamWriter | SFXBinaryStreamReader | SFXAnsiStringStreamReader | SFXWideStringStreamReader
[ public, virtual ] SFCError GetStreamWriter( UInt32 size // サイズ SFXStreamWriterPtr result // メモリ書き込み用ストリームへのポインター );
[ public, virtual ] SFCError GetStreamWriter( SFXStreamWriterPtr result // メモリ書き込み用ストリームへのポインター );
メモリ書き込み用ストリームのバッファ サイズを指定することも可能です。 メモリ書き込み用ストリームは、書き込むデータのタイプに応じて SFXBinaryStreamWriter クラス、SFXAnsiStringStreamWriter クラス、SFXWideStringStreamWriter クラスを使い分けます。
SFXMemory::GetStreamReader | SFXBinaryStreamWriter | SFXAnsiStringStreamWriter | SFXWideStringStreamWriter
[ public, const ] UInt16 GetThreshold(Void);
[ public ] SFCError Open( SFXBufferConstRef buffer // コピーするバッファ );
[ public ] SFCError Open( VoidConstPtr buffer // コピーするバッファ UInt32 size // コピーするバッファ サイズ );
[ public ] SFCError Open(Void);
メモリ ストレージを使えるように初期処理します。引数にバッファを指定した場合はそのバッファを内部バッファにコピーします。引数に何も指定しない場合は内部バッファは空です ( サイズは 0 )。
[ public, virtual ] SFCError Read( VoidPtr buffer // 読み込んだデータを格納するバッファ UInt32Ptr size // バッファのサイズ、読み込んだデータのサイズ );
読み込んだデータを格納するバッファを指定します。
関数の呼び出し時は、バッファのサイズを指定します。SFXMemory::Read 関数が終了すると、読み込んだデータのサイズが格納されます。
[ public, virtual ] SFCError ScheduleRead( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバックに渡すデータ );
SFERR_UNSUPPORTED を返します。
[ public, virtual ] SFCError ScheduleWrite( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバックに渡すデータ );
SFERR_UNSUPPORTED を返します。
メモリ ポインターを前方に移動する場合は、移動量 ( distance パラメーター ) に負の値を指定します。
移動後のメモリ ポインターの位置がバッファの先頭よりも前方または終端よりも後方になる場合、 メモリ ポインターの位置はそれぞれバッファの先頭または終端に設定されます。
メモリ ポインターを前方に移動する場合は、移動量 ( distance パラメーター ) に負の値を指定します。
移動後のメモリ ポインターの位置がバッファの先頭よりも前方または終端よりも後方になる場合、 メモリ ポインターの位置はそれぞれバッファの先頭または終端に設定されます。
メモリ ポインターを前方に移動する場合は、移動量 ( distance パラメーター ) に負の値を指定します。
移動後のメモリ ポインターの位置がバッファの先頭よりも前方または終端よりも後方になる場合、 メモリ ポインターの位置はそれぞれバッファの先頭または終端に設定されます。
内部バッファを確保する時の最小単位を設定します。
[ public, const ] UInt32 Tell(Void);
現在のポインター位置が切り捨てたバッファの終端を超える場合、読み書き用ポインターはバッファの終端に移動されます。
[ public, virtual ] SFCError Write( VoidConstPtr buffer // 書き込むデータ UInt32Ptr size // 書き込むデータのサイズ、書き込んだデータのサイズ );
書き込むデータを指定します。
SFXMemory::Write 関数の呼び出し時は、書き込むデータのサイズを指定します。SFXMemory::Write 関数が終了すると、実際に書き込んだデータのサイズが格納されます。
enum DefaultEnum {
DEFAULT_THRESHOLD = SFXBuffer::DEFAULT_THRESHOLD,
DEFAULT_CLUSTER = SFXBuffer::DEFAULT_CLUSTER
};
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|