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