.\" %Id% .TH GENCLASS 1 "\*(Dt" "GNU Tools" "GNU Tools" .SH 名称 genclass \- プロトタイプから c++ クラスを生成する .SH 書式 .B genclass -list [proto ...] .br .B genclass -catalog [proto ...] .br .B genclass type1 {ref|val} proto [out_prefix] .br .B genclass -2 type1 {ref|val} type2 {ref, val} proto [out_prefix] .br .B genclass [-usage] [-version] .SH 解説 .B genclass シェルスクリプトプログラムを使うことで、特定のクラスを生成することが できます。 このプログラムは、使用する基底型の種類を指定する引数をとります。 基底型を指定するには二つの引数が必要です。一つ目は基底型の名前で、`int' や `String' のように名前付きの型ならどんなものでもかまいません。 サポートされているのは名前付きの型 だけです。 `int*' のようなものは許されません。 しかし、このようなポインタは適当な typedef を与えること (例えば、出力ファイルを編集して `typedef int* intp;' を含むようにすること) によって 使うことができます。型の名前の後には、基底型の要素を関数に値渡しで渡す か、それとも参照渡しで渡すかを指示する単語 `val' か `ref' のいずれ かを続けねばなりません。 .PP 形式 `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' ディレクトリにあります。 .PP .B genclass ユーティリティは `sed' を使った単純なテキスト置換により実現されていま す。疑似型 `' と `' (型が二つの場合) が現れるすべての場所で、指 定された型に置換されます。また、`' と `' が現れるすべての場所 で、`val' が指定された場合は単に型そのものに置換され、`ref' が指定され た場合は型の後ろに "&" がついたものに置換されます。 .SH 関連ファイル /usr/share/libg++/ 標準 g++ プロトタイプディレクトリ .SH 環境変数 PROTODIR 標準 g++ プロトタイプディレクトリ .SH 関連項目 .BR g++(1) .br The GNU C++ ライブラリ Texinfo ドキュメント file:/usr/share/info/libg++ .SH 作者 Doug Lea (dl@rocky.oswego.edu), Wendell C. Baker. このマニュアルは GNU C++ ライブラリの Texinfo ドキュメントに基づいています。