# sphinx-contrib-pygtk / doxylink / doc / index.rst

Doxylink is a Sphinx extension to link to external Doxygen API documentation.

It allows you to specify C++ symbols and it will convert them into links to the HTML page of their Doxygen documentation.

## Usage

:polyvox:Array <PolyVox::Array>.
:polyvox:PolyVox::Volume
You use :qtogre:QtOgre::Log to log events for the user.
:polyvox:tidyUpMemory(int) <tidyUpMemory> will reduce memory usage.
:polyvox:PolyVox::Array::operator[]


Where polyvox and qtogre roles are defined by the :confval:doxylink configuration value.

### Namespaces, classes etc.

For non-functions (i.e. namespaces, classes, enums, variables) you simply pass in the name of the symbol. If you pass in a partial symbol, e.g. Volume when you have a symbol in C++ called PolyVox::Utils::Volume then it would be able to match it as long as there is no ambiguity (e.g. with another symbol called PolyVox::Old::Volume).

### Functions

For functions there is more to be considered due to C++'s ability to overload a function with multiple signatures. If you want to link to a function and either that function is not overloaded or you don't care which version of it you link to, you can simply give the name of the function with no parentheses:

:polyvox:PolyVox::Volume::getVoxelAt


Depending on whether you have set the :confval:add_function_parentheses configuration value, Doxylink will automatically add on parentheses to that it will be printed as PolyVox::Volume::getVoxelAt().

If you want to link to a specific version of the function, you must provide the correct signature. For a requested signature to match on in the tag file, it must exactly match a number of features:

• The types must be correct, including all qualifiers, e.g. unsigned const int
• You must include any pointer or reference labeling, e.g. char*, const QString & or int **
• You must include whether the function is const, e.g. getx() const

The argument list is not whitespace sensitive (any more than C++ is anyway) and the names of the arguments and their default values are ignored so the following are all considered equivalent:

:myapi:foo( const QString & text, bool recalc, bool redraw = true )
:myapi:foo(const QString &foo, bool recalc, bool redraw = true )
:myapi:foo( const QString& text, bool recalc, bool redraw )
:myapi:foo(const QString&,bool,bool)


When making a match, Doxylink splits up the requested string into the function symbol and the argument list. If it finds a match for the function symbol part but not for the argument list then it will return a link to any one of the function versions.

## Setup

When generating your Doxygen documentation, you need to instruct it to create a 'tag' file. This is an XML file which contains the mapping between symbols and HTML files. To make Doxygen create this file ensure that you have a line like:

GENERATE_TAGFILE = PolyVox.tag