Microsoft DirectX 8.0 |
抽象リストの実装。CBaseList から派生した CGenericList クラス テンプレートはタイプ チェックと CBaseList クラスより単純な API を提供する。
宣言 : Wxlist.h
CBaseList クラスは Microsoft® Foundation Classes (MFC) ライブラリにある CObList の後で作成されている。リスト内の位置は POSITION 構造体によって示される。呼び出し元は POSITION 構造体の内部メンバにアクセスすべきではない、リスト ノードのポインタとして扱うべきだ。リスト内のオブジェクトの位置はオブジェクトが削除されるまで継続して有効である。
リストはそれを含むオブジェクトによるサポートを要求しない。ストレージ管理やオブジェクトのコピーは行わない。オブジェクトは複数のリストに存在し得る。
このクラスの約半数のメソッドはシングル オブジェクトである。これらのメソッドはメソッド名に I の接尾辞を持つ。他のメソッドは完全なリストとして動作する。たとえば、AddAfter メソッドはあるリストを他のリストに追加する、シングル オブジェクト操作は POSITION 値を返すか、失敗時は NULL を返す。リスト操作は成功時に TRUE を、失敗時に FALSE を返す。
Protected メンバ変数 | |
---|---|
m_Count | リストの項目数。 |
m_pFirst | リストの先頭ノードへのポインタ。 |
m_pLast | リストの末尾ノードへのポインタ。 |
Protected メソッド | |
GetNextI | 指定した位置の項目を取得し、位置を進める。 |
GetI | 指定した位置の項目を取得する。 |
FindI | 指定した項目を持つ最初の位置を取得する。 |
RemoveHeadI | リストの先頭項目を削除する。 |
RemoveTailI | リストの末尾項目を削除する。 |
RemoveI | 指定した位置の項目を削除する。 |
AddTailI | リストの末尾に項目を追加する。 |
AddHeadI | リストの先頭に項目を追加する。 |
AddAfterI | 指定した位置の後に項目を挿入する。 |
AddBeforeI | 指定した位置の前に項目を挿入する。 |
Public メソッド | |
CBaseList | コンストラクタ メソッド。 |
~CBaseList | デストラクタ メソッド。 |
RemoveAll | リストからすべてのノードを削除する。 |
GetHeadPositionI | リストの先頭項目の位置を取得する。 |
GetTailPositionI | リストの末尾項目の位置を取得する。 |
GetCountI | リストの項目数を取得する。 |
Next | リストの次の位置を取得する。 |
Prev | リストの前の位置を取得する。 |
AddHead | このリストの前に他のリストを挿入する。 |
AddTail | このリストの後に他のリストを追加する。 |
AddAfter | 指定した位置の後にリストを挿入する。 |
AddBefore | 指定した位置の前にリストを挿入する。 |
MoveToTail | リストを分割し、前側を他のリストの最後に追加する。 |
MoveToHead | リストを分割し、後ろ側を他のリストの前に挿入する。 |
Reverse | リストの順番を逆転する。 |
リストの項目数。
構文
LONG m_Count;
リストの先頭ノードへのポインタ。
構文
CNode *m_pFirst;
リストの末尾ノードへのポインタ。
構文
CNode *m_pLast;
指定した位置の後にリストを挿入する。
構文
BOOL AddAfter( POSITION pos, CBaseList *pList );
パラメータ
- pos
- この後ろにリストを挿入する位置。
- pList
- 挿入するリストへのポインタ。
戻り値
成功なら TRUE、それ以外なら FALSE を返す。
注意
pos パラメータで指定される情報を含む既存の位置情報は有効のまま残ってしまう。このメソッドが失敗するなら、いくつかの項目が既に追加された可能性がある。
指定した位置の後に項目を挿入する。
構文
POSITION AddAfterI( POSITION pos, void *pObj );
パラメータ
- pos
- この後ろに項目を挿入する位置。
- pObj
- 追加する項目へのポインタ。
戻り値
挿入された項目の位置情報が返る。
注意
pos が NULL なら、このメソッドはリストの先頭に項目を追加した ( AddHeadI メソッドを呼び出したのと同じ)。
指定した位置の前にリストを挿入する。
構文
BOOL AddBefore( POSITION pos, CBaseList *pList );
パラメータ
- pos
- この前にリストを挿入する位置。
- pList
- 追加するリストへのポインタ。
戻り値
成功なら TRUE、それ以外なら FALSE を返す。
注意
pos パラメータで指定される情報を含む既存の位置情報は有効のまま残ってしまう。このメソッドが失敗するなら、いくつかの項目が既に追加された可能性がある。
指定した位置の前に項目を挿入する。
構文
POSITION AddBeforeI( POSITION pos, void *pObj );
パラメータ
- pos
- この前に項目を挿入する位置。
- pObj
- 項目へのポインタ。
戻り値
挿入された項目の位置情報が返る。
注意
pos が NULL である場合、このメソッドはリストの末尾に項目を追加する (AddTailI メソッドの呼び出しと同じ)。
このリストの前に他のリストを挿入する。
構文
BOOL AddHead( CBaseList *pList );
パラメータ
- pList
- 追加する項目リストへのポインタ。
戻り値
成功なら TRUE、それ以外なら FALSE を返す。
注意
メソッドが失敗するなら、いくつかの項目が既にリストに追加された可能性がある。
リストの最初に項目を追加する。
構文
POSITION AddHeadI( void *pObj );
パラメータ
- pObj
- 項目へのポインタ。
戻り値
新しい先頭位置を示す POSITION 値を返す。
注意
メソッドが失敗すると、戻り値は NULL 。
このリストの後に他のリストを追加する。
構文
BOOL AddTail( CBaseList *pList );
パラメータ
- pList
- 追加するリストへのポインタ。
戻り値
成功なら TRUE、それ以外なら FALSE を返す。
注意
メソッドが失敗するなら、いくつかの項目が既に追加された可能性がある。
リストの終わりに項目を追加する。
構文
POSITION AddTailI( void *pObj );
パラメータ
- pObj
- 項目へのポインタ。
戻り値
新しい末尾位置を示す POSITION 値を返す。
注意
メソッドが失敗すると、戻り値は NULL 。
コンストラクタ メソッド。
構文
CBaseList( TCHAR *pName, INT iItems ); CBaseList( TCHAR *pName );
パラメータ
- pName
- リスト名へのポインタ。
- iItems
- ノード キャッシュのサイズ。
注意
効率のため、CBaseList クラスはリスト ノードのキャッシュを維持する。リストが持つおおよその項目数が分かっているのなら、コンストラクタの第 1 バージョンを使うべきだ。第 2 バージョンはデフォルトのキャッシュ サイズを使用すること。
デストラクタ メソッド。
構文
~CBaseList(void);
指定した項目を持つ最初の位置を取得する。
構文
POSITION FindI( void *pObj );
パラメータ
- pObj
- 項目へのポインタ。
戻り値
POSITION 値を返す、リスト内に項目がなければ NULL を返す。
リストの項目数を取得する。
構文
int GetCountI(void);
戻り値
リストの項目数を返す。
リストの先頭項目の位置を取得する。
構文
POSITION GetHeadPositionI(void);
戻り値
POSITION 値を返す、リストが"から"の場合 NULL を返す。
指定した位置の項目を取得する。
構文
void *GetI( POSITION pos );
パラメータ
- pos
- 取得する項目の位置情報。
戻り値
項目へのポインタを返す。
注意
pos が NULL なら、メソッドは NULL を返す。
指定した位置の項目を取得し、位置を進める。
構文
void *GetNextI( POSITION& rp );
パラメータ
- rp
- POSITION 値への参照。
戻り値
項目へのポインタを返す。
注意
このメソッドは位置情報を次の位置に進める。位置情報がリストの末尾を越えたなら、メソッドはそれに NULL を設定する。
rp が NULL なら、メソッドは NULL を返す。
リストの末尾項目の位置を取得する。
構文
POSITION GetTailPositionI(void);
戻り値
POSITION 値を返す、リストに何も入っていないなら NULL を返す。
リストを分割し、後ろ側を他のリストの前に挿入する。
構文
BOOL MoveToHead( POSITION pos, CBaseList *pList );
パラメータ
- pos
- リストを分割する位置情報。
- pList
- 別のリストへのポインタ。
戻り値
成功なら TRUE、それ以外なら FALSE を返す。
注意
このメソッドは pos パラメータが指定する位置の前でリストを分割する。前側の部分はリストに残る。後ろ側の部分は他のリストの先頭に挿入される。
リストを分割し、前側を他のリストの最後に追加する。
構文
BOOL MoveToTail( POSITION pos, CBaseList *pList );
パラメータ
- pos
- リストを分割する位置情報。
- pList
- 他のリストへのポインタ。
戻り値
成功なら TRUE、それ以外なら FALSE を返す。
注意
このメソッドは pos パラメータが指定する位置の前でリストを分割する。後ろ側の部分はリストに残る。前側の部分は他のリストの末尾に追加される。
リストの次の位置を取得する。
構文
POSITION Next( POSITION pos );
パラメータ
- pos
- POSITION 値
戻り値
pos が指定する位置の次の位置情報を返す。
注意
pos がリストの末尾の位置なら、メソッドは NULL を返す。pos が NULL なら、メソッドはリストの先頭位置を返す。
リストの前の位置を取得する。
構文
POSITION Prev( POSITION pos );
パラメータ
- pos
- POSITION 値。
戻り値
pos で指定される位置の前の位置情報を返す。
注意
pos がリストの先頭の位置なら、メソッドは NULL を返す。pos が NULL なら、メソッドはリストの末尾の位置を返す。
リストからすべてのノードを削除する。
構文
void RemoveAll(void);
注意
すべてのノードに含まれる項目の削除は呼び出し元の責任である。
リストの先頭項目を削除する。
構文
void *RemoveHeadI(void);
戻り値
項目のポインタを返す、リストに何も入っていないなら NULL を返す。
注意
このメソッドはリストからノードを削除するが、ノードに含まれる項目は削除しない。
指定した位置の項目を削除する。
構文
void *RemoveI( POSITION pos );
パラメータ
- pos
- 削除する項目を示す POSITION 値。
戻り値
項目のポインタを返す。
注意
このメソッドはリストからノードを削除するが、ノードに含まれる項目は削除しない。
pos が NULL なら、メソッドは NULL を返す。
リストの末尾項目を削除する。
構文
void *RemoveTailI(void);
戻り値
項目のポインタを返す、リストがからなら NULL を返す。
注意
このメソッドはリストからノードを削除するが、ノードに含まれる項目は削除しない。
リストの順番を逆転する
構文
void Reverse(void);