前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXClusterHeap
ブロックアロケーションを行うヒープクラスです。
#include <SFXClusterHeap.h.hpp>
class SFXClusterHeap;
SFMTYPEDEFCLASS(SFXClusterHeap)

継承図

SFXClusterHeap クラスの継承図

協調図

SFXClusterHeap クラスの協調図

解説

SFXHeap クラスと SFXClusterHeap クラス

SFXClusterHeap クラスと SFXHeap クラスは、動的なヒープ管理を提供するクラスです。

SFXClusterHeap クラスはブロックアロケーションを行いますが、SFXHeap クラスはブロックアロケーションを行いません。

ヒープサイズを少量ずつ繰り返し変更するような場合、 SFXClusterHeap クラスを使う方が処理速度が向上します。

Attach 関数 と Detach 関数

SFXClusterHeap::Attach 関数は、 指定された領域を SFXClusterHeap オブジェクトに結び付けます。 SFXClusterHeap::Detach 関数はその逆の操作を行います。

例 812. Attach 関数の使用方法

SFXClusterHeap<SInt16> heap;
VoidPtr swap;

// メモリを割り当てる
swap = MemoryAllocate(10240); 
...

// swap に割り当てた領域を heap オブジェクトに結びつける
heap.Attach(swap, 10240);
// 以降、swap に割り当てた領域は heap オブジェクトとして操作できる

・・・

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

例 813. Detach 関数の使用方法

SFXClusterHeap heap;
VoidPtr swap;
UInt32 length;

...

// heap オブジェクトが管理するヒープ領域を切り離し、その領域のポインタを swap に設定する
// 領域のサイズは length に格納される
swap = heap.Detach(&length);
// 以降、heap オブジェクトのヒープ領域は swap に割り当てられた領域として操作する

...

// 使用後、swap に割り当てられた領域は解放する必要がある
MemoryFree(swap);

参照

SFXHeap | ヒープクラス

メンバ

コンストラクタ/デストラクタ
SFXClusterHeap( Void )
SFXClusterHeap クラスのコンストラクタです。
SFXClusterHeap( UInt16 threshold , UInt16 cluster )
SFXClusterHeap クラスのコンストラクタです。
パブリック関数
SFCError Attach( VoidPtr heap , UInt32 size )
指定された領域をこのヒープオブジェクトが管理するヒープ領域として結び付けます。
Bool Contains( VoidConstPtr heap , UInt32 size )
このヒープオブジェクトが管理するヒープ領域と指定された領域に共通部分があるか判定します。
VoidPtr Detach( UInt32Ptr size = null )
このヒープオブジェクトが管理しているヒープ領域を切り離します。
static
SFXClusterHeap< T > const &
EmptyInstance( Void )
空のヒープオブジェクトを取得します。
Void Free( Void )
このヒープオブジェクトが管理するヒープ領域を解放します。
UInt16 GetCluster( Void )
このヒープオブジェクトが管理するヒープ領域のサイズの増減単位を取得します。[単位: バイト]
VoidPtr GetHeap( Void )
このヒープオブジェクトが管理しているヒープ領域のポインタを取得します。
VoidConstPtr GetHeap( Void )
このヒープオブジェクトが管理しているヒープ領域のポインタを取得します。
UInt32 GetSize( Void )
このヒープオブジェクトが管理するヒープ領域のサイズを取得します。
UInt16 GetThreshold( Void )
このヒープオブジェクトが管理するヒープ領域のサイズの最小値を取得します。[単位: バイト]
VoidConstPtr Protect( VoidConstPtr heap , UInt32 size )
指定された範囲の領域を保護します。
SFCError Resize( UInt32 size )
このヒープオブジェクトが管理するヒープ領域のサイズを変更します。[単位: バイト]
Void SetCluster( UInt16 cluster )
このヒープオブジェクトが管理するヒープ領域のサイズの増減単位を設定します。[単位: バイト]
Void SetThreshold( UInt16 param )
このヒープオブジェクトが管理するヒープ領域のサイズの最小値を設定します。[単位: バイト]
Void Unprotect( VoidConstPtr protect , VoidConstPtr heap )
保護した領域を解除します。
operator T *( Void )
このヒープを T * 型に変換してそのポインタを返します。
Bool operator==( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのものと等しいか判定します。
Bool operator==( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのものと等しいか判定します。
Bool operator==( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのものと等しいか判定します。
Bool operator>=( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのもの以上であるか判定します。
Bool operator>=( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのもの以上であるか判定します。
Bool operator>=( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのもの以上であるか判定します。
Bool operator>( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのものよりも大きいか判定します。
Bool operator>( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのものよりも大きいか判定します。
Bool operator>( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのものよりも大きいか判定します。
Bool operator<=( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのもの以下であるか判定します。
Bool operator<=( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのもの以下であるか判定します。
Bool operator<=( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのもの以下であるか判定します。
Bool operator<( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのものよりも小さいか判定します。
Bool operator<( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのものよりも小さいか判定します。
Bool operator<( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのものよりも小さいか判定します。
Bool operator!=( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのものと異なるか判定します。
Bool operator!=( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのものと異なるか判定します。
Bool operator!=( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのものと異なるか判定します。
グローバル関数
Bool operator==( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのものと等しいか判定します。
Bool operator==( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのものと等しいか判定します。
Bool operator==( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのものと等しいか判定します。
Bool operator>=( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのもの以上であるか判定します。
Bool operator>=( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのもの以上であるか判定します。
Bool operator>=( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのもの以上であるか判定します。
Bool operator>( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのものよりも大きいか判定します。
Bool operator>( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのものよりも大きいか判定します。
Bool operator>( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのものよりも大きいか判定します。
Bool operator<=( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのもの以下であるか判定します。
Bool operator<=( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのもの以下であるか判定します。
Bool operator<=( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのもの以下であるか判定します。
Bool operator<( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのものよりも小さいか判定します。
Bool operator<( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのものよりも小さいか判定します。
Bool operator<( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのものよりも小さいか判定します。
Bool operator!=( SFXClusterHeap< T > const & left , SFXClusterHeap< M > const & right )
左側のヒープの先頭アドレスが右側のヒープのものと異なるか判定します。
Bool operator!=( SFXClusterHeap< T > const & left , VoidConstPtr right )
左側のヒープの先頭アドレスが右側のヒープのものと異なるか判定します。
Bool operator!=( VoidConstPtr left , SFXClusterHeap< T > const & right )
左側のヒープの先頭アドレスが右側のヒープのものと異なるか判定します。

SFXClusterHeap::SFXClusterHeap
SFXClusterHeap クラスのコンストラクタです。
[ public, explicit ]
SFXClusterHeap(Void);
[ public, explicit ]
SFXClusterHeap(
    UInt16 threshold   //ヒープサイズの最小値[単位: バイト]
    UInt16 cluster     //ヒープサイズの増減単位[単位: バイト]
);

解説

引数 threshold にはヒープを割り当てる際のサイズの最小値を指定します[単位: バイト]。 また、引数 cluster にはヒープサイズを変更する際、 新しいサイズのうち threshold で指定されたサイズを超える分に関して、 サイズを変更する単位を指定します[単位: バイト]。

引数を指定しない場合、threshold = 0、cluster = 1 を指定されたことになります。

[Caution] 注意
コンストラクタでは実際のヒープの割り当ては行われません。 ヒープを使う前に必ず Attach 関数または Resize 関数を呼び出してください。

使用例

引数をとるコンストラクタの例です。

SFXClusterHeap myheap(100, 10);

この例では、ヒープの最小サイズが 100 バイトに設定され、 100 バイトを超える分については 110 バイト、120 バイト、 130 バイト…になります。

参照

SFXClusterHeap::SetThreshold | SFXClusterHeap::SetCluster | SFXClusterHeap::Attach | SFXClusterHeap::Resize


SFXClusterHeap::Attach
指定された領域をこのヒープオブジェクトが管理するヒープ領域として結び付けます。
[ public ]
SFCError Attach(
    VoidPtr heap   // 領域へのポインタ
    UInt32 size    // 領域のサイズ[単位: バイト]
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • このヒープオブジェクトの領域と指定された領域に共通部分があるとき、または引数が null であるとき: SFERR_INVALID_PARAM

解説

この関数は、指定された領域をこのヒープオブジェクトが管理するヒープ領域として結び付けます。 この関数を実行した後、指定された領域はこのヒープオブジェクトが管理するヒープ領域(SFXClusterHeap オブジェクト)として操作できます。

[Note] 注意
引数に指定された領域に割り当てられていたメモリは、 このヒープオブジェクトが解放されるときに自動的に解放されます。

使用例

SFXClusterHeap<Byte> heap;
VoidPtr swap;

// swap に 10240 バイトのメモリを割り当てる
swap = MemoryAllocate(10240); 

...

// swap に割り当てた領域を heap オブジェクトに結びつける
heap.Attach(swap, 10240);
// 以降、swap に割り当てた領域は heap オブジェクトとして操作できる

・・・

// 使用後、swap に割り当てた領域は自動的に解放される 

参照

SFXClusterHeap::Detach | SFXClusterHeap::Contains


SFXClusterHeap::Contains
このヒープオブジェクトが管理するヒープ領域と指定された領域に共通部分があるか判定します。
[ public, const ]
Bool Contains(
    VoidConstPtr heap   // 比較する領域の先頭へのポインタ
    UInt32 size         // 比較する領域のサイズ[単位: バイト]
);

戻り値

  • あるとき: true
  • ないとき: false

解説

この関数は、このヒープオブジェクトが管理するヒープ領域と指定された領域に共通部分があるか判定します。

使用例

SFXClusterHeap<Byte> heap(100, 10);

heap.Resize(100);  // heap オブジェクトのサイズを 100 バイトに設定する

// area1 は heap オブジェクトに含まれる
VoidConstPtr area1 = static_cast<BytePtr>(heap.GetHeap()) + 10;  

// area2 は heap オブジェクトに含まれない
VoidConstPtr area2 = static_cast<BytePtr>(heap.GetHeap()) + 100;  

if (heap.Contains(area1, 200)) {

    // heap オブジェクトは area1 以降の領域と共通部分があるので、ここが実行される
    TRACE("The heap object contains area1.");
}

if (!heap.Contains(area2, 200)) {

    // heap オブジェクトは area2 以降の領域と共通部分がないので、ここが実行される
    TRACE("The heap object does not contain area2.");
}

SFXClusterHeap::Detach
このヒープオブジェクトが管理しているヒープ領域を切り離します。
[ public ]
VoidPtr Detach(
    UInt32Ptr size = null   // 切り離されるヒープ領域のサイズを格納される変数へのポインタ
);

戻り値

このヒープオブジェクトが管理していたヒープ領域へのポインタ。

解説

この関数は、 このヒープオブジェクトが管理しているヒープ領域を切り離し、その領域のポインタを返します。

size 引数には、ヒープ領域のサイズが返されます。

[Caution] 注意
このヒープオブジェクトが持っていたヒープ領域はコピーされません。

使用例

SFXClusterHeap<Byte> heap;
VoidPtr swap;
UInt32 length;

...

// heap オブジェクトが管理するヒープ領域を切り離し、その領域のポインタを swap に設定する
// 領域のサイズは length に格納される
swap = heap.Detach(&length);

// 以降、heap オブジェクトのヒープ領域は swap に割り当てられた領域として操作する

...

// 使用後、swap に割り当てられた領域は解放する必要がある
MemoryFree(swap);

参照

SFXClusterHeap::Attach


SFXClusterHeap::EmptyInstance
空のヒープオブジェクトを取得します。
[ public, static ]
SFXClusterHeap< T > const & EmptyInstance(Void);

戻り値

空のヒープオブジェクト

解説

空のヒープオブジェクトを取得します。


SFXClusterHeap::Free
このヒープオブジェクトが管理するヒープ領域を解放します。
[ public ]
Void Free(Void);

解説

この関数は、このヒープオブジェクトが管理するヒープ領域を解放します。

使用例

SFXClusterHeap<Byte> heap;

...

heap.Free();   // heap オブジェクトが管理するヒープ領域を解放する

参照

SFXClusterHeap::Resize


SFXClusterHeap::GetCluster
このヒープオブジェクトが管理するヒープ領域のサイズの増減単位を取得します。[単位: バイト]
[ public, const ]
UInt16 GetCluster(Void);

戻り値

このヒープオブジェクトが管理するヒープ領域のサイズの増減単位 [単位: バイト]

解説

この関数は、このヒープオブジェクトが管理するヒープ領域のサイズの増減単位を取得します。[単位: バイト]

使用例

SFXClusterHeap<SInt16> heap;

// ヒープ確保時のクラスタサイズを 10 バイトに設定する
heap.SetCluster(10);

TRACE("cluster size = %d", heap.GetCluster());  // cluster size = 10

参照

SFXClusterHeap::SetCluster | SFXClusterHeap::Resize


SFXClusterHeap::GetHeap
このヒープオブジェクトが管理しているヒープ領域のポインタを取得します。
[ public ]
VoidPtr GetHeap(Void);
[ public, const ]
VoidConstPtr GetHeap(Void);

戻り値

このヒープオブジェクトが管理しているヒープ領域のポインタ

解説

この関数は、このヒープオブジェクトが管理しているヒープ領域のポインタを取得します。

使用例

SFXClusterHeap<SInt16> heap;

//ヒープサイズ設定する 
if (heap.Resize(sizeof(SInt16) * 128) == SFERR_NO_ERROR) {
        TRACE("addr = 0x%08X", heap.GetHeap());  // addr = 0x0686FF80
}

SFXClusterHeap::GetSize
このヒープオブジェクトが管理するヒープ領域のサイズを取得します。
[ public, const ]
UInt32 GetSize(Void);

戻り値

このヒープオブジェクトが管理するヒープ領域のサイズ

解説

この関数は、このヒープオブジェクトが管理するヒープ領域のサイズを取得します。

使用例

SFXClusterHeap<Byte> heap;

// ヒープサイズを設定する
if (heap.Resize(0x200) == SFERR_NO_ERROR) {

    // ヒープサイズを取得する
    TRACE("size = 0x%x", heap.GetSize());  // size = 0x200
}

参照

SFXClusterHeap::Resize | SFXClusterHeap::Attach


SFXClusterHeap::GetThreshold
このヒープオブジェクトが管理するヒープ領域のサイズの最小値を取得します。[単位: バイト]
[ public, const ]
UInt16 GetThreshold(Void);

戻り値

このヒープオブジェクトが管理するヒープ領域のサイズの最小値 [単位: バイト]

解説

この関数は、このヒープオブジェクトが管理するヒープ領域のサイズの最小値を取得します。[単位: バイト]

使用例

SFXClusterHeap<SInt16> heap;

// ヒープサイズの最小値を 100 バイトに設定する
heap.SetThreshold(100);

TRACE("minimum heap size = %d", heap.GetThreshold());  // minimum heap size = 100

参照

SFXClusterHeap::SetThreshold | SFXClusterHeap::Resize


SFXClusterHeap::Protect
指定された範囲の領域を保護します。
[ public, const ]
VoidConstPtr Protect(
    VoidConstPtr heap   // 保護する領域へのポインタ
    UInt32 size         // 保護する領域のサイズ
);

戻り値

保護された領域へのポインタ。

解説

この関数は、指定された範囲の領域を保護します。

このヒープオブジェクトが管理するヒープ領域と指定された範囲の領域との間に共通部分がある場合、 このヒープオブジェクトが管理するヒープ領域と共通部分を持たない別の領域を確保し、 指定された範囲の領域の内容をそこにコピーし、そのアドレスを返します。 共通部分がない場合は、引数に指定された領域のアドレスを返す処理だけを行います。

SFXClusterHeap::Protect 関数で保護した領域についての処理を終えた後は、 SFXClusterHeap::Unprotect 関数を呼び出す必要があります。

[Note] 注意
SFXClusterHeap::Unprotect 関数は、 SFXClusterHeap::Protect 関数が確保した別の領域を解放します。 SFXClusterHeap::Protect 関数が別の領域を確保しなかった場合は何も行いません。

使用例

SFXClusterHeap<Byte> heap;
VoidConstPtr protect;

heap.Resize(0x200);  // ヒープのサイズを 0x200 バイトに設定する

// _area1 = _heap + 0x100 
// _area2 = _heap + 0x200 
VoidConstPtr _heap(heap.GetHeap());
VoidConstPtr _area1(static_cast<BytePtr>(heap.GetHeap()) + 0x100);
VoidConstPtr _area2(static_cast<BytePtr>(heap.GetHeap()) + 0x200);

TRACE("addr of _heap  = 0x%08X", _heap);   // addr of _heap  = 0x0585BD50
TRACE("addr of _area1 = 0x%08X", _area1);  // addr of _area1 = 0x0585BE50
TRACE("addr of _area2 = 0x%08X", _area2);  // addr of _area2 = 0x0585BF50

// HEAP:   [ _heap, _heap + 0x200 )
// AREA_1: [ _area1, _area1 + 0x100 )
// AREA_2: [ _area2, _area2 + 0x100 )

// HEAP ∩ AREA_1 ≠ Φ
// AREA_1 を保護する
if ((protect = heap.Protect(_area1, 0x100)) != null) {
 
    // [ protect, protect + 0x100 ) の領域は HEAP 外に確保される
    TRACE("addr of protect = 0x%08X", protect); // addr of protect = 0x0585BF80
 
    // 保護を解除する: Protect() が確保した [ protect, protect + 0x100 ) の領域を解放する
    heap.Unprotect(protect, _area1);
}

// HEAP ∩ AREA_2 = Φ
// AREA_2 を保護する
if ((protect = heap.Protect(_area2, 0x100)) != null) {
 
    // AREA_2 は HEAP と共通部分を持たないので、protect と_area2 は等しい
    TRACE("addr of protect = 0x%08X", protect); // addr of protect = 0x0585BF50
 
    // 保護を解除する: Protect() は別の領域を確保しなかったので何も行わない
    heap.Unprotect(protect, _area2);
}

参照

SFXClusterHeap::Attach | SFXClusterHeap::Contains


SFXClusterHeap::Resize
このヒープオブジェクトが管理するヒープ領域のサイズを変更します。[単位: バイト]
[ public ]
SFCError Resize(
    UInt32 size   // 新しいヒープサイズ[単位: バイト]
);

戻り値

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

解説

この関数は、このヒープオブジェクトが管理するヒープ領域のサイズを変更します。

変更されるヒープ領域のサイズは、必ずしも引数に指定されたサイズではなく、 以下のように最小ヒープサイズとクラスタサイズによって決定されます。

size 引数の値が最小ヒープサイズよりも小さい場合、 ヒープ領域のサイズ(実際にメモリを割り当てられるサイズ)は最小ヒープサイズになります。

最小ヒープサイズよりも大きい場合は、 最小ヒープサイズを超える部分についてクラスタサイズ単位で割り当てられます。

[Note] 最小ヒープサイズとクラスタサイズの設定

最小ヒープサイズは SFXClusterHeap::SFXClusterHeap コンストラクタの threshold 引数か SFXClusterHeap::SetThreshold 関数で、 クラスタサイズは SFXClusterHeap::SFXClusterHeap コンストラクタの cluster 引数か SFXClusterHeap::SetCluster 関数で設定します。

[Caution] 注意

サイズが変化する場合、 SFXClusterHeap::GetHeap 関数の戻り値であるヒープへのポインタも変化します。 サイズに変更がない場合は、何も起きません。

使用例

SFXClusterHeap<Byte> heap;

heap.Resize(0x200);  // ヒープサイズを 0x200 バイトに設定する

参照

SFXClusterHeap::SFXClusterHeap | SFXClusterHeap::SetCluster | SFXClusterHeap::SetThreshold | SFXClusterHeap::Attach | SFXClusterHeap::GetHeap | SFXClusterHeap::GetSize


SFXClusterHeap::SetCluster
このヒープオブジェクトが管理するヒープ領域のサイズの増減単位を設定します。[単位: バイト]
[ public ]
Void SetCluster(
    UInt16 cluster   // 新しいヒープサイズの増減単位[単位: バイト]
);

解説

この関数は、 このヒープオブジェクトが管理するヒープ領域のサイズの増減単位を設定します。[単位: バイト]

デフォルト値: 1、または SFXClusterHeap::SFXClusterHeap コンストラクタの cluster 引数で指定された値 [単位: バイト]

使用例

SFXClusterHeap<SInt16> heap;

// ヒープ確保時のクラスタサイズを 10 バイトに設定する
heap.SetCluster(10);

TRACE("cluster size = %d", heap.GetCluster());  // cluster size = 10

参照

SFXClusterHeap::GetCluster | SFXClusterHeap::Resize | SFXClusterHeap::SFXClusterHeap


SFXClusterHeap::SetThreshold
このヒープオブジェクトが管理するヒープ領域のサイズの最小値を設定します。[単位: バイト]
[ public ]
Void SetThreshold(
    UInt16 param   // 新しいヒープサイズの最小値[単位: バイト]
);

解説

この関数は、このヒープオブジェクトが管理するヒープ領域のサイズの最小値を設定します。[単位: バイト]

デフォルト値: 0、または SFXClusterHeap::SFXClusterHeap コンストラクタの引数で指定された値 [単位: バイト]

使用例

SFXClusterHeap<SInt16> heap;

// ヒープサイズの最小値を 100 バイトに設定する
heap.SetThreshold(100);

TRACE("minimum heap size = %d", heap.GetThreshold());  // minimum heap size = 100

参照

SFXClusterHeap::GetThreshold | SFXClusterHeap::Resize | SFXClusterHeap::SFXClusterHeap


SFXClusterHeap::Unprotect
保護した領域を解除します。
[ public, const ]
Void Unprotect(
    VoidConstPtr protect   // SFXClusterHeap::Protect() が返した保護された領域へのポインタ
    VoidConstPtr heap      // SFXClusterHeap::Protect() の引数に指定された保護する領域へのポインタ
);

解説

SFXClusterHeap::Protect 関数で保護した領域を解除します。

保護する領域がこのヒープオブジェクトが管理するヒープ領域と共通部分を持っていた場合は、 SFXClusterHeap::Protect 関数が確保した別の領域を解放します。 共通部分を持たなかった場合、この関数は何も行いません。

[Note] 注意
保護する領域がこのヒープオブジェクトが管理するヒープ領域と共通部分を持っていた場合は、 protect 引数で指定する値と、heap 引数で指定する値は異なります。 逆に、共通部分を持たなかった場合、この 2 つの引数は同じ値になります。

参照

SFXClusterHeap::Protect


SFXClusterHeap::operator T *
このヒープを T * 型に変換してそのポインタを返します。
[ public, const ]
operator T *(Void);

戻り値

ヒープが割り当てられている場合はそのヒープへのポインタを、 割り当てられていない場合は空ポインタを返します。

解説

このオペレーターは、このヒープを T * 型に変換してそのポインタを返します。


operator==
左側のヒープの先頭アドレスが右側のヒープのものと等しいか判定します。
[ public, friend ]
Bool operator==(
    SFXClusterHeap< T > const & left    // 左側のヒープ
    SFXClusterHeap< M > const & right   // 右側のヒープ
);
[ public, friend ]
Bool operator==(
    SFXClusterHeap< T > const & left   // 左側のヒープ
    VoidConstPtr right                 // 右側のヒープ
);
[ public, friend ]
Bool operator==(
    VoidConstPtr left                   // 左側のヒープ
    SFXClusterHeap< T > const & right   // 右側のヒープ
);

戻り値

  • 等しいとき: true
  • そうでないとき: false

解説

このオペレーターは、左側のヒープの先頭アドレスが右側のヒープのものと等しいか判定します。

[Note] 注意

このオペレーターは、 左側のヒープと右側のヒープについて、その先頭アドレスを比較します。

参照

operator!=


operator>=
左側のヒープの先頭アドレスが右側のヒープのもの以上であるか判定します。
[ public, friend ]
Bool operator>=(
    SFXClusterHeap< T > const & left    // 左側のヒープ
    SFXClusterHeap< M > const & right   // 右側のヒープ
);
[ public, friend ]
Bool operator>=(
    SFXClusterHeap< T > const & left   // 左側のヒープ
    VoidConstPtr right                 // 右側のヒープ
);
[ public, friend ]
Bool operator>=(
    VoidConstPtr left                   // 左側のヒープ
    SFXClusterHeap< T > const & right   // 右側のヒープ
);

戻り値

  • 以上であるとき: true
  • そうでないとき: false

解説

このオペレーターは、左側のヒープの先頭アドレスが右側のヒープのもの以上であるか判定します。

[Note] 注意

このオペレーターは、 左側のヒープと右側のヒープについて、その先頭アドレスを比較します。

参照

operator> | operator< | operator<=


operator>
左側のヒープの先頭アドレスが右側のヒープのものよりも大きいか判定します。
[ public, friend ]
Bool operator>(
    SFXClusterHeap< T > const & left    // 左側のヒープ
    SFXClusterHeap< M > const & right   // 右側のヒープ
);
[ public, friend ]
Bool operator>(
    SFXClusterHeap< T > const & left   // 左側のヒープ
    VoidConstPtr right                 // 右側のヒープ
);
[ public, friend ]
Bool operator>(
    VoidConstPtr left                   // 左側のヒープ
    SFXClusterHeap< T > const & right   // 右側のヒープ
);

戻り値

  • 大きいとき: true
  • そうでないとき: false

解説

このオペレーターは、左側のヒープの先頭アドレスが右側のヒープのものよりも大きいか判定します。

[Note] 注意

このオペレーターは、 左側のヒープと右側のヒープについて、その先頭アドレスを比較します。

参照

operator>= | operator< | operator<=


operator<=
左側のヒープの先頭アドレスが右側のヒープのもの以下であるか判定します。
[ public, friend ]
Bool operator<=(
    SFXClusterHeap< T > const & left    // 左側のヒープ
    SFXClusterHeap< M > const & right   // 右側のヒープ
);
[ public, friend ]
Bool operator<=(
    SFXClusterHeap< T > const & left   // 左側のヒープ
    VoidConstPtr right                 // 右側のヒープ
);
[ public, friend ]
Bool operator<=(
    VoidConstPtr left                   // 左側のヒープ
    SFXClusterHeap< T > const & right   // 右側のヒープ
);

戻り値

  • 以下であるとき: true
  • そうでないとき: false

解説

このオペレーターは、左側のヒープの先頭アドレスが右側のヒープのもの以下であるか判定します。

[Note] 注意

このオペレーターは、 左側のヒープと右側のヒープについて、その先頭アドレスを比較します。

参照

operator<= | operator> | operator>=


operator<
左側のヒープの先頭アドレスが右側のヒープのものよりも小さいか判定します。
[ public, friend ]
Bool operator<(
    SFXClusterHeap< T > const & left    // 左側のヒープ
    SFXClusterHeap< M > const & right   // 右側のヒープ
);
[ public, friend ]
Bool operator<(
    SFXClusterHeap< T > const & left   // 左側のヒープ
    VoidConstPtr right                 // 右側のヒープ
);
[ public, friend ]
Bool operator<(
    VoidConstPtr left                   // 左側のヒープ
    SFXClusterHeap< T > const & right   // 右側のヒープ
);

戻り値

  • 小さいとき: true
  • そうでないとき: false

解説

このオペレーターは、左側のヒープの先頭アドレスが右側のヒープのものよりも小さいか判定します。

[Note] 注意

このオペレーターは、 左側のヒープと右側のヒープについて、その先頭アドレスを比較します。

参照

operator<= | operator> | operator>=


operator!=
左側のヒープの先頭アドレスが右側のヒープのものと異なるか判定します。
[ public, friend ]
Bool operator!=(
    SFXClusterHeap< T > const & left    // 左側のヒープ
    SFXClusterHeap< M > const & right   // 右側のヒープ
);
[ public, friend ]
Bool operator!=(
    SFXClusterHeap< T > const & left   // 左側のヒープ
    VoidConstPtr right                 // 右側のヒープ
);
[ public, friend ]
Bool operator!=(
    VoidConstPtr left                   // 左側のヒープ
    SFXClusterHeap< T > const & right   // 右側のヒープ
);

戻り値

  • 異なるとき: true
  • そうでないとき: false

解説

このオペレーターは、左側のヒープの先頭アドレスが右側のヒープのものと異なるか判定します。

[Note] 注意

このオペレーターは、 左側のヒープと右側のヒープについて、その先頭アドレスを比較します。

参照

operator==