自動リンク生成

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

次のセクションでは、ソースファイル内の様々な文書化されたエンティティへのリンクを生成する方法を示します。

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

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 using another text\endlink をリンクとして使用したリンク。
列挙型 #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ドキュメントはこちらをクリックしてください。

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