自動リンク生成

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

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

Webページとメールアドレスへのリンク

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

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

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

クラスへのリンク

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

ファイルへのリンク

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

関数へのリンク

以下のいずれかのパターンが見つかると、関数へのリンクが作成されます。

  1. <関数名>"("<引数リスト>")"
  2. <関数名>"()"
  3. "::"<関数名>
  4. (<クラス名>"::")n<関数名>"("<引数リスト>")"
  5. (<クラス名>"::")n<関数名>"("<引数リスト>")"<修飾子>
  6. (<クラス名>"::")n<関数名>"()"
  7. (<クラス名>"::")n<関数名>

ここで 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 ともリンクできます。
コンストラクタへのリンク: #Autolink_Test() および Autolink_Test()。
デストラクタへのリンクは: #~Autolink_Test および ~Autolink_Test()。
このクラスのメンバーへのリンク: member()。
オーバーロードされた各メンバーへのより具体的なリンク
member(int) および member(int,int)。
変数 #var へのリンク。
グローバル typedef ::B へのリンク。
グローバル列挙型 #GlobEnum へのリンク。
define ABS(x) へのリンク。
別のテキストをリンクとして使用した変数 \link #var へのリンク。
列挙型 #EType へのリンク。
いくつかの列挙値へのリンク: \link Autolink_Test::Val1 Val1 \endlink および ::GVal1。
そして最後に、ファイルへのリンク: autolink.cpp。
\sa see also セクション内では、すべての単語がチェックされるため、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ドキュメントはこちらをクリックしてください。

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