Tools.h++ 7.0 クラスライブラリ・リファレンスマニュアル: RWGSlist(type)

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

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` は、一致するかどうかを調べるコレクション内の要素です。引数 `d` を `yourTesterFunction()` に渡して `c` と `d` が一致すれば、関数は `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 を返します。