バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWFactory
typedef unsigned short RWClassID; typedef RWCollectable* (*RWuserCreator)(); #include <rw/factory.h> RWFactory* theFactory;
RWCollectable* aCreatorFunction();上記の関数は、特定のクラスのインスタンスを作成します。与えられた RWClassID タグに対し適切な関数を選択して呼び出し、結果のポインタを返します。このようにして作成されたオブジェクトはすべてヒープから作成されるので、作業終了後はユーザーがオブジェクトを削除しなければなりません。
getRWFactory を使用してアクセスできる独特な大域的 RWFactory があります。これは、プログラムが参照するすべてのクラスに対するクリエータ関数を持っていると保証されています。詳細については、ユーザーズガイドの RWFactory の説明を参照してください。
#include <rw/factory.h> #include <rw/rwbag.h> #include <rw/colldate.h> #include <rw/rstream.h> main(){ // クラス ID __RWBAG を使用して、ヒープから新しい RWBag を作成する RWBag* b = (RWBag*)rwCreateFromFactory(__RWBAG); b->insert( new RWCollectableDate ); // 今日の日付を挿入する // ... b->clearAndDestroy(); // cleanup: 最初にメンバーを削除する delete b; // 次に bag 自身を削除する } END FILE |
RWFactory();
RWBoolean operator<=(const RWFactory& h);自分自身が h の部分集合である場合、つまり、自分自身のすべての要素について、h 内に isEqual である要素がある場合に TRUE を返します。この演算子は、C++ 言語における非一貫性を修正するために取り込まれます。標準 C++ ライブラリ実装を使用してコンパイルしないかぎり、これは存在しません。通常は RWSet から継承されます。
注 - 標準 C++ ライブラリが存在する状態で RWFactory から継承する場合、この演算子を変更し、関数を明示的に呼び出すことをお薦めします。C++ の多重定義による解決方法では、継承されたクラスメンバーを対象とする、標準ライブラリが提供する大域演算子を選択します。これらの大域定義は、部分集合関係のような半順序付けには適していません。
void addFunction(RWuserCreator uc, RWClassID id);
void addFunction(RWuserCreator uc, RWClassID id, RWStringID sid);
RWCollectable* create(RWClassID id) const;
RWCollectable* create(RWString sid) const;
RWuserCreator getFunction(RWClassID id) const;
RWuserCreator getFunction(RWStringID sid) const;
void removeFunction(RWClassID id);
void removeFunction(RWStringID sid);
RWStringID stringID(RWClassID id) const;
RWClassID classID(RWStringID) const;