<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <title>Automatic link generation</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> $(document).ready(initResizable); </script> <link href="doxygen_manual.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <!-- end header part --> <!-- Generated by Doxygen 1.8.1.1 --> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> $(document).ready(function(){initNavTree('autolink.html','');}); </script> <div id="doc-content"> <div class="header"> <div class="headertitle"> <div class="title">Automatic link generation </div> </div> </div><!--header--> <div class="contents"> <div class="toc"><h3>Table of Contents</h3> <ul><li class="level1"><a href="#linkurl">Links to web pages and mail addresses</a></li> <li class="level1"><a href="#linkclass">Links to classes</a></li> <li class="level1"><a href="#linkfile">Links to files</a></li> <li class="level1"><a href="#linkfunc">Links to functions</a></li> <li class="level1"><a href="#linkother">Links to other members</a></li> <li class="level1"><a href="#resolving">typedefs</a></li> </ul> </div> <div class="textblock"><p>Most documentation systems have special `see also' sections where links to other pieces of documentation can be inserted. Although doxygen also has a command to start such a section (See section <a class="el" href="commands.html#cmdsa">\sa</a>), it does allow you to put these kind of links anywhere in the documentation. For <img class="formulaInl" alt="$\mbox{\LaTeX}$" src="form_0.png"/> documentation a reference to the page number is written instead of a link. Furthermore, the index at the end of the document can be used to quickly find the documentation of a member, class, namespace or file. For man pages no reference information is generated.</p> <p>The next sections show how to generate links to the various documented entities in a source file.</p> <h1><a class="anchor" id="linkurl"></a> Links to web pages and mail addresses</h1> <p>Doxygen will automatically replace any URLs and mail addresses found in the documentation by links (in HTML). To manually specify link text, use the HTML '<code>a</code>' tag: </p> <pre class="fragment"><a href="linkURL">link text</a> </pre><p> which will be automatically translated to other output formats by Doxygen.</p> <h1><a class="anchor" id="linkclass"></a> Links to classes</h1> <p>All words in the documentation that correspond to a documented class and contain at least one non-lower case character will automatically be replaced by a link to the page containing the documentation of the class. If you want to prevent that a word that corresponds to a documented class is replaced by a link you should put a % in front of the word. To link to an all lower case symbol, use <a class="el" href="commands.html#cmdref">\ref</a>.</p> <h1><a class="anchor" id="linkfile"></a> Links to files</h1> <p>All words that contain a dot (<code>.</code>) that is not the last character in the word are considered to be file names. If the word is indeed the name of a documented input file, a link will automatically be created to the documentation of that file.</p> <h1><a class="anchor" id="linkfunc"></a> Links to functions</h1> <p>Links to functions are created if one of the following patterns is encountered: </p> <ol> <li> <code><functionName>"("<argument-list>")"</code> </li> <li> <code><functionName>"()"</code> </li> <li> <code>"::"<functionName></code> </li> <li> <code>(<className>"::")<sup>n</sup><functionName>"("<argument-list>")"</code> </li> <li> <code>(<className>"::")<sup>n</sup><functionName>"("<argument-list>")"<modifiers></code> </li> <li> <code>(<className>"::")<sup>n</sup><functionName>"()"</code> </li> <li> <code>(<className>"::")<sup>n</sup><functionName></code> </li> </ol> <p>where n>0.</p> <dl class="section user"><dt>Note 1: </dt><dd>Function arguments should be specified with correct types, i.e. 'fun(const std::string&,bool)' or '()' to match any prototype. </dd></dl> <dl class="section user"><dt>Note 2:</dt><dd>Member function modifiers (like 'const' and 'volatile') are required to identify the target, i.e. 'func(int) const' and 'fun(int)' target different member functions. </dd></dl> <dl class="section user"><dt>Note 3: </dt><dd>For JavaDoc compatibility a # may be used instead of a :: in the patterns above. </dd></dl> <dl class="section user"><dt>Note 4:</dt><dd>In the documentation of a class containing a member foo, a reference to a global variable is made using "::foo", whereas #foo will link to the member.</dd></dl> <p>For non overloaded members the argument list may be omitted.</p> <p>If a function is overloaded and no matching argument list is specified (i.e. pattern 2 or 6 is used), a link will be created to the documentation of one of the overloaded members.</p> <p>For member functions the class scope (as used in patterns 4 to 7) may be omitted, if: </p> <ol> <li> The pattern points to a documented member that belongs to the same class as the documentation block that contains the pattern. </li> <li> The class that corresponds to the documentation blocks that contains the pattern has a base class that contains a documented member that matches the pattern. </li> </ol> <h1><a class="anchor" id="linkother"></a> Links to other members</h1> <p>All of these entities can be linked to in the same way as described in the previous section. For sake of clarity it is advised to only use patterns 3 and 7 in this case.</p> <dl class="section user"><dt>Example:</dt><dd><pre class="fragment">/*! \file autolink.cpp Testing automatic link generation. A link to a member of the Test class: Test::member, More specific links to the each of the overloaded members: Test::member(int) and Test#member(int,int) A link to a protected member variable of Test: Test#var, A link to the global enumeration type #GlobEnum. A link to the define #ABS(x). A link to the destructor of the Test class: Test::~Test, A link to the typedef ::B. A link to the enumeration type Test::EType A link to some enumeration values Test::Val1 and ::GVal2 */ /*! Since this documentation block belongs to the class Test no link to Test is generated. Two ways to link to a constructor are: #Test and Test(). Links to the destructor are: #~Test and ~Test(). A link to a member in this class: member(). More specific links to the each of the overloaded members: member(int) and member(int,int). A link to the variable #var. A link to the global typedef ::B. A link to the global enumeration type #GlobEnum. A link to the define ABS(x). A link to a variable \link #var using another text\endlink as a link. A link to the enumeration type #EType. A link to some enumeration values: \link Test::Val1 Val1 \endlink and ::GVal1. And last but not least a link to a file: autolink.cpp. \sa Inside a see also section any word is checked, so EType, Val1, GVal1, ~Test and member will be replaced by links in HTML. */ class Test { public: Test(); //!< constructor ~Test(); //!< destructor void member(int); /**< A member function. Details. */ void member(int,int); /**< An overloaded member function. Details */ /** An enum type. More details */ enum EType { Val1, /**< enum value 1 */ Val2 /**< enum value 2 */ }; protected: int var; /**< A member variable */ }; /*! details. */ Test::Test() { } /*! details. */ Test::~Test() { } /*! A global variable. */ int globVar; /*! A global enum. */ enum GlobEnum { GVal1, /*!< global enum value 1 */ GVal2 /*!< global enum value 2 */ }; /*! * A macro definition. */ #define ABS(x) (((x)>0)?(x):-(x)) typedef Test B; /*! \fn typedef Test B * A type definition. */ </pre> Click <a href="../examples/autolink/html/index.html">here</a> for the corresponding HTML documentation that is generated by Doxygen. </dd></dl> <h1><a class="anchor" id="resolving"></a> typedefs</h1> <p>Typedefs that involve classes, structs and unions, like </p> <pre class="fragment">typedef struct StructName TypeName </pre><p> create an alias for StructName, so links will be generated to StructName, when either StructName itself or TypeName is encountered.</p> <dl class="section user"><dt>Example:</dt><dd><pre class="fragment">/*! \file restypedef.cpp * An example of resolving typedefs. */ /*! \struct CoordStruct * A coordinate pair. */ struct CoordStruct { /*! The x coordinate */ float x; /*! The y coordinate */ float y; }; /*! Creates a type name for CoordStruct */ typedef CoordStruct Coord; /*! * This function returns the addition of \a c1 and \a c2, i.e: * (c1.x+c2.x,c1.y+c2.y) */ Coord add(Coord c1,Coord c2) { } </pre> Click <a href="../examples/restypedef/html/restypedef_8cpp.html">here</a> for the corresponding HTML documentation that is generated by Doxygen. </dd></dl> </div></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1.1 </li> </ul> </div> </body> </html>