GENCLASS(1)

名称
genclass - プロトタイプから c++ クラスを生成する

書式
genclass -list [proto ...]
genclass -catalog [proto ...]
genclass type1 {ref|val} proto [out_prefix]
genclass -2 type1 {ref|val} type2 {ref, val} proto [out_prefix]
genclass [-usage] [-version]

解説
genclass シェルスクリプトプログラムを使うことで、特定のクラスを生成することが できます。 このプログラムは、使用する基底型の種類を指定する引数をとります。 基底型を指定するには二つの引数が必要です。一つ目は基底型の名前で、`int' や `String' のように名前付きの型ならどんなものでもかまいません。 サポートされているのは名前付きの型 だけです。 `int*' のようなものは許されません。 しかし、このようなポインタは適当な typedef を与えること (例えば、出力ファイルを編集して `typedef int* intp;' を含むようにすること) によって 使うことができます。型の名前の後には、基底型の要素を関数に値渡しで渡す か、それとも参照渡しで渡すかを指示する単語 `val' か `ref' のいずれ かを続けねばなりません。

形式 `genclass base [val,ref] proto' を使って基本コンテナクラスを 指定できます。`proto' は、生成されるクラス名です。 辞書(dictionary)や写像(map)のような二つの型を必要とするコンテナクラス は、`genclass -2 keytype [val, ref], basetype [val, ref] proto' として指定され、キーの型を先に、中身の型を二番目に指定します。 出力されるクラス名とファイル名は、プロトタイプ名の前に指定した型の名前を 付けて生成されます。ただしファイル名部分はドット(.)で分離されます。 例えば `genclass int val List' は、ファイル `int.List.h' と `int.List.cc' の中にクラス `intList' を生成します。 `genclass -2 String ref int val VHMap' は、(ぶざまだがやむを得ない) クラス名 `StringintVHMap' を生成します。もちろん、 プログラマは `typedef' を使っても良いし、単に編集してもっと適当な名前を 作ってもかまいません。ファイル名の中をドットで分けておくことで、GNU make の自動コンフィギュレーションと再コンパイル機能を利用することができます。 このような特性を有効に活用している Makefile の例は `libg++/proto-kit' ディレクトリにあります。

genclass ユーティリティは `sed' を使った単純なテキスト置換により実現されていま す。疑似型 `<T>' と `<C>' (型が二つの場合) が現れるすべての場所で、指 定された型に置換されます。また、`<T&>' と `<C&>' が現れるすべての場所 で、`val' が指定された場合は単に型そのものに置換され、`ref' が指定され た場合は型の後ろに "&" がついたものに置換されます。

関連ファイル
/usr/share/libg++/ 標準 g++ プロトタイプディレクトリ

環境変数
PROTODIR 標準 g++ プロトタイプディレクトリ

関連項目
g++(1)
The GNU C++ ライブラリ Texinfo ドキュメント file:/usr/share/info/libg++

作者
Doug Lea (dl@rocky.oswego.edu), Wendell C. Baker. このマニュアルは GNU C++ ライブラリの Texinfo ドキュメントに基づいています。