バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.


RWGSlist(type)

形式

#include <rw/gslist.h>
declare(RWGSlist, type)

RWGSlist(type) a ;

説明

このクラスは、型 type の順序付き要素の集まりを表します。外部キーではアクセスできません。要素の重複は許可されています。一重リンクリストとして実装されます。この型のオブジェクトは、標準 C++ ヘッダファイル <generic.h> で定義されたマクロを使用して宣言されます。コレクション内のある特定の項目を見つけるには、一貫する方法で「一致」しているかどうかを調べるユーザー提供の大域テスト関数が必要です。この関数には次のプロトタイプが必要です。

    RWBoolean yourTesterFunction(const type* c, const void* d);
引数 c は、一致するかどうかを調べるコレクション内の要素です。引数 dyourTesterFunction() に渡して cd が一致すれば、関数は TRUE を返します。

記述を簡単にするため、テスト関数に対して次のような仮想の typedef が使用されています。

    typedef RWBoolean (*yourTester)(const type*, const void*);

持続性

なし

公開コンストラクタ

RWGSlist(type)();

空のコレクションを作成します。

RWGSlist(type)(type* a);

1 つの項目 a から成るコレクションを作成します。

RWGSlist(type)(const RWGSlist(type)& a);

コピーコンストラクタ。a のシャローコピーを作成します。

代入演算子

void
operator=(const RWGSlist(type)&);

代入演算子。a のシャローコピーを作成します。

公開メンバー関数

type*
append(type* a);

項目をコレクションの最後に追加し、その項目を返します。挿入が失敗すると NULL を返します。

void
apply(void (*ap)(type*, void*), void* );

コレクション内のすべての項目に最初から最後の順序でアクセスし、各項目に対してユーザー提供関数 ap を呼び出します。この関数には次のようなプロトタイプが必要です。

void yourApplyFunction(type* c, void*);

この関数は、アドレス c にあるオブジェクトに対して任意の操作を実行できます。最後の引数は apply 関数にデータを渡すのに使用できます。

type*&
at(size_t i);
const type*
at(size_t i) const;

コレクションの i 番目の項目へのポインタを返します。最初に記述した可変要素は左辺値として使用できますが、2 番目に記述したものは使用できません。インデックス i は 0 〜 (コレクションの項目数 -1) の範囲になければなりません。範囲外にあると TOOL_INDEX 型の例外が発生します。

void
clear();

コレクションからすべての項目を取り除きます。

RWBoolean
contains(yourTester t, const void* d) const;

ユーザー定義関数 t が、d と一致すると認めた項目が、コレクションにあれば TRUE を返します。

RWBoolean
containsReference(const type* e) const;

アドレス e を持つ項目がコレクションにあれば TRUE を返します。

size_t
entries() const;

コレクションにある項目の数を返します。

type*
find(yourTester t, const void* d) const;

ユーザー定義関数 t が、d と一致するとみなした、最初の項目を返します。一致する項目がなければ NULL を返します。

type*
findReference(const type* e) const;

アドレス e を持つ、コレクション内の最初の項目を返します。そのような項目がなければ NULL を返します。

type*
first() const;

コレクション内の最初の項目を返します。

type*
get();

コレクションの最初の項目を返し、それを取り除きます。

type*
insert(type* e);

項目をコレクションの最後に追加し、その項目を返します。挿入が失敗すると NULL を返します。

void
insertAt(size_t indx, type* e);

コレクション内のインデックス位置 indx に新しい項目を追加します。indx にあった項目は indx+1 に移り、それ以降の項目も同様に移動します。インデックス indx の値は 0 〜 (コレクションの項目数) の範囲になければなりません。範囲外にあると TOOL_INDEX 型の例外が発生します。

RWBoolean
isEmpty() const;

コレクション内に項目がまったくなければ TRUE を、あれば FALSE を返します。

type*
last() const;

コレクション内の最後の項目を返します。

size_t
occurrencesOf(yourTester t, const void* d) const;

ユーザー定義関数 t が、d と一致するとみなした、コレクション内の項目の数を返します。

size_t
occurrencesOfReference(const type* e) const;

アドレス e を持つコレクション内の項目の数を返します。

type*
prepend(const type* a);

項目をコレクションの最初に追加し、その項目を返します。挿入が失敗すると NULL を返します。

type*
remove(yourTester t, const void* d);

ユーザー定義関数 t が、d と一致するとみなした、コレクション内の最初の項目を取り除き、その項目を返します。一致する項目がなけれれば NULL を返します。

type*
removeReference(const type* e);

アドレス e を持つ最初の項目をコレクションから取り除き、その項目を返します。そのような項目がなければ NULL を返します。