SophiaFramework UNIVERSE 5.3 |
SFXMemory クラスは、メモリストレージを表すクラスです。
メモリストレージへのデータの読み書きは、 SFXMemory クラスを使用して以下の手順で行います。
■ SFXMemory クラスの使用手順
メモリポインタ | |
---|---|
SFXMemory クラスは、読み書き用のメモリポインタを 1 つ持ちます。 SFXMemory::Read / SFXMemory::Write 関数は、 メモリポインタの現在位置からデータを読み込み / 書き込み、その分メモリポインタを移動します。 SFXMemory::Seek / SFXMemory::SeekStart / SFXMemory::SeekEnd 関数を呼び出してメモリポインタを移動することも可能です。 また、ストリームを利用して読み書きする場合も、 読み書きしたデータ量に応じてメモリポインタは移動します。 |
例 835. SFXMemory ストレージの使用方法
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 クラスのコンストラクタです。
|
SFXMemory(
UInt16 threshold
, UInt16 cluster
) SFXMemory クラスのコンストラクタです。
|
~SFXMemory( Void ) SFXMemory クラスのデストラクタです。
|
パブリック関数 | |
---|---|
SFCError |
AsSFBAStream(
SFBAStreamSmpPtr result
) SFBAStream インスタンスに変換します。
|
SFCError |
AsSFBSource(
SFBSourceSmpPtr result
) SFBSource インスタンスに変換します。
|
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
) メモリ読み込み用ストリームを取得します。
|
SFCError |
GetStreamReader(
SFXStreamReaderPtr result
) メモリ読み込み用ストリームを取得します。
|
SFCError |
GetStreamWriter(
UInt32 size
, SFXStreamWriterPtr result
) メモリ書き込み用ストリームを取得します。
|
SFCError |
GetStreamWriter(
SFXStreamWriterPtr result
) メモリ書き込み用ストリームを取得します。
|
UInt16 |
GetThreshold( Void ) 内部バッファの最小値を取得します。[単位: バイト]
|
SFCError |
Open(
SFXBufferConstRef buffer
) メモリストレージを開きます。
|
SFCError |
Open(
VoidConstPtr buffer
, UInt32 size
) メモリストレージを開きます。
|
SFCError |
Open( Void ) メモリストレージを開きます。
|
SFCError |
Read(
VoidPtr buffer
, UInt32Ptr size
) Read します。
|
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
) Write します。
|
型 |
---|
DefaultEnum 内部バッファメモリの最小値とクラスタサイズのデフォルト値を表します。[単位: バイト]
|
CallbackSPP
(SFXStorage から継承)
ストレージクラスで使用するコールバック関数の型です。
|
[ public, explicit ] SFXMemory(Void);
[ public, explicit ] SFXMemory( UInt16 threshold // 内部バッファの閾値 UInt16 cluster // 内部バッファのクラスタサイズ );
このコンストラクタは、 threshold 引数と cluster 引数を指定した場合、 内部バッファの閾値とクラスタサイズを設定し、内部バッファを割り当てます。 そうでない場合は、何も行いません。
[ public, virtual ] virtual ~SFXMemory(Void);
このデストラクタは、 SFXMemory::Close 関数を呼び出します。
[ public, virtual, const ] SFCError AsSFBAStream( SFBAStreamSmpPtr result // SFBAStream インスタンスへのポインタ );
SFBAStream インスタンスへのポインタを指定します。
この関数は、 このストレージが内部で管理する SFXBuffer インスタンスを SFBAStream インスタンスに変換します。
result 引数には、変換結果である SFBAStream インスタンスへのポインタが返ります。
注意 | |
---|---|
この関数は、内部で BREW API の BREW API IMEMASTREAM_SetEx 関数を呼び出します。 |
注意 | |
---|---|
この関数により、 このストレージを SFBAStream インスタンスとして扱えます。 |
[ public, virtual, const ] SFCError AsSFBSource( SFBSourceSmpPtr result // SFBSource インスタンスへのポインタ );
SFBSource インスタンスへのポインタを指定します。
この関数は、 このストレージが内部で管理する SFXBuffer インスタンスを SFBSource インスタンスに変換します。
result 引数には、変換結果である SFBSource インスタンスへのポインタが返ります。
注意 | |
---|---|
この関数は、内部で BREW API の BREW API ISOURCEUTIL_SourceFromMemory 関数を呼び出します。 |
注意 | |
---|---|
この関数により、 このストレージを SFBSource インスタンスとして扱えます。 |
[ public, virtual ] Void Cancel(Void);
【現在、この関数は使えません。】
[ public ] SFCError Close( SFXBufferPtr buffer // 内部バッファをコピーするバッファへのポインタ );
[ public ] Void Close(Void);
この関数は、 このメモリストレージを閉じます。
具体的には、 このメモリストレージの内部バッファを解放します。
buffer 引数を指定した場合、 解放する前の内部バッファを buffer 引数にコピーし、エラー値を返します。 指定しない場合は、内部バッファはコピーされず、エラー値も返りません。
注意 | |
---|---|
この関数は、SFXMemory::~SFXMemory デストラクタから呼び出されます。 |
Tip | |
---|---|
サスペンド時は、この関数を呼び出してリソースを解放します。 |
[ 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 // メモリ読み込み用ストリームへのポインタ );
この関数は、このメモリストレージの読み込み用ストリームを取得します。
size 引数を指定する場合、ストリームバッファは指定したサイズで固定です。 指定しない場合は、ストリームバッファは可変長になり、 内部的に SFXElasticStreamReader クラスが利用されます。
Tip | |
---|---|
メモリ読み込み用ストリームは、読み込むデータの種類に応じて SFXBinaryStreamReader、 SFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスを使い分けます。 |
SFXMemory::GetStreamWriter | SFXBinaryStreamReader | SFXAnsiStringStreamReader | SFXWideStringStreamReader | ストリームバッファ
[ public, virtual ] SFCError GetStreamWriter( UInt32 size // バッファサイズ SFXStreamWriterPtr result // メモリ書き込み用ストリームへのポインタ );
[ public, virtual ] SFCError GetStreamWriter( SFXStreamWriterPtr result // メモリ書き込み用ストリームへのポインタ );
この関数は、このメモリストレージの書き込み用ストリームを取得します。
size 引数を指定する場合、ストリームバッファは指定したサイズで固定です。 指定しない場合は、ストリームバッファは可変長になり、 内部的に SFXElasticStreamWriter クラスが利用されます。
Tip | |
---|---|
メモリ書き込み用ストリームは、書き込むデータの種類に応じて 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);
この関数は、 このメモリストレージを開きます。
具体的には、 このメモリストレージからデータを読み書きできるように初期化します。 buffer 引数を指定した場合、buffer 引数のデータをこのメモリストレージの内部バッファにコピーします。 そうでない場合、 内部バッファにデータはコピーされません(内部バッファは空で、サイズは 0 です)。
[ public, virtual ] SFCError Read( VoidPtr buffer // データを読み込むバッファ UInt32Ptr size // 呼び出す前: データを読み込むバッファのサイズ。戻り値: 実際に読み込んだデータのサイズ );
データを読み込むバッファを指定します。
この関数を呼び出す時は、データを読み込むバッファのサイズを指定します。 この関数が戻ると、実際にバッファに読み込んだデータのサイズが格納されています。
この関数は、 Read します(ストリームを使用せずにメモリストレージからデータを読み込みます)。
前提条件 | |
---|---|
この関数を呼び出す前に、 このメモリストレージは SFXMemory::Open 関数を呼び出して開いている必要があります 。 |
[ public, virtual ] SFCError ScheduleRead( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ(参照値) );
SFERR_UNSUPPORTED
【現在、この関数は使えません。】
[ public, virtual ] SFCError ScheduleWrite( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ(参照値) );
SFERR_UNSUPPORTED
【現在、この関数は使えません。】
この関数は、 このメモリストレージの現在の位置から指定した指定された移動量だけメモリポインタの位置を移動します。
移動後のメモリポインタの位置がバッファの先頭よりも前方または終端よりも後方になる場合、 メモリポインタの位置はそれぞれバッファの先頭または終端に設定されます。
注意 | |
---|---|
メモリポインタを前方に移動する場合は、移動量 ( distance パラメータ ) に負の値を指定します。 |
前提条件 | |
---|---|
この関数を呼び出す前に、 このメモリストレージは SFXMemory::Open 関数を呼び出して開いている必要があります 。 |
この関数は、 このメモリストレージの終端から指定された移動量だけメモリポインタの位置を移動します。
移動後のメモリポインタの位置がバッファの先頭よりも前方または終端よりも後方になる場合、 メモリポインタの位置はそれぞれバッファの先頭または終端に設定されます。
注意 | |
---|---|
メモリポインタを前方に移動する場合は、移動量 ( distance パラメータ ) に負の値を指定します。 |
前提条件 | |
---|---|
この関数を呼び出す前に、 このメモリストレージは SFXMemory::Open 関数を呼び出して開いている必要があります 。 |
この関数は、 このメモリストレージの先頭から指定した指定された移動量だけメモリポインタの位置を移動します。
移動後のメモリポインタの位置がバッファの先頭よりも前方または終端よりも後方になる場合、 メモリポインタの位置はそれぞれバッファの先頭または終端に設定されます。
注意 | |
---|---|
メモリポインタを前方に移動する場合は、移動量 ( distance パラメータ ) に負の値を指定します。 |
前提条件 | |
---|---|
この関数を呼び出す前に、 このメモリストレージは SFXMemory::Open 関数を呼び出して開いている必要があります 。 |
この関数は、 このメモリストレージの内部バッファ(SFXBuffer)を確保する時の最小単位を設定します。[単位: バイト]
デフォルト値: SFXMemory::DEFAULT_CLUSTER バイト
SFXMemory::DEFAULT_CLUSTER の値は SFXMemory::DefaultEnum を参照してください。
この関数は、 このメモリストレージの内部バッファ(SFXBuffer)の最小値を設定します。[単位: バイト]
デフォルト値: SFXMemory::DEFAULT_THRESHOLD バイト
SFXMemory::DEFAULT_THRESHOLD の値は SFXMemory::DefaultEnum を参照してください。
[ public, const ] UInt32 Tell(Void);
この関数は、 このメモリストレージの読み書きポインタの現在の位置を取得します。
この関数は、 このメモリストレージの内部バッファを指定されたサイズで切り捨てます。
現在のポインタ位置が切り捨てた後の内部バッファの終端を超える場合、 読み書き用ポインタは切り捨てた後の内部バッファの終端に移動します。
前提条件 | |
---|---|
この関数を呼び出す前に、 このメモリストレージは SFXMemory::Open 関数を呼び出して開いている必要があります 。 |
[ public, virtual ] SFCError Write( VoidConstPtr buffer // データを書き込むバッファ UInt32Ptr size // 呼び出す前: データを書き込むバッファのサイズ。戻り値: 実際に書き込んだデータのサイズ );
データを書き込むバッファを指定します。
この関数を呼び出す時は、データを書き込むバッファのサイズを指定します。 この関数が戻ると、実際にバッファに書き込んだデータのサイズが格納されています。
この関数は、 Write します(ストリームを使用せずにメモリストレージにデータを書き込みます)。
前提条件 | |
---|---|
この関数を呼び出す前に、 このメモリストレージは SFXMemory::Open 関数を呼び出して開いている必要があります 。 |
enum DefaultEnum { DEFAULT_THRESHOLD = SFXBuffer::DEFAULT_THRESHOLD, // 内部バッファメモリの最小値 [単位: バイト] DEFAULT_CLUSTER = SFXBuffer::DEFAULT_CLUSTER // 内部バッファメモリのクラスタサイズ(メモリ確保の最小単位) [単位: バイト] };
DEFAULT_THRESHOLD と DEFAULT_CLUSTER は、 内部バッファメモリ(SFXBuffer)の最小値とクラスタサイズのデフォルト値を表します。[単位: バイト]
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |