前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1
SFXBuffer
バッファを表すクラスです。
#include <SFXBuffer.h.hpp>
class SFXBuffer;
SFMTYPEDEFCLASS(SFXBuffer)

協調図

SFXBuffer クラスの協調図

解説

SFXBuffer クラスとは

SFXClusterHeap クラスに、バッファの結合やデータの検索、置換などの処理を付加したクラスです。

割り当てられているメモリのサイズは、SFXBuffer::GetSize 関数で取得できます。

割り当てられたメモリは、デストラクタにより自動的に解放されますが、 SFXBuffer::Free 関数により明示的にメモリを解放することも可能です。

また、SFXBuffer::SetSize 関数により、 一度割り当てたバッファのサイズを変更できます。 このときデータは保存されます。

バッファ クラスが内部で管理しているバッファを直接使う場合は、 SFXBuffer::GetBuffer 関数を使います。

Attach 関数 と Detach 関数

SFXBuffer::Attach 関数は、指定した型のデータの動作と管理権限を SFXBuffer クラスのインスタンスにデリゲート(委譲) します。 SFXBuffer::Detach 関数はその逆の操作を行います。

SFXBuffer::Set 関数や代入演算子 ( = ) では、データはコピーされますが、 SFXBuffer::Attach 関数や SFXBuffer::Detach 関数では、データはコピーされません。

数百 KB ものデータをコピーするためのヒープが無いとき、或いは、パフォーマンス劣化の問題を回避するときに利用します。

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

例 461. Attach 関数の使用方法

SFXBuffer buffer;
ACharPtr ptr;

// メモリを割り当て、AChar 型文字列にキャストする
ptr = static_cast<ACharPtr>(MemoryAllocate(10240)); 
...

// AChar 型文字列 ptr の動作と管理権限を SFXBuffer クラスのインスタンス buffer にデリゲートする
buffer.Attach(ptr, 10240);
// 以降、AChar 型文字列 ptr を SFXBuffer クラスのインスタンス buffer として操作できる

・・・

// 使用後、割り当てたメモリは自動的に解放される 

例 462. 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 関数

参照

SFXClusterHeap | SFXAnsiString | SFXWideString | バッファ

メンバ

コンストラクタ/デストラクタ
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( VoidPtr buffer , UInt32 size )
指定した Void 型データの動作と管理権限を SFXBuffer クラスのインスタンスにデリゲート (委譲) します。
SFCError AttachSFXAnsiString( SFXAnsiStringPtr string )
指定した SFXAnsiString クラスのインスタンスの動作と管理権限を SFXBuffer クラスのインスタンスにデリゲート(委譲) します。
SFCError AttachSFXWideString( SFXWideStringPtr string )
指定した SFXWideString クラスのインスタンスの動作と管理権限を SFXBuffer クラスのインスタンスにデリゲート(委譲) します。
SInt32 Compare( SFXBufferConstRef buffer )
Compare( VoidConstPtr buffer , UInt32 size )
バッファを比較します。
SFCError Copy( UInt32 index , SFXBufferConstRef buffer )
Copy( UInt32 index , VoidConstPtr buffer , UInt32 size )
指定したデータでバッファを上書きします。
VoidPtr Detach( UInt32Ptr size = null )
SFXBuffer クラスのインスタンスの動作と管理権限を Void 型データにデリゲート(委譲) します。
SFCError DetachSFXAnsiString( SFXAnsiStringPtr string )
SFXBuffer クラスのインスタンスの動作と管理権限を SFXAnsiString クラスのインスタンスにデリゲート(委譲) します。
SFCError DetachSFXWideString( SFXWideStringPtr string )
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 )
バッファ データを追加します。

SFXBuffer::SFXBuffer
SFXBuffer クラスのコンストラクタです。
[ 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 です。

参照

SFXBuffer::Allocate | SFXBuffer::Attach | SFXBuffer::AttachSFXAnsiString SFXBuffer::Set


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

解説

バッファ メモリが割り当てられている場合は、 自動的に Free 関数を呼び出して、バッファ メモリを解放します。

参照

SFXBuffer::Free


SFXBuffer::Add
バッファの最後に指定したデータを追加します。
[ public ]
SFCError Add(
    SFXBufferConstRef buffer   // 追加するバッファ
);
[ public ]
SFCError Add(
    VoidConstPtr buffer   // 追加するメモリ ブロック
    UInt32 size           // メモリ ブロックのサイズ
);
[ public ]
SFCError Add(
    Byte byte   // バッファに追加する 1 バイトの値
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

Add 関数はバッファオブジェクトに影響を及ぼします。 元のデータを保持しておく場合は、コピーを行う必要があります。

Add 関数は内部バッファのサイズを大きくします。

参照

SFXBuffer::Mul | SFXBuffer::operator<< | operator+ | SFXBuffer::operator+=


SFXBuffer::Allocate
バッファ メモリを割り当てます。
[ public ]
SFCError Allocate(
    UInt32 size   // 割り当てるメモリサイズ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

コンストラクタでバッファ メモリの割り当てを行わなかった場合は、 Allocate 関数でバッファ メモリを割り当てる必要があります。 割り当てを行わずに他の関数を呼び出した場合の挙動は未定義です。

[Caution] 注意事項

Allocate 関数は、オブジェクトが保持している内容を破棄します。 Allocate 関数の内部でエラーが発生した場合も、直前の内容を復元することはできません。


SFXBuffer::Attach
指定した Void 型データの動作と管理権限を SFXBuffer クラスのインスタンスにデリゲート (委譲) します。
[ public ]
SFCError Attach(
    VoidPtr buffer   // 使用するメモリ ブロック
    UInt32 size      // メモリ ブロックのサイズ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 失敗したとき : SFERR_INVALID_PARAM

解説

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 として操作できる

・・・

// 使用後、割り当てたメモリは自動的に解放される 

参照

SFXBuffer::AttachSFXAnsiString | SFXBuffer::AttachSFXWideString | SFXBuffer::Detach


SFXBuffer::AttachSFXAnsiString
指定した SFXAnsiString クラスのインスタンスの動作と管理権限を SFXBuffer クラスのインスタンスにデリゲート(委譲) します。
[ public ]
SFCError AttachSFXAnsiString(
    SFXAnsiStringPtr string   // 使用する文字列
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 失敗したとき : SFERR_INVALID_PARAM

解説

string パラメーターで指定した SFXAnsiString クラスのインスタンスはコピーされないので、SFXBuffer::Set 関数よりも効率的で、大容量の文字列データ処理時のパフォーマンス劣化やメモリ不足の問題を回避できます。

string パラメーターで指定した SFXAnsiString クラスのインスタンスは、SFXBuffer クラスのインスタンスが解放されると自動的に解放されます。 明示的に解放するには、SFXBuffer::DetachSFXAnsiString 関数を呼び出す必要があります。

使用例

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


SFXBuffer::AttachSFXWideString
指定した SFXWideString クラスのインスタンスの動作と管理権限を SFXBuffer クラスのインスタンスにデリゲート(委譲) します。
[ public ]
SFCError AttachSFXWideString(
    SFXWideStringPtr string   // 使用する文字列
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 失敗したとき : SFERR_INVALID_PARAM

解説

string パラメーターで指定した SFXWideString クラスのインスタンスはコピーされないので、SFXBuffer::Set 関数よりも効率的で、大容量の文字列データ処理時のパフォーマンス劣化やメモリ不足の問題を回避できます。

string パラメーターで指定した SFXWideString クラスのインスタンスは、SFXBuffer クラスのインスタンスが解放されると自動的に解放されます。 明示的に解放するには、SFXBuffer::DetachSFXWideString 関数を呼び出す必要があります。

使用例

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


SFXBuffer::Compare
バッファを比較します。
[ public, const ]
SInt32 Compare(
    SFXBufferConstRef buffer   // 比較するバッファ
);
[ public, const ]
SInt32 Compare(
    VoidConstPtr buffer   // 比較するメモリ ブロック
    UInt32 size           // メモリ ブロックのサイズ
);

戻り値

  • 小さいとき : 負の値
  • 等しいとき : 0
  • 大きいとき : 正の値

参照

SFXBuffer::Equals | operator> | operator>= | operator< | operator<=


SFXBuffer::Copy
指定したデータでバッファを上書きします。
[ public ]
SFCError Copy(
    UInt32 index               // 上書き開始位置
    SFXBufferConstRef buffer   // コピーするバッファ
);
[ public ]
SFCError Copy(
    UInt32 index          // 上書き開始位置
    VoidConstPtr buffer   // コピーするメモリ ブロック
    UInt32 size           // メモリ ブロックのサイズ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • バッファの終端を越えるとき : SFERR_INVALID_PARAM

解説

上書きするデータが上書きされるバッファの終端を越える場合は SFERR_INVALID_PARAM を返し、コピーは行われません。


SFXBuffer::Detach
SFXBuffer クラスのインスタンスの動作と管理権限を Void 型データにデリゲート(委譲) します。
[ public ]
VoidPtr Detach(
    UInt32Ptr size = null   // データのサイズ
);

戻り値

SFXBuffer クラスのインスタンスが持つデータへのポインターを返します。

解説

SFXBuffer クラスのインスタンスのデータはコピーされません。

使用例

SFXBuffer buffer;
VoidPtr ptr;
UInt32 length;

...

// SFXBuffer クラスのインスタンス buffer の動作と管理権限を Void 型データ ptr にデリゲートする
ptr = buffer.Detach(&length);
// 以降、SFXBuffer クラスのインスタンス を Void 型文字列 ptr として操作する

...

// 使用後、Void 型データ ptr のメモリを解放する必要がある
MemoryFree(ptr);

参照

SFXBuffer::Attach | SFXBuffer::DetachSFXAnsiString | SFXBuffer::DetachSFXWideString


SFXBuffer::DetachSFXAnsiString
SFXBuffer クラスのインスタンスの動作と管理権限を SFXAnsiString クラスのインスタンスにデリゲート(委譲) します。
[ public ]
SFCError DetachSFXAnsiString(
    SFXAnsiStringPtr string   // 文字列が代入される SFXAnsiString のポインター
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 失敗したとき : SFERR_INVALID_PARAM

解説

SFXBuffer クラスのインスタンスのデータはコピーされないので、効率的で、大容量の文字列データ処理時のパフォーマンス劣化やメモリ不足の問題を回避できます。

使用例

SFXAnsiString str;
SFXBuffer buffer;

...

// SFXBuffer クラスのインスタンス buffer の動作と管理権限を SFXAnsiString クラスのインスタンス str にデリゲートする
ptr = buffer.Detach(&length);
// 以降、SFXBuffer クラスのインスタンス を SFXAnsiString クラスのインスタンス str として操作する

...

// 使用後、SFXBuffer クラスのインスタンスは自動的に解放される
MemoryFree(ptr);

参照

SFXBuffer::Attach | SFXBuffer::AttachSFXAnsiString | SFXBuffer::Detach | SFXBuffer::DetachSFXWideString


SFXBuffer::DetachSFXWideString
SFXBuffer クラスのインスタンスの動作と管理権限を SFXWideString クラスのインスタンスにデリゲート(委譲) します。
[ public ]
SFCError DetachSFXWideString(
    SFXWideStringPtr string   // 文字列が代入される SFXWideString のポインター
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 失敗したとき : SFERR_INVALID_PARAM

解説

SFXBuffer クラスのインスタンスのデータはコピーされないので、効率的で、大容量の文字列データ処理時のパフォーマンス劣化やメモリ不足の問題を回避できます。

使用例

SFXWideString str;
SFXBuffer buffer;

...

// SFXBuffer クラスのインスタンス buffer の動作と管理権限を SFXWideString クラスのインスタンス str にデリゲートする
ptr = buffer.Detach(&length);
// 以降、SFXBuffer クラスのインスタンス を SFXWideString クラスのインスタンス str として操作する

...

// 使用後、SFXBuffer クラスのインスタンスは自動的に解放される
MemoryFree(ptr);

参照

SFXBuffer::Attach | SFXBuffer::AttachSFXWideString | SFXBuffer::Detach | SFXBuffer::DetachSFXAnsiString


SFXBuffer::EmptyInstance
空のバッファを取得します。
[ public, static ]
SFXBufferConstRef EmptyInstance(Void);

解説

空のバッファを表すインスタンスを取得します。


SFXBuffer::EndsWith
バッファの末尾が指定したデータで終わっているか判定します。
[ public, const ]
Bool EndsWith(
    SFXBufferConstRef buffer   // 調べるバッファ
);
[ public, const ]
Bool EndsWith(
    VoidConstPtr buffer   // 調べるバッファ
    UInt32 size           // 調べるバッファのサイズ
);
[ public, const ]
Bool EndsWith(
    Byte byte   // 調べる 1 バイト
);

戻り値

  • 終わっているとき : true
  • 終わっていないとき : false

参照

SFXBuffer::StartsWith


SFXBuffer::Equals
バッファの内容が等しいか比較します。
[ public, const ]
Bool Equals(
    SFXBufferConstRef buffer   // 比較するバッファ
);
[ public, const ]
Bool Equals(
    VoidConstPtr buffer   // 比較するメモリ ブロック
    UInt32 size           // メモリ ブロックのサイズ
);

戻り値

  • 等しいとき : true
  • 異なるとき : false

参照

SFXBuffer::Compare | operator== | operator!=


SFXBuffer::Fill
バッファを指定したデータで埋めます。
[ public ]
Void Fill(
    Byte data   // データ
);

SFXBuffer::FirstIndexOf
バッファを先頭から検索して、指定したデータと一致する最初のインデックスを取得します。
[ 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   // 検索開始位置
);

戻り値

  • 成功したとき : 見つかった位置のインデックス
  • 失敗したとき : -1

解説

バッファを先頭から末尾に向かって検索し、最初に見つかった位置のインデックスを取得します。

検索開始位置を指定することで、先頭以外の位置から検索できます。

参照

SFXBuffer::LastIndexOf


SFXBuffer::Free
バッファ メモリを解放します。
[ public ]
Void Free(Void);

解説

バッファが保持しているバッファ メモリを解放します。 バッファ メモリを保持していない場合は何も行いません。

参照

SFXBuffer::Allocate


SFXBuffer::GetBuffer
バッファ メモリのポインターを取得します。
[ public ]
VoidPtr GetBuffer(Void);
[ public, const ]
VoidConstPtr GetBuffer(Void);

解説

GetBuffer 関数を使うことでバッファ メモリを直接操作できます。

使用例

SFXBuffer buffer;

buffer.Set(SFXAnsiString("test"));   // バッファを設定する
TRACE("%s", buffer.GetBuffer());     // "test" が表示されるt

参照

SFXBuffer::GetByte | SFXBuffer::GetSize | SFXBuffer::SetByte | SFXBuffer::SetSize


SFXBuffer::GetByte
バッファ メモリの指定した位置の値を取得します。
[ public, const ]
Byte GetByte(
    UInt32 index   // 取得する位置
);

参照

SFXBuffer::GetBuffer | SFXBuffer::GetSize | SFXBuffer::SetByte | SFXBuffer::SetSize | SFXBuffer::operator[]


SFXBuffer::GetCluster
内部バッファメモリのクラスタサイズを取得します。
[ public, const ]
UInt16 GetCluster(Void);

参照

SFXBuffer::SetCluster


SFXBuffer::GetSize
バッファ メモリのサイズを取得します。
[ public, const ]
UInt32 GetSize(Void);

使用例

SFXBuffer buffer;

buffer.Set(SFXAnsiString("test"));   // バッファを設定する
TRACE("%s", buffer.GetSize());       // 5( test + \0 )

参照

SFXBuffer::GetBuffer | SFXBuffer::GetByte | SFXBuffer::SetByte | SFXBuffer::SetSize


SFXBuffer::GetThreshold
内部バッファサイズの最小値を取得します。
[ public, const ]
UInt16 GetThreshold(Void);

参照

SFXBuffer::SetThreshold


SFXBuffer::Insert
指定した位置にデータを挿入します。
[ public ]
SFCError Insert(
    UInt32 index               // 挿入する位置
    SFXBufferConstRef buffer   // 挿入するバッファ
);
[ public ]
SFCError Insert(
    UInt32 index          // 挿入する位置
    VoidConstPtr buffer   // 挿入するデータ
    UInt32 size           // データのサイズ
);
[ public ]
SFCError Insert(
    Byte byte   // バッファに挿入する 1 バイトの値
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMOERY

解説

Insert 関数は、引数で指定したバッファ サイズの分だけ内部バッファのサイズを大きくします。

参照

SFXBuffer::Remove


SFXBuffer::IsEmpty
バッファが空であるか判定します。
[ public, const ]
Bool IsEmpty(Void);

戻り値

  • 空のとき : true
  • 空でないとき : false

SFXBuffer::LastIndexOf
バッファを末尾から検索して、指定したデータと一致する最後のインデックスを取得します。
[ 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   // 検索開始位置
);

戻り値

  • 成功したとき : 見つかった位置のインデックス
  • 失敗したとき : -1

解説

バッファを末尾から先頭に向かって検索し、最初に見つかった位置のインデックスを取得します。

検索開始位置を指定することで、末尾以外の位置から検索できます。

参照

SFXBuffer::FirstIndexOf


SFXBuffer::Mul
バッファのデータを指定した回数繰り返します。
[ public ]
SFCError Mul(
    SInt32 repeat   // 繰り返す回数
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

Mul 関数はオブジェクトに影響を及ぼします。 元のバッファを保持しておく場合はあらかじめコピーしておくか、 operator* を使う必要があります。

参照

SFXBuffer::Add | operator* | SFXBuffer::operator*=


SFXBuffer::Remove
指定した範囲のデータを消去します。
[ public ]
Void Remove(
    UInt32 begin   // 開始位置
    UInt32 end     // 終了位置
);

解説

Remove 関数は内部バッファのサイズを小さくします。

参照

SFXBuffer::Insert


SFXBuffer::Set
データをコピーしてバッファを設定します。
[ 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   // バッファとして使用する文字列
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

引数で指定されたデータをコピーしてバッファを構築します。 元のバッファは破棄されます。 データをコピーせずに取り込む場合は Attach 関数を使う必要があります。

SFXAnsiString クラスの文字列が指定された場合、バッファの長さは 文字列の長さ + 1 ('\0' の分) になります。SFXWideString クラスの場合は、文字列の長さ * 2 + 1 です。

参照

SFXBuffer::Attach | SFXBuffer::AttachSFXAnsiString


SFXBuffer::SetByte
バッファ メモリの指定した位置の値を設定します。
[ public ]
SFCError SetByte(
    UInt32 index   // 設定する位置
    Byte data      // データ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 失敗したとき : SFERR_INVALID_PARAM

参照

SFXBuffer::GetBuffer | SFXBuffer::GetByte | SFXBuffer::GetSize | SFXBuffer::SetSize | SFXBuffer::operator[]


SFXBuffer::SetCluster
バッファ メモリのクラスタ サイズを設定します。
[ public ]
Void SetCluster(
    UInt16 size   // 設定するクラスタサイズ
);

解説

メモリを確保する時の最小単位を設定します。

参照

SFXBuffer::GetCluster


SFXBuffer::SetSize
バッファ メモリのサイズを設定します。
[ public ]
SFCError SetSize(
    UInt32 size   // 設定するサイズ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • メモリ不足のとき : SFERR_NO_MEMORY

参照

SFXBuffer::GetBuffer | SFXBuffer::GetByte | SFXBuffer::GetSize | SFXBuffer::SetByte


SFXBuffer::SetThreshold
内部バッファサイズの最小値を設定します。
[ public ]
Void SetThreshold(
    UInt16 size   // 設定する最小値
);

参照

SFXBuffer::GetThreshold


SFXBuffer::Slice
バッファの指定した範囲のデータだけを残し、他を削除します。
[ public, const ]
SFXBuffer Slice(
    UInt32 begin   // 残す部分の先頭のインデックス
    UInt32 end     // 残す部分の終端のインデックス
);

解説

引数 begin と 引数 end で指定した範囲のデータだけを残し、他を削除します。

引数 begin は先頭のインデックスを指定しますが、 引数 end については、最後の要素の次のインデックスを指定します。

Slice 関数はバージョン 4.0.4 以降、非破壊型 (値を返す) から破壊型 (呼び出し側のインスタンス自体の値が変わる) に変更されています。

使用例

SFXAnsiString s("abracadabra");
SFXBuffer buf1(s);  // buf1 は null 文字もコピーする
buf1.Slice(2, 9);   // buf1 = "racadab"

SFXBuffer::StartsWith
バッファの先頭が指定したバッファで始まるか判定します。
[ public, const ]
Bool StartsWith(
    SFXBufferConstRef buffer   // 調べるバッファ
);
[ public, const ]
Bool StartsWith(
    VoidConstPtr buffer   // 調べるバッファ
    UInt32 size           // 調べるバッファのサイズ
);
[ public, const ]
Bool StartsWith(
    Byte byte   // 調べる 1 バイトの値
);

戻り値

  • 始まるとき : true
  • 始まらないとき : false

参照

SFXBuffer::EndsWith


SFXBuffer::operator=
バッファを代入します。
[ public ]
SFXBufferRef operator=(
    SFXBufferConstRef buffer   // コピーするバッファ
);

参照

SFXBuffer::Set


operator==
== の関係を判定します。
[ public, friend ]
Bool operator==(
    SFXBufferConstRef left    // 比較するバッファ
    SFXBufferConstRef right   // 比較するバッファ
);

戻り値

  • 等しいとき : true
  • 異なるとき : false

参照

SFXBuffer::Equals | operator!=


operator>=
>= の関係を判定します。
[ public, friend ]
Bool operator>=(
    SFXBufferConstRef left    // 比較するバッファ
    SFXBufferConstRef right   // 比較するバッファ
);

戻り値

  • left が right 以上のとき: true
  • それ以外のとき : false

参照

SFXBuffer::Compare


operator>
> の関係を判定します。
[ public, friend ]
Bool operator>(
    SFXBufferConstRef left    // 比較するバッファ
    SFXBufferConstRef right   // 比較するバッファ
);

戻り値

  • left が大きいとき: true
  • それ以外のとき : false

参照

SFXBuffer::Compare


SFXBuffer::operator[]
指定した位置のバッファを取得します。
[ public ]
ByteRef operator[](
    UInt32 index   // 取得するバッファの位置
);
[ public, const ]
ByteConstRef operator[](
    UInt32 index   // 取得するバッファの位置
);

参照

SFXBuffer::GetByte | SFXBuffer::SetByte


SFXBuffer::operator<<
バッファを追加します。
[ public, friend ]
SFXBufferRef operator<<(
    SFXBufferRef left         // 追加先のバッファ
    SFXBufferConstRef right   // 追加するバッファ
);

解説

バッファの最後に追加します。

operator<< はバッファ オブジェクトに影響を及ぼします 元のデータを保持しておく場合は、コピーを行う必要があります。

参照

SFXBuffer::Add


operator<=
<= の関係を判定します。
[ public, friend ]
Bool operator<=(
    SFXBufferConstRef left    // 比較するバッファ
    SFXBufferConstRef right   // 比較するバッファ
);

戻り値

  • left が right 以下のとき: true
  • それ以外のとき : false

参照

SFXBuffer::Compare


operator<
< の関係を判定します。
[ public, friend ]
Bool operator<(
    SFXBufferConstRef left    // 比較するバッファ
    SFXBufferConstRef right   // 比較するバッファ
);

戻り値

  • left が小さいとき : true
  • それ以外のとき : false

参照

SFXBuffer::Compare


SFXBuffer::operator*=
バッファのデータを繰り返します。
[ public ]
SFXBufferRef operator*=(
    SInt32 repeat   // 繰り返す回数
);

参照

SFXBuffer::Mul | operator*


operator*
バッファのデータを繰り返します。
[ public, friend ]
SFXBuffer operator*(
    SFXBufferConstRef left   // 繰り返すバッファ
    SInt32 right             // 繰り返す回数
);

参照

SFXBuffer::Mul | SFXBuffer::operator*=


operator!=
!= の関係を判定します。
[ public, friend ]
Bool operator!=(
    SFXBufferConstRef left    // 比較するバッファ
    SFXBufferConstRef right   // 比較するバッファ
);

戻り値

  • 異なるとき : true
  • 等しいとき : false

参照

SFXBuffer::Equals | operator==


SFXBuffer::operator+=
バッファ データを追加します。
[ public ]
SFXBufferRef operator+=(
    SFXBufferConstRef buffer   // 追加するバッファ
);
[ public ]
SFXBufferRef operator+=(
    Byte byte   // バッファに追加する 1 バイトの値
);

参照

SFXBuffer::Add | operator+


operator+
バッファ データを追加します。
[ public, friend ]
SFXBuffer operator+(
    SFXBufferConstRef left    // 元のバッファ
    SFXBufferConstRef right   // 追加するバッファ
);
[ public, friend ]
SFXBuffer operator+(
    SFXBufferConstRef left   // 元のバッファ
    Byte right               // 追加するバッファ
);

参照

SFXBuffer::Add | SFXBuffer::operator+=


SFXBuffer::DefaultEnum
内部で使うヒープ サイズの閾値とクラスタ サイズの既定値を表します。
enum DefaultEnum {
    DEFAULT_THRESHOLD           = 16,     // ヒープ サイズの閾値
    DEFAULT_CLUSTER             = 8       // 既定のクラスタ サイズ
};

参照

SFXBuffer::GetCluster | SFXBuffer::GetThreshold | SFXBuffer::SetCluster | SFXBuffer::SetThreshold