latest release v1.5.9 - last update 14 Feb 2011 |
グループ化doxygen には、物事をまとめてグループ化するためのメカニズムが 3つあります。 1つ目は、グローバルなレベルで動作して、各グループごとに新しいページを作成します。 これらのグループは、ドキュメントでは「モジュール」と呼ばれています。 2つ目のメカニズムは、何らかの複合体 (compound) に属するメンバーリスト内で動作するものであり、 「メンバーグループ」と呼ばれています。 ページに対して、サブページ化を扱う 3つ目のメカニズムがあります。 モジュールモジュールは、独立した1つのページ上に事物をまとめてグループ化するための方法です。 個々のメンバーと同様、グループそのものにもドキュメント付けをすることができます。 グループに属するメンバーには、ファイル、名前空間、クラス、関数、 変数、enum、typedef、define があります。また、他のグループが メンバーになることもできます。 グループを定義するには、専用コメント・ブロック内に、 \defgroup コマンドを置く必要があります。 コマンドの最初の引数は、グループを一意に識別するためのラベルです。 2番目の引数は、ドキュメントに現れる、グループの名前またはタイトルです。 コマンドを置くことにより、その実体を特定のグループのメンバーにすることができます。 各メンバーのドキュメントに \ingroup を置くのを避けるために、 グループの前に置いた開標識 グループそのものも、これらグループ化用ラベルを使ってネストできます。 同じグループラベルを二度使うとエラーメッセージが出ます。 ユニークなラベルを使わないようにするには、\defgroup でなく \addtogroup を使えます。 これは \defgroup と同様な使い方ができますが、 グループが既に定義されている場合には、暗黙のうちに既存のドキュメントと 新しいドキュメントをマージします。 このコマンドではグループのタイトルはオプションなので、他でより細かく 定義されているグループにメンバーを追加するには、次のようにできます。 /** \addtogroup <label> */ /*\@{*/ /*\@}*/ 複合要素 (クラス、ファイル、名前空間) は、複数のグループに挿入できますが、 メンバー (変数、関数、型定義、列挙型) は1グループのメンバーにしかなれません。 (この制限は、メンバーが、その属するクラス、名前空間、ファイルの文脈中では ドキュメント付けされていないがグループの一部としては現れる場合に、 あいまいなリンクを避けるのに有用です) doxygen は、定義の "優先度" が最も高いグループにメンバーを属させます。 例えば、明示的な \ingroup は、 次の例では、VarInA はグループ A に入り、IntegerVariable を IntVariables に入れることで問題を自動的に解決しています。IntegerVariable の2番目には ドキュメント付けされていないからです。 /** * \ingroup A */ extern int VarInA; /** * \defgroup IntVariables Global integer variables */ /*@{*/ /** an integer variable */ extern int IntegerVariable; /*@}*/ .... /** * \defgroup Variables Global variables */ /*@{*/ /** a variable in group A */ int VarInA; int IntegerVariable; /*@}*/ \ref コマンドは、グループを参照するのに使えます。 \ref command コマンドの第一引数は、グループのラベルです。 custom リンク名を使うには、次に示すように、ラベルの後に二重引用符の間に リンク名を入れてください。 This is the \ref group_label "link" to this group. グループ定義の優先度を高い順に示します。 \ingroup, \defgroup, \addtogroup, \weakgroup 最後のコマンドは、\addtogroup とよく似ていますが、 優先度は低いです。このコマンドは "lazy(ゆるい)" グループ定義ができるように追加 されました。序列を定義するには .h ファイルに優先度の高いコマンドを使い、 .c ファイルには \weakgroup を使えば、 序列を正確に繰り返さなくてもよいのです。
メンバーグループ複合体 (compound; たとえば、クラスやファイル) が数多くのメンバーを持っているとき、 しばしば、それらをまとめてグループ化したくなります。 doxygen は、すでに型や保護レベルに基づいて事物を自動的にグループ化しているのですが、 ユーザとしては、グループ化が十分でなかったり、あるいは間違っていると 感じることがあるかもしれません。 たとえば、(構文的に) 型の異なるメンバーが、 (意味的に) 同じグループに属している、という理由で。 メンバーグループは、 //@{ ... //@} というブロック、または、Cスタイルのコメントを好むなら、 /*@{*/ ... /*@}*/ というブロックによって定義されます。グループのメンバーは、 物理的に、メンバーグループの本体内に存在する必要があるということに注意してください。 ブロックの開標識の前に、独立したコメント・ブロックを置くこともできます。 このブロックは、@name (または、\name) コマンドを含む必要があり、グループのヘッダーを指定します。 そうしたければ、グループに関するより詳しい情報をコメント・ブロックに含めることもできます。 メンバーグループはネストできません。 クラス内のあるメンバーグループに属する全メンバーが、 同じ型を持ち、かつ同じ保護レベル (たとえば、すべてが静的な公開メンバー) にある場合、 そのメンバーグループ全体が、その型/保護レベルのグループのサブグループとして表示されます (たとえば、そのグループは、 「静的な公開メンバー」セクションのサブセクションとして表示される)。 2つ以上のメンバーが異なる型を持つ場合は、グループは、 自動的に生成されるグループと同じレベルに置かれます。 もし、クラス内の全メンバーグループがトップレベルになるよう強制したいのなら、 クラスのドキュメントの内部に、 \nosubgrouping コマンドを置く必要があります。
ここで、Group1 は、「公開メンバー」のサブセクションとして表示されています。 また、Group2 は、異なった保護レベル (すなわち、公開および限定公開) にあるメンバーを含んでいるので、独立したセクションになっています。 サブページ情報は、\page と \mainpage コマンドを使って ページにグループ化できます。普通はページの平準なりストができ、 "メイン"ページはリストの最初になります。 セクション modules で述べた方法を使って構造体を加えるより、 \subpage コマンドを使ってページに構造体を加えるほうが、 自然で便利です。 ページAについて、\subpage コマンドは他のページBへのリンクを作り、同時に ページBはページAのサブページとなります。これによって、グループGA,GBができ、 GBはGAの一部で、ページAはグループGA、ページBはグループGBに属します。 次 のセクションに行く / インデックス に戻る |
|
This page was last modified on 14 Feb 2011.
© 1997-2010 Dimitri van Heesch, first release 27 oct 1997.
© 2001 OKA Toshiyuki (Japanese translation). © 2006-2011 TSUJI Takahiro (Japanese translation). © 2006-2011 TAKAGI Nobuhisa (Japanese translation). |