自動リンク生成

ほとんどのドキュメンテーションシステムには、ドキュメントの他の部分へのリンクを挿入できる特別な「関連項目」セクションがあります。Doxygenにもそのようなセクションを開始するコマンド (\sa セクションを参照) がありますが、ドキュメント内の任意の場所にこのようなリンクを配置することができます。{\LaTeX} ドキュメントの場合、リンクの代わりにページ番号への参照が記述されます。さらに、ドキュメントの最後にある索引を使用すると、メンバー、クラス、名前空間、またはファイルのドキュメントをすばやく見つけることができます。manページの場合、参照情報は生成されません。

次のセクションでは、ソースファイル内の様々なドキュメント化されたエンティティへのリンクを生成する方法について説明します。

ウェブページとメールアドレスへのリンク

Doxygenは、ドキュメント内で見つかったすべてのURLとメールアドレスを自動的にリンク(HTML内)に置き換えます。リンクテキストを手動で指定するには、HTMLの 'a' タグを使用してください。

<a href="linkURL">link text</a> 

これはDoxygenによって他の出力形式に自動的に変換されます。

クラスへのリンク

ドキュメント内の単語で、ドキュメント化されたクラスに対応し、少なくとも1つの非小文字が含まれている場合、そのクラスのドキュメントを含むページへのリンクに自動的に置き換えられます。ドキュメント化されたクラスに対応する単語がリンクに置き換えられるのを防ぎたい場合は、単語の前に % を付けてください。すべて小文字の記号にリンクするには、\ref を使用してください。

ファイルへのリンク

単語の最後の文字ではないドット (.) を含むすべての単語は、ファイル名と見なされます。単語が実際にドキュメント化された入力ファイルの名前である場合、そのファイルのドキュメントへのリンクが自動的に作成されます。

関数へのリンク

関数へのリンクは、次のパターンのいずれかが検出された場合に作成されます。

  1. <functionName>"("<argument-list>")"
  2. <functionName>"()"
  3. "::"<functionName>
  4. (<className>"::")n<functionName>"("<argument-list>")"
  5. (<className>"::")n<functionName>"("<argument-list>")"<modifiers>
  6. (<className>"::")n<functionName>"()"
  7. (<className>"::")n<functionName>

ここで n>0。

注 1
関数の引数は、正しい型で指定する必要があります。例えば、'fun(const std::string&,bool)' または '()' は任意のプロトタイプに一致します。
注 2
メンバー関数の修飾子 ('const' や 'volatile' など) は、ターゲットを識別するために必要です。例えば、'func(int) const' と 'func(int)' は異なるメンバー関数をターゲットにします。
注 3
Javadocとの互換性のため、上記のパターンでは :: の代わりに # を使用できます。
注 4
メンバー foo を含むクラスのドキュメントでは、グローバル変数への参照は "::foo" を使用して行われますが、#foo はメンバーにリンクします。

オーバーロードされていないメンバーの場合、引数リストは省略できます。

関数がオーバーロードされており、一致する引数リストが指定されていない場合 (つまり、パターン 2 または 6 が使用されている場合)、オーバーロードされたメンバーのいずれかのドキュメントへのリンクが作成されます。

メンバー関数の場合、クラススコープ (パターン 4 から 7 で使用されている) は、次の場合に省略できます。

  1. パターンが、パターンを含むドキュメントブロックと同じクラスに属するドキュメント化されたメンバーを指している場合。
  2. パターンを含むドキュメントブロックに対応するクラスに、パターンに一致するドキュメント化されたメンバーを含む基底クラスがある場合。

その他のメンバーへのリンク

これらのエンティティはすべて、前のセクションで説明したのと同じ方法でリンクできます。分かりやすくするために、この場合はパターン 3 と 7 のみを使用することをお勧めします。

/*! \file autolink.cpp
自動リンク生成のテスト。
Autolink_Testクラスのメンバーへのリンク: Autolink_Test::member,
オーバーロードされた各メンバーへのより具体的なリンク
Autolink_Test::member(int) および Autolink_Test#member(int,int)
Autolink_Testの保護されたメンバー変数へのリンク: Autolink_Test#var,
グローバル列挙型 #GlobEnum へのリンク。
define #ABS(x) へのリンク。
Autolink_Testクラスのデストラクタへのリンク: Autolink_Test::~Autolink_Test,
typedef ::B へのリンク。
列挙型 Autolink_Test::EType へのリンク
いくつかの列挙値 Autolink_Test::Val1 および ::GVal2 へのリンク
*/
/*!
このドキュメントブロックはクラス Autolink_Test に属しているため、リンクは生成されません。
Autolink_Test は生成されません。
コンストラクタへのリンク方法は2つあります: #Autolink_Test および Autolink_Test()。
デストラクタへのリンクは: #~Autolink_Test および ~Autolink_Test()。
このクラスのメンバーへのリンク: member()。
オーバーロードされた各メンバーへのより具体的なリンク
member(int) および member(int,int)。
変数 #var へのリンク。
グローバル typedef ::B へのリンク。
グローバル列挙型 #GlobEnum へのリンク。
define ABS(x) へのリンク。
変数 \link #var using another text\endlink へのリンク。
列挙型 #EType へのリンク。
いくつかの列挙値へのリンク: \link Autolink_Test::Val1 Val1 \endlink および ::GVal1。
そして最後に、ファイル autolink.cpp へのリンク。
\sa 「関連項目」セクション内では、すべての単語がチェックされるため、EType,
Val1, GVal1, ~Autolink_Test および member は HTML 内のリンクに置き換えられます。
*/
class Autolink_Test
{
public:
Autolink_Test(); //!< コンストラクタ
~Autolink_Test(); //!< デストラクタ
void member(int); /**< メンバー関数。詳細。 */
void member(int,int); /**< オーバーロードされたメンバー関数。詳細 */
/** 列挙型。詳細 */
enum EType {
Val1, /**< 列挙値 1 */
Val2 /**< 列挙値 2 */
};
protected:
int var; /**< メンバー変数 */
};
/*! 詳細。 */
Autolink_Test::Autolink_Test() { }
/*! 詳細。 */
Autolink_Test::~Autolink_Test() { }
/*! グローバル変数。 */
int globVar;
/*! グローバル列挙型。 */
enum GlobEnum {
GVal1, /*!< グローバル列挙値 1 */
GVal2 /*!< グローバル列挙値 2 */
};
/*!
* マクロ定義。
*/
#define ABS(x) (((x)>0)?(x):-(x))
typedef Autolink_Test B;
/*! \fn typedef Autolink_Test B
* 型定義。
*/
Doxygenによって生成された対応するHTMLドキュメントについては、こちらをクリックしてください。

typedef

クラス、構造体、および共用体を含む typedef は、次のように

typedef struct StructName TypeName

StructName のエイリアスを作成するため、StructName 自体または TypeName が検出されたときに、StructName へのリンクが生成されます。

/*! \file restypedef.cpp
* typedef の解決の例。
*/
/*! \struct CoordStruct
* 座標ペア。
*/
struct CoordStruct
{
/*! x 座標 */
float x;
/*! y 座標 */
float y;
};
/*! CoordStruct の型名を作成します */
typedef CoordStruct Coord;
/*!
* この関数は、\a c1 と \a c2 の加算、つまり
* (c1.x+c2.x,c1.y+c2.y)
*/
Coord add(Coord c1,Coord c2)
{
}
Doxygenによって生成された対応するHTMLドキュメントについては、こちらをクリックしてください。

次のセクションに進むか、インデックスに戻ります。