SophiaFramework UNIVERSE 5.3 |
SFXBuffer クラスとは
SFXClusterHeap クラスに、バッファの結合やデータの検索、置換などの処理を付加したクラスです。
割り当てられているメモリのサイズは、SFXBuffer::GetSize 関数で取得できます。
割り当てられたメモリは、デストラクタにより自動的に解放されますが、 SFXBuffer::Free 関数により明示的にメモリを解放することも可能です。
また、SFXBuffer::SetSize 関数により、 一度割り当てたバッファのサイズを変更できます。 このときデータは保存されます。
バッファクラスが内部で管理しているバッファを直接使う場合は、 SFXBuffer::GetBuffer 関数を使います。
Attach 関数 と Detach 関数
SFXBuffer::Attach 関数は、 指定された型のデータ領域を SFXBuffer オブジェクトに結び付けます。 SFXBuffer::Detach 関数はその逆の操作を行います。
SFXBuffer::Set 関数や代入演算子 ( = ) では、データはコピーされますが、 SFXBuffer::Attach 関数や SFXBuffer::Detach 関数では、データはコピーされません。
数百 KB ものデータをコピーするためのヒープが無いとき、或いは、パフォーマンス劣化の問題を回避するときに利用します。
コンストラクタ/デストラクタ |
---|
SFXBuffer( Void ) SFXBuffer クラスのコンストラクタです。
|
SFXBuffer(
SFXBufferConstRef buffer
) SFXBuffer クラスのコンストラクタです。
|
SFXBuffer(
VoidConstPtr buffer
, UInt32 size
) SFXBuffer クラスのコンストラクタです。
|
SFXBuffer(
Byte byte
) SFXBuffer クラスのコンストラクタです。
|
SFXBuffer(
SFXAnsiStringConstRef string
) SFXBuffer クラスのコンストラクタです。
|
SFXBuffer(
SFXWideStringConstRef string
) SFXBuffer クラスのコンストラクタです。
|
SFXBuffer(
UInt16 threshold
, UInt16 cluster
) SFXBuffer クラスのコンストラクタです。
|
~SFXBuffer( Void ) SFXBuffer クラスのデストラクタです。
|
パブリック関数 | |
---|---|
SFCError |
Add(
SFXBufferConstRef buffer
) このバッファの最後に指定されたデータを追加します。
|
SFCError |
Add(
VoidConstPtr buffer
, UInt32 size
) このバッファの最後に指定されたデータを追加します。
|
SFCError |
Add(
Byte byte
) このバッファの最後に指定されたデータを追加します。
|
SFCError |
Allocate(
UInt32 size
) このバッファに指定されたサイズのメモリを割り当てます。
|
SFCError |
Attach(
SFXBufferPtr buffer
) 指定された領域をこのバッファオブジェクトに結び付けます。
|
SFCError |
Attach(
VoidPtr buffer
, UInt32 size
) 指定された領域をこのバッファオブジェクトに結び付けます。
|
SFCError |
Attach(
SFXAnsiStringPtr string
) 指定された領域をこのバッファオブジェクトに結び付けます。
|
SFCError |
Attach(
SFXWideStringPtr string
) 指定された領域をこのバッファオブジェクトに結び付けます。
|
SFCError |
AttachSFXAnsiString(
SFXAnsiStringPtr string
) [廃止予定]指定された文字列オブジェクトの領域をこのバッファオブジェクトに結び付けます。
|
SFCError |
AttachSFXWideString(
SFXWideStringPtr string
) [廃止予定]指定された文字列オブジェクトの領域をこのバッファオブジェクトに結び付けます。
|
SInt32 |
Compare(
SFXBufferConstRef buffer
) このバッファを指定されたデータと比較します。
|
SInt32 |
Compare(
VoidConstPtr buffer
, UInt32 size
) このバッファを指定されたデータと比較します。
|
SFCError |
Copy(
UInt32 index
, SFXBufferConstRef buffer
) このバッファを指定された開始位置から指定されたデータで上書きします。
|
SFCError |
Copy(
UInt32 index
, VoidConstPtr buffer
, UInt32 size
) このバッファを指定された開始位置から指定されたデータで上書きします。
|
SFCError |
Detach(
SFXBufferPtr buffer
) このバッファオブジェクトが管理しているデータ領域を切り離します。
|
VoidPtr |
Detach(
UInt32Ptr size = null
) このバッファオブジェクトが管理しているデータ領域を切り離します。
|
SFCError |
Detach(
SFXAnsiStringPtr string
) このバッファオブジェクトが管理しているデータ領域を切り離します。
|
SFCError |
Detach(
SFXWideStringPtr string
) このバッファオブジェクトが管理しているデータ領域を切り離します。
|
SFCError |
DetachSFXAnsiString(
SFXAnsiStringPtr string
) [廃止予定]このバッファオブジェクトが管理している領域を切り離します。
|
SFCError |
DetachSFXWideString(
SFXWideStringPtr string
) [廃止予定]このバッファオブジェクトが管理している領域を切り離します。
|
static SFXBufferConstRef |
EmptyInstance( Void ) 空のバッファを取得します。
|
Bool |
EndsWith(
SFXBufferConstRef buffer
) このバッファの末尾が指定されたデータで終わるか判定します。
|
Bool |
EndsWith(
VoidConstPtr buffer
, UInt32 size
) このバッファの末尾が指定されたデータで終わるか判定します。
|
Bool |
EndsWith(
Byte byte
) このバッファの末尾が指定されたデータで終わるか判定します。
|
Bool |
Equals(
SFXBufferConstRef buffer
) このバッファが指定されたデータと等しいか判定します。
|
Bool |
Equals(
VoidConstPtr buffer
, UInt32 size
) このバッファが指定されたデータと等しいか判定します。
|
Void |
Fill(
Byte data
) このバッファを指定されたデータで埋めます。
|
SInt32 |
FirstIndexOf(
SFXBufferConstRef buffer
, SInt32 index = SINT32_MINIMUM
) このバッファを先頭から末尾に向かって検索し、最初に見つかった位置のインデックスを取得します。
|
SInt32 |
FirstIndexOf(
VoidConstPtr buffer
, UInt32 size
, SInt32 index = SINT32_MINIMUM
) このバッファを先頭から末尾に向かって検索し、最初に見つかった位置のインデックスを取得します。
|
SInt32 |
FirstIndexOf(
Byte byte
, SInt32 index = SINT32_MINIMUM
) このバッファを先頭から末尾に向かって検索し、最初に見つかった位置のインデックスを取得します。
|
Void |
Free( Void ) このバッファに割り当てられたのメモリを解放します。
|
VoidPtr |
GetBuffer( Void ) このバッファの内部バッファメモリのポインタを取得します。
|
VoidConstPtr |
GetBuffer( Void ) このバッファの内部バッファメモリのポインタを取得します。
|
Byte |
GetByte(
UInt32 index
) このバッファの指定されたインデックスの位置にあるバイト値を取得します。
|
UInt16 |
GetCluster( Void ) このバッファの内部バッファメモリのクラスタサイズを取得します。[単位: バイト]
|
UInt32 |
GetSize( Void ) このバッファのサイズを取得します。
|
UInt16 |
GetThreshold( Void ) このバッファの内部バッファメモリの最小値を取得します。[単位: バイト]
|
SFCError |
Insert(
UInt32 index
, SFXBufferConstRef buffer
) 指定された位置にデータを挿入します。
|
SFCError |
Insert(
UInt32 index
, VoidConstPtr buffer
, UInt32 size
) 指定された位置にデータを挿入します。
|
SFCError |
Insert(
Byte byte
) 指定された位置にデータを挿入します。
|
Bool |
IsEmpty( Void ) バッファが空であるか判定します。
|
SInt32 |
LastIndexOf(
SFXBufferConstRef buffer
, SInt32 index = SINT32_MAXIMUM
) このバッファを末尾から検索して、指定されたデータと一致する最後のインデックスを取得します。
|
SInt32 |
LastIndexOf(
VoidConstPtr buffer
, UInt32 size
, SInt32 index = SINT32_MAXIMUM
) このバッファを末尾から検索して、指定されたデータと一致する最後のインデックスを取得します。
|
SInt32 |
LastIndexOf(
Byte byte
, SInt32 index = SINT32_MAXIMUM
) このバッファを末尾から検索して、指定されたデータと一致する最後のインデックスを取得します。
|
SFCError |
Mul(
SInt32 repeat
) このバッファのデータを指定された回数だけ繰り返して拡張します。
|
Void |
Remove(
UInt32 begin
, UInt32 end
) このバッファから指定された範囲のデータを削除します。
|
SFCError |
Set(
SFXBufferConstRef buffer
) このバッファを引数で指定されたデータに設定します。
|
SFCError |
Set(
VoidConstPtr buffer
, UInt32 size
) このバッファを引数で指定されたデータに設定します。
|
SFCError |
Set(
Byte byte
) このバッファを引数で指定されたデータに設定します。
|
SFCError |
Set(
SFXAnsiStringConstRef string
) このバッファを引数で指定されたデータに設定します。
|
SFCError |
Set(
SFXWideStringConstRef string
) このバッファを引数で指定されたデータに設定します。
|
SFCError |
SetByte(
UInt32 index
, Byte data
) このバッファの指定された位置に指定されたバイト値を設定します。
|
Void |
SetCluster(
UInt16 size
) このバッファの内部バッファメモリのクラスタサイズを設定します。[単位: バイト]
|
SFCError |
SetSize(
UInt32 size
) このバッファのサイズを設定します。
|
Void |
SetThreshold(
UInt16 size
) このバッファの内部バッファメモリの最小値を設定します。[単位: バイト]
|
Void |
Slice(
UInt32 begin
, UInt32 end
) このバッファの指定された範囲のデータだけを残し、他を削除します。
|
Bool |
StartsWith(
SFXBufferConstRef buffer
) このバッファの先頭が指定されたデータで始まるか判定します。
|
Bool |
StartsWith(
VoidConstPtr buffer
, UInt32 size
) このバッファの先頭が指定されたデータで始まるか判定します。
|
Bool |
StartsWith(
Byte byte
) このバッファの先頭が指定されたデータで始まるか判定します。
|
SFXBufferRef |
operator*=(
SInt32 repeat
) 左側のバッファを右側の回数だけ繰り返したバッファにします。
|
SFXBufferRef |
operator+=(
SFXBufferConstRef buffer
) 左側のバッファの末尾に右側のバッファを追加します。
|
SFXBufferRef |
operator+=(
Byte byte
) 左側のバッファの末尾に右側のバッファを追加します。
|
SFXBufferRef |
operator<<(
SFXBufferRef left
, SFXBufferConstRef right
) 左側のバッファの末尾に右側のバッファを追加します。
|
SFXBufferRef |
operator=(
SFXBufferConstRef buffer
) 左側のバッファに右側のバッファを代入します。
|
ByteRef |
operator[](
UInt32 index
) このバッファ内の指定されたインデックス位置にあるバイト値を取得します。
|
ByteConstRef |
operator[](
UInt32 index
) このバッファ内の指定されたインデックス位置にあるバイト値を取得します。
|
Bool |
operator==(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファと等しいか判定します。
|
Bool |
operator>=(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファ以上であるか判定します。
|
Bool |
operator>(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファよりも大きいか判定します。
|
Bool |
operator<=(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファ以下であるか判定します。
|
Bool |
operator<(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファよりも小さいか判定します。
|
SFXBuffer |
operator*(
SFXBufferConstRef left
, SInt32 right
) 左側のバッファを右側の回数だけ繰り返したバッファを返します。
|
Bool |
operator!=(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファと異なるか判定します。
|
SFXBuffer |
operator+(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファの末尾に右側のバッファを追加したバッファを返します。
|
SFXBuffer |
operator+(
SFXBufferConstRef left
, Byte right
) 左側のバッファの末尾に右側のバッファを追加したバッファを返します。
|
型 |
---|
DefaultEnum 内部バッファメモリの最小値とクラスタサイズのデフォルト値を表します。[単位: バイト]
|
グローバル関数 | |
---|---|
Bool |
operator==(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファと等しいか判定します。
|
Bool |
operator>=(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファ以上であるか判定します。
|
Bool |
operator>(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファよりも大きいか判定します。
|
Bool |
operator<=(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファ以下であるか判定します。
|
Bool |
operator<(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファよりも小さいか判定します。
|
SFXBuffer |
operator*(
SFXBufferConstRef left
, SInt32 right
) 左側のバッファを右側の回数だけ繰り返したバッファを返します。
|
Bool |
operator!=(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファが右側のバッファと異なるか判定します。
|
SFXBuffer |
operator+(
SFXBufferConstRef left
, SFXBufferConstRef right
) 左側のバッファの末尾に右側のバッファを追加したバッファを返します。
|
SFXBuffer |
operator+(
SFXBufferConstRef left
, Byte right
) 左側のバッファの末尾に右側のバッファを追加したバッファを返します。
|
[ public, explicit ] SFXBuffer(Void);
[ public ] SFXBuffer( SFXBufferConstRef buffer // コピーするバッファ );
[ public, explicit ] SFXBuffer( VoidConstPtr buffer // バッファとして使うメモリブロック UInt32 size // メモリブロックのサイズ );
[ public, explicit ] SFXBuffer( Byte byte // バッファとして使う1バイトの値 );
[ public, explicit ] SFXBuffer( SFXAnsiStringConstRef string // バッファとして使う文字列 );
[ public, explicit ] SFXBuffer( SFXWideStringConstRef string // バッファとして使う文字列 );
[ public, explicit ] SFXBuffer( UInt16 threshold // 内部バッファメモリの最小サイズ UInt16 cluster // 内部バッファメモリのクラスタサイズ );
このコンストラクタは、引数で指定されたデータをコピーしてバッファを設定します。 この操作により、元のバッファは破棄されます。 データをコピーせずに取り込む場合は SFXBuffer::Attach 関数を使用します。
内部バッファメモリの確保 | |
---|---|
バッファは、 SFXBuffer クラスが内部で管理する SFXClusterHeap クラスのヒープ(内部バッファメモリ)からメモリを割り当てられます。 引数を指定しない場合、または引数が threshold と cluster である場合、 このコンストラクタを実行したタイミングでは内部バッファメモリは確保されません。 SFXBuffer::Allocate や SFXBuffer::SetSize、 SFXBuffer::Set などの関数を呼び出したタイミングで内部バッファメモリは自動的に確保されます。 |
バッファのサイズ | |
---|---|
引数にバッファや文字列、メモリブロックを指定した場合、 SFXBuffer::GetSize 関数で取得できる、 バッファのサイズは引数に指定したデータのサイズと等しくなります。 文字列を引数に指定した場合は、 SFXAnsiString 文字列が指定された場合は『文字列の長さ + 1(1 バイトの '\0' の分)』、 SFXWideString 文字列が指定された場合は『文字列の長さ * 2 + 2(2 バイトの '\0' の分)』となります。 ※データのコピーに必要な内部バッファメモリは自動的に割り当てられます。 バッファのメモリは、内部バッファメモリから設定したデータのサイズ分だけ割り当てられます。 |
SFXBuffer::Allocate | SFXBuffer::SetSize | SFXBuffer::Attach | SFXBuffer::Set | SFXBuffer::GetSize
[ public ] ~SFXBuffer(Void);
このデストラクタは、 SFXBuffer::Free 関数を呼び出して、バッファメモリを解放します。
[ public ] SFCError Add( SFXBufferConstRef buffer // 追加するバッファ );
[ public ] SFCError Add( VoidConstPtr buffer // 追加するメモリブロック UInt32 size // メモリブロックのサイズ );
[ public ] SFCError Add( Byte byte // バッファに追加する 1 バイトの値 );
この関数は、このバッファの最後に指定されたデータを追加します。
注意 | |
---|---|
追加するデータのサイズ分だけ、 SFXBuffer::GetSize 関数で取得できる、 このバッファのサイズは大きくなります。 また、必要に応じて内部バッファメモリは自動的に拡張されます。 |
注意 | |
---|---|
この操作により、 このバッファの内容は変化します。 元の内容を保持したい場合は、別の場所にコピーする、 或いは、operator+ 演算子を使用します。 |
この関数は、このバッファに指定されたサイズのメモリを割り当てます。
この関数は、 最初に SFXBuffer::Free 関数を呼び出してこのバッファに割り当てられていた内部バッファメモリを解放します。
注意 | |
---|---|
バッファのメモリは、 SFXBuffer::SFXBuffer コンストラクタや SFXBuffer::Set / SFXBuffer::SetSize 関数の呼び出しで割り当てることもできます。 |
注意事項 | |
---|---|
|
[ public ] SFCError Attach( SFXBufferPtr buffer // 別の SFXBuffer オブジェクト );
[ public ] SFCError Attach( VoidPtr buffer // 使用するメモリブロック UInt32 size // メモリブロックのサイズ );
[ public ] SFCError Attach( SFXAnsiStringPtr string // SFXAnsiString オブジェクト );
[ public ] SFCError Attach( SFXWideStringPtr string // SFXWideString オブジェクト );
この関数は、指定されたデータをこのバッファオブジェクトに結び付けます。 この関数を実行した後、指定されたデータは SFXBuffer オブジェクトとして操作できます。
buffer パラメータで指定されたデータはコピーされないので、 SFXBuffer::Set 関数よりも効率的で、 大容量のデータ処理時のパフォーマンス劣化やメモリ不足の問題を回避できます。
注意 | |
---|---|
引数に指定されたデータに割り当てられていたメモリは、 このバッファオブジェクトが解放されるときに自動的に解放されます。 |
AChar 型の文字列領域を SFXBuffer オブジェクトに結び付けます。
SFXBuffer buffer; VoidPtr void_ptr; // void_ptr に 10240 バイトのデータ領域を割り当てる void_ptr = static_cast<VoidPtr>(MemoryAllocate(10240)); ... // void_ptr に割り当てたデータ領域を bufferオブジェクトに結びつける buffer.Attach(void_ptr, 10240); // 以降、void_ptr に割り当てた文字列領域は buffer オブジェクトとして操作できる ・・・ // 使用後、void_ptr に割り当てた文字列領域は自動的に解放される
[ public ] SFCError AttachSFXAnsiString( SFXAnsiStringPtr string // SFXAnsiString オブジェクト );
廃止予定 | |
---|---|
この関数は、SophiaFramework UNIVERSE 6.0 で廃止される予定です。 この関数の代わりに SFXBuffer::Attach(SFXAnsiStringPtr string) 関数を利用することを推奨します。 |
[ public ] SFCError AttachSFXWideString( SFXWideStringPtr string // SFXWideString オブジェクト );
廃止予定 | |
---|---|
この関数は、SophiaFramework UNIVERSE 6.0 で廃止される予定です。 この関数の代わりに SFXBuffer::Attach(SFXWideStringPtr string) 関数を利用することを推奨します。 |
[ public, const ] SInt32 Compare( SFXBufferConstRef buffer // 比較するバッファ );
[ public, const ] SInt32 Compare( VoidConstPtr buffer // 比較するメモリブロック UInt32 size // メモリブロックのサイズ );
この関数は、このバッファを指定されたデータと比較します。
SFXBuffer::Equals | operator== | operator!= | operator> | operator>= | operator< | operator<=
[ public ] SFCError Copy( UInt32 index // 上書き開始位置 SFXBufferConstRef buffer // コピーするバッファ );
[ public ] SFCError Copy( UInt32 index // 上書き開始位置 VoidConstPtr buffer // コピーするメモリブロック UInt32 size // メモリブロックのサイズ );
この関数は、このバッファを指定された開始位置から指定されたデータで上書きします。
注意 | |
---|---|
上書きするデータがこのバッファの終端を越える場合は SFERR_INVALID_PARAM を返し、コピーは行われません。 |
[ public ] SFCError Detach( SFXBufferPtr buffer // 別の SFXBuffer オブジェクト );
[ public ] VoidPtr Detach( UInt32Ptr size = null // データのサイズ );
[ public ] SFCError Detach( SFXAnsiStringPtr string // SFXAnsiString オブジェクト );
[ public ] SFCError Detach( SFXWideStringPtr string // SFXWideString オブジェクト );
切り離されるデータが Void 型である場合、このバッファオブジェクトが管理しているデータ領域(VoidPtr 型)を返します。 それ以外の場合は SFCError 型データ値を返します。
この関数は、 このバッファオブジェクトが管理しているデータ領域を切り離して返します。
注意 | |
---|---|
データ領域はコピーされません。 |
SFXBuffer buffer; VoidPtr void_ptr; UInt32 length; ... // buffer オブジェクトが管理するデータ領域を切り離し、その領域のポインタを void_ptr に設定する // 領域のサイズは length に格納される Void_ptr = buffer.Detach(&length); // 以降、buffer オブジェクトのデータ領域は void_ptr に割り当てられた領域として操作する ... // 使用後、void_ptr に割り当てたデータ領域を解放する必要がある MemoryFree(void_ptr);
[ public ] SFCError DetachSFXAnsiString( SFXAnsiStringPtr string // SFXAnsiString オブジェクト );
廃止予定 | |
---|---|
この関数は、SophiaFramework UNIVERSE 6.0 で廃止される予定です。 この関数の代わりに SFXBuffer::Detach(SFXAnsiStringPtr string) 関数を利用することを推奨します。 |
[ public ] SFCError DetachSFXWideString( SFXWideStringPtr string // SFXWideString オブジェクト );
廃止予定 | |
---|---|
この関数は、SophiaFramework UNIVERSE 6.0 で廃止される予定です。 この関数の代わりに SFXBuffer::Detach(SFXWideStringPtr string) 関数を利用することを推奨します。 |
[ public, static ] SFXBufferConstRef EmptyInstance(Void);
この関数は、空のバッファを表すインスタンスを取得します。
[ public, const ] Bool EndsWith( SFXBufferConstRef buffer // 調べるバッファ );
[ public, const ] Bool EndsWith( VoidConstPtr buffer // 調べるバッファ UInt32 size // 調べるバッファのサイズ );
[ public, const ] Bool EndsWith( Byte byte // 調べる 1 バイト );
この関数は、 このバッファの末尾が指定されたデータで終わるか判定します。
[ public, const ] Bool Equals( SFXBufferConstRef buffer // 比較するバッファ );
[ public, const ] Bool Equals( VoidConstPtr buffer // 比較するメモリブロック UInt32 size // メモリブロックのサイズ );
この関数は、このバッファが指定されたデータと等しいか判定します。
この関数は、このバッファを指定されたデータで埋めます。
[ public, const ] SInt32 FirstIndexOf( SFXBufferConstRef buffer // 検索するバッファ SInt32 index = SINT32_MINIMUM // 検索開始位置 );
[ public, const ] SInt32 FirstIndexOf( VoidConstPtr buffer // 検索するバッファ UInt32 size // 検索するバッファのサイズ SInt32 index = SINT32_MINIMUM // 検索開始位置 );
[ public, const ] SInt32 FirstIndexOf( Byte byte // 検索する Byte データ SInt32 index = SINT32_MINIMUM // 検索開始位置 );
この関数は、このバッファを先頭から末尾に向かって検索し、 最初に見つかった位置のインデックスを取得します。
検索開始位置を指定することで、先頭以外の位置から検索できます(先頭のインデックスは 0 です)。
[ public ] Void Free(Void);
この関数は、 SFXBuffer::Allocate / SFXBuffer::SetSize / SFXBuffer::Set 関数、または SFXBuffer::SFXBuffer コンストラクタでこのバッファに割り当てられたのメモリを解放します。
Tip | |
---|---|
この関数は、SFXBuffer::~SFXBuffer デストラクタから呼び出されます。 |
注意 | |
---|---|
バッファメモリが割り当てられていない場合は何も行いません。 |
SFXBuffer::Allocate | SFXBuffer::SetSize | SFXBuffer::Set | SFXBuffer::SFXBuffer | SFXBuffer::~SFXBuffer
[ public ] VoidPtr GetBuffer(Void);
[ public, const ] VoidConstPtr GetBuffer(Void);
SFXBuffer buffer; buffer.Set(SFXAnsiString("test")); // バッファに文字列を設定する TRACE("%s", buffer.GetBuffer()); // "test" がデバッグウィンドウに表示されるt
このバッファの指定されたインデックスの位置にあるバイト値
この関数は、このバッファの指定されたインデックスの位置にあるバイト値を取得します。
注意 | |
---|---|
指定されたインデックスの位置がこのバッファの範囲外の値である場合、null('\0') が返ります。 |
SFXBuffer::GetBuffer | SFXBuffer::GetSize | SFXBuffer::SetByte | SFXBuffer::SetSize | SFXBuffer::operator[]
[ public, const ] UInt16 GetCluster(Void);
このバッファの内部バッファメモリ(SFXClusterHeap)を確保する時の最小単位[単位: バイト]
この関数は、 このバッファの内部バッファメモリ(SFXClusterHeap)を確保する時の最小単位を取得します。[単位: バイト]
注意 | |
---|---|
この関数は SFXBuffer クラスが内部で管理する SFXClusterHeap クラスの SFXClusterHeap::GetCluster を呼び出します。 |
[ public, const ] UInt32 GetSize(Void);
バッファサイズ
この関数は、このバッファのサイズを取得します。
バッファのサイズは、SFXBuffer::SetSize 関数を呼び出して設定します。 SFXBuffer::Add / SFXBuffer::Insert / SFXBuffer::Remove / SFXBuffer::Set / SFXBuffer::Mul 関数を呼び出してデータを追加、削除、変更すると、 そのサイズ分だけバッファのサイズは変化します。 また、 SFXBuffer::SFXBuffer コンストラクタで引数に文字列やバッファを初期データとして指定する場合、 そのデータのサイズでこのバッファのサイズは初期設定されます。
注意 | |
---|---|
バッファのサイズは、バッファに割り当てられている内部バッファメモリのサイズではありません。 実際にデータが割り当てられている領域のサイズです。 この領域は、バッファの内部バッファメモリ内から部分的に割り当てられます。 |
SFXBuffer buffer; buffer.Set(SFXAnsiString("test")); // バッファに文字列"test"を設定する TRACE("%d", buffer.GetSize()); // "\0" を含む文字列"test"の長さである"5"がデバッグウィンドウに表示される
SFXBuffer::SetSize | SFXBuffer::Set | SFXBuffer::Add | SFXBuffer::Insert | SFXBuffer::Remove | SFXBuffer::Mul | SFXBuffer::SFXBuffer
[ public, const ] UInt16 GetThreshold(Void);
このバッファの内部バッファメモリ(SFXClusterHeap)の最小値[単位: バイト]
この関数は、 このバッファの内部バッファメモリ(SFXClusterHeap)の最小値を取得します。[単位: バイト]
注意 | |
---|---|
この関数は SFXBuffer クラスが内部で管理する SFXClusterHeap クラスの SFXClusterHeap::GetThreshold を呼び出します。 |
[ public ] SFCError Insert( UInt32 index // 挿入する位置 SFXBufferConstRef buffer // 挿入するバッファ );
[ public ] SFCError Insert( UInt32 index // 挿入する位置 VoidConstPtr buffer // 挿入するデータ UInt32 size // データのサイズ );
[ public ] SFCError Insert( Byte byte // バッファに挿入する 1 バイトの値 );
この関数は、 このバッファの指定された位置に指定されたデータを挿入します。
注意 | |
---|---|
挿入したデータのサイズ分だけ、 SFXBuffer::GetSize 関数で取得できる、 このバッファのサイズは大きくなります。 また、必要に応じて内部バッファメモリは自動的に拡張されます。 |
[ public, const ] Bool IsEmpty(Void);
この関数は、このバッファが空であるか判定します。
[ public, const ] SInt32 LastIndexOf( SFXBufferConstRef buffer // 検索するバッファ SInt32 index = SINT32_MAXIMUM // 検索開始位置 );
[ public, const ] SInt32 LastIndexOf( VoidConstPtr buffer // 検索するバッファ UInt32 size // 検索するバッファのサイズ SInt32 index = SINT32_MAXIMUM // 検索開始位置 );
[ public, const ] SInt32 LastIndexOf( Byte byte // 検索する Byte データ SInt32 index = SINT32_MAXIMUM // 検索開始位置 );
この関数は、このバッファを末尾から先頭に向かって検索し、 最初に見つかった位置のインデックスを取得します。
検索開始位置を指定することで、末尾以外の位置から検索できます(先頭のインデックスは 0 です)。
この関数は、このバッファのデータを指定された回数だけ繰り返して拡張します。
注意 | |
---|---|
繰り返した回数分だけ、 SFXBuffer::GetSize 関数で取得できる、 このバッファのサイズは大きくなります。 また、必要に応じて内部バッファメモリは自動的に拡張されます。 |
注意 | |
---|---|
この操作により、 このバッファの内容は変化します。 元の内容を保持したい場合は、別の場所にコピーする、 或いは、operator* 演算子を使用します。 |
この関数は、このバッファから指定された範囲のデータを削除します。
注意 | |
---|---|
削除したデータのサイズ分だけ、 SFXBuffer::GetSize 関数で取得できる、 このバッファのサイズは小さくなります。 また、必要に応じて内部バッファメモリは自動的に縮小されます。 |
[ public ] SFCError Set( SFXBufferConstRef buffer // コピーするバッファ );
[ public ] SFCError Set( VoidConstPtr buffer // コピーするメモリブロック UInt32 size // メモリブロックのサイズ );
[ public ] SFCError Set( Byte byte // バッファとして使用する 1 バイトの値 );
[ public ] SFCError Set( SFXAnsiStringConstRef string // バッファとして使用する文字列 );
[ public ] SFCError Set( SFXWideStringConstRef string // バッファとして使用する文字列 );
この関数は、このバッファを引数で指定されたデータに設定します。
データはコピーして設定され、元のバッファは破棄されます。 データをコピーせずに取り込むには SFXBuffer::Attach 関数を使用します。
注意 | |
---|---|
SFXBuffer::GetSize 関数で取得できる、 バッファのサイズは引数に指定したデータのサイズと等しくなります。 文字列を引数に指定した場合は、 SFXAnsiString 文字列が指定された場合は『文字列の長さ + 1(1 バイトの '\0' の分)』、 SFXWideString 文字列が指定された場合は『文字列の長さ * 2 + 2(2 バイトの '\0' の分)』となります。 ※データのコピーに必要な内部バッファメモリは自動的に割り当てられます。 バッファのメモリは、内部バッファメモリから設定したデータのサイズ分だけ割り当てられます。 |
この関数は、このバッファの指定された位置に指定されたバイト値を設定します。
注意 | |
---|---|
この関数を実行しても、 SFXBuffer::GetSize 関数で取得できる、 このバッファのサイズは変化しません。 |
この関数は、 このバッファの内部バッファメモリ(SFXClusterHeap)を確保する時の最小単位を設定します。[単位: バイト]
デフォルト値: SFXBuffer::DEFAULT_CLUSTER バイト
SFXBuffer::DEFAULT_CLUSTER の値は SFXBuffer::DefaultEnum を参照してください。
注意 | |
---|---|
この関数は SFXBuffer クラスが内部で管理する SFXClusterHeap クラスの SFXClusterHeap::SetCluster を呼び出します。 |
この関数は、このバッファに指定されたサイズのメモリを割り当てます。
具体的には、 SFXBuffer クラスが内部で管理する SFXClusterHeap クラスのヒープ(内部バッファメモリ)から引数で指定されたサイズだけをこのバッファのメモリとして確保します。
この関数を実行する時点でまだ SFXClusterHeap クラスのヒープ(内部バッファメモリ)にメモリが割り当てられていない場合は、 以下のようにしてヒープ(内部バッファメモリ)にメモリを割り当ててから、 このバッファにメモリを割り当てます。
このヒープサイズ(内部バッファメモリのサイズ)は、最小ヒープサイズとクラスタサイズによって決まります。 最小ヒープサイズは SFXBuffer::SFXBuffer コンストラクタの threshold 引数か SFXBuffer::SetThreshold 関数で、 クラスタサイズは SFXBuffer::SFXBuffer コンストラクタの cluster 引数か SFXBuffer::SetCluster 関数で設定します。
size の値が最小ヒープサイズよりも小さい場合、 ヒープ(内部バッファメモリ)に実際に割り当てられるサイズは最小ヒープサイズになります。
最小ヒープサイズよりも大きい場合は、 ヒープ(内部バッファメモリ)は最小ヒープサイズを超える部分についてクラスタサイズ単位で割り当てられます。
注意 | |
---|---|
|
SFXBuffer buffer;
buffer.SetSize(0x200); // バッファサイズを 0x200 バイトに設定する
SFXBuffer::GetSize | SFXBuffer::SetCluster | SFXBuffer::SetThreshold | SFXBuffer::GetBuffer | SFXBuffer::Allocate | SFXClusterHeap::Resize
この関数は、 このバッファの内部バッファメモリ(SFXClusterHeap)の最小値を設定します。[単位: バイト]
デフォルト値: SFXBuffer::DEFAULT_THRESHOLD バイト
SFXBuffer::DEFAULT_THRESHOLD の値は SFXBuffer::DefaultEnum を参照してください。
注意 | |
---|---|
この関数は SFXBuffer クラスが内部で管理する SFXClusterHeap クラスの SFXClusterHeap::SetThreshold を呼び出します。 |
この関数は、 引数 begin と 引数 end で指定された範囲にあるこのバッファのデータだけを残し、 他を削除します。
引数 begin は、残すデータの先頭のインデックスを指定します。 引数 end は、残すデータの最後の次のインデックスを指定します。
注意 | |
---|---|
この操作により、 このバッファの内容は変化します。 元の内容を保持したい場合は、別の場所にコピーする必要があります。 |
SFXAnsiString s("abracadabra"); SFXBuffer buf1(s); // buf1 は null 文字もコピーする buf1.Slice(2, 9); // buf1 = "racadab"
[ public, const ] Bool StartsWith( SFXBufferConstRef buffer // 調べるバッファ );
[ public, const ] Bool StartsWith( VoidConstPtr buffer // 調べるバッファ UInt32 size // 調べるバッファのサイズ );
[ public, const ] Bool StartsWith( Byte byte // 調べる 1 バイトの値 );
この関数は、このバッファの先頭が指定されたデータで始まるか判定します。
[ public ] SFXBufferRef operator=( SFXBufferConstRef buffer // 右側のバッファ );
代入後の左側のバッファ
このオペレーターは、左側のバッファに右側のバッファを代入します。
注意 | |
---|---|
このオペレーターは左側のバッファに影響を及ぼします。 |
[ public, friend ] Bool operator==( SFXBufferConstRef left // 左側のバッファ SFXBufferConstRef right // 右側のバッファ );
このオペレーターは、左側のバッファが右側のバッファと等しいか判定します。
[ public, friend ] Bool operator>=( SFXBufferConstRef left // 左側のバッファ SFXBufferConstRef right // 右側のバッファ );
このオペレーターは、左側のバッファが右側のバッファ以上であるか判定します。
[ public, friend ] Bool operator>( SFXBufferConstRef left // 左側のバッファ SFXBufferConstRef right // 右側のバッファ );
このオペレーターは、左側のバッファが右側のバッファよりも大きいか判定します。
[ public ] ByteRef operator[]( UInt32 index // インデックス位置 );
[ public, const ] ByteConstRef operator[]( UInt32 index // インデックス位置 );
このバッファ内の指定されたインデックス位置にあるバイト値
このオペレーターは、このバッファ内の指定されたインデックス位置にあるバイト値を取得します。
注意 | |
---|---|
このバッファが空である場合や、 指定されたインデックス位置がこのバッファの範囲外の値である場合は、null('\0') が返ります。 |
[ public, friend ] SFXBufferRef operator<<( SFXBufferRef left // 左側のバッファ SFXBufferConstRef right // 右側のバッファ );
追加後の左側のバッファ
このオペレーターは、左側のバッファの末尾に右側のバッファを追加します。
Tip | |
---|---|
このオペレーターは左側のバッファに影響を及ぼします。 複数のバッファを結合するとき、このオペレーター(<<)は便利です。 |
[ public, friend ] Bool operator<=( SFXBufferConstRef left // 左側のバッファ SFXBufferConstRef right // 右側のバッファ );
このオペレーターは、左側のバッファが右側のバッファ以下であるか判定します。
[ public, friend ] Bool operator<( SFXBufferConstRef left // 左側のバッファ SFXBufferConstRef right // 右側のバッファ );
このオペレーターは、左側のバッファが右側のバッファよりも小さいか判定します。
[ public ] SFXBufferRef operator*=( SInt32 repeat // 右側の回数 );
左側のバッファを右側の回数だけ繰り返した後の左側のバッファ
このオペレーターは、 左側のバッファを右側の回数だけ繰り返したバッファにします。
注意 | |
---|---|
このオペレーターは左側のバッファに影響を及ぼします。 |
[ public, friend ] SFXBuffer operator*( SFXBufferConstRef left // 左側のバッファ SInt32 right // 右側の回数 );
左側のバッファを右側の回数だけ繰り返したバッファ
このオペレーターは、 左側のバッファを右側の回数だけ繰り返したバッファをコピーして返します。
注意 | |
---|---|
このオペレーターは左側のバッファに影響を及ぼしません。 |
[ public, friend ] Bool operator!=( SFXBufferConstRef left // 左側のバッファ SFXBufferConstRef right // 右側のバッファ );
このオペレーターは、左側のバッファが右側のバッファと異なるか判定します。
[ public ] SFXBufferRef operator+=( SFXBufferConstRef buffer // 右側のバッファ );
[ public ] SFXBufferRef operator+=( Byte byte // 右側のバッファ(バイト値) );
末尾に右側のバッファを追加した左側のバッファ
このオペレーターは、 左側のバッファの末尾に右側のバッファを追加します。
注意 | |
---|---|
このオペレーターは左側のバッファに影響を及ぼします。 |
[ public, friend ] SFXBuffer operator+( SFXBufferConstRef left // 左側のバッファ SFXBufferConstRef right // 右側のバッファ );
[ public, friend ] SFXBuffer operator+( SFXBufferConstRef left // 左側のバッファ Byte right // 右側のバッファ );
左側のバッファの末尾に右側のバッファを追加したバッファ
このオペレーターは、 左側のバッファの末尾に右側のバッファを追加したバッファをコピーして返します。
注意 | |
---|---|
このオペレーターは左側のバッファに影響を及ぼしません。 |
enum DefaultEnum { DEFAULT_THRESHOLD = 16, // 内部バッファメモリの最小値 [単位: バイト] DEFAULT_CLUSTER = 8 // 内部バッファメモリのクラスタサイズ(メモリ確保の最小単位) [単位: バイト] };
DEFAULT_THRESHOLD と DEFAULT_CLUSTER は、 内部バッファメモリ(SFXClusterHeap)の最小値とクラスタサイズのデフォルト値を表します。[単位: バイト]
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |