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

SFXBuffer クラスとは
SFXClusterHeap クラスに、バッファの結合やデータの検索、置換などの処理を付加したクラスです。
割り当てられているメモリのサイズは、SFXBuffer::GetSize 関数で取得できます。
割り当てられたメモリは、デストラクタにより自動的に解放されますが、 SFXBuffer::Free 関数により明示的にメモリを解放することも可能です。
また、SFXBuffer::SetSize 関数により、 一度割り当てたバッファのサイズを変更できます。 このときデータは保存されます。
バッファクラスが内部で管理しているバッファを直接使う場合は、 SFXBuffer::GetBuffer 関数を使います。
Attach 関数 と Detach 関数
SFXBuffer::Attach 関数は、指定した型のデータの動作と管理権限を SFXBuffer クラスのインスタンスにデリゲート(委譲) します。 SFXBuffer::Detach 関数はその逆の操作を行います。
SFXBuffer::Set 関数や代入演算子 ( = ) では、データはコピーされますが、 SFXBuffer::Attach 関数や SFXBuffer::Detach 関数では、データはコピーされません。
数百 KB ものデータをコピーするためのヒープが無いとき、或いは、パフォーマンス劣化の問題を回避するときに利用します。
デリゲートとは : オブジェクト指向プログラミングにおいて、あるオブジェクトの振る舞いを別のオブジェクトに肩代わりして振る舞ってもらうことです。 日本語では、「委譲」と訳されます。
例 747. Attach 関数の使用方法
SFXBuffer buffer; ACharPtr ptr; // メモリを割り当て、AChar 型文字列にキャストする ptr = static_cast<ACharPtr>(MemoryAllocate(10240)); ... // AChar 型文字列 ptr の動作と管理権限を SFXBuffer クラスのインスタンス buffer にデリゲートする buffer.Attach(ptr, 10240); // 以降、AChar 型文字列 ptr を SFXBuffer クラスのインスタンス buffer として操作できる ・・・ // 使用後、割り当てたメモリは自動的に解放される
例 748. Detach 関数の使用方法
SFXBuffer buffer; VoidPtr ptr; UInt32 length; ... // SFXBuffer クラスのインスタンス buffer の動作と管理権限を Void 型データ ptr にデリゲートする ptr = buffer.Detach(&length); // 以降、SFXBuffer クラスのインスタンス を Void 型文字列 ptr として操作する ... // 使用後、Void 型データ ptr のメモリを解放する必要がある MemoryFree(ptr);
AttachSFXAnsiString 関数 と DetachSFXAnsiString 関数
SFXBuffer と SFXAnsiString のクラスのインスタンス間で動作と管理権限をデリゲート(委譲)するときに使います。
関連情報 : Attach 関数 と Detach 関数
AttachSFXWideString 関数 と DetachSFXWideString 関数
SFXBuffer と SFXWideString のクラスのインスタンス間で動作と管理権限をデリゲート(委譲)するときに使います。
関連情報 : Attach 関数 と Detach 関数
| コンストラクタ/デストラクタ |
|---|
|
SFXBuffer( Void ) SFXBuffer( SFXBufferConstRef buffer ) SFXBuffer( VoidConstPtr buffer , UInt32 size ) SFXBuffer( Byte byte ) SFXBuffer( SFXAnsiStringConstRef string ) SFXBuffer( SFXWideStringConstRef string ) SFXBuffer( UInt16 threshold , UInt16 cluster ) SFXBuffer クラスのコンストラクタです。
|
|
~SFXBuffer( Void ) SFXBuffer クラスのデストラクタです。
|
| パブリック関数 | |
|---|---|
| SFCError |
Add(
SFXBufferConstRef buffer
) Add( Byte byte ) Add( VoidConstPtr buffer , UInt32 size ) バッファの最後に指定したデータを追加します。
|
| SFCError |
Allocate(
UInt32 size
) バッファ メモリを割り当てます。
|
| SFCError |
Attach(
SFXBufferPtr buffer
) Attach( SFXWideStringPtr string ) Attach( SFXAnsiStringPtr string ) Attach( VoidPtr buffer , UInt32 size ) 指定したデータの動作と管理権限を SFXBuffer クラスのバッファーにデリゲート (委譲) します。
|
| SFCError |
AttachSFXAnsiString(
SFXAnsiStringPtr string
) [非推奨 API ( 廃止予定 API )]指定した SFXAnsiString クラスの文字列の動作と管理権限を SFXBuffer クラスのバッファーにデリゲート(委譲) します。
|
| SFCError |
AttachSFXWideString(
SFXWideStringPtr string
) [非推奨 API ( 廃止予定 API )]指定した SFXWideString クラスの文字列の動作と管理権限を SFXBuffer クラスのバッファーにデリゲート(委譲) します。
|
| SInt32 |
Compare(
SFXBufferConstRef buffer
) Compare( VoidConstPtr buffer , UInt32 size ) バッファを比較します。
|
| SFCError |
Copy(
UInt32 index
, SFXBufferConstRef buffer
) Copy( UInt32 index , VoidConstPtr buffer , UInt32 size ) 指定したデータでバッファを上書きします。
|
| SFCError |
Detach(
SFXBufferPtr buffer
) SFXBuffer クラスのバッファーの動作と管理権限を別のデータにデリゲート(委譲) します。
|
| VoidPtr |
Detach(
UInt32Ptr size = null
) SFXBuffer クラスのバッファーの動作と管理権限を別のデータにデリゲート(委譲) します。
|
| SFCError |
Detach(
SFXAnsiStringPtr string
) Detach( SFXWideStringPtr string ) SFXBuffer クラスのバッファーの動作と管理権限を別のデータにデリゲート(委譲) します。
|
| SFCError |
DetachSFXAnsiString(
SFXAnsiStringPtr string
) [非推奨 API ( 廃止予定 API )]SFXBuffer クラスのバッファーの動作と管理権限を SFXAnsiString クラスの文字列にデリゲート(委譲) します。
|
| SFCError |
DetachSFXWideString(
SFXWideStringPtr string
) [非推奨 API ( 廃止予定 API )]SFXBuffer クラスのバッファーの動作と管理権限を SFXWideString クラスの文字列にデリゲート(委譲) します。
|
| static SFXBufferConstRef |
EmptyInstance( Void ) 空のバッファを取得します。
|
| Bool |
EndsWith(
SFXBufferConstRef buffer
) EndsWith( Byte byte ) EndsWith( VoidConstPtr buffer , UInt32 size ) バッファの末尾が指定したデータで終わっているか判定します。
|
| Bool |
Equals(
SFXBufferConstRef buffer
) Equals( VoidConstPtr buffer , UInt32 size ) バッファの内容が等しいか比較します。
|
| Void |
Fill(
Byte data
) バッファを指定したデータで埋めます。
|
| SInt32 |
FirstIndexOf(
SFXBufferConstRef buffer
, SInt32 index = SINT32_MINIMUM
) FirstIndexOf( Byte byte , SInt32 index = SINT32_MINIMUM ) FirstIndexOf( VoidConstPtr buffer , UInt32 size , 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
) Insert( Byte byte ) Insert( UInt32 index , VoidConstPtr buffer , UInt32 size ) 指定した位置にデータを挿入します。
|
| Bool |
IsEmpty( Void ) バッファが空であるか判定します。
|
| SInt32 |
LastIndexOf(
SFXBufferConstRef buffer
, SInt32 index = SINT32_MAXIMUM
) LastIndexOf( Byte byte , SInt32 index = SINT32_MAXIMUM ) LastIndexOf( VoidConstPtr buffer , UInt32 size , SInt32 index = SINT32_MAXIMUM ) バッファを末尾から検索して、指定したデータと一致する最後のインデックスを取得します。
|
| SFCError |
Mul(
SInt32 repeat
) バッファのデータを指定した回数繰り返します。
|
| Void |
Remove(
UInt32 begin
, UInt32 end
) 指定した範囲のデータを消去します。
|
| SFCError |
Set(
SFXBufferConstRef buffer
) Set( SFXWideStringConstRef string ) Set( SFXAnsiStringConstRef string ) Set( Byte byte ) Set( VoidConstPtr buffer , UInt32 size ) データをコピーしてバッファを設定します。
|
| SFCError |
SetByte(
UInt32 index
, Byte data
) バッファ メモリの指定した位置の値を設定します。
|
| Void |
SetCluster(
UInt16 size
) バッファ メモリのクラスタ サイズを設定します。
|
| SFCError |
SetSize(
UInt32 size
) バッファ メモリのサイズを設定します。
|
| Void |
SetThreshold(
UInt16 size
) 内部バッファサイズの最小値を設定します。
|
| SFXBuffer |
Slice(
UInt32 begin
, UInt32 end
) バッファの指定した範囲のデータだけを残し、他を削除します。
|
| Bool |
StartsWith(
SFXBufferConstRef buffer
) StartsWith( Byte byte ) StartsWith( VoidConstPtr buffer , UInt32 size ) バッファの先頭が指定したバッファで始まるか判定します。
|
| SFXBufferRef |
operator*=(
SInt32 repeat
) バッファのデータを繰り返します。
|
| SFXBufferRef |
operator+=(
SFXBufferConstRef buffer
) 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
) 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
) 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 関数を使います。
引数を指定しない場合、または引数が threshold と cluster の場合は内部バッファが確保されず、Allocate 関数の呼び出しが必要となります。
SFXAnsiString クラスの文字列が指定された場合、バッファの長さは 文字列の長さ + 1 ('\0' の分) になります。SFXWideString クラスの場合は、文字列の長さ * 2 + 1 です。
[ public ] ~SFXBuffer(Void);
バッファ メモリが割り当てられている場合は、 自動的に Free 関数を呼び出して、バッファ メモリを解放します。
[ public ] SFCError Add( SFXBufferConstRef buffer // 追加するバッファ );
[ public ] SFCError Add( VoidConstPtr buffer // 追加するメモリ ブロック UInt32 size // メモリ ブロックのサイズ );
[ public ] SFCError Add( Byte byte // バッファに追加する 1 バイトの値 );
Add 関数はバッファオブジェクトに影響を及ぼします。 元のデータを保持しておく場合は、コピーを行う必要があります。
Add 関数は内部バッファのサイズを大きくします。
コンストラクタでバッファ メモリの割り当てを行わなかった場合は、 Allocate 関数でバッファ メモリを割り当てる必要があります。 割り当てを行わずに他の関数を呼び出した場合の挙動は未定義です。
![]() |
注意事項 |
|---|---|
Allocate 関数は、オブジェクトが保持している内容を破棄します。 Allocate 関数の内部でエラーが発生した場合も、直前の内容を復元することはできません。 | |
[ 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 クラスの文字列 );
指定したデータが Void 型の場合、buffer パラメータで指定したデータはコピーされないので、SFXBuffer::Set 関数よりも効率的で、大容量の文字列データ処理時のパフォーマンス劣化やメモリ不足の問題を回避できます。
buffer パラメータで指定したデータは、SFXBuffer クラスのインスタンスが解放されると自動的に解放されます。 明示的に解放するには、SFXBuffer::Detach 関数を呼び出す必要があります。
AChar 型文字列の管理を SFXBuffer クラスに渡します。
SFXBuffer buffer; ACharPtr ptr; // メモリを割り当て、AChar 型文字列にキャストする ptr = static_cast<VoidPtr>(MemoryAllocate(10240)); ... // AChar 型文字列 ptr の動作と管理権限を SFXBuffer クラスのバッファー buffer にデリゲートする buffer.Attach(ptr, 10240); // 以降、AChar 型文字列 ptr を SFXBuffer クラスのバッファー buffer として操作できる ・・・ // 使用後、割り当てたメモリは自動的に解放される
[ public ] SFCError AttachSFXAnsiString( SFXAnsiStringPtr string // 委譲元の SFXAnsiString クラスの文字列 );
string パラメータで指定した SFXAnsiString クラスの文字列はコピーされないので、SFXBuffer::Set 関数よりも効率的で、大容量の文字列データ処理時のパフォーマンス劣化やメモリ不足の問題を回避できます。
string パラメータで指定した SFXAnsiString クラスの文字列は、SFXBuffer クラスのバッファーが解放されると自動的に解放されます。 明示的に解放するには、SFXBuffer::DetachSFXAnsiString 関数を呼び出す必要があります。
![]() |
非推奨 API ( 廃止予定 API ) |
|---|---|
この API は、SophiaFramework UNIVERSE 6.0 では廃止される予定です。 この API の替わりに SFXBuffer::Attach(SFXAnsiStringPtr string) 関数を利用することを推奨します。 | |
SFXAnsiString str; SFXBuffer buffer; ... // SFXAnsiString クラスの文字列 str の動作と管理権限を SFXBuffer クラスのバッファー buffer にデリゲートする buffer.AttachSFXAnsiString(&str); // 以降、SFXAnsiString クラスの文字列 str を SFXBuffer クラスのバッファー buffer として操作できる ... // 使用後、SFXAnsiString クラスの文字列は自動的に解放される
SFXBuffer::Attach | SFXBuffer::AttachSFXWideString | SFXAnsiString::AttachSFXBuffer | SFXBuffer::Detach | SFXBuffer::DetachSFXAnsiString | SFXAnsiString::DetachSFXBuffer
[ public ] SFCError AttachSFXWideString( SFXWideStringPtr string // 委譲元の SFXWideString クラスの文字列 );
string パラメータで指定した SFXWideString クラスの文字列はコピーされないので、SFXBuffer::Set 関数よりも効率的で、大容量の文字列データ処理時のパフォーマンス劣化やメモリ不足の問題を回避できます。
string パラメータで指定した SFXWideString クラスの文字列は、SFXBuffer クラスのバッファーが解放されると自動的に解放されます。 明示的に解放するには、SFXBuffer::DetachSFXWideString 関数を呼び出す必要があります。
![]() |
非推奨 API ( 廃止予定 API ) |
|---|---|
この API は、SophiaFramework UNIVERSE 6.0 では廃止される予定です。 この API の替わりに SFXBuffer::Attach(SFXWideStringPtr string) 関数を利用することを推奨します。 | |
SFXWideString str; SFXBuffer buffer; ... // SFXWideString クラスの文字列 str の動作と管理権限を SFXBuffer クラスのバッファー buffer にデリゲートする buffer.AttachSFXWideString(&str); // 以降、SFXWideString クラスの文字列 str を SFXBuffer クラスのバッファー buffer として操作できる ... // 使用後、SFXWideString クラスのインスタンスは自動的に解放される
SFXBuffer::Attach | SFXBuffer::AttachSFXAnsiString | SFXWideString::AttachSFXBuffer | SFXBuffer::Detach | SFXBuffer::DetachSFXWideString SFXWideString::DetachSFXBuffer
[ public, const ] SInt32 Compare( SFXBufferConstRef buffer // 比較するバッファ );
[ public, const ] SInt32 Compare( VoidConstPtr buffer // 比較するメモリ ブロック UInt32 size // メモリ ブロックのサイズ );
SFXBuffer::Equals | 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 型データの場合、SFXBuffer クラスのバッファーが持つデータへのポインタを返します。
SFXBuffer クラスのバッファーのデータはコピーされません。
SFXBuffer buffer; VoidPtr ptr; UInt32 length; ... // SFXBuffer クラスのバッファー buffer の動作と管理権限を Void 型データ ptr にデリゲートする ptr = buffer.Detach(&length); // 以降、SFXBuffer クラスのバッファー を Void 型文字列 ptr として操作する ... // 使用後、Void 型データ ptr のメモリを解放する必要がある MemoryFree(ptr);
[ public ] SFCError DetachSFXAnsiString( SFXAnsiStringPtr string // 委譲先の SFXAnsiString クラスの文字列 );
SFXBuffer クラスのバッファーのデータはコピーされないので、効率的で、大容量の文字列データ処理時のパフォーマンス劣化やメモリ不足の問題を回避できます。
![]() |
非推奨 API ( 廃止予定 API ) |
|---|---|
この API は、SophiaFramework UNIVERSE 6.0 では廃止される予定です。 この API の替わりに SFXBuffer::Detach(SFXAnsiStringPtr string) 関数を利用することを推奨します。 | |
SFXAnsiString str; SFXBuffer buffer; ... // SFXBuffer クラスのインスタンス buffer の動作と管理権限を SFXAnsiString クラスのインスタンス str にデリゲートする ptr = buffer.Detach(&length); // 以降、SFXBuffer クラスのインスタンス を SFXAnsiString クラスのインスタンス str として操作する ... // 使用後、SFXBuffer クラスのインスタンスは自動的に解放される MemoryFree(ptr);
SFXBuffer::Detach | SFXBuffer::Attach | SFXBuffer::AttachSFXAnsiString | SFXBuffer::DetachSFXWideString
[ public ] SFCError DetachSFXWideString( SFXWideStringPtr string // 委譲先の SFXWideString クラスの文字列 );
SFXBuffer クラスのバッファーのデータはコピーされないので、効率的で、大容量の文字列データ処理時のパフォーマンス劣化やメモリ不足の問題を回避できます。
![]() |
非推奨 API ( 廃止予定 API ) |
|---|---|
この API は、SophiaFramework UNIVERSE 6.0 では廃止される予定です。 この API の替わりに SFXBuffer::Detach(SFXWideStringPtr string) 関数を利用することを推奨します。 | |
SFXWideString str; SFXBuffer buffer; ... // SFXBuffer クラスのバッファー buffer の動作と管理権限を SFXWideString クラスの文字列 str にデリゲートする ptr = buffer.Detach(&length); // 以降、SFXBuffer クラスのバッファー を SFXWideString クラスの文字列 str として操作する ... // 使用後、SFXBuffer クラスのバッファーは自動的に解放される MemoryFree(ptr);
SFXBuffer::Detach | SFXBuffer::Attach | SFXBuffer::AttachSFXWideString | SFXBuffer::DetachSFXAnsiString
[ 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 // 検索開始位置 );
バッファを先頭から末尾に向かって検索し、最初に見つかった位置のインデックスを取得します。
検索開始位置を指定することで、先頭以外の位置から検索できます。
[ public ] Void Free(Void);
バッファが保持しているバッファ メモリを解放します。 バッファ メモリを保持していない場合は何も行いません。
[ public ] VoidPtr GetBuffer(Void);
[ public, const ] VoidConstPtr GetBuffer(Void);
GetBuffer 関数を使うことでバッファ メモリを直接操作できます。
SFXBuffer buffer;
buffer.Set(SFXAnsiString("test")); // バッファを設定する
TRACE("%s", buffer.GetBuffer()); // "test" が表示されるt
SFXBuffer::GetBuffer | SFXBuffer::GetSize | SFXBuffer::SetByte | SFXBuffer::SetSize | SFXBuffer::operator[]
[ public, const ] UInt16 GetCluster(Void);
[ public, const ] UInt32 GetSize(Void);
SFXBuffer buffer;
buffer.Set(SFXAnsiString("test")); // バッファを設定する
TRACE("%s", buffer.GetSize()); // 5( test + \0 )
[ public, const ] UInt16 GetThreshold(Void);
[ public ] SFCError Insert( UInt32 index // 挿入する位置 SFXBufferConstRef buffer // 挿入するバッファ );
[ public ] SFCError Insert( UInt32 index // 挿入する位置 VoidConstPtr buffer // 挿入するデータ UInt32 size // データのサイズ );
[ public ] SFCError Insert( Byte byte // バッファに挿入する 1 バイトの値 );
Insert 関数は、引数で指定したバッファサイズの分だけ内部バッファのサイズを大きくします。
[ 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 // 検索開始位置 );
バッファを末尾から先頭に向かって検索し、最初に見つかった位置のインデックスを取得します。
検索開始位置を指定することで、末尾以外の位置から検索できます。
Mul 関数はオブジェクトに影響を及ぼします。 元のバッファを保持しておく場合はあらかじめコピーしておくか、 operator* を使う必要があります。
Remove 関数は内部バッファのサイズを小さくします。
[ 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 // バッファとして使用する文字列 );
引数で指定されたデータをコピーしてバッファを構築します。 元のバッファは破棄されます。 データをコピーせずに取り込む場合は Attach 関数を使う必要があります。
SFXAnsiString クラスの文字列が指定された場合、バッファの長さは 文字列の長さ + 1 ('\0' の分) になります。SFXWideString クラスの場合は、文字列の長さ * 2 + 1 です。
SFXBuffer::GetBuffer | SFXBuffer::GetByte | SFXBuffer::GetSize | SFXBuffer::SetSize | SFXBuffer::operator[]
メモリを確保する時の最小単位を設定します。
引数 begin と 引数 end で指定した範囲のデータだけを残し、他を削除します。
引数 begin は先頭のインデックスを指定しますが、 引数 end については、最後の要素の次のインデックスを指定します。
Slice 関数はバージョン 4.0.4 以降、非破壊型 (値を返す) から破壊型 (呼び出し側のインスタンス自体の値が変わる) に変更されています。
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 // 取得するバッファの位置 );
[ public, friend ] SFXBufferRef operator<<( SFXBufferRef left // 追加先のバッファ SFXBufferConstRef right // 追加するバッファ );
バッファの最後に追加します。
operator<< はバッファ オブジェクトに影響を及ぼします 元のデータを保持しておく場合は、コピーを行う必要があります。
[ 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 // バッファに追加する 1 バイトの値 );
[ public, friend ] SFXBuffer operator+( SFXBufferConstRef left // 元のバッファ SFXBufferConstRef right // 追加するバッファ );
[ public, friend ] SFXBuffer operator+( SFXBufferConstRef left // 元のバッファ Byte right // 追加するバッファ );
enum DefaultEnum {
DEFAULT_THRESHOLD = 16, //ヒープサイズの閾値
DEFAULT_CLUSTER = 8 // 既定のクラスタ サイズ
};
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|