doc/ja/man/man1/genclass.1
Hiroyuki Hanai 6d1da94b7a Now, Japanese manuals are for 2.2-980309-SNAP.
Reviewed by: Japanese Manual Project <man-jp@jp.FreeBSD.ORG>
Submitted by: Kazuo Horikawa <horikawa@jp.freebsd.org>
1998-03-14 16:25:45 +00:00

64 lines
2.7 KiB
Groff

.\" %Id: genclass.1,v 1.1 1997/09/15 19:18:59 wosch Exp %
.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' を使った単純なテキスト置換により実現されていま
す。疑似型 `<T>' と `<C>' (型が二つの場合) が現れるすべての場所で、指
定された型に置換されます。また、`<T&>' と `<C&>' が現れるすべての場所
で、`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 ドキュメントに基づいています。