Doxygen: Installation

Doxygen
Installation

Table of Contents

  • Compiling from source on UNIX
  • Installing the binaries on UNIX
  • Known compilation problems for UNIX
  • Compiling from source on Windows
  • Installing the binaries on Windows
  • Tools used to develop doxygen

First go to the download page to get the latest distribution, if you have not downloaded doxygen already.

Compiling from source on UNIX

If you downloaded the source distribution, you need at least the following to build the executable:

  • The GNU tools flex, bison, libiconv and GNU make, and strip
  • In order to generate a Makefile for your platform, you need perl
  • The configure script assume the availability of standard UNIX tools such as sed, date, find, uname, mv, cp, cat, echo, tr, cd and rm.

To take full advantage of doxygen's features the following additional tools should be installed.

  • Qt Software's GUI toolkit Qt version 4.3 or higher (but currently, Qt 5.x is not supported). This is needed to build the GUI front-end doxywizard.
  • A [image] distribution: for instance TeX Live This is needed for generating [image], Postscript, and PDF output.
  • the Graph visualization toolkit version 1.8.10 or higher Needed for the include dependency graphs, the graphical inheritance graphs, and the collaboration graphs. If you compile graphviz yourself, make sure you do include freetype support (which requires the freetype library and header files), otherwise the graphs will not render proper text labels.
  • For formulas or if you do not wish to use `pdflatex, the ghostscript interpreter is needed. You can find it at www.ghostscript.com.
  • In order to generate doxygen's own documentation, Python is needed, you can find it at www.python.org.

Compilation is now done by performing the following steps:

  1. Unpack the archive, unless you already have done that:

    gunzip doxygen-$VERSION.src.tar.gz    # uncompress the archive
tar xf doxygen-$VERSION.src.tar       # unpack it

  2. Run the configure script:

    sh ./configure

    The script tries to determine the platform you use, the make tool (which must be GNU make) and the perl interpreter. It will report what it finds.

    To override the auto detected platform and compiler you can run configure as follows:

    configure --platform platform-type

    See the PLATFORMS file for a list of possible platform options.

    If you have Qt-4.3 or higher installed and want to build the GUI front-end, you should run the configure script with the --with-doxywizard option:

    configure --with-doxywizard

    For an overview of other configuration options use

    configure --help

  3. Compile the program by running make:

    make

    The program should compile without problems and the binaries (doxygen and optionally doxywizard) should be available in the bin directory of the distribution.

  4. Optional: Generate the user manual.

    make docs

    To let doxygen generate the HTML documentation.

    The HTML directory of the distribution will now contain the html documentation (just point a HTML browser to the file index.html in the html directory). You will need the python interpreter for this.

  5. Optional: Generate a PDF version of the manual (you will need pdflatex, makeindex, and egrep for this).

    make pdf

    The PDF manual doxygen_manual.pdf will be located in the latex directory of the distribution. Just view and print it via the acrobat reader.

Installing the binaries on UNIX

After the compilation of the source code do a make install to install doxygen. If you downloaded the binary distribution for UNIX, type:

./configure
make install

Binaries are installed into the directory <prefix>/bin. Use make install_docs to install the documentation and examples into <docdir>/doxygen.

<prefix> defaults to /usr/local but can be changed with the --prefix option of the configure script. The default <docdir> directory is <prefix>/share/doc/packages and can be changed with the --docdir option of the configure script.

Alternatively, you can also copy the binaries from the bin directory manually to some bin directory in your search path. This is sufficient to use doxygen.

Note
You need the GNU install tool for this to work (it is part of the coreutils package). Other install tools may put the binaries in the wrong directory!

If you have a RPM or DEP package, then please follow the standard installation procedure that is required for these packages.

Known compilation problems for UNIX

Qt problems

The Qt include files and libraries are not a subdirectory of the directory pointed to by QTDIR on some systems (for instance on Red Hat 6.0 includes are in /usr/include/qt and libs are in /usr/lib).

The solution: go to the root of the doxygen distribution and do:

mkdir qt
cd qt
ln -s your-qt-include-dir-here include
ln -s your-qt-lib-dir-here lib
ln -s your-qt-bin-dir-here bin
export QTDIR=$PWD

If you have a csh-like shell you should use setenv QTDIR $PWD instead of the export command above.

Now install doxygen as described above.

Bison problems

Versions 1.31 to 1.34 of bison contain a "bug" that results in a compiler errors like this:

ce_parse.cpp:348: member `class CPPValue yyalloc::yyvs' with constructor not allowed in union

This problem has been solved in version 1.35 (versions before 1.31 will also work).

Sun compiler problems

It appears that doxygen doesn't work properly if it is compiled with Sun's C++ WorkShop Compiler. I cannot verify this myself as I do not have access to a Solaris machine with this compiler. With GNU compiler it does work and installing Sun patch 111679-13 has also been reported as a way to fix the problem.

when configuring with --static I got:

Undefined                       first referenced
 symbol                             in file
dlclose                             /usr/lib/libc.a(nss_deffinder.o)
dlsym                               /usr/lib/libc.a(nss_deffinder.o)
dlopen                              /usr/lib/libc.a(nss_deffinder.o)

Manually adding -Bdynamic after the target rule in Makefile.doxygen will fix this:

$(TARGET): $(OBJECTS) $(OBJMOC)
        $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) -Bdynamic

GCC compiler problems

Older versions of the GNU compiler have problems with constant strings containing characters with character codes larger than 127. Therefore the compiler will fail to compile some of the translator_xx.h files. A workaround, if you are planning to use the English translation only, is to configure doxygen with the --english-only option.

On some platforms (such as OpenBSD) using some versions of gcc with -O2 can lead to eating all memory during the compilation of files such as config.cpp. As a workaround use --debug as a configure option or omit the -O2 for the particular files in the Makefile.

Gcc versions before 2.95 may produce broken binaries due to bugs in these compilers.

Dot problems

Due to a change in the way image maps are generated, older versions of doxygen (<=1.2.17) will not work correctly with newer versions of graphviz (>=1.8.8). The effect of this incompatibility is that generated graphs in HTML are not properly clickable. For doxygen 1.3 it is recommended to use at least graphviz 1.8.10 or higher. For doxygen 1.4.7 or higher it is recommended to use GraphViz 2.8 or higher to avoid font issues.

Red Hat 9.0 problems

If you get the following error after running make

tmake error: qtools.pro:70: Syntax error

then first type

export LANG=

before running make.

Compiling from source on Windows

From version 1.7.0 onwards, build files are provided for Visual Studio 2008. Also the free (as in beer) "Express" version of Developer Studio can be used to compile doxygen. Alternatively, you can compile doxygen the UNIX way using Cygwin or MinGW.

The next step is to install modern versions of bison and flex (see http://sourceforge.net/projects/winflexbison. After installation and adding them to your path rename win_flex.exe to flex.exe and win_bison.exe to bison.exe) Furthermore you have to install python (version 2, see http://www.python.org). These packages are needed during the compilation process if you use a GitHub snapshot of doxygen (the official source releases come with pre-generated sources).

Download doxygen's source tarball and put it somewhere (e.g. use c:\tools)

Now start a new command shell and type

cd c:\tools
tar zxvf doxygen-x.y.z.src.tar.gz

to unpack the sources (you can obtain tar from e.g. http://gnuwin32.sourceforge.net/packages.html). Alternatively you can use an unpack program, like 7-Zip (see http://www.7-zip.org) or use the build in unpack feature of modern Windows systems).

Now your environment is setup to build doxygen.

Inside the doxygen-x.y.z directory you will find a winbuild directory containing a Doxygen.sln file. Open this file in Visual Studio. You can now build the Release or Debug flavor of Doxygen by right-clicking the project in the solutions explorer, and selecting Build.

Note that compiling Doxywizard currently requires Qt version 4 (see http://qt-project.org/).

Also read the next section for additional tools you may need to install to run doxygen with certain features enabled.

Installing the binaries on Windows

Doxygen comes as a self-installing archive, so installation is extremely simple. Just follow the dialogs.

After installation it is recommended to also download and install GraphViz (version 2.20 or better is highly recommended). Doxygen can use the dot tool of the GraphViz package to render nicer diagrams, see the HAVE_DOT option in the configuration file.

If you want to produce compressed HTML files (see GENERATE_HTMLHELP) in the config file, then you need the Microsoft HTML help workshop. You can download it from Microsoft.

If you want to produce Qt Compressed Help files (see QHG_LOCATION) in the config file, then you need qhelpgenerator which is part of Qt. You can download Qt from Qt Software Downloads.

In order to generate PDF output or use scientific formulas you will also need to install LaTeX and Ghostscript.

For [image] a number of distributions exists. Popular ones that should work with doxygen are MikTex and proTeXt.

Ghostscript can be downloaded from Sourceforge.

After installing [image] and Ghostscript you'll need to make sure the tools latex.exe, pdflatex.exe, and gswin32c.exe are present in the search path of a command box. Follow these instructions if you are unsure and run the commands from a command box to verify it works.

Tools used to develop doxygen

Doxygen was developed and tested under Linux & MacOSX using the following open-source tools:

  • GCC version 4.6.3 (Linux) and 4.2.1 (MacOSX)
  • GNU flex version 2.5.35
  • GNU bison version 2.5 (Linux) and 2.3 (MacOSX)
  • GNU make version 3.81
  • Perl version 5.12
  • TeX Live 2009 (or later)

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:42 for Doxygen by doxygen 1.8.7


Doxygen: Getting started

Doxygen
Getting started

Table of Contents

  • Step 0: Check if doxygen supports your programming language
  • Step 1: Creating a configuration file
  • Step 2: Running doxygen
    • HTML output
    • LaTeX output
    • RTF output
    • XML output
    • Man page output
    • DocBook output
  • Step 3: Documenting the sources

The executable doxygen is the main program that parses the sources and generates the documentation. See section Doxygen usage for more detailed usage information.

Optionally, the executable doxywizard can be used, which is a graphical front-end for editing the configuration file that is used by doxygen and for running doxygen in a graphical environment. For Mac OS X doxywizard will be started by clicking on the Doxygen application icon.

The following figure shows the relation between the tools and the flow of information between them (it looks complex but that's only because it tries to be complete):

Doxygen information flow

Step 0: Check if doxygen supports your programming language

First, assure that your programming language has a reasonable chance of being recognized by Doxygen. These languages are supported by default: C, C++, C#, Objective-C, IDL, Java, VHDL, PHP, Python, Tcl, Fortran, and D. It is possible to configure certain file type extensions to use certain parsers: see the Configuration/ExtensionMappings for details. Also, completely different languages can be supported by using preprocessor programs: see the Helpers page for details.

Step 1: Creating a configuration file

Doxygen uses a configuration file to determine all of its settings. Each project should get its own configuration file. A project can consist of a single source file, but can also be an entire source tree that is recursively scanned.

To simplify the creation of a configuration file, doxygen can create a template configuration file for you. To do this call doxygen from the command line with the -g option:

doxygen -g <config-file>

where <config-file> is the name of the configuration file. If you omit the file name, a file named Doxyfile will be created. If a file with the name <config-file> already exists, doxygen will rename it to <config-file>.bak before generating the configuration template. If you use - (i.e. the minus sign) as the file name then doxygen will try to read the configuration file from standard input (stdin), which can be useful for scripting.

The configuration file has a format that is similar to that of a (simple) Makefile. It consists of a number of assignments (tags) of the form:

TAGNAME = VALUE or
TAGNAME = VALUE1 VALUE2 ...

You can probably leave the values of most tags in a generated template configuration file to their default value. See section Configuration for more details about the configuration file.

If you do not wish to edit the config file with a text editor, you should have a look at doxywizard, which is a GUI front-end that can create, read and write doxygen configuration files, and allows setting configuration options by entering them via dialogs.

For a small project consisting of a few C and/or C++ source and header files, you can leave INPUT tag empty and doxygen will search for sources in the current directory.

If you have a larger project consisting of a source directory or tree you should assign the root directory or directories to the INPUT tag, and add one or more file patterns to the FILE_PATTERNS tag (for instance *.cpp *.h). Only files that match one of the patterns will be parsed (if the patterns are omitted a list of typical patterns is used for the types of files doxygen supports). For recursive parsing of a source tree you must set the RECURSIVE tag to YES. To further fine-tune the list of files that is parsed the EXCLUDE and EXCLUDE_PATTERNS tags can be used. To omit all test directories from a source tree for instance, one could use:

EXCLUDE_PATTERNS = */test/*

Doxygen looks at the file's extension to determine how to parse a file, using the following table:

Extension | Language
.idl | IDL
.ddl | IDL
.odl | IDL
.java | Java
.cs | C#
.d | D
.php | PHP
.php4 | PHP
.php5 | PHP
.inc | PHP
.phtml | PHP
.m | Objective-C
.M | Objective-C
.mm | Objective-C
.py | Python
.f | Fortran
.for | Fortran
.f90 | Fortran
.vhd | VHDL
.vhdl | VHDL
.tcl | TCL
.ucf | VHDL
.qsf | VHDL
.md | Markdown
.markdown | Markdown

Any other extension is parsed as if it is a C/C++ file.

If you start using doxygen for an existing project (thus without any documentation that doxygen is aware of), you can still get an idea of what the structure is and how the documented result would look like. To do so, you must set the EXTRACT_ALL tag in the configuration file to YES. Then, doxygen will pretend everything in your sources is documented. Please note that as a consequence warnings about undocumented members will not be generated as long as EXTRACT_ALL is set to YES.

To analyze an existing piece of software it is useful to cross-reference a (documented) entity with its definition in the source files. Doxygen will generate such cross-references if you set the SOURCE_BROWSER tag to YES. It can also include the sources directly into the documentation by setting INLINE_SOURCES to YES (this can be handy for code reviews for instance).

Step 2: Running doxygen

To generate the documentation you can now enter:

doxygen <config-file>

Depending on your settings doxygen will create html, rtf, latex, xml, man, and/or docbook directories inside the output directory. As the names suggest these directories contain the generated documentation in HTML, RTF, [image], XML, Unix-Man page, and DocBook format.

The default output directory is the directory in which doxygen is started. The root directory to which the output is written can be changed using the OUTPUT_DIRECTORY. The format specific directory within the output directory can be selected using the HTML_OUTPUT, RTF_OUTPUT, LATEX_OUTPUT, XML_OUTPUT, MAN_OUTPUT, and DOCBOOK_OUTPUT. tags of the configuration file. If the output directory does not exist, doxygen will try to create it for you (but it will not try to create a whole path recursively, like mkdir -p does).

HTML output

The generated HTML documentation can be viewed by pointing a HTML browser to the index.html file in the html directory. For the best results a browser that supports cascading style sheets (CSS) should be used (I'm using Mozilla Firefox, Google Chrome, Safari, and sometimes IE8, IE9, and Opera to test the generated output).

Some of the features the HTML section (such as GENERATE_TREEVIEW or the search engine) require a browser that supports Dynamic HTML and Javascript enabled.

LaTeX output

The generated [image] documentation must first be compiled by a [image] compiler (I use a recent teTeX distribution for Linux and MacOSX and MikTex for Windows). To simplify the process of compiling the generated documentation, doxygen writes a Makefile into the latex directory (on the Windows platform also a make.bat batch file is generated).

The contents and targets in the Makefile depend on the setting of USE_PDFLATEX. If it is disabled (set to NO), then typing make in the latex directory a dvi file called refman.dvi will be generated. This file can then be viewed using xdvi or converted into a PostScript file refman.ps by typing make ps (this requires dvips).

To put 2 pages on one physical page use make ps_2on1 instead. The resulting PostScript file can be send to a PostScript printer. If you do not have a PostScript printer, you can try to use ghostscript to convert PostScript into something your printer understands.

Conversion to PDF is also possible if you have installed the ghostscript interpreter; just type make pdf (or make pdf_2on1).

To get the best results for PDF output you should set the PDF_HYPERLINKS and USE_PDFLATEX tags to YES. In this case the Makefile will only contain a target to build refman.pdf directly.

RTF output

Doxygen combines the RTF output to a single file called refman.rtf. This file is optimized for importing into the Microsoft Word. Certain information is encoded using so called fields. To show the actual value you need to select all (Edit - select all) and then toggle fields (right click and select the option from the drop down menu).

XML output

The XML output consists of a structured "dump" of the information gathered by doxygen. Each compound (class/namespace/file/...) has its own XML file and there is also an index file called index.xml.

A file called combine.xslt XSLT script is also generated and can be used to combine all XML files into a single file.

Doxygen also generates two XML schema files index.xsd (for the index file) and compound.xsd (for the compound files). This schema file describes the possible elements, their attributes and how they are structured, i.e. it the describes the grammar of the XML files and can be used for validation or to steer XSLT scripts.

In the addon/doxmlparser directory you can find a parser library for reading the XML output produced by doxygen in an incremental way (see addon/doxmlparser/include/doxmlintf.h for the interface of the library)

Man page output

The generated man pages can be viewed using the man program. You do need to make sure the man directory is in the man path (see the MANPATH environment variable). Note that there are some limitations to the capabilities of the man page format, so some information (like class diagrams, cross references and formulas) will be lost.

DocBook output

Doxygen can also generate output in the DocBook format. How to process the DocBook output is beyond the scope of this manual.

Step 3: Documenting the sources

Although documenting the sources is presented as step 3, in a new project this should of course be step 1. Here I assume you already have some code and you want doxygen to generate a nice document describing the API and maybe the internals and some related design documentation as well.

If the EXTRACT_ALL option is set to NO in the configuration file (the default), then doxygen will only generate documentation for documented entities. So how do you document these? For members, classes and namespaces there are basically two options:

  1. Place a special documentation block in front of the declaration or definition of the member, class or namespace. For file, class and namespace members it is also allowed to place the documentation directly after the member.

    See section Special comment blocks to learn more about special documentation blocks.

  2. Place a special documentation block somewhere else (another file or another location) and put a structural command in the documentation block. A structural command links a documentation block to a certain entity that can be documented (e.g. a member, class, namespace or file).

    See section Documentation at other places to learn more about structural commands.

The advantage of the first option is that you do not have to repeat the name of the entity.

Files can only be documented using the second option, since there is no way to put a documentation block before a file. Of course, file members (functions, variables, typedefs, defines) do not need an explicit structural command; just putting a special documentation block in front or behind them will work fine.

The text inside a special documentation block is parsed before it is written to the HTML and/or [image] output files.

During parsing the following steps take place:

  • Markdown formatting is replaced by corresponding HTML or special commands.
  • The special commands inside the documentation are executed. See section Special Commands for an overview of all commands.
  • If a line starts with some whitespace followed by one or more asterisks (*) and then optionally more whitespace, then all whitespace and asterisks are removed.
  • All resulting blank lines are treated as a paragraph separators. This saves you from placing new-paragraph commands yourself in order to make the generated documentation readable.
  • Links are created for words corresponding to documented classes (unless the word is preceded by a %; then the word will not be linked and the % sign is removed).
  • Links to members are created when certain patterns are found in the text. See section Automatic link generation for more information on how the automatic link generation works.
  • HTML tags that are in the documentation are interpreted and converted to [image] equivalents for the [image] output. See section HTML Commands for an overview of all supported HTML tags.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:43 for Doxygen by doxygen 1.8.7


Doxygen: Documenting the code

Doxygen
Documenting the code

Table of Contents

  • Special comment blocks
    • Comment blocks for C-like languages (C/C++/C#/Objective-C/PHP/Java)
      • Putting documentation after members
      • Examples
      • Documentation at other places
    • Comment blocks in Python
    • Comment blocks in VHDL
    • Comment blocks in Fortran
    • Comment blocks in Tcl
  • Anatomy of a comment block

This chapter covers two topics:

  1. How to put comments in your code such that doxygen incorporates them in the documentation it generates. This is further detailed in the next section.
  2. Ways to structure the contents of a comment block such that the output looks good, as explained in section Anatomy of a comment block.

Special comment blocks

A special comment block is a C or C++ style comment block with some additional markings, so doxygen knows it is a piece of structured text that needs to end up in the generated documentation. The next section presents the various styles supported by doxygen.

For Python, VHDL, Fortran, and Tcl code there are different commenting conventions, which can be found in sections Comment blocks in Python, Comment blocks in VHDL, Comment blocks in Fortran, and Comment blocks in Tcl respectively.

Comment blocks for C-like languages (C/C++/C#/Objective-C/PHP/Java)

For each entity in the code there are two (or in some cases three) types of descriptions, which together form the documentation for that entity; a brief description and detailed description, both are optional. For methods and functions there is also a third type of description, the so called in body description, which consists of the concatenation of all comment blocks found within the body of the method or function.

Having more than one brief or detailed description is allowed (but not recommended, as the order in which the descriptions will appear is not specified).

As the name suggest, a brief description is a short one-liner, whereas the detailed description provides longer, more detailed documentation. An "in body" description can also act as a detailed description or can describe a collection of implementation details. For the HTML output brief descriptions are also used to provide tooltips at places where an item is referenced.

There are several ways to mark a comment block as a detailed description:

  1. You can use the JavaDoc style, which consist of a C-style comment block starting with two *'s, like this:

    /**
 * ... text ...
 */

  2. or you can use the Qt style and add an exclamation mark (!) after the opening of a C-style comment block, as shown in this example:

    /*!
 * ... text ...
 */

    In both cases the intermediate *'s are optional, so

    /*!
 ... text ...
*/

    is also valid.

  3. A third alternative is to use a block of at least two C++ comment lines, where each line starts with an additional slash or an exclamation mark. Here are examples of the two cases:

    ///
/// ... text ...
///

    or

    //!
//!... text ...
//!

    Note that a blank line ends a documentation block in this case.

  4. Some people like to make their comment blocks more visible in the documentation. For this purpose you can use the following:

    /********************************************//**
 *  ... text
 ***********************************************/

    (note the 2 slashes to end the normal comment block and start a special comment block).

    or

    /////////////////////////////////////////////////
/// ... text ...
/////////////////////////////////////////////////

For the brief description there are also several possibilities:

  1. One could use the \brief command with one of the above comment blocks. This command ends at the end of a paragraph, so the detailed description follows after an empty line.

    Here is an example:

    /*! \brief Brief description.
 *         Brief description continued.
 *
 *  Detailed description starts here.
 */

  2. If JAVADOC_AUTOBRIEF is set to YES in the configuration file, then using JavaDoc style comment blocks will automatically start a brief description which ends at the first dot followed by a space or new line. Here is an example:

    /** Brief description which ends at this dot. Details follow
 *  here.
 */

    The option has the same effect for multi-line special C++ comments:

    /// Brief description which ends at this dot. Details follow
/// here.

  3. A third option is to use a special C++ style comment which does not span more than one line. Here are two examples:

    /// Brief description.
/** Detailed description. */

    or

    //! Brief description.

//! Detailed description
//! starts here.

    Note the blank line in the last example, which is required to separate the brief description from the block containing the detailed description. The JAVADOC_AUTOBRIEF should also be set to NO for this case.

As you can see doxygen is quite flexible. If you have multiple detailed descriptions, like in the following example:

//! Brief description, which is
//! really a detailed description since it spans multiple lines.
/*! Another detailed description!
 */

They will be joined. Note that this is also the case if the descriptions are at different places in the code! In this case the order will depend on the order in which doxygen parses the code.

Unlike most other documentation systems, doxygen also allows you to put the documentation of members (including global functions) in front of the definition. This way the documentation can be placed in the source file instead of the header file. This keeps the header file compact, and allows the implementer of the members more direct access to the documentation. As a compromise the brief description could be placed before the declaration and the detailed description before the member definition.

Putting documentation after members

If you want to document the members of a file, struct, union, class, or enum, it is sometimes desired to place the documentation block after the member instead of before. For this purpose you have to put an additional < marker in the comment block. Note that this also works for the parameters of a function.

Here are some examples:

int var; /*!< Detailed description after the member */

This block can be used to put a Qt style detailed documentation block after a member. Other ways to do the same are:

int var; /**< Detailed description after the member */

or

int var; //!< Detailed description after the member
         //!<

or

int var; ///< Detailed description after the member
         ///<

Most often one only wants to put a brief description after a member. This is done as follows:

int var; //!< Brief description after the member

or

int var; ///< Brief description after the member

For functions one can use the @param command to document the parameters and then use [in], [out], [in,out] to document the direction. For inline documentation this is also possible by starting with the direction attribute, e.g.

void foo(int v /**< [in] docs for input parameter v. */);

Note that these blocks have the same structure and meaning as the special comment blocks in the previous section only the < indicates that the member is located in front of the block instead of after the block.

Here is an example of the use of these comment blocks:

/*! A test class */
class Test
{
public:
/** An enum type.
* The documentation block cannot be put after the enum!
*/
enum EnumType
{
int EVal1, /**< enum value 1 */
int EVal2 /**< enum value 2 */
};
void member(); //!< a member function.
protected:
int value; /*!< an integer value */
};

Click here for the corresponding HTML documentation that is generated by doxygen.

Warning
These blocks can only be used to document members and parameters. They cannot be used to document files, classes, unions, structs, groups, namespaces and enums themselves. Furthermore, the structural commands mentioned in the next section (like \class) are not allowed inside these comment blocks.

Examples

Here is an example of a documented piece of C++ code using the Qt style:

//! A test class.
/*!
A more elaborate class description.
*/
class Test
{
public:
//! An enum.
/*! More detailed enum description. */
enum TEnum {
TVal1, /*!< Enum value TVal1. */
TVal2, /*!< Enum value TVal2. */
TVal3 /*!< Enum value TVal3. */
}
//! Enum pointer.
/*! Details. */
*enumPtr,
//! Enum variable.
/*! Details. */
enumVar;
//! A constructor.
/*!
A more elaborate description of the constructor.
*/
Test();
//! A destructor.
/*!
A more elaborate description of the destructor.
*/
~Test();
//! A normal member taking two arguments and returning an integer value.
/*!
\param a an integer argument.
\param s a constant character pointer.
\return The test results
\sa Test(), ~Test(), testMeToo() and publicVar()
*/
int testMe(int a,const char *s);
//! A pure virtual member.
/*!
\sa testMe()
\param c1 the first argument.
\param c2 the second argument.
*/
virtual void testMeToo(char c1,char c2) = 0;
//! A public variable.
/*!
Details.
*/
int publicVar;
//! A function variable.
/*!
Details.
*/
int (*handler)(int a,int b);
};

Click here for the corresponding HTML documentation that is generated by doxygen.

The brief descriptions are included in the member overview of a class, namespace or file and are printed using a small italic font (this description can be hidden by setting BRIEF_MEMBER_DESC to NO in the config file). By default the brief descriptions become the first sentence of the detailed descriptions (but this can be changed by setting the REPEAT_BRIEF tag to NO). Both the brief and the detailed descriptions are optional for the Qt style.

By default a JavaDoc style documentation block behaves the same way as a Qt style documentation block. This is not according the JavaDoc specification however, where the first sentence of the documentation block is automatically treated as a brief description. To enable this behavior you should set JAVADOC_AUTOBRIEF to YES in the configuration file. If you enable this option and want to put a dot in the middle of a sentence without ending it, you should put a backslash and a space after it. Here is an example:

  /** Brief description (e.g.\ using only a few words). Details follow. */

Here is the same piece of code as shown above, this time documented using the JavaDoc style and JAVADOC_AUTOBRIEF set to YES:

/**
* A test class. A more elaborate class description.
*/
class Test
{
public:
/**
* An enum.
* More detailed enum description.
*/
enum TEnum {
TVal1, /**< enum value TVal1. */
TVal2, /**< enum value TVal2. */
TVal3 /**< enum value TVal3. */
}
*enumPtr, /**< enum pointer. Details. */
enumVar; /**< enum variable. Details. */
/**
* A constructor.
* A more elaborate description of the constructor.
*/
Test();
/**
* A destructor.
* A more elaborate description of the destructor.
*/
~Test();
/**
* a normal member taking two arguments and returning an integer value.
* @param a an integer argument.
* @param s a constant character pointer.
* @see Test()
* @see ~Test()
* @see testMeToo()
* @see publicVar()
* @return The test results
*/
int testMe(int a,const char *s);
/**
* A pure virtual member.
* @see testMe()
* @param c1 the first argument.
* @param c2 the second argument.
*/
virtual void testMeToo(char c1,char c2) = 0;
/**
* a public variable.
* Details.
*/
int publicVar;
/**
* a function variable.
* Details.
*/
int (*handler)(int a,int b);
};

Click here for the corresponding HTML documentation that is generated by doxygen.

Similarly, if one wishes the first sentence of a Qt style documentation block to automatically be treated as a brief description, one may set QT_AUTOBRIEF to YES in the configuration file.

Documentation at other places

In the examples in the previous section the comment blocks were always located in front of the declaration or definition of a file, class or namespace or in front or after one of its members. Although this is often comfortable, there may sometimes be reasons to put the documentation somewhere else. For documenting a file this is even required since there is no such thing as "in front of a file".

Doxygen allows you to put your documentation blocks practically anywhere (the exception is inside the body of a function or inside a normal C style comment block).

The price you pay for not putting the documentation block directly before (or after) an item is the need to put a structural command inside the documentation block, which leads to some duplication of information. So in practice you should avoid the use of structural commands unless other requirements force you to do so.

Structural commands (like all other commands) start with a backslash (\), or an at-sign (@) if you prefer JavaDoc style, followed by a command name and one or more parameters. For instance, if you want to document the class Test in the example above, you could have also put the following documentation block somewhere in the input that is read by doxygen:

/*! \class Test
    \brief A test class.

    A more detailed class description.
*/

Here the special command \class is used to indicate that the comment block contains documentation for the class Test. Other structural commands are:

  • \struct to document a C-struct.
  • \union to document a union.
  • \enum to document an enumeration type.
  • \fn to document a function.
  • \var to document a variable or typedef or enum value.
  • \def to document a #define.
  • \typedef to document a type definition.
  • \file to document a file.
  • \namespace to document a namespace.
  • \package to document a Java package.
  • \interface to document an IDL interface.

See section Special Commands for detailed information about these and many other commands.

To document a member of a C++ class, you must also document the class itself. The same holds for namespaces. To document a global C function, typedef, enum or preprocessor definition you must first document the file that contains it (usually this will be a header file, because that file contains the information that is exported to other source files).

Let's repeat that, because it is often overlooked: to document global objects (functions, typedefs, enum, macros, etc), you must document the file in which they are defined. In other words, there must at least be a

/*! \file */

or a

/** @file */

line in this file.

Here is an example of a C header named structcmd.h that is documented using structural commands:

/*! \file structcmd.h
\brief A Documented file.
Details.
*/
/*! \def MAX(a,b)
\brief A macro that returns the maximum of \a a and \a b.
Details.
*/
/*! \var typedef unsigned int UINT32
\brief A type definition for a .
Details.
*/
/*! \var int errno
\brief Contains the last error code.
\warning Not thread safe!
*/
/*! \fn int open(const char *pathname,int flags)
\brief Opens a file descriptor.
\param pathname The name of the descriptor.
\param flags Opening flags.
*/
/*! \fn int close(int fd)
\brief Closes the file descriptor \a fd.
\param fd The descriptor to close.
*/
/*! \fn size_t write(int fd,const char *buf, size_t count)
\brief Writes \a count bytes from \a buf to the filedescriptor \a fd.
\param fd The descriptor to write to.
\param buf The data buffer to write.
\param count The number of bytes to write.
*/
/*! \fn int read(int fd,char *buf,size_t count)
\brief Read bytes from a file descriptor.
\param fd The descriptor to read from.
\param buf The buffer to read into.
\param count The number of bytes to read.
*/
#define MAX(a,b) (((a)>(b))?(a):(b))
typedef unsigned int UINT32;
int errno;
int open(const char *,int);
int close(int);
size_t write(int,const char *, size_t);
int read(int,char *,size_t);

Click here for the corresponding HTML documentation that is generated by doxygen.

Because each comment block in the example above contains a structural command, all the comment blocks could be moved to another location or input file (the source file for instance), without affecting the generated documentation. The disadvantage of this approach is that prototypes are duplicated, so all changes have to be made twice! Because of this you should first consider if this is really needed, and avoid structural commands if possible. I often receive examples that contain \fn command in comment blocks which are place in front of a function. This is clearly a case where the \fn command is redundant and will only lead to problems.

Comment blocks in Python

For Python there is a standard way of documenting the code using so called documentation strings. Such strings are stored in doc and can be retrieved at runtime. Doxygen will extract such comments and assume they have to be represented in a preformatted way.

1 """@package docstring
2 Documentation for this module.
3
4 More details.
5 """
6
7 def func():
8 """Documentation for a function.
9
10 More details.
11 """
12 pass
13
14 class PyClass:
15 """Documentation for a class.
16
17 More details.
18 """
19
20 def __init__(self):
21 """The constructor."""
22 self._memVar = 0;
23
24 def PyMethod(self):
25 """Documentation for a method."""
26 pass
27

Click here for the corresponding HTML documentation that is generated by doxygen.

Note that in this case none of doxygen's special commands are supported.

There is also another way to document Python code using comments that start with "##". These type of comment blocks are more in line with the way documentation blocks work for the other languages supported by doxygen and this also allows the use of special commands.

Here is the same example again but now using doxygen style comments:

1 ## @package pyexample
2 # Documentation for this module.
3 #
4 # More details.
5
6 ## Documentation for a function.
7 #
8 # More details.
9 def func():
10 pass
11
12 ## Documentation for a class.
13 #
14 # More details.
15 class PyClass:
16
17 ## The constructor.
18 def __init__(self):
19 self._memVar = 0;
20
21 ## Documentation for a method.
22 # @param self The object pointer.
23 def PyMethod(self):
24 pass
25
26 ## A class variable.
27 classVar = 0;
28
29 ## @var _memVar
30 # a member variable

Click here for the corresponding HTML documentation that is generated by doxygen.

Since python looks more like Java than like C or C++, you should set OPTIMIZE_OUTPUT_JAVA to YES in the config file.

Comment blocks in VHDL

For VHDL a comment normally start with "--". Doxygen will extract comments starting with "--!". There are only two types of comment blocks in VHDL; a one line "--!" comment representing a brief description, and a multi-line "--!" comment (where the "--!" prefix is repeated for each line) representing a detailed description.

Comments are always located in front of the item that is being documented with one exception: for ports the comment can also be after the item and is then treated as a brief description for the port.

Here is an example VHDL file with doxygen comments:

1 -------------------------------------------------------
2 --! @file
3 --! @brief 2:1 Mux using with-select
4 -------------------------------------------------------
5
6 --! Use standard library
7 library ieee;
8 --! Use logic elements
9 use ieee.std_logic_1164.all;
10
11 --! Mux entity brief description
12
13 --! Detailed description of this
14 --! mux design element.
15 entity mux_using_with is
16 port (
17 din_0 : in std_logic; --! Mux first input
18 din_1 : in std_logic; --! Mux Second input
19 sel : in std_logic; --! Select input
20 mux_out : out std_logic --! Mux output
21 );
22 end entity;
23
24 --! @brief Architecture definition of the MUX
25 --! @details More details about this mux element.
26 architecture behavior of mux_using_with is
27 begin
28 with (sel) select
29 mux_out <= din_0 when '0',
30 din_1 when others;
31 end architecture;
32

Click here for the corresponding HTML documentation that is generated by doxygen.

To get proper looking output you need to set OPTIMIZE_OUTPUT_VHDL to YES in the config file. This will also affect a number of other settings. When they were not already set correctly doxygen will produce a warning telling which settings where overruled.

Comment blocks in Fortran

When using doxygen for Fortran code you should set OPTIMIZE_FOR_FORTRAN to YES.

The parser tries to guess if the source code is fixed format Fortran or free format Fortran code. This may not always be correct. If not one should use EXTENSION_MAPPING to correct this. By setting EXTENSION_MAPPING = f=FortranFixed f90=FortranFree files with extension f90 are interpreted as fixed format Fortran code and files with extension f are interpreted as free format Fortran code.

For Fortran "!>" or "!<" starts a comment and "!!" or "!>" can be used to continue an one line comment into a multi-line comment.

Here is an example of a documented Fortran subroutine:

!> Build the restriction matrix for the aggregation
!! method.
!! @param aggr information about the aggregates
!! @todo Handle special case
subroutine intrestbuild(A,aggr,Restrict,A_ghost)
implicit none
Type(spmtx), intent(in) :: a !< our fine level matrix
type(aggrs), intent(in) :: aggr
Type(spmtx), intent(out) :: restrict !< Our restriction matrix
!...
end subroutine

As an alternative you can also use comments in fixed format code:

C> Function comment
C> another line of comment
function a(i)
C> input parameter
integer i
end function A

Comment blocks in Tcl

Doxygen documentation can be included in normal Tcl comments.

To start a new documentation block start a line with ## (two hashes). All following comment lines and continuation lines will be added to this block. The block ends with a line not starting with a # (hash sign).

A brief documentation can be added with ;#< (semicolon, hash and lower then sign). The brief documentation also ends at a line not starting with a # (hash sign).

Inside doxygen comment blocks all normal doxygen markings are supported. The only exceptions are described in the following two paragraphs.

If a doxygen comment block ends with a line containing only #\code or #@code all code until a line only containing #\endcode or #@endcode is added to the generated documentation as code block.

If a doxygen comment block ends with a line containing only #\verbatim or #@verbatim all code until a line only containing #\endverbatim or #@endverbatim is added verbatim to the generated documentation.

To detect namespaces, classes, functions and variables the following Tcl commands are recognized. Documentation blocks can be put on the lines before the command.

  • namespace eval .. Namespace
  • proc .. Function
  • variable .. Variable
  • common .. Common variable
  • itcl::class .. Class
  • itcl::body .. Class method body definition
  • oo::class create .. Class
  • oo::define .. OO Class definition
  • method .. Class method definitions
  • constructor .. Class constructor
  • destructor .. Class destructor
  • public .. Set protection level
  • protected .. Set protection level
  • private .. Set protection level

Following is an example using doxygen style comments:

## \file tclexample.tcl
# File documentation.
#\verbatim
# Startup code:\
exec tclsh "$0" "$@"
#\endverbatim
## Documented namespace \c ns .
# The code is inserted here:
#\code
namespace eval ns {
## Documented proc \c ns_proc .
# param[in] arg some argument
proc ns_proc {arg} {}
## Documented var \c ns_var .
# Some documentation.
variable ns_var
## Documented itcl class \c itcl_class .
itcl::class itcl_class {
## Create object.
constructor {args} {eval $args}
## Destroy object.
destructor {exit}
## Documented itcl method \c itcl_method_x .
# param[in] arg Argument
private method itcl_method_x {arg}{}
## Documented itcl method \c itcl_method_y .
# param[in] arg Argument
protected method itcl_method_y {arg} {}
## Documented itcl method \c itcl_method_z .
# param[in] arg Argument
public method itcl_method_z {arg} {}
## Documented common itcl var \c itcl_Var .
common itcl_Var
## \protectedsection
variable itcl_var1;#< Documented itcl var \c itcl_var1 .
variable itcl_var2}
## Documented oo class \c oo_class .
oo::class create oo_class {
## Create object.
# Configure with args
constructor {args} {eval $args}
## Destroy object.
# Exit.
destructor {exit}
## Documented oo var \c oo_var .
# Defined inside class
variable oo_var
## \private Documented oo method \c oo_method_x .
# param[in] arg Argument
method oo_method_x {arg} {}
## \protected Documented oo method \c oo_method_y .
# param[in] arg Argument
method oo_method_y {arg} {}
## \public Documented oo method \c oo_method_z .
# param[in] arg Argument
method oo_method_z {arg} {}
}
}
#\endcode
itcl::body ::ns::itcl_class::itcl_method_x {argx} {
puts "$argx OK"
}
oo::define ns::oo_class {
## \public Outside defined variable \c oo_var_out .
# Inside oo_class
variable oo_var_out
}
## Documented global proc \c glob_proc .
# param[in] arg Argument
proc glob_proc {arg} {puts $arg}
variable glob_var;#< Documented global var \c glob_var\
with newline
#< and continued line
# end of file

Click here for the corresponding HTML documentation that is generated by doxygen.

Anatomy of a comment block

The previous section focused on how to make the comments in your code known to doxygen, it explained the difference between a brief and a detailed description, and the use of structural commands.

In this section we look at the contents of the comment block itself.

Doxygen supports various styles of formatting your comments.

The simplest form is to use plain text. This will appear as-is in the output and is ideal for a short description.

For longer descriptions you often will find the need for some more structure, like a block of verbatim text, a list, or a simple table. For this doxygen supports the Markdown syntax, including parts of the Markdown Extra extension.

Markdown is designed to be very easy to read and write. It's formatting is inspired by plain text mail. Markdown works great for simple, generic formatting, like an introduction page for your project. Doxygen also supports reading of markdown files directly. See here for more details regards Markdown support.

For programming language specific formatting doxygen has two forms of additional markup on top of Markdown formatting.

  1. Javadoc like markup. See here for a complete overview of all commands supported by doxygen.
  2. XML markup as specified in the C# standard. See here for the XML commands supported by doxygen.

If this is still not enough doxygen also supports a subset of the HTML markup language.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:43 for Doxygen by doxygen 1.8.7


Doxygen: Markdown support

Doxygen
Markdown support

Table of Contents

  • Standard Markdown
    • Paragraphs
    • Headers
    • Block quotes
    • Lists
    • Code Blocks
    • Horizontal Rulers
    • Emphasis
    • code spans
    • Links
      • Inline Links
      • Reference Links
    • Images
    • Automatic Linking
  • Markdown Extensions
    • Table of Contents
    • Tables
    • Fenced Code Blocks
    • Header Id Attributes
  • Doxygen specifics
    • Including Markdown files as pages
    • Treatment of HTML blocks
    • Code Block Indentation
    • Emphasis limits
    • Code Spans Limits
    • Lists Extensions
    • Use of asterisks
    • Limits on markup scope
  • Debugging of problems

Markdown support was introduced in doxygen version 1.8.0. It is a plain text formatting syntax written by John Gruber, with the following underlying design goal:

The design goal for Markdown's formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it's been marked up with tags or formatting instructions. While Markdown's syntax has been influenced by several existing text-to-HTML filters, the single biggest source of inspiration for Markdown's syntax is the format of plain text email.

In the next section the standard Markdown features are briefly discussed. The reader is referred to the Markdown site for more details.

Some enhancements were made, for instance PHP Markdown Extra, and GitHub flavored Markdown. The section Markdown Extensions discusses the extensions that doxygen supports.

Finally section Doxygen specifics discusses some specifics for doxygen's implementation of the Markdown standard.

Standard Markdown

Paragraphs

Even before doxygen had Markdown support it supported the same way of paragraph handling as Markdown: to make a paragraph you just separate consecutive lines of text by one or more blank lines.

An example:

Here is text for one paragraph.

We continue with more text in another paragraph.

Headers

Just like Markdown, doxygen supports two types of headers

Level 1 or 2 headers can be made as the follows

This is a level 1 header
========================

This is a level 2 header
------------------------

A header is followed by a line containing only ='s or -'s. Note that the exact amount of ='s or -'s is not important as long as there are at least two.

Alternatively, you can use #'s at the start of a line to make a header. The number of #'s at the start of the line determines the level (up to 6 levels are supported). You can end a header by any number of #'s.

Here is an example:

# This is a level 1 header

### This is level 3 header #######

Block quotes

Block quotes can be created by starting each line with one or more >'s, similar to what is used in text-only emails.

> This is a block quote
> spanning multiple lines

Lists and code blocks (see below) can appear inside a quote block. Quote blocks can also be nested.

Note that doxygen requires that you put a space after the (last) > character to avoid false positives, i.e. when writing

0  if OK\n
>1 if NOK

the second line will not be seen as a block quote.

Lists

Simple bullet lists can be made by starting a line with -, +, or *.

- Item 1

  More text for this item.

- Item 2
  + nested list item.
  + another nested item.
- Item 3

List items can span multiple paragraphs (if each paragraph starts with the proper indentation) and lists can be nested. You can also make a numbered list like so

1. First item.
2. Second item.

Make sure to also read Lists Extensions for doxygen specifics.

Code Blocks

Preformatted verbatim blocks can be created by indenting each line in a block of text by at least 4 extra spaces

This a normal paragraph

    This is a code block

We continue with a normal paragraph again.

Doxygen will remove the mandatory indentation from the code block. Note that you cannot start a code block in the middle of a paragraph (i.e. the line preceding the code block must be empty).

See section Code Block Indentation for more info how doxygen handles indentation as this is slightly different than standard Markdown.

Horizontal Rulers

A horizontal ruler will be produced for lines containing at least three or more hyphens, asterisks, or underscores. The line may also include any amount of whitespace.

Examples:

- - -
______

Note that using asterisks in comment blocks does not work. See Use of asterisks for details.

Emphasis

To emphasize a text fragment you start and end the fragment with an underscore or star. Using two stars or underscores will produce strong emphasis.

Examples:

 single asterisks*

_single underscores_

  double asterisks**

__double underscores__

See section Emphasis limits for more info how doxygen handles emphasis spans slightly different than standard Markdown.

code spans

To indicate a span of code, you should wrap it in backticks (`). Unlike code blocks, code spans appear inline in a paragraph. An example:

Use the `printf()` function.

To show a literal backtick inside a code span use double backticks, i.e.

To assign the output of command `ls` to `var` use ``var=`ls```.

See section Code Spans Limits for more info how doxygen handles code spans slightly different than standard Markdown.

Links

Doxygen supports both styles of make links defined by Markdown: inline and reference.

For both styles the link definition starts with the link text delimited by [square brackets].

Inline Links

For an inline link the link text is followed by a URL and an optional link title which together are enclosed in a set of regular parenthesis. The link title itself is surrounded by quotes.

Examples:

[The link text](http://example.net/)
[The link text](http://example.net/ "Link title")
[The link text](/relative/path/to/index.html "Link title")
[The link text](somefile.html)

In addition doxygen provides a similar way to link a documented entity:

[The link text](@ref MyClass)

Reference Links

Instead of putting the URL inline, you can also define the link separately and then refer to it from within the text.

The link definition looks as follows:

[link name]: http://www.example.com "Optional title"

Instead of double quotes also single quotes or parenthesis can be used for the title part.

Once defined, the link looks as follows

[link text][link name]

If the link text and name are the same, also

[link name][]

or even

[link name]

can be used to refer to the link. Note that the link name matching is not case sensitive as is shown in the following example:

I get 10 times more traffic from [Google] than from
[Yahoo] or [MSN].

[google]: http://google.com/        "Google"
[yahoo]:  http://search.yahoo.com/  "Yahoo Search"
[msn]:    http://search.msn.com/    "MSN Search"

Link definitions will not be visible in the output.

Like for inline links doxygen also supports @ref inside a link definition:

[myclass]: @ref MyClass "My class"

Images

Markdown syntax for images is similar to that for links. The only difference is an additional ! before the link text.

Examples:

![Caption text](/path/to/img.jpg)
![Caption text](/path/to/img.jpg "Image title")
![Caption text][img def]
![img def]

[img def]: /path/to/img.jpg "Optional Title"

Also here you can use @ref to link to an image:

![Caption text](@ref image.png)
![img def]

[img def]: @ref image.png "Caption text"

The caption text is optional.

Automatic Linking

To create a link to an URL or e-mail address Markdown supports the following syntax:

<http://www.example.com>
<https://www.example.com>
<ftp://www.example.com>
<mailto:address@example.com>
<address@example.com>

Note that doxygen will also produce the links without the angle brackets.

Markdown Extensions

Table of Contents

Doxygen supports a special link marker [TOC] which can be placed in a page to produce a table of contents at the start of the page, listing all sections.

Note that using [TOC] is the same as using a \tableofcontents command.

Tables

Of the features defined by "Markdown Extra" is support for simple tables:

A table consists of a header line, a separator line, and at least one row line. Table columns are separated by the pipe (|) character.

Here is an example:

First Header  | Second Header
------------- | -------------
Content Cell  | Content Cell
Content Cell  | Content Cell

which will produce the following table:

First Header | Second Header
Content Cell | Content Cell
Content Cell | Content Cell

Column alignment can be controlled via one or two colons at the header separator line:

| Right | Center | Left  |
| ----: | :----: | :---- |
| 10    | 10     | 10    |
| 1000  | 1000   | 1000  |

which will look as follows:

Right | Center | Left
10 | 10 | 10
1000 | 1000 | 1000

Fenced Code Blocks

Another feature defined by "Markdown Extra" is support for fenced code blocks:

A fenced code block does not require indentation, and is defined by a pair of "fence lines". Such a line consists of 3 or more tilde (~) characters on a line. The end of the block should have the same number of tildes. Here is an example:

This is a paragraph introducing:

~~~~~~~~~~~~~~~~~~~~~
a one-line code block
~~~~~~~~~~~~~~~~~~~~~

By default the output is the same as for a normal code block.

For languages supported by doxygen you can also make the code block appear with syntax highlighting. To do so you need to indicate the typical file extension that corresponds to the programming language after the opening fence. For highlighting according to the Python language for instance, you would need to write the following:

~~~~~~~~~~~~~{.py}
# A class
class Dummy:
    pass
~~~~~~~~~~~~~

which will produce:

1 # A class
2 class Dummy:
3 pass

and for C you would write:

~~~~~~~~~~~~~~~{.c}
int func(int a,int b) { return a*b; }
~~~~~~~~~~~~~~~

which will produce:

int func(int a,int b) { return a*b; }

The curly braces and dot are optional by the way.

Header Id Attributes

Standard Markdown has no support for labeling headers, which is a problem if you want to link to a section.

PHP Markdown Extra allows you to label a header by adding the following to the header

Header 1                {#labelid}
========

## Header 2 ##          {#labelid2}

To link to a section in the same comment block you can use

[Link text](#labelid)

to link to a section in general, doxygen allows you to use @ref

[Link text](@ref labelid)

Note this only works for the headers of level 1 to 4.

Doxygen specifics

Even though doxygen tries to following the Markdown standard as closely as possible, there are couple of deviation and doxygen specifics additions.

Including Markdown files as pages

Doxygen can process files with Markdown formatting. For this to work the extension for such a file should be .md or .markdown (see EXTENSION_MAPPING if your Markdown files have a different extension, and use md as the name of the parser). Each file is converted to a page (see the page command for details).

By default the name and title of the page are derived from the file name. If the file starts with a level 1 header however, it is used as the title of the page. If you specify a label for the header (as shown here) doxygen will use that as the page name.

If the label is called index or mainpage doxygen will put the documentation on the front page (index.html).

Here is an example of a file README.md that will appear as the main page when processed by doxygen:

My Main Page                         {#mainpage}
============

Documentation that will appear on the main page

If a page has a label you can link to it using @ref as is shown above. To refer to a markdown page without such label you can simple use the file name of the page, e.g.

See [the other page](other.md) for more info.

Treatment of HTML blocks

Markdown is quite strict in the way it processes block-level HTML:

block-level HTML elements — e.g. <div>, <table>, <pre>, <p>, etc. — must be separated from surrounding content by blank lines, and the start and end tags of the block should not be indented with tabs or spaces.

Doxygen does not have this requirement, and will also process Markdown formatting inside such HTML blocks. The only exception is <pre> blocks, which are passed untouched (handy for ASCII art).

Doxygen will not process Markdown formatting inside verbatim or code blocks, and in other sections that need to be processed without changes (for instance formulas or inline dot graphs).

Code Block Indentation

Markdown allows both a single tab or 4 spaces to start a code block. Since doxygen already replaces tabs by spaces before doing Markdown processing, the effect will only be same if TAB_SIZE in the config file has been set to 4. When it is set to a higher value spaces will be present in the code block. A lower value will prevent a single tab to be interpreted as the start of a code block.

With Markdown any block that is indented by 4 spaces (and 8 spaces inside lists) is treated as a code block. This indentation amount is absolute, i.e. counting from the start of the line.

Since doxygen comments can appear at any indentation level that is required by the programming language, it uses a relative indentation instead. The amount of indentation is counted relative to the preceding paragraph. In case there is no preceding paragraph (i.e. you want to start with a code block), the minimal amount of indentation of the whole comment block is used as a reference.

In most cases this difference does not result in different output. Only if you play with the indentation of paragraphs the difference is noticeable:

text

 text

  text

   code

In this case Markdown will put the word code in a code block, whereas Doxygen will treat it as normal text, since although the absolute indentation is 4, the indentation with respect to the previous paragraph is only 1.

Note that list markers are not counted when determining the relative indent:

1.  Item1

    More text for item1

2.  Item2

        Code block for item2

For Item1 the indentation is 4 (when treating the list marker as whitespace), so the next paragraph "More text..." starts at the same indentation level and is therefore not seen as a code block.

Emphasis limits

Unlike standard Markdown, doxygen will not touch internal underscores or stars, so the following will appear as-is:

a_nice_identifier

Furthermore, a * or _ only starts an emphasis if

  • it is followed by an alphanumerical character, and
  • it is preceded by a space, newline, or one the following characters <{([,:;

An emphasis ends if

  • it is not followed by an alphanumerical character, and
  • it is not preceded by a space, newline, or one the following characters ({[<=+-\@

Lastly, the span of the emphasis is limited to a single paragraph.

Code Spans Limits

Note that unlike standard Markdown, doxygen leaves the following untouched.

A `cool' word in a `nice' sentence.

In other words; a single quote cancels the special treatment of a code span wrapped in a pair of backtick characters. This extra restriction was added for backward compatibility reasons.

Lists Extensions

With Markdown two lists separated by an empty line are joined together into a single list which can be rather unexpected and many people consider it to be a bug. Doxygen, however, will make two separate lists as you would expect.

Example:

- Item1 of list 1
- Item2 of list 1

1. Item1 of list 2
2. Item2 of list 2

With Markdown the actual numbers you use to mark the list have no effect on the HTML output Markdown produces. I.e. standard Markdown treats the following as one list with 3 numbered items:

1. Item1
1. Item2
1. Item3

Doxygen however requires that the numbers used as marks are in strictly ascending order, so the above example would produce 3 lists with one item. An item with an equal or lower number than the preceding item, will start a new list. For example:

1. Item1 of list 1
3. Item2 of list 1
2. Item1 of list 2
4. Item2 of list 2

will produce:

  1. Item1 of list 1
  2. Item2 of list 1
  1. Item1 of list 2
  2. Item2 of list 2

Historically doxygen has an additional way to create numbered lists by using -# markers:

-# item1
-# item2

Use of asterisks

Special care has to be taken when using *'s in a comment block to start a list or make a ruler.

Doxygen will strip off any leading *'s from the comment before doing Markdown processing. So although the following works fine

    /** A list:
     *  * item1
     *  * item2
     */

When you remove the leading *'s doxygen will strip the other stars as well, making the list disappear!

Rulers created with *'s will not be visible at all. They only work in Markdown files.

Limits on markup scope

To avoid that a stray * or _ matches something many paragraphs later, and shows everything in between with emphasis, doxygen limits the scope of a * and _ to a single paragraph.

For a code span, between the starting and ending backtick only two new lines are allowed.

Also for links there are limits; the link text, and link title each can contain only one new line, the URL may not contain any newlines.

Debugging of problems

When doxygen parses the source code it first extracts the comments blocks, then passes these through the Markdown preprocessor. The output of the Markdown preprocessing consists of text with special commands and HTML commands. A second pass takes the output of the Markdown preprocessor and converts it into the various output formats.

During Markdown preprocessing no errors are produced. Anything that does not fit the Markdown syntax is simply passed on as-is. In the subsequent parsing phase this could lead to errors, which may not always be obvious as they are based on the intermediate format.

To see the result after Markdown processing you can run doxygen with the -d Markdown option. It will then print each comment block before and after Markdown processing.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:43 for Doxygen by doxygen 1.8.7


Doxygen: Lists

Doxygen
Lists

Doxygen provides a number of ways to create lists of items.

Using dashes

By putting a number of column-aligned minus (-) signs at the start of a line, a bullet list will automatically be generated. Instead of the minus sign also plus (+) or asterisk (*) can be used.

Numbered lists can also be generated by using a minus followed by a hash or by using a number followed by a dot.

Nesting of lists is allowed and is based on indentation of the items.

Here is an example:

  /*!
   *  A list of events:
   *    - mouse events
   *         -# mouse move event
   *         -# mouse click event\n
   *            More info about the click event.
   *         -# mouse double click event
   *    - keyboard events
   *         1. key down event
   *         2. key up event
   *
   *  More text here.
   */

The result will be:

A list of events:

  • mouse events
    1. mouse move event
    2. mouse click event
      More info about the click event.
    3. mouse double click event
  • keyboard events
    1. key down event
    2. key up event

More text here.

If you use tabs for indentation within lists, please make sure that TAB_SIZE in the configuration file is set to the correct tab size.

You can end a list by starting a new paragraph or by putting a dot (.) on an empty line at the same indentation level as the list you would like to end.

Here is an example that speaks for itself:

/**
 * Text before the list
 * - list item 1
 *   - sub item 1
 *     - sub sub item 1
 *     - sub sub item 2
 *     .
 *     The dot above ends the sub sub item list.
 *
 *     More text for the first sub item
 *   .
 *   The dot above ends the first sub item.
 *
 *   More text for the first list item
 *   - sub item 2
 *   - sub item 3
 * - list item 2
 * .
 * More text in the same paragraph.
 *
 * More text in a new paragraph.
 */

Using HTML commands

If you like you can also use HTML commands inside the documentation blocks.

Here is the above example with HTML commands:

  /*!
   *  A list of events:
   *  <ul>
   *  <li> mouse events
   *     <ol>
   *     <li>mouse move event
   *     <li>mouse click event<br>
   *         More info about the click event.
   *     <li>mouse double click event
   *     </ol>
   *  <li> keyboard events
   *     <ol>
   *     <li>key down event
   *     <li>key up event
   *     </ol>
   *  </ul>
   *  More text here.
   */
Note
In this case the indentation is not important.

Using \arg or \li

For compatibility with the Qt Software's internal documentation tool qdoc and with KDoc, doxygen has two commands that can be used to create simple unnested lists.

See \arg and \li for more info.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:43 for Doxygen by doxygen 1.8.7


Doxygen: Grouping

Doxygen
Grouping

Doxygen has three mechanisms to group things together. One mechanism works at a global level, creating a new page for each group. These groups are called 'modules' in the documentation. The second mechanism works within a member list of some compound entity, and is referred to as a 'member groups'. For pages there is a third grouping mechanism referred to as subpaging.

Modules

Modules are a way to group things together on a separate page. You can document a group as a whole, as well as all individual members. Members of a group can be files, namespaces, classes, functions, variables, enums, typedefs, and defines, but also other groups.

To define a group, you should put the \defgroup command in a special comment block. The first argument of the command is a label that should uniquely identify the group. The second argument is the name or title of the group as it should appear in the documentation.

You can make an entity a member of a specific group by putting a \ingroup command inside its documentation block.

To avoid putting \ingroup commands in the documentation for each member you can also group members together by the open marker @{ before the group and the closing marker @} after the group. The markers can be put in the documentation of the group definition or in a separate documentation block.

Groups themselves can also be nested using these grouping markers.

You will get an error message when you use the same group label more than once. If you don't want doxygen to enforce unique labels, then you can use \addtogroup instead of \defgroup. It can be used exactly like \defgroup, but when the group has been defined already, then it silently merges the existing documentation with the new one. The title of the group is optional for this command, so you can use

/** \addtogroup <label>
 *  @{
 */
...

/** @}*/

to add additional members to a group that is defined in more detail elsewhere.

Note that compound entities (like classes, files and namespaces) can be put into multiple groups, but members (like variable, functions, typedefs and enums) can only be a member of one group (this restriction is in place to avoid ambiguous linking targets in case a member is not documented in the context of its class, namespace or file, but only visible as part of a group).

Doxygen will put members into the group whose definition has the highest "priority": e.g. An explicit \ingroup overrides an implicit grouping definition via @{ @}. Conflicting grouping definitions with the same priority trigger a warning, unless one definition was for a member without any explicit documentation.

The following example puts VarInA into group A and silently resolves the conflict for IntegerVariable by putting it into group IntVariables, because the second instance of IntegerVariable is undocumented:

/**
 * \ingroup A
 */
extern int VarInA;

/**
 * \defgroup IntVariables Global integer variables
 * @{
 */

/** an integer variable */
extern int IntegerVariable;

/**@}*/

....

/**
 * \defgroup Variables Global variables
 */
/**@{*/

/** a variable in group A */
int VarInA;

int IntegerVariable;

/**@}*/

The \ref command can be used to refer to a group. The first argument of the \ref command should be group's label. To use a custom link name, you can put the name of the links in double quotes after the label, as shown by the following example

This is the \ref group_label "link" to this group.

The priorities of grouping definitions are (from highest to lowest): \ingroup, \defgroup, \addtogroup, \weakgroup. The last command is exactly like \addtogroup with a lower priority. It was added to allow "lazy" grouping definitions: you can use commands with a higher priority in your .h files to define the hierarchy and \weakgroup in .c files without having to duplicate the hierarchy exactly.

Example:
/** @defgroup group1 The First Group
 *  This is the first group
 *  @{
 */

/** @brief class C1 in group 1 */
class C1 {};

/** @brief class C2 in group 1 */
class C2 {};

/** function in group 1 */
void func() {}

/** @} */ // end of group1

/**
 *  @defgroup group2 The Second Group
 *  This is the second group
 */

/** @defgroup group3 The Third Group
 *  This is the third group
 */

/** @defgroup group4 The Fourth Group
 *  @ingroup group3
 *  Group 4 is a subgroup of group 3
 */

/**
 *  @ingroup group2
 *  @brief class C3 in group 2
 */
class C3 {};

/** @ingroup group2
 *  @brief class C4 in group 2
 */
class C4 {};

/** @ingroup group3
 *  @brief class C5 in @link group3 the third group@endlink.
 */
class C5 {};

/** @ingroup group1 group2 group3 group4
 *  namespace N1 is in four groups
 *  @sa @link group1 The first group@endlink, group2, group3, group4
 *
 *  Also see @ref mypage2
 */
namespace N1 {};

/** @file
 *  @ingroup group3
 *  @brief this file in group 3
 */

/** @defgroup group5 The Fifth Group
 *  This is the fifth group
 *  @{
 */

/** @page mypage1 This is a section in group 5
 *  Text of the first section
 */

/** @page mypage2 This is another section in group 5
 *  Text of the second section
 */

/** @} */ // end of group5

/** @addtogroup group1
 *
 *  More documentation for the first group.
 *  @{
 */

/** another function in group 1 */
void func2() {}

/** yet another function in group 1 */
void func3() {}

/** @} */ // end of group1

Click here for the corresponding HTML documentation that is generated by Doxygen.

Member Groups

If a compound (e.g. a class or file) has many members, it is often desired to group them together. Doxygen already automatically groups things together on type and protection level, but maybe you feel that this is not enough or that that default grouping is wrong. For instance, because you feel that members of different (syntactic) types belong to the same (semantic) group.

A member group is defined by a

///@{
  ...
///@}

block or a

/**@{*/
  ...
/**@}*/

block if you prefer C style comments. Note that the members of the group should be physically inside the member group's body.

Before the opening marker of a block a separate comment block may be placed. This block should contain the @name (or \name) command and is used to specify the header of the group. Optionally, the comment block may also contain more detailed information about the group.

Nesting of member groups is not allowed.

If all members of a member group inside a class have the same type and protection level (for instance all are static public members), then the whole member group is displayed as a subgroup of the type/protection level group (the group is displayed as a subsection of the "Static Public Members" section for instance). If two or more members have different types, then the group is put at the same level as the automatically generated groups. If you want to force all member-groups of a class to be at the top level, you should put a \nosubgrouping command inside the documentation of the class.

Example:
/** A class. Details */
class Test
{
  public:
    //@{
    /** Same documentation for both members. Details */
    void func1InGroup1();
    void func2InGroup1();
    //@}

    /** Function without group. Details. */
    void ungroupedFunction();
    void func1InGroup2();
  protected:
    void func2InGroup2();
};

void Test::func1InGroup1() {}
void Test::func2InGroup1() {}

/** @name Group2
 *  Description of group 2.
 */
///@{
/** Function 2 in group 2. Details. */
void Test::func2InGroup2() {}
/** Function 1 in group 2. Details. */
void Test::func1InGroup2() {}
///@}

/*! \file
 *  docs for this file
 */

//!@{
//! one description for all members of this group
//! (because DISTRIBUTE_GROUP_DOC is YES in the config file)
#define A 1
#define B 2
void glob_func();
//!@}

Click here for the corresponding HTML documentation that is generated by Doxygen.

Here Group1 is displayed as a subsection of the "Public Members". And Group2 is a separate section because it contains members with different protection levels (i.e. public and protected).

Subpaging

Information can be grouped into pages using the \page and \mainpage commands. Normally, this results in a flat list of pages, where the "main" page is the first in the list.

Instead of adding structure using the approach described in section modules it is often more natural and convenient to add additional structure to the pages using the \subpage command.

For a page A the \subpage command adds a link to another page B and at the same time makes page B a subpage of A. This has the effect of making two groups GA and GB, where GB is part of GA, page A is put in group GA, and page B is put in group GB.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:43 for Doxygen by doxygen 1.8.7


Doxygen: Including formulas

Doxygen
Including formulas

Doxygen allows you to put [image] formulas in the output (this works only for the HTML and [image] output, not for the RTF nor for the man page output). To be able to include formulas (as images) in the HTML documentation, you will also need to have the following tools installed

  • latex: the [image] compiler, needed to parse the formulas. To test I have used the teTeX 1.0 distribution.
  • dvips: a tool to convert DVI files to PostScript files I have used version 5.92b from Radical Eye software for testing.
  • gs: the GhostScript interpreter for converting PostScript files to bitmaps. I have used Aladdin GhostScript 8.0 for testing.

For the HTML output there is also an alternative solution using MathJax which does not require the above tools. If you enable USE_MATHJAX in the config then the latex formulas will be copied to the HTML "as is" and a client side javascript will parse them and turn them into (interactive) images.

There are three ways to include formulas in the documentation.

  1. Using in-text formulas that appear in the running text. These formulas should be put between a pair of \f$ commands, so

      The distance between \f$(x_1,y_1)\f$ and \f$(x_2,y_2)\f$ is
  \f$\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\f$.

    results in:

    The distance between [image] and [image] is [image].

  2. Unnumbered displayed formulas that are centered on a separate line. These formulas should be put between \f[ and \f] commands. An example:
      \f[
    |I_2|=\left| \int_{0}^T \psi(t)
             \left\{
                u(a,t)-
                \int_{\gamma(t)}^a
                \frac{d\theta}{k(\theta,t)}
                \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi
             \right\} dt
          \right|
  \f]
    results in:

  3. Formulas or other latex elements that are not in a math environment can be specified using \f{environment}, where environment is the name of the [image] environment, the corresponding end command is \f}. Here is an example for an equation array
       \f{eqnarray*}{
        g &=& \frac{Gm_2}{r^2} \\
          &=& \frac{(6.673 \times 10^{-11}\,\mbox{m}^3\,\mbox{kg}^{-1}\,
              \mbox{s}^{-2})(5.9736 \times 10^{24}\,\mbox{kg})}{(6371.01\,\mbox{km})^2} \\
          &=& 9.82066032\,\mbox{m/s}^2
   \f}
    which results in:

For the first two commands one should make sure formulas contain valid commands in [image] 's math-mode. For the third command the section should contain valid command for the specific environment.

Warning
Currently, doxygen is not very fault tolerant in recovering from typos in formulas. It may be necessary to remove the file formula.repository that is written to the html directory to get rid of an incorrect formula.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:43 for Doxygen by doxygen 1.8.7


Doxygen: Graphs and diagrams

Doxygen
Graphs and diagrams

Doxygen has built-in support to generate inheritance diagrams for C++ classes.

Doxygen can use the "dot" tool from graphviz to generate more advanced diagrams and graphs. Graphviz is an open-source, cross-platform graph drawing toolkit and can be found at http://www.graphviz.org/

If you have the "dot" tool in the path, you can set HAVE_DOT to YES in the configuration file to let doxygen use it.

Doxygen uses the "dot" tool to generate the following graphs:

  • A graphical representation of the class hierarchy will be drawn, along with the textual one. Currently this feature is supported for HTML only.
    Warning: When you have a very large class hierarchy where many classes derive from a common base class, the resulting image may become too big to handle for some browsers.
  • An inheritance graph will be generated for each documented class showing the direct and indirect inheritance relations. This disables the generation of the built-in class inheritance diagrams.
  • An include dependency graph is generated for each documented file that includes at least one other file. This feature is currently supported for HTML and RTF only.
  • An inverse include dependency graph is also generated showing for a (header) file, which other files include it.
  • A graph is drawn for each documented class and struct that shows:
    • the inheritance relations with base classes.
    • the usage relations with other structs and classes (e.g. class A has a member variable m_a of type class B, then A has an arrow to B with m_a as label).
  • if CALL_GRAPH is set to YES, a graphical call graph is drawn for each function showing the functions that the function directly or indirectly calls.
  • if CALLER_GRAPH is set to YES, a graphical caller graph is drawn for each function showing the functions that the function is directly or indirectly called by.

Using a layout file you can determine which of the graphs are actually shown.

The options DOT_GRAPH_MAX_NODES and MAX_DOT_GRAPH_DEPTH can be used to limit the size of the various graphs.

The elements in the class diagrams in HTML and RTF have the following meaning:

  • A yellow box indicates a class. A box can have a little marker in the lower right corner to indicate that the class contains base classes that are hidden. For the class diagrams the maximum tree width is currently 8 elements. If a tree is wider some nodes will be hidden. If the box is filled with a dashed pattern the inheritance relation is virtual.
  • A white box indicates that the documentation of the class is currently shown.
  • A gray box indicates an undocumented class.
  • A solid dark blue arrow indicates public inheritance.
  • A dashed dark green arrow indicates protected inheritance.
  • A dotted dark green arrow indicates private inheritance.

The elements in the class diagram in [image] have the following meaning:

  • A white box indicates a class. A marker in the lower right corner of the box indicates that the class has base classes that are hidden. If the box has a dashed border this indicates virtual inheritance.
  • A solid arrow indicates public inheritance.
  • A dashed arrow indicates protected inheritance.
  • A dotted arrow indicates private inheritance.

The elements in the graphs generated by the dot tool have the following meaning:

  • A white box indicates a class or struct or file.
  • A box with a red border indicates a node that has more arrows than are shown! In other words: the graph is truncated with respect to this node. The reason why a graph is sometimes truncated is to prevent images from becoming too large. For the graphs generated with dot doxygen tries to limit the width of the resulting image to 1024 pixels.
  • A black box indicates that the class' documentation is currently shown.
  • A dark blue arrow indicates an include relation (for the include dependency graph) or public inheritance (for the other graphs).
  • A dark green arrow indicates protected inheritance.
  • A dark red arrow indicates private inheritance.
  • A purple dashed arrow indicated a "usage" relation, the edge of the arrow is labeled with the variable(s) responsible for the relation. Class A uses class B, if class A has a member variable m of type C, where B is a subtype of C (e.g. C could be B, B*, T<B>*).

Here are a couple of header files that together show the various diagrams that doxygen can generate:

diagrams_a.h

#ifndef _DIAGRAMS_A_H
#define _DIAGRAMS_A_H
class A { public: A *m_self; };
#endif

diagrams_b.h

#ifndef _DIAGRAMS_B_H
#define _DIAGRAMS_B_H
class A;
class B { public: A *m_a; };
#endif

diagrams_c.h

#ifndef _DIAGRAMS_C_H
#define _DIAGRAMS_C_H
#include "diagrams_c.h"
class D;
class C : public A { public: D *m_d; };
#endif

diagrams_d.h

#ifndef _DIAGRAM_D_H
#define _DIAGRAM_D_H
#include "diagrams_a.h"
#include "diagrams_b.h"
class C;
class D : virtual protected  A, private B { public: C m_c; };
#endif

diagrams_e.h

#ifndef _DIAGRAM_E_H
#define _DIAGRAM_E_H
#include "diagrams_d.h"
class E : public D {};
#endif

Click here for the corresponding HTML documentation that is generated by doxygen
(EXTRACT_ALL = YES is used here).

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:43 for Doxygen by doxygen 1.8.7


Doxygen: Preprocessing

Doxygen
Preprocessing

Source files that are used as input to doxygen can be parsed by doxygen's built-in C-preprocessor.

By default doxygen does only partial preprocessing. That is, it evaluates conditional compilation statements (like #if) and evaluates macro definitions, but it does not perform macro expansion.

So if you have the following code fragment

#define VERSION 200
#define CONST_STRING const char *

#if VERSION >= 200
  static CONST_STRING version = "2.xx";
#else
  static CONST_STRING version = "1.xx";
#endif

Then by default doxygen will feed the following to its parser:

#define VERSION
#define CONST_STRING

  static CONST_STRING version = "2.xx";

You can disable all preprocessing by setting ENABLE_PREPROCESSING to NO in the configuration file. In the case above doxygen will then read both statements, i.e.:

  static CONST_STRING version = "2.xx";
  static CONST_STRING version = "1.xx";

In case you want to expand the CONST_STRING macro, you should set the MACRO_EXPANSION tag in the config file to YES. Then the result after preprocessing becomes:

#define VERSION
#define CONST_STRING

  static const char * version = "1.xx";

Note that doxygen will now expand all macro definitions (recursively if needed). This is often too much. Therefore, doxygen also allows you to expand only those defines that you explicitly specify. For this you have to set the EXPAND_ONLY_PREDEF tag to YES and specify the macro definitions after the PREDEFINED or EXPAND_AS_DEFINED tag.

A typically example where some help from the preprocessor is needed is when dealing with the language extension from Microsoft: __declspec. The same goes for GNU's __attribute__ extension. Here is an example function.

extern "C" void __declspec(dllexport) ErrorMsg( String aMessage,...);

When nothing is done, doxygen will be confused and see __declspec as some sort of function. To help doxygen one typically uses the following preprocessor settings:

ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
PREDEFINED             = __declspec(x)=

This will make sure the __declspec(dllexport) is removed before doxygen parses the source code.

Similar settings can be used for removing __attribute__ expressions from the input:

ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
PREDEFINED             = __attribute__(x)=

For a more complex example, suppose you have the following obfuscated code fragment of an abstract base class called IUnknown:

/*! A reference to an IID */
#ifdef __cplusplus
#define REFIID const IID &
#else
#define REFIID const IID *
#endif

/*! The IUnknown interface */
DECLARE_INTERFACE(IUnknown)
{
  STDMETHOD(HRESULT,QueryInterface) (THIS_ REFIID iid, void **ppv) PURE;
  STDMETHOD(ULONG,AddRef) (THIS) PURE;
  STDMETHOD(ULONG,Release) (THIS) PURE;
};

without macro expansion doxygen will get confused, but we may not want to expand the REFIID macro, because it is documented and the user that reads the documentation should use it when implementing the interface.

By setting the following in the config file:

ENABLE_PREPROCESSING = YES
MACRO_EXPANSION      = YES
EXPAND_ONLY_PREDEF   = YES
PREDEFINED           = "DECLARE_INTERFACE(name)=class name" \
                       "STDMETHOD(result,name)=virtual result name" \
                       "PURE= = 0" \
                       THIS_= \
                       THIS= \
               __cplusplus

we can make sure that the proper result is fed to doxygen's parser:

/*! A reference to an IID */
#define REFIID

/*! The IUnknown interface */
class  IUnknown
{
  virtual  HRESULT   QueryInterface ( REFIID iid, void **ppv) = 0;
  virtual  ULONG   AddRef () = 0;
  virtual  ULONG   Release () = 0;
};

Note that the PREDEFINED tag accepts function like macro definitions (like DECLARE_INTERFACE ), normal macro substitutions (like PURE and THIS) and plain defines (like __cplusplus).

Note also that preprocessor definitions that are normally defined automatically by the preprocessor (like __cplusplus), have to be defined by hand with doxygen's parser (this is done because these defines are often platform/compiler specific).

In some cases you may want to substitute a macro name or function by something else without exposing the result to further macro substitution. You can do this but using the := operator instead of =

As an example suppose we have the following piece of code:

#define QList QListT
class QListT
{
};

Then the only way to get doxygen interpret this as a class definition for class QList is to define:

PREDEFINED = QListT:=QList

Here is an example provided by Valter Minute and Reyes Ponce that helps doxygen to wade through the boilerplate code in Microsoft's ATL & MFC libraries:

PREDEFINED           = "DECLARE_INTERFACE(name)=class name" \
                       "STDMETHOD(result,name)=virtual result name" \
                       "PURE= = 0" \
                       THIS_= \
                       THIS= \
                       DECLARE_REGISTRY_RESOURCEID=// \
                       DECLARE_PROTECT_FINAL_CONSTRUCT=// \
                       "DECLARE_AGGREGATABLE(Class)= " \
                       "DECLARE_REGISTRY_RESOURCEID(Id)= " \
                       DECLARE_MESSAGE_MAP= \
                       BEGIN_MESSAGE_MAP=/* \
                       END_MESSAGE_MAP=*/// \
                       BEGIN_COM_MAP=/* \
                       END_COM_MAP=*/// \
                       BEGIN_PROP_MAP=/* \
                       END_PROP_MAP=*/// \
                       BEGIN_MSG_MAP=/* \
                       END_MSG_MAP=*/// \
                       BEGIN_PROPERTY_MAP=/* \
                       END_PROPERTY_MAP=*/// \
                       BEGIN_OBJECT_MAP=/* \
                       END_OBJECT_MAP()=*/// \
                       DECLARE_VIEW_STATUS=// \
                       "STDMETHOD(a)=HRESULT a" \
                       "ATL_NO_VTABLE= " \
                       "__declspec(a)= " \
                       BEGIN_CONNECTION_POINT_MAP=/* \
                       END_CONNECTION_POINT_MAP=*/// \
                       "DECLARE_DYNAMIC(class)= " \
                       "IMPLEMENT_DYNAMIC(class1, class2)= " \
                       "DECLARE_DYNCREATE(class)= " \
                       "IMPLEMENT_DYNCREATE(class1, class2)= " \
                       "IMPLEMENT_SERIAL(class1, class2, class3)= " \
                       "DECLARE_MESSAGE_MAP()= " \
                       TRY=try \
                       "CATCH_ALL(e)= catch(...)" \
                       END_CATCH_ALL= \
                       "THROW_LAST()= throw"\
                       "RUNTIME_CLASS(class)=class" \
                       "MAKEINTRESOURCE(nId)=nId" \
                       "IMPLEMENT_REGISTER(v, w, x, y, z)= " \
                       "ASSERT(x)=assert(x)" \
                       "ASSERT_VALID(x)=assert(x)" \
                       "TRACE0(x)=printf(x)" \
                       "OS_ERR(A,B)={ #A, B }" \
                       __cplusplus \
                       "DECLARE_OLECREATE(class)= " \
                       "BEGIN_DISPATCH_MAP(class1, class2)= " \
                       "BEGIN_INTERFACE_MAP(class1, class2)= " \
                       "INTERFACE_PART(class, id, name)= " \
                       "END_INTERFACE_MAP()=" \
                       "DISP_FUNCTION(class, name, function, result, id)=" \
                       "END_DISPATCH_MAP()=" \
                       "IMPLEMENT_OLECREATE2(class, name, id1, id2, id3, id4,\
                        id5, id6, id7, id8, id9, id10, id11)="

As you can see doxygen's preprocessor is quite powerful, but if you want even more flexibility you can always write an input filter and specify it after the INPUT_FILTER tag.

If you are unsure what the effect of doxygen's preprocessing will be you can run doxygen as follows:

  doxygen -d Preprocessor

This will instruct doxygen to dump the input sources to standard output after preprocessing has been done (Hint: set QUIET = YES and WARNINGS = NO in the configuration file to disable any other output).

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:43 for Doxygen by doxygen 1.8.7


Doxygen: Automatic link generation

Doxygen
Automatic link generation

Table of Contents

  • Links to web pages and mail addresses
  • Links to classes
  • Links to files
  • Links to functions
  • Links to other members
  • typedefs

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 \sa), it does allow you to put these kind of links anywhere in the documentation. For [image] 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.

The next sections show how to generate links to the various documented entities in a source file.

Links to web pages and mail addresses

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 'a' tag:

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

which will be automatically translated to other output formats by Doxygen.

Links to classes

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 \ref.

Links to files

All words that contain a dot (.) 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.

Links to functions

Links to functions are created if one of the following patterns is encountered:

  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>

where n>0.

Note 1:
Function arguments should be specified with correct types, i.e. 'fun(const std::string&,bool)' or '()' to match any prototype.
Note 2:
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.
Note 3:
For JavaDoc compatibility a # may be used instead of a :: in the patterns above.
Note 4:
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.

For non overloaded members the argument list may be omitted.

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.

For member functions the class scope (as used in patterns 4 to 7) may be omitted, if:

  1. The pattern points to a documented member that belongs to the same class as the documentation block that contains the pattern.
  2. 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.

Links to other members

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.

Example:
/*! \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.
 */
Click here for the corresponding HTML documentation that is generated by Doxygen.

typedefs

Typedefs that involve classes, structs and unions, like

typedef struct StructName TypeName

create an alias for StructName, so links will be generated to StructName, when either StructName itself or TypeName is encountered.

Example:
/*! \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)
{
}
Click here for the corresponding HTML documentation that is generated by Doxygen.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:43 for Doxygen by doxygen 1.8.7


Doxygen: Output Formats

Doxygen
Output Formats

The following output formats are directly supported by doxygen:

HTML
Generated if GENERATE_HTML is set to YES in the configuration file.
Generated if GENERATE_LATEX is set to YES in the configuration file.
Man pages
Generated if GENERATE_MAN is set to YES in the configuration file.
RTF

Generated if GENERATE_RTF is set to YES in the configuration file.

Note that the RTF output probably only looks nice with Microsoft's Word. If you have success with other programs, please let me know.

XML

Generated if GENERATE_XML is set to YES in the configuration file.

Docbook

Generated if GENERATE_DOCBOOOK is set to YES in the configuration file.

The following output formats are indirectly supported by doxygen:

Compiled HTML Help (a.k.a. Windows 98 help)
Generated by Microsoft's HTML Help workshop from the HTML output if GENERATE_HTMLHELP is set to YES.
Qt Compressed Help (.qch)
Generated by Qt's qhelpgenerator tool from the HTML output if GENERATE_QHP is set to YES.
Eclipse Help
Generated from HTML with a special index file that is generated when GENERATE_ECLIPSEHELP is set to YES.
XCode DocSets
Compiled from HTML with a special index file that is generated when GENERATE_DOCSET is set to YES.
PostScript
Generated from the [image] output by running make ps in the output directory. For the best results PDF_HYPERLINKS should be set to NO.
PDF
Generated from the [image] output by running make pdf in the output directory. To improve the PDF output, you typically would want to enable the use of pdflatex by setting USE_PDFLATEX to YES in the configuration file. In order to get hyperlinks in the PDF file you also need to enable PDF_HYPERLINKS.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:43 for Doxygen by doxygen 1.8.7


Doxygen: Searching

Doxygen
Searching

Doxygen indexes your source code in various ways to make it easier to navigate and find what you are looking for. There are also situations however where you want to search for something by keyword rather than browse for it.

HTML browsers by default have no search capabilities that work across multiple pages, so either doxygen or external tools need to help to facilitate this feature.

Doxygen has 7 different ways to add searching to the HTML output, each of which has its own advantages and disadvantages:

1. Client side searching

The easiest way to enable searching is to enable the built-in client side search engine. This engine is implemented using Javascript and DHTML only and runs entirely on the clients browser. So no additional tooling is required to make it work.

To enable it set SEARCHENGINE to YES in the config file and make sure SERVER_BASED_SEARCH is set to NO.

An additional advantage of this method is that it provides live searching, i.e. the search results are presented and adapted as you type.

This method also has its drawbacks: it is limited to searching for symbols only. It does not provide full text search capabilities, and it does not scale well to very large projects (then searching becomes very slow).

2. Server side searching

If you plan to put the HTML documentation on a web server, and that web server has the capability to process PHP code, then you can also use doxygen's built-in server side search engine.

To enable this set both SEARCHENGINE and SERVER_BASED_SEARCH to YES in the config file and set EXTERNAL_SEARCH to NO.

Advantages over the client side search engine are that it provides full text search and it scales well to medium side projects.

Disadvantages are that it does not work locally (i.e. using a "file://" URL) and that it does not provide live search capabilities.

Note
In the future this option will probably be replaced by the next search option.

3. Server side searching with external indexing

With release 1.8.3 of doxygen, another server based search option has been added. With this option doxygen generates the raw data that can be searched and leaves it up to external tools to do the indexing and searching, meaning that you could use your own indexer and search engine of choice. To make life easier doxygen ships with an example indexer (doxyindexer) and search engine (doxysearch.cgi) based on the Xapian open source search engine library.

To enable this search method set SEARCHENGINE, SERVER_BASED_SEARCH and EXTERNAL_SEARCH all to YES.

See External Indexing and Searching for configuration details.

Advantages over option 2 are that this method (potentially) scales to very large projects. It is also possible to combine multiple doxygen projects and external data into one search index. The way the interaction with the search engine is done, makes it possible to search from local HTML pages. Also the search results have better ranking and show context information (if available).

Disadvantages are that is requires a web server that can execute a CGI binary, and an additional indexing step after running doxygen.

4. Windows Compiled HTML Help

If you are running doxygen on Windows, then you can make a compiled HTML Help file (.chm) out of the HTML files produced by doxygen. This is a single file containing all HTML files and it also includes a search index. There are viewers for this format on many platforms, and Windows even supports it natively.

To enable this set GENERATE_HTMLHELP to YES in the config file. To let doxygen compile the HTML Help file for you, you also need to specify the path to the HTML compiler (hhc.exe) using the HHC_LOCATION config option and the name of the resulting CHM file using CHM_FILE.

An advantage of this method is that the result is a single file that can easily be distributed. It also provides full text search.

Disadvantages are that compiling the CHM file only works on Windows and requires Microsoft's HTML compiler, which is not very actively supported by Microsoft. Although the tool works fine for most people, it can sometimes crash for no apparent reason (how typical).

5. Mac OS X Doc Sets

If you are running doxygen on Mac OS X 10.5 or higher, then you can make a "doc set" out of the HTML files produced by doxygen. A doc set consists of a single directory with a special structure containing the HTML files along with a precompiled search index. A doc set can be embedded in Xcode (the integrated development environment provided by Apple).

To enable the creation of doc sets set GENERATE_DOCSET to YES in the config file. There are a couple of other doc set related options you may want to set. After doxygen has finished you will find a Makefile in the HTML output directory. Running "make install" on this Makefile will compile and install the doc set. See this article for more info.

Advantage of this method is that it nicely integrates with the Xcode development environment, allowing for instance to click on an identifier in the editor and jump to the corresponding section in the doxygen documentation.

Disadvantage is that it only works in combination with Xcode on MacOSX.

6. Qt Compressed Help

If you develop for or want to install the Qt application framework, you will get an application called Qt assistant. This is a help viewer for Qt Compressed Help files (.qch).

To enable this feature set GENERATE_QHP to YES. You also need to fill in the other Qt help related options, such as QHP_NAMESPACE, QHG_LOCATION, QHP_VIRTUAL_FOLDER. See this article for more info.

Feature wise the Qt compressed help feature is comparable with the CHM output, with the additional advantage that compiling the QCH file is not limited to Windows.

Disadvantage is that it requires setting up a Qt 4.5 (or better) for each user, or distributing the Qt help assistant along with the documentation, which is complicated by the fact that it is not available as a separate package at this moment.

7. Eclipse Help Plugin

If you use eclipse, you can embed the documentation generated by doxygen as a help plugin. It will then appear as a topic in the help browser that can be started from "Help contents" in the Help menu. Eclipse will generate a search index for the documentation when you first search for a keyword.

To enable the help plugin set GENERATE_ECLIPSEHELP to YES, and define a unique identifier for your project via ECLIPSE_DOC_ID, i.e.:

   GENERATE_ECLIPSEHELP = YES
   ECLIPSE_DOC_ID       = com.yourcompany.yourproject

then create the com.yourcompany.yourproject directory (so with the same name as the value of ECLIPSE_DOC_ID) in the plugin directory of eclipse and after doxygen completes copy to contents of the help output directory to the com.yourcompany.yourproject directory. Then restart eclipse to make let it find the new plugin.

The eclipse help plugin provides similar functionality as the Qt compressed help or CHM output, but it does require that Eclipse is installed and running.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: External Indexing and Searching

Doxygen
External Indexing and Searching

Table of Contents

  • Introduction
  • Configuring
    • Single project index
    • Multi project index
  • Updating the index
  • Programming interface
    • Indexer input format
    • Search URL format
    • Search results format

Introduction

With release 1.8.3, doxygen provides the ability to search through HTML using an external indexing tool and search engine. This has several advantages:

  • For large projects it can have significant performance advantages over doxygen's built-in search engine, as doxygen uses a rather simple indexing algorithm.
  • It allows combining the search data of multiple projects into one index, allowing a global search across multiple doxygen projects.
  • It allows adding additional data to the search index, i.e. other web pages not produced by doxygen.
  • The search engine needs to run on a web server, but clients can still browse the web pages locally.

To avoid that everyone has to start writing their own indexer and search engine, doxygen provides an example tool for each action: doxyindexer for indexing the data and doxysearch.cgi for searching through the index.

The data flow is shown in the following diagram:

External Search Data Flow
  • doxygen produces the raw search data
  • doxyindexer indexes the data into a search database doxysearch.db
  • when a user performs a search from a doxygen generated HTML page, the CGI binary doxysearch.cgi will be invoked.
  • the doxysearch.cgi tool will perform a query on the database and return the results.
  • The browser will show the search results.

Configuring

The first step is to make the search engine available via a web server. If you use doxysearch.cgi this means making the CGI binary available from the web server (i.e. be able to run it from a browser via an URL starting with http:)

How to setup a web server is outside the scope of this document, but if you for instance have Apache installed, you could simply copy the doxysearch.cgi file from doxygen's bin dir to the cgi-bin of the Apache web server. Read the apache documentation for details.

To test if doxysearch.cgi is accessible start your web browser and point to URL to the binary and add ?test at the end

http://yoursite.com/path/to/cgi/doxysearch.cgi?test

You should get the following message:

Test failed: cannot find search index doxysearch.db

If you use Internet Explorer you may be prompted to download a file, which will then contain this message.

Since we didn't create or install a doxysearch.db it is ok for the test to fail for this reason. How to correct this is discussed in the next section.

Before continuing with the next section add the above URL (without the ?test part) to the SEARCHENGINE_URL tag in doxygen's configuration file:

SEARCHENGINE_URL = http://yoursite.com/path/to/cgi/doxysearch.cgi

Single project index

To use the external search option, make sure the following options are enabled in doxygen's configuration file:

SEARCHENGINE           = YES
SERVER_BASED_SEARCH    = YES
EXTERNAL_SEARCH        = YES

This will make doxygen generate a file called searchdata.xml in the output directory (configured with OUTPUT_DIRECTORY). You can change the file name (and location) with the SEARCHDATA_FILE option.

The next step is to put the raw search data into an index for efficient searching. You can use doxyindexer for this. Simply run it from the command line:

doxyindexer searchdata.xml

This will create a directory called doxysearch.db with some files in it. By default the directory will be created at the location from which doxyindexer was started, but you can change the directory using the -o option.

Copy the doxysearch.db directory to the same directory as where the doxysearch.cgi is located and rerun the browser test by pointing the browser to

http://yoursite.com/path/to/cgi/doxysearch.cgi?test

You should now get the following message:

Test successful.

Now you should be enable to search for words and symbols from the HTML output.

Multi project index

In case you have more than one doxygen project and these projects are related, it may be desirable to allow searching for words in all projects from within the documentation of any of the projects.

To make this possible all that is needed is to combine the search data for all projects into a single index, e.g. for two projects A and B for which the searchdata.xml is generated in directories project_A and project_B run:

doxyindexer project_A/searchdata.xml project_B/searchdata.xml

and then copy the resulting doxysearch.db to the directory where also doxysearch.cgi is located.

The searchdata.xml file doesn't contain any absolute paths or links, so how can the search results from multiple projects be linked back to the right documentation set? This is where the EXTERNAL_SEARCH_ID and EXTRA_SEARCH_MAPPINGS options come into play.

To be able to identify the different projects, one needs to set a unique ID using EXTERNAL_SEARCH_ID for each project.

To link the search results to the right project, you need to define a mapping per project using the EXTRA_SEARCH_MAPPINGS tag. With this option to can define the mapping from IDs of other projects to the (relative) location of documentation of those projects.

So for projects A and B the relevant part of the configuration file could look as follows:

project_A/Doxyfile
------------------
EXTERNAL_SEARCH_ID    = A
EXTRA_SEARCH_MAPPINGS = B=../../project_B/html

for project A and for project B

project_B/Doxyfile
------------------
EXTERNAL_SEARCH_ID    = B
EXTRA_SEARCH_MAPPINGS = A=../../project_A/html

with these settings, projects A and B can share the same search database, and the search results will link to the right documentation set.

Updating the index

When you modify the source code, you should re-run doxygen to get up to date documentation again. When using external searching you also need to update the search index by re-running doxyindexer. You could wrap the call to doxygen and doxyindexer together in a script to make this process easier.

Programming interface

Previous sections have assumed you use the tools doxyindexer and doxysearch.cgi to do the indexing and searching, but you could also write your own index and search tools if you like.

For this 3 interfaces are important

  • The format of the input for the index tool.
  • The format of the input for the search engine.
  • The format of the output of search engine.

The next subsections describe these interfaces in more detail.

Indexer input format

The search data produced by doxygen follows the Solr XML index message format.

The input for the indexer is an XML file, which consists of one <add> tag containing multiple <doc> tags, which in turn contain multiple <field> tags.

Here is an example of one doc node, which contains the search data and meta data for one method:

<add>
  ...
  <doc>
    <field name="type">function</field>
    <field name="name">QXmlReader::setDTDHandler</field>
    <field name="args">(QXmlDTDHandler *handler)=0</field>
    <field name="tag">qtools.tag</field>
    <field name="url">de/df6/class_q_xml_reader.html#a0b24b1fe26a4c32a8032d68ee14d5dba</field>
    <field name="keywords">setDTDHandler QXmlReader::setDTDHandler QXmlReader</field>
    <field name="text">Sets the DTD handler to handler DTDHandler()</field>
  </doc>
  ...
</add>

Each field has a name. The following field names are supported:

  • type: the type of the search entry; can be one of: source, function, slot, signal, variable, typedef, enum, enumvalue, property, event, related, friend, define, file, namespace, group, package, page, dir
  • name: the name of the search entry; for a method this is the qualified name of the method, for a class it is the name of the class, etc.
  • args: the parameter list (in case of functions or methods)
  • tag: the name of the tag file used for this project.
  • url: the (relative) URL to the HTML documentation for this entry.
  • keywords: important words that are representative for the entry. When searching for such keyword, this entry should get a higher rank in the search results.
  • text: the documentation associated with the item. Note that only words are present, no markup.
Note
Due to the potentially large size of the XML file, it is recommended to use a SAX based parser to process it.

Search URL format

When the search engine is invoked from a doxygen generated HTML page, a number of parameters are passed to via the query string.

The following fields are passed:

  • q: the query text as entered by the user
  • n: the number of search results requested.
  • p: the number of search page for which to return the results. Each page has n values.
  • cb: the name of the callback function, used for JSON with padding, see the next section.

From the complete list of search results, the range [n*p - n*(p+1)-1] should be returned.

Here is an example of how a query looks like.

http://yoursite.com/path/to/cgi/doxysearch.cgi?q=list&n=20&p=1&cb=dummy

It represents a query for the word 'list' (q=list) requesting 20 search results (n=20), starting with the result number 20 (p=1) and using callback 'dummy' (cb=dummy):

Note
The values are URL encoded so they have to be decoded before they can be used.

Search results format

When invoking the search engine as shown in the previous subsection, it should reply with the results. The format of the reply is JSON with padding, which is basically a javascript struct wrapped in a function call. The name of function should be the name of the callback (as passed with the cb field in the query).

With the example query as shown the previous subsection the main structure of the reply should look as follows:

dummy({
  "hits":179,
  "first":20,
  "count":20,
  "page":1,
  "pages":9,
  "query": "list",
  "items":[
  ...
 ]})

The fields have the following meaning:

  • hits: the total number of search results (could be more than was requested).
  • first: the index of first result returned: .
  • count: the actual number of results returned:
  • page: the page number of the result: $p$
  • pages: the total number of pages: .
  • items: an array containing the search data per result.

Here is an example of how the element of the items array should look like:

{"type": "function",
 "name": "QDir::entryInfoList(const QString &nameFilter, int filterSpec=DefaultFilter, int sortSpec=DefaultSort) const",
 "tag": "qtools.tag",
 "url": "d5/d8d/class_q_dir.html#a9439ea6b331957f38dbad981c4d050ef",
 "fragments":[
   "Returns a <span class=\"hl\">list</span> of QFileInfo objects for all files and directories...",
   "... pointer to a QFileInfoList The <span class=\"hl\">list</span> is owned by the QDir object...",
   "... to keep the entries of the <span class=\"hl\">list</span> after a subsequent call to this..."
 ]
},

The fields for such an item have the following meaning:

  • type: the type of the item, as found in the field with name "type" in the raw search data.
  • name: the name of the item, including the parameter list, as found in the fields with name "name" and "args" in the raw search data.
  • tag: the name of the tag file, as found in the field with name "tag" in the raw search data.
  • url: the name of the (relative) URL to the documentation, as found in the field with name "url" in the raw search data.
  • "fragments": an array with 0 or more fragments of text containing words that have been search for. These words should be wrapped in <span class="hl"> and </span> tags to highlight them in the output.
Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Customizing the output

Doxygen
Customizing the output

Table of Contents

  • Minor Tweaks
    • Overall Color
    • Navigation
    • Dynamic Content
    • Header, Footer, and Stylesheet changes
  • Changing the layout of pages
  • Using the XML output

Doxygen provides various levels of customization. The section Minor Tweaks discusses what to do if you want to do minor tweaking to the look and feel of the output. The section Layout show how to reorder and hide certain information on a page. The section XML output show how to generate whatever output you want based on the XML output produced by doxygen.

Minor Tweaks

The next subsections describe some aspects that can be tweaked with little effort.

Overall Color

To change the overall color of the HTML output doxygen provides three options

  • HTML_COLORSTYLE_HUE
  • HTML_COLORSTYLE_SAT
  • HTML_COLORSTYLE_GAMMA

to change the hue, saturation, and gamma correction of the colors respectively.

For your convenience the GUI frontend Doxywizard has a control that allows you to see the effect of changing the values of these options on the output in real time.

Navigation

By default doxygen shows navigation tabs on top of every HTML page, corresponding with the following settings:

  • DISABLE_INDEX = NO
  • GENERATE_TREEVIEW = NO

you can switch to an interactive navigation tree as sidebar using

  • DISABLE_INDEX = YES
  • GENERATE_TREEVIEW = YES

or even have both forms of navigation:

  • DISABLE_INDEX = NO
  • GENERATE_TREEVIEW = YES

if you already use an external index (i.e. have one of the following options enabled GENERATE_HTMLHELP, GENERATE_ECLIPSEHELP, GENERATE_QHP, or GENERATE_DOCSET) then you can also disable all indices, like so:

  • DISABLE_INDEX = YES
  • GENERATE_TREEVIEW = NO

Dynamic Content

To make the HTML output more interactive, doxygen provides a number of options that are disabled by default:

  • enabling HTML_DYNAMIC_SECTIONS will make doxygen hide certain content (like graphs) in the HTML by default, and let the reader expand these sections on request.
  • enabling HAVE_DOT along with INTERACTIVE_SVG while setting DOT_IMAGE_FORMAT to svg, will make doxygen produce SVG images that will allow the user to zoom and pan (this only happens when the size of the images exceeds a certain size).

Header, Footer, and Stylesheet changes

To tweak things like fonts or colors, margins, or other look & feel aspects of the HTML output in detail, you can create a different cascading style sheet. You can also let doxygen use a custom header and footer for each HTML page it generates, for instance to make the output conform to the style used on the rest of your web site.

To do this first run doxygen as follows:

doxygen -w html header.html footer.html customdoxygen.css

This will create 3 files:

  • header.html is a HTML fragment which doxygen normally uses to start a HTML page. Note that the fragment ends with a body tag and that is contains a couple of commands of the form $word. These will be replaced by doxygen on the fly.
  • footer.html is a HTML fragment which doxygen normally uses to end a HTML page. Also here special commands can be used. This file contain the link to www.doxygen.org and the body and html end tags.
  • customdoxygen.css is the default cascading style sheet used by doxygen. It is recommended only to look into this file and overrule some settings you like by putting them in a separate stylesheet and referencing that extra file via HTML_EXTRA_STYLESHEET.

You should edit these files and then reference them from the config file.

  • HTML_HEADER = header.html
  • HTML_FOOTER = footer.html
  • HTML_STYLESHEET = customdoxygen.css ←obsolete
Note
it is not longer recommended to use HTML_STYLESHEET this way, as it make it difficult to upgrade to a newer version of doxygen. Use HTML_EXTRA_STYLESHEET instead.

See the documentation of the HTML_HEADER tag for more information about the possible meta commands you can use inside your custom header.

Note
You should not put the style sheet in the HTML output directory. Treat it as a source file. Doxygen will copy it for you.
If you use images or other external content in a custom header you need to make sure these end up in the HTML output directory yourself, for instance by writing a script that runs doxygen can then copies the images to the output.
Warning
The structure of headers and footers may change after upgrading to a newer version of doxygen, so if you are using a custom header or footer, it might not produce valid output anymore after upgrading.

Changing the layout of pages

In some cases you may want to change the way the output is structured. A different style sheet or custom headers and footers do not help in such case.

The solution doxygen provides is a layout file, which you can modify and doxygen will use to control what information is presented, in which order, and to some extent also how information is presented. The layout file is an XML file.

The default layout can be generated by doxygen using the following command:

doxygen -l

optionally the name of the layout file can be specified, if omitted DoxygenLayout.xml will be used.

The next step is to mention the layout file in the config file

LAYOUT_FILE = DoxygenLayout.xml

To change the layout all you need to do is edit the layout file.

The toplevel structure of the file looks as follows:

<doxygenlayout version="1.0">
  <navindex>
    ...
  </navindex>
  <class>
    ...
  </class>
  <namespace>
    ...
  </namespace>
  <file>
    ...
  </file>
  <group>
    ...
  </group>
  <directory>
    ...
  </directory>
</doxygenlayout>

The root element of the XML file is doxygenlayout, it has an attribute named version, which will be used in the future to cope with changes that are not backward compatible.

The first section, identified by the navindex element, represents the layout of the navigation tabs displayed at the top of each HTML page. At the same time it also controls the items in the navigation tree in case GENERATE_TREEVIEW is enabled. Each tab is represented by a tab element in the XML file.

You can hide tabs by setting the visible attribute to no. You can also override the default title of a tab by specifying it as the value of the title attribute. If the title field is the empty string (the default) then doxygen will fill in an appropriate language specific title.

You can reorder the tabs by moving the tab elements in the XML file within the navindex element and even change the tree structure. Do not change the value of the type attribute however. Only a fixed set of types are supported, each representing a link to a specific index.

You can also add custom tabs using a type with name "user". Here is an example that shows how to add a tab with title "Google" pointing to www.google.com:

  <navindex>
    ...
    <tab type="user" url="http://www.google.com" title="Google"/>
    ...
  </navindex>

The url field can also be a relative URL. If the URL starts with @ref the link will point to a documented entities, such as a class, a function, a group, or a related page. Suppose we have defined a page using @page with label mypage, then a tab with label "My Page" to this page would look as follows:

  <navindex>
    ...
    <tab type="user" url="@ref mypage" title="My Page"/>
    ...
  </navindex>

You can also group tabs together in a custom group using a tab with type "usergroup". The following example puts the above tabs in a user defined group with title "My Group":

  <navindex>
    ...
    <tab type="usergroup" title="My Group">
      <tab type="user" url="http://www.google.com" title="Google"/>
      <tab type="user" url="@ref mypage" title="My Page"/>
    </tab>
    ...
  </navindex>

Groups can be nested to form a hierarchy.

By default a usergroup entry in the navigation tree is a link to a landing page with the contents of the group. You can link to a different page using the url attribute just like you can for the <tab> element and prevent any link using url="[none]", i.e.

   <tab type="usergroup" title="Group without link" url="[none]">
   ...
   </tab>

The elements after navindex represent the layout of the different pages generated by doxygen:

  • The class element represents the layout of all pages generated for documented classes, structs, unions, and interfaces.
  • The namespace element represents the layout of all pages generated for documented namespaces (and also Java packages).
  • The file element represents the layout of all pages generated for documented files.
  • The group element represents the layout of all pages generated for documented groups (or modules).
  • The directory element represents the layout of all pages generated for documented directories.

Each XML element within one of the above page elements represents a certain piece of information. Some pieces can appear in each type of page, others are specific for a certain type of page. Doxygen will list the pieces in the order in which they appear in the XML file.

The following generic elements are possible for each page:

briefdescription
Represents the brief description on a page.
detaileddescription
Represents the detailed description on a page.
authorsection
Represents the author section of a page (only used for man pages).
memberdecl
Represents the quick overview of members on a page (member declarations). This elements has child elements per type of member list. The possible child elements are not listed in detail in the document, but the name of the element should be a good indication of the type of members that the element represents.
memberdef
Represents the detailed member list on a page (member definition). Like the memberdecl element, also this element has a number of possible child elements.

The class page has the following specific elements:

includes
Represents the include file needed to obtain the definition for this class.
inheritancegraph
Represents the inheritance relations for a class. Note that the CLASS_DIAGRAM option determines if the inheritance relation is a list of base and derived classes or a graph.
collaborationgraph
Represents the collaboration graph for a class.
allmemberslink
Represents the link to the list of all members for a class.
usedfiles
Represents the list of files from which documentation for the class was extracted.

The file page has the following specific elements:

includes
Represents the list of #include statements contained in this file.
includegraph
Represents the include dependency graph for the file.
includedbygraph
Represents the included by dependency graph for the file.
sourcelink
Represents the link to the source code of this file.

The group page has a specific groupgraph element which represents the graph showing the dependencies between groups.

Similarly, the directory page has a specific directorygraph element which represents the graph showing the dependencies between the directories based on the #include relations of the files inside the directories.

Some elements have a visible attribute which can be used to hide the fragment from the generated output, by setting the attribute's value to "no". You can also use the value of a configuration option to determine the visibility, by using its name prefixed with a dollar sign, e.g.

  ...
  <includes visible="$SHOW_INCLUDE_FILES"/>
  ...

This was mainly added for backward compatibility. Note that the visible attribute is just a hint for doxygen. If no relevant information is available for a certain piece it is omitted even if it is set to yes (i.e. no empty sections are generated).

Some elements have a title attribute. This attribute can be used to customize the title doxygen will use as a header for the piece.

Warning
at the moment you should not remove elements from the layout file as a way to hide information. Doing so can cause broken links in the generated output!

Using the XML output

If the above two methods still do not provide enough flexibility, you can also use the XML output produced by doxygen as a basis to generate the output you like. To do this set GENERATE_XML to YES.

The XML output consists of an index file named index.xml which lists all items extracted by doxygen with references to the other XML files for details. The structure of the index is described by a schema file index.xsd. All other XML files are described by the schema file named compound.xsd. If you prefer one big XML file you can combine the index and the other files using the XSLT file combine.xslt.

You can use any XML parser to parse the file or use the one that can be found in the addon/doxmlparser directory of doxygen source distribution. Look at addon/doxmlparser/include/doxmlintf.h for the interface of the parser and in addon/doxmlparser/example for examples.

The advantage of using the doxmlparser is that it will only read the index file into memory and then only those XML files that you implicitly load via navigating through the index. As a result this works even for very large projects where reading all XML files as one big DOM tree would not fit into memory.

See the Breathe project for an example that uses doxygen XML output from Python to bridge it with the Sphinx document generator.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Custom Commands

Doxygen
Custom Commands

Table of Contents

  • Simple aliases
  • Aliases with arguments
  • Nesting custom command

Doxygen provides a large number of special commands, XML commands, and HTML commands. that can be used to enhance or structure the documentation inside a comment block. If you for some reason have a need to define new commands you can do so by means of an alias definition.

The definition of an alias should be specified in the configuration file using the ALIASES configuration tag.

Simple aliases

The simplest form of an alias is a simple substitution of the form

 name=value

For example defining the following alias:

 ALIASES += sideeffect="\par Side Effects:\n"

will allow you to put the command \sideeffect (or @sideeffect) in the documentation, which will result in a user-defined paragraph with heading Side Effects:.

Note that you can put \n's in the value part of an alias to insert newlines.

Also note that you can redefine existing special commands if you wish.

Some commands, such as \xrefitem are designed to be used in combination with aliases.

Aliases with arguments

Aliases can also have one or more arguments. In the alias definition you then need to specify the number of arguments between curly braces. In the value part of the definition you can place \x markers, where 'x' represents the argument number starting with 1.

Here is an example of an alias definition with a single argument:

ALIASES += l{1}="\ref \1"

Inside a comment block you can use it as follows

/** See \l{SomeClass} for more information. */

which would be the same as writing

/** See \ref SomeClass for more information. */

Note that you can overload an alias by a version with multiple arguments, for instance:

ALIASES += l{1}="\ref \1"
ALIASES += l{2}="\ref \1 \"\2\""

Note that the quotes inside the alias definition have to be escaped with a backslash.

With these alias definitions, we can write

/** See \l{SomeClass,Some Text} for more information. */

inside the comment block and it will expand to

/** See \ref SomeClass "Some Text" for more information. */

where the command with a single argument would still work as shown before.

Aliases can also be expressed in terms of other aliases, e.g. a new command \reminder can be expressed as a \xrefitem via an intermediate \xreflist command as follows:

ALIASES += xreflist{3}="\xrefitem \1 \"\2\" \"\3\" "
ALIASES += reminder="\xreflist{reminders,Reminder,Reminders}"

Note that if for aliases with more than one argument a comma is used as a separator, if you want to put a comma inside the command, you will need to escape it with a backslash, i.e.

\l{SomeClass,Some text\, with an escaped comma}

given the alias definition of \l in the example above.

Nesting custom command

You can use commands as arguments of aliases, including commands defined using aliases.

As an example consider the following alias definitions

ALIASES += Bold{1}="<b>\1</b>"
ALIASES += Emph{1}="<em>\1</em>"

Inside a comment block you can now use:

/** This is a \Bold{bold \Emph{and} Emphasized} text fragment. */

which will expand to

/** This is a <b>bold <em>and</em> Emphasized</b> text fragment. */

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Linking to external documentation

Doxygen
Linking to external documentation

If your project depends on external libraries or tools, there are several reasons to not include all sources for these with every run of doxygen:

Disk space:
Some documentation may be available outside of the output directory of doxygen already, for instance somewhere on the web. You may want to link to these pages instead of generating the documentation in your local output directory.
Compilation speed:
External projects typically have a different update frequency from your own project. It does not make much sense to let doxygen parse the sources for these external project over and over again, even if nothing has changed.
Memory:
For very large source trees, letting doxygen parse all sources may simply take too much of your system's memory. By dividing the sources into several "packages", the sources of one package can be parsed by doxygen, while all other packages that this package depends on, are linked in externally. This saves a lot of memory.
Availability:
For some projects that are documented with doxygen, the sources may just not be available.
Copyright issues:

If the external package and its documentation are copyright someone else, it may be better - or even necessary - to reference it rather than include a copy of it with your project's documentation. When the author forbids redistribution, this is necessary. If the author requires compliance with some license condition as a precondition of redistribution, and you do not want to be bound by those conditions, referring to their copy of their documentation is preferable to including a copy.

If any of the above apply, you can use doxygen's tag file mechanism. A tag file is basically a compact representation of the entities found in the external sources. Doxygen can both generate and read tag files.

To generate a tag file for your project, simply put the name of the tag file after the GENERATE_TAGFILE option in the configuration file.

To combine the output of one or more external projects with your own project you should specify the name of the tag files after the TAGFILES option in the configuration file.

A tag file typically only contains a relative location of the documentation from the point where doxygen was run. So when you include a tag file in other project you have to specify where the external documentation is located in relation this project. You can do this in the configuration file by assigning the (relative) location to the tag files specified after the TAGFILES configuration option. If you use a relative path it should be relative with respect to the directory where the HTML output of your project is generated; so a relative path from the HTML output directory of a project to the HTML output of the other project that is linked to.

Example:
Suppose you have a project proj that uses two external projects called ext1 and ext2. The directory structure looks as follows:
<root>
  +- proj
  |   +- html               HTML output directory for proj
  |   +- src                sources for proj
  |   |- proj.cpp
  +- ext1
  |   +- html               HTML output directory for ext1
  |   |- ext1.tag           tag file for ext1
  +- ext2
  |   +- html               HTML output directory for ext2
  |   |- ext2.tag           tag file for ext2
  |- proj.cfg               doxygen configuration file for proj
  |- ext1.cfg               doxygen configuration file for ext1
  |- ext2.cfg               doxygen configuration file for ext2
Then the relevant parts of the configuration files look as follows:
proj.cfg:
OUTPUT_DIRECTORY  = proj
INPUT             = proj/src
TAGFILES          = ext1/ext1.tag=../../ext1/html \
                    ext2/ext2.tag=../../ext2/html
ext1.cfg:
OUTPUT_DIRECTORY  = ext1
GENERATE_TAGFILE  = ext1/ext1.tag
ext2.cfg:
OUTPUT_DIRECTORY  = ext2
GENERATE_TAGFILE  = ext2/ext2.tag

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Frequently Asked Questions

Doxygen
Frequently Asked Questions

  1. How to get information on the index page in HTML?

    You should use the \mainpage command inside a comment block like this:

    /*! \mainpage My Personal Index Page
 *
 * \section intro_sec Introduction
 *
 * This is the introduction.
 *
 * \section install_sec Installation
 *
 * \subsection step1 Step 1: Opening the box
 *
 * etc...
 */

  2. Help, some/all of the members of my class / file / namespace are not documented?

    Check the following:

    1. Is your class / file / namespace documented? If not, it will not be extracted from the sources unless EXTRACT_ALL is set to YES in the config file.
    2. Are the members private? If so, you must set EXTRACT_PRIVATE to YES to make them appear in the documentation.

    3. Is there a function macro in your class that does not end with a semicolon (e.g. MY_MACRO())? If so then you have to instruct doxygen's preprocessor to remove it.

      This typically boils down to the following settings in the config file:

      ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
PREDEFINED             = MY_MACRO()=

      Please read the preprocessing section of the manual for more information.

  3. When I set EXTRACT_ALL to NO none of my functions are shown in the documentation.

    In order for global functions, variables, enums, typedefs, and defines to be documented you should document the file in which these commands are located using a comment block containing a \file (or @file) command.

    Alternatively, you can put all members in a group (or module) using the \ingroup command and then document the group using a comment block containing the \defgroup command.

    For member functions or functions that are part of a namespace you should document either the class or namespace.

  4. How can I make doxygen ignore some code fragment?

    The new and easiest way is to add one comment block with a \cond command at the start and one comment block with a \endcond command at the end of the piece of code that should be ignored. This should be within the same file of course.

    But you can also use Doxygen's preprocessor for this: If you put

    #ifndef DOXYGEN_SHOULD_SKIP_THIS

 /* code that must be skipped by Doxygen */

#endif /* DOXYGEN_SHOULD_SKIP_THIS */

    around the blocks that should be hidden and put:

      PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS

    in the config file then all blocks should be skipped by Doxygen as long as ENABLE_PREPROCESSING is set to YES.

  5. How can I change what is after the #include in the class documentation?

    In most cases you can use STRIP_FROM_INC_PATH to strip a user defined part of a path.

    You can also document your class as follows

    /*! \class MyClassName include.h path/include.h
 *
 *  Docs for MyClassName
 */

    To make doxygen put

    #include <path/include.h>

    in the documentation of the class MyClassName regardless of the name of the actual header file in which the definition of MyClassName is contained.

    If you want doxygen to show that the include file should be included using quotes instead of angle brackets you should type:

    /*! \class MyClassName myhdr.h "path/myhdr.h"
 *
 *  Docs for MyClassName
 */

  6. How can I use tag files in combination with compressed HTML?

    If you want to refer from one compressed HTML file a.chm to another compressed HTML file called b.chm, the link in a.chm must have the following format:

    <a href="b.chm::/file.html">

    Unfortunately this only works if both compressed HTML files are in the same directory.

    As a result you must rename the generated index.chm files for all projects into something unique and put all .chm files in one directory.

    Suppose you have a project a referring to a project b using tag file b.tag, then you could rename the index.chm for project a into a.chm and the index.chm for project b into b.chm. In the configuration file for project a you write:

    TAGFILES = b.tag=b.chm::

  7. I don't like the quick index that is put above each HTML page, what do I do?

    You can disable the index by setting DISABLE_INDEX to YES. Then you can put in your own header file by writing your own header and feed that to HTML_HEADER.

  8. The overall HTML output looks different, while I only wanted to use my own html header file

    You probably forgot to include the stylesheet doxygen.css that doxygen generates. You can include this by putting

    <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">

    in the HEAD section of the HTML page.

  9. Why does doxygen use Qt?

    The most important reason is to have a platform abstraction for most Unices and Windows by means of the QFile, QFileInfo, QDir, QDate, QTime and QIODevice classes. Another reason is for the nice and bug free utility classes, like QList, QDict, QString, QArray, QTextStream, QRegExp, QXML etc.

    The GUI front-end doxywizard uses Qt for... well... the GUI!

  10. How can I exclude all test directories from my directory tree?

    Simply put an exclude pattern like this in the configuration file:

    EXCLUDE_PATTERNS = */test/*

  11. Doxygen automatically generates a link to the class MyClass somewhere in the running text. How do I prevent that at a certain place?

    Put a % in front of the class name. Like this: %MyClass. Doxygen will then remove the % and keep the word unlinked.

  12. My favorite programming language is X. Can I still use doxygen?

    No, not as such; doxygen needs to understand the structure of what it reads. If you don't mind spending some time on it, there are several options:

    • If the grammar of X is close to C or C++, then it is probably not too hard to tweak src/scanner.l a bit so the language is supported. This is done for all other languages directly supported by doxygen (i.e. Java, IDL, C#, PHP).
    • If the grammar of X is somewhat different than you can write an input filter that translates X into something similar enough to C/C++ for doxygen to understand (this approach is taken for VB, Object Pascal, and Javascript, see http://www.stack.nl/~dimitri/doxygen/download.html#helpers).
    • If the grammar is completely different one could write a parser for X and write a backend that produces a similar syntax tree as is done by src/scanner.l (and also by src/tagreader.cpp while reading tag files).

  13. Help! I get the cryptic message "input buffer overflow, can't enlarge buffer because scanner uses REJECT"

    This error happens when doxygen's lexical scanner has a rule that matches more than 256K of input characters in one go. I've seen this happening on a very large generated file (>256K lines), where the built-in preprocessor converted it into an empty file (with >256K of newlines). Another case where this might happen is if you have lines in your code with more than 256K characters.

    If you have run into such a case and want me to fix it, you should send me a code fragment that triggers the message. To work around the problem, put some line-breaks into your file, split it up into smaller parts, or exclude it from the input using EXCLUDE.

  14. When running make in the latex dir I get "TeX capacity exceeded". Now what?

    You can edit the texmf.cfg file to increase the default values of the various buffers and then run "texconfig init".

  15. Why are dependencies via STL classes not shown in the dot graphs?

    Doxygen is unaware of the STL classes, unless the option BUILTIN_STL_SUPPORT is turned on.

  16. I have problems getting the search engine to work with PHP5 and/or windows

    Please read this for hints on where to look.

  17. Can I configure doxygen from the command line?

    Not via command line options, but doxygen can read from stdin, so you can pipe things through it. Here's an example how to override an option in a configuration file from the command line (assuming a UNIX like environment):

    ( cat Doxyfile ; echo "PROJECT_NUMBER=1.0" ) | doxygen -

    For Windows the following would do the same:

    ( type Doxyfile & echo PROJECT_NUMBER=1.0 ) | doxygen.exe -

    If multiple options with the same name are specified then doxygen will use the last one. To append to an existing option you can use the += operator.

  18. How did doxygen get its name?

    Doxygen got its name from playing with the words documentation and generator.

    documentation -> docs -> dox
generator -> gen

    At the time I was looking into lex and yacc, where a lot of things start with "yy", so the "y" slipped in and made things pronounceable (the proper pronouncement is Docs-ee-gen, so with a long "e").

  19. What was the reason to develop doxygen?

    I once wrote a GUI widget based on the Qt library (it is still available at http://sourceforge.net/projects/qdbttabular/ but hasn't been updated since 2002). Qt had nicely generated documentation (using an internal tool which they didn't want to release) and I wrote similar docs by hand. This was a nightmare to maintain, so I wanted a similar tool. I looked at Doc++ but that just wasn't good enough (it didn't support signals and slots and did not have the Qt look and feel I had grown to like), so I started to write my own tool...

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Troubleshooting

Doxygen
Troubleshooting

Known Problems

  • If you have problems building doxygen from sources, please read this section first.
  • Doxygen is not a real compiler, it is only a lexical scanner. This means that it can and will not detect errors in your source code.
  • Doxygen has a build in preprocessor, but this works slightly different than the C preprocessor. Doxygen assumes a header file is properly guarded against multiple inclusion, and that each include file is standalone (i.e. it could be placed at the top of a source file without causing compiler errors). As long as this is true (and this is a good design practice) you should not encounter problems.
  • Since it is impossible to test all possible code fragments, it is very well possible, that some valid piece of C/C++ code is not handled properly. If you find such a piece, please send it to me, so I can improve doxygen's parsing capabilities. Try to make the piece of code you send as small as possible, to help me narrow down the search.
  • Doxygen does not work properly if there are multiple classes, structs or unions with the same name in your code. It should not crash however, rather it should ignore all of the classes with the same name except one.
  • Some commands do not work inside the arguments of other commands. Inside a HTML link (i.e. <a href="...">...<a>) for instance other commands (including other HTML commands) do not work! The sectioning commands are an important exception.
  • Redundant braces can confuse doxygen in some cases. For example:
      void f (int);
    is properly parsed as a function declaration, but
      const int (a);
    is also seen as a function declaration with name int, because only the syntax is analyzed, not the semantics. If the redundant braces can be detected, as in
      int *(a[20]);
    then doxygen will remove the braces and correctly parse the result.

  • Not all names in code fragments that are included in the documentation are replaced by links (for instance when using SOURCE_BROWSER = YES) and links to overloaded members may point to the wrong member. This also holds for the "Referenced by" list that is generated for each function.

    For a part this is because the code parser isn't smart enough at the moment. I'll try to improve this in the future. But even with these improvements not everything can be properly linked to the corresponding documentation, because of possible ambiguities or lack of information about the context in which the code fragment is found.

  • It is not possible to insert a non-member function f in a class A using the \relates or \relatesalso command, if class A already has a member with name f and the same argument list.
  • There is only very limited support for member specialization at the moment. It only works if there is a specialized template class as well.
  • Not all special commands are properly translated to RTF.
  • Version 1.8.6 of dot (and maybe earlier versions too) do not generate proper map files, causing the graphs that doxygen generates not to be properly clickable.
  • PHP only: Doxygen requires that all PHP statements (i.e. code) is wrapped in a functions/methods, otherwise you may run into parse problems.

How to Help

The development of Doxygen highly depends on your input!

If you are trying Doxygen let me know what you think of it (do you miss certain features?). Even if you decide not to use it, please let me know why.

How to report a bug

Bugs are tracked in GNOME's bugzilla database. Before submitting a new bug, first search through the database if the same bug has already been submitted by others (the doxygen product will be preselected). If you believe you have found a new bug, please report it.

If you are unsure whether or not something is a bug, please ask help on the users mailing list first (subscription is required).

If you send only a (vague) description of a bug, you are usually not very helpful and it will cost me much more time to figure out what you mean. In the worst-case your bug report may even be completely ignored by me, so always try to include the following information in your bug report:

  • The version of doxygen you are using (for instance 1.5.3, use doxygen --version if you are not sure).
  • The name and version number of your operating system (for instance SuSE Linux 6.4)
  • It is usually a good idea to send along the configuration file as well, but please use doxygen with the -s flag while generating it to keep it small (use doxygen -s -u [configName] to strip the comments from an existing config file).
  • The easiest (and often the only) way for me to fix bugs is if you can attach a small example demonstrating the problem you have to the bug report, so I can reproduce it on my machine. Please make sure the example is valid source code (could potentially compile) and that the problem is really captured by the example (I often get examples that do not trigger the actual bug!). If you intend to send more than one file please zip or tar the files together into a single file for easier processing. Note that when reporting a new bug you'll get a chance to attach a file to it only after submitting the initial bug description.

You can (and are encouraged to) add a patch for a bug. If you do so please use PATCH as a keyword in the bug entry form.

If you have ideas how to fix existing bugs and limitations please discuss them on the developers mailing list (subscription required). Patches can also be sent directly to dimit.nosp@m.ri@s.nosp@m.tack..nosp@m.nl if you prefer not to send them via the bug tracker or mailing list.

For patches please use "diff -uN" or include the files you modified. If you send more than one file please tar or zip everything, so I only have to save and download one file.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Features

Doxygen
Features

  • Requires very little overhead from the writer of the documentation. Plain text will do, Markdown is support, and for more fancy or structured output HTML tags and/or some of doxygen's special commands can be used.
  • Cross platform: works on Windows and many Unix flavors (including Linux and MacOSX).
  • Indexes, organizes and generates browsable and cross-referenced output even from undocumented code.
  • Generates structured XML output for parsed sources, which can be used by external tools.
  • Supports C/C++, Java, (Corba and Microsoft) Java, Python, VHDL, PHP IDL, C#, Fortran, TCL, Objective-C 2.0, and to some extent D sources.
  • Supports documentation of files, namespaces, packages, classes, structs, unions, templates, variables, functions, typedefs, enums and defines.
  • JavaDoc (1.1), qdoc3 (partially), and ECMA-334 (C# spec.) compatible.
  • Comes with a GUI frontend (Doxywizard) to ease editing the options and run doxygen. The GUI is available on Windows, Linux, and MacOSX.
  • Automatically generates class and collaboration diagrams in HTML (as clickable image maps) and [image] (as Encapsulated PostScript images).
  • Uses the dot tool of the Graphviz tool kit to generate include dependency graphs, collaboration diagrams, call graphs, directory structure graphs, and graphical class hierarchy graphs.
  • Allows grouping of entities in modules and creating a hierarchy of modules.
  • Flexible comment placement: Allows you to put documentation in the header file (before the declaration of an entity), source file (before the definition of an entity) or in a separate file.
  • Generates a list of all members of a class (including any inherited members) along with their protection level.
  • Outputs documentation in on-line format (XHTML and UNIX man page) and off-line format ( [image] and RTF) simultaneously (any of these can be disabled if desired). All formats are optimized for ease of reading.
    Furthermore, compressed HTML can be generated from HTML output using Microsoft's HTML Help Workshop (Windows only) and PDF can be generated from the [image] output.
  • Support for various third party help formats including HTML Help, docsets, Qt-Help, and eclipse help.
  • Includes a full C preprocessor to allow proper parsing of conditional code fragments and to allow expansion of all or part of macros definitions.
  • Automatically detects public, protected and private sections, as well as the Qt specific signal and slots sections. Extraction of private class members is optional.
  • Automatically generates references to documented classes, files, namespaces and members. Documentation of global functions, global variables, typedefs, defines and enumerations is also supported.
  • References to base/super classes and inherited/overridden members are generated automatically.
  • Includes a fast, rank based search engine to search for strings or words in the class and member documentation (PHP based).
  • Includes an Javascript based live search feature to search for symbols as you type (for small to medium sized projects).
  • You can type normal HTML tags in your documentation. Doxygen will convert them to their equivalent [image], RTF, and man-page counterparts automatically.
  • Allows references to documentation generated for other (doxygen documented) projects (or another part of the same project) in a location independent way.
  • Allows inclusion of source code examples that are automatically cross-referenced with the documentation.
  • Inclusion of undocumented classes is also supported, allowing to quickly learn the structure and interfaces of a (large) piece of code without looking into the implementation details.
  • Allows automatic cross-referencing of (documented) entities with their definition in the source code.
  • All source code fragments are syntax highlighted for ease of reading.
  • Allows inclusion of function/member/class definitions in the documentation.
  • All options are read from an easy to edit and (optionally) annotated configuration file.
  • Documentation and search engine can be transferred to another location or machine without regenerating the documentation.
  • Supports many different character encodings and uses UTF-8 internally and for the generated output.
  • Doxygen can generate a layout which you can use and edit to change the layout of each page.
  • There more than a 100 configurable options to fine-tune the output.
  • Can cope with large projects easily.

Although doxygen can now be used in any project written in a language that is supported by doxygen, initially it was specifically designed to be used for projects that make use of Qt Software's Qt toolkit. I have tried to make doxygen `Qt-compatible'. That is: Doxygen can read the documentation contained in the Qt source code and create a class browser that looks quite similar to the one that is generated by Qt Software. Doxygen understands the C++ extensions used by Qt such as signals and slots and many of the markup commands used in the Qt sources.

Doxygen can also automatically generate links to existing documentation that was generated with Doxygen or with Qt's non-public class browser generator. For a Qt based project this means that whenever you refer to members or classes belonging to the Qt toolkit, a link will be generated to the Qt documentation. This is done independent of where this documentation is located!

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Doxygen usage

Doxygen
Doxygen usage

Doxygen is a command line based utility. Calling doxygen with the --help option at the command line will give you a brief description of the usage of the program.

All options consist of a leading character -, followed by one character and one or more arguments depending on the option.

To generate a manual for your project you typically need to follow these steps:

  1. You document your source code with special documentation blocks (see section Special comment blocks).
  2. You generate a configuration file (see section Configuration) by calling doxygen with the -g option:
    doxygen -g <config_file>
  3. You edit the configuration file so it matches your project. In the configuration file you can specify the input files and a lot of optional information.
  4. You let doxygen generate the documentation, based on the settings in the configuration file:
    doxygen <config_file>

If you have a configuration file generated with an older version of doxygen, you can upgrade it to the current version by running doxygen with the -u option.

doxygen -u <config_file>

All configuration settings in the original configuration file will be copied to the new configuration file. Any new options will have their default value. Note that comments that you may have added in the original configuration file will be lost.

Fine-tuning the output

If you want to fine-tune the way the output looks, doxygen allows you generate default style sheet, header, and footer files that you can edit afterwards:

  • For HTML output, you can generate the default header file (see HTML_HEADER), the default footer (see HTML_FOOTER), and the default style sheet (see HTML_STYLESHEET), using the following command:

    doxygen -w html header.html footer.html stylesheet.css <config_file>

    The config_file is optional. When omitted doxygen will search for a file named Doxyfile and process that. When this is also not found it will used the default settings.

  • For [image] output, you can generate the first and last part of refman.tex (see LATEX_HEADER and LATEX_FOOTER) and the style sheet included by that header (normally doxygen.sty), using the following command:
    doxygen -w latex header.tex footer.tex doxygen.sty <config_file>
    If you need non-default options (for instance to use extra [image] packages) you need to make a config file with those options set correctly and then specify that config file after the generated files (make a backup of the configuration file first so you don't loose it in case you forget to specify one of the output files).
  • For RTF output, you can generate the default style sheet file (see RTF_STYLESHEET_FILE) using:
    doxygen -w rtf rtfstyle.cfg
Warning
When using a custom header you are responsible for the proper inclusion of any scripts and style sheets that doxygen needs, which is dependent on the configuration options and may changes when upgrading to a new doxygen release.
Note
  • If you do not want documentation for each item inside the configuration file then you can use the optional -s option. This can use be used in combination with the -u option, to add or strip the documentation from an existing configuration file. Please use the -s option if you send me a configuration file as part of a bug report!
  • To make doxygen read/write to standard input/output instead of from/to a file, use - for the file name.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Doxywizard usage

Doxygen
Doxywizard usage

Doxywizard is a GUI front-end for configuring and running doxygen.

Note it is possible to start the doxywizard with as argument the configuration file to be used.

When you start doxywizard it will display the main window (the actual look depends on the OS used).

Main window

The windows shows the steps to take to configure and run doxygen. The first step is to choose one of the ways to configure doxygen.

Wizard
Click this button to quickly configure the most important settings and leave the rest of the options to their defaults.
Expert
Click this button to gain access to the full range of configuration options.
Load
Click this button to load an existing configuration file from disk.

Note that you can select multiple buttons in a row, for instance to first configure doxygen using the Wizard and then fine tune the settings via the Expert.

After doxygen is configured you need to save the configuration as a file to disk. This second step allows doxygen to use the configuration and has the additional advantage that the configuration can be reused to run doxygen with the same settings at a later point in time.

Since some configuration options may use relative paths, the next step is to select a directory from which to run doxygen. This is typically the root of the source tree and will most of the time already be filled in correctly.

Once the configuration file is saved and the working directory is set, you can run doxygen based on the selected settings. Do this by pressing the "Start" button. Once doxygen runs you can cancel it by clicking the same button again. The output produced by doxygen is captured and shown in a log window. Once doxygen finishes, the log can be saved as a text file.

The Wizard Dialog

If you select the Wizard button in step 1, then a dialog with a number of tabs will appear.

Wizard dialog: Project settings

The fields in the project tab speak for themselves. Once doxygen has finished the Destination directory is where to look for the results. Doxygen will put each output format in a separate sub-directory.

Wizard dialog: Mode of operating

The mode tab allows you to select how doxygen will look at your sources. The default is to only look for things that have been documented.

You can also select how doxygen should present the results. The latter does not affect the way doxygen parses your source code.

Wizard dialog: Output to produce

You can select one or more of the output formats that doxygen should produce. For HTML and [image] there are additional options.

Wizard dialog: Diagrams to generate

Doxygen can produce a number of diagrams. Using the diagrams tab you can select which ones to generate. For most diagrams the dot tool of the GraphViz package is needed (if you use the binary packages for MacOSX this tool is already included).

Expert dialog

The Expert dialog has a number of tab fields, one for each section in the configuration file. Each tab-field contains a number of lines, one for each configuration option in that section.

The kind of input widget depends on the type of the configuration option.

  • For each boolean option (those options that are answered with YES or NO in the configuration file) there is a check-box.
  • For items taking one of a fixed set of values (like OUTPUT_LANGUAGE) a combo box is used.
  • For items taking an integer value from a range, a spinbox is used.
  • For free form string-type options there is a one line edit field
  • For options taking a lists of strings, a one line edit field is available, with a `+' button to add this string to the list and a `-' button to remove the selected string from the list. There is also a `*' button that, when pressed, replaces the selected item in the list with the string entered in the edit field.
  • For file and folder entries, there are special buttons that start a file selection dialog.
Some options from the Expert dialog

The get additional information about the meaning of an option, click on the "Help" button at the bottom right of the dialog and then on the item. A tooltip with additional information will appear.

Menu options

The GUI front-end has a menu with a couple of useful items

File menu
Open...
This is the same as the "Load" button in the main window and allows to open a configuration file from disk.
Save as..
This is the same as the "Save" button in the main window and can be used to save the current configuration settings to disk.
Recent configurations
Allow to quickly load a recently saved configuration.
Set as default...
Stores the current configuration settings as the default to use next time the GUI is started. You will be asked to confirm the action.
Reset...
Restores the factory defaults as the default settings to use. You will be asked to confirm the action.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Configuration

Doxygen
Configuration

Table of Contents

  • Format
  • Project related configuration options
  • Build related configuration options
  • Configuration options related to warning and progress messages
  • Configuration options related to the input files
  • Configuration options related to source browsing
  • Configuration options related to the alphabetical class index
  • Configuration options related to the HTML output
  • Configuration options related to the LaTeX output
  • Configuration options related to the RTF output
  • Configuration options related to the man page output
  • Configuration options related to the XML output
  • Configuration options related to the DOCBOOK output
  • Configuration options for the AutoGen Definitions output
  • Configuration options related to the Perl module output
  • Configuration options related to the preprocessor
  • Configuration options related to external references
  • Configuration options related to the dot tool
  • Examples

Format

A configuration file is a free-form ASCII text file with a structure that is similar to that of a Makefile, with the default name Doxyfile. It is parsed by doxygen. The file may contain tabs and newlines for formatting purposes. The statements in the file are case-sensitive. Comments may be placed anywhere within the file (except within quotes). Comments beginning with two hash characters (##) are kept when updating the configuration file and are placed in front of the TAG are in front of. Comments beginning with two hash characters (##) at the end of the configuration file are also kept and placed at the end of the file. Comments begin with the hash character (#) and ends at the end of the line.

The file essentially consists of a list of assignment statements. Each statement consists of a TAG_NAME written in capitals, followed by the equal sign (=) and one or more values. If the same tag is assigned more than once, the last assignment overwrites any earlier assignment. For tags that take a list as their argument, the += operator can be used instead of = to append new values to the list. Values are sequences of non-blanks. If the value should contain one or more blanks it must be surrounded by quotes ("..."). Multiple lines can be concatenated by inserting a backslash (\) as the last character of a line. Environment variables can be expanded using the pattern $(ENV_VARIABLE_NAME).

You can also include part of a configuration file from another configuration file using a @INCLUDE tag as follows:

@INCLUDE = config_file_name

The include file is searched in the current working directory. You can also specify a list of directories that should be searched before looking in the current working directory. Do this by putting a @INCLUDE_PATH tag with these paths before the @INCLUDE tag, e.g.:

@INCLUDE_PATH = my_config_dir

The configuration options can be divided into several categories. Below is an alphabetical index of the tags that are recognized followed by the descriptions of the tags grouped by category.

  • ABBREVIATE_BRIEF
  • ALIASES
  • ALLEXTERNALS
  • ALLOW_UNICODE_NAMES
  • ALPHABETICAL_INDEX
  • ALWAYS_DETAILED_SEC
  • AUTOLINK_SUPPORT
  • BINARY_TOC
  • BRIEF_MEMBER_DESC
  • BUILTIN_STL_SUPPORT
  • CALLER_GRAPH
  • CALL_GRAPH
  • CASE_SENSE_NAMES
  • CHM_FILE
  • CHM_INDEX_ENCODING
  • CITE_BIB_FILES
  • CLANG_ASSISTED_PARSING
  • CLANG_OPTIONS
  • CLASS_DIAGRAMS
  • CLASS_GRAPH
  • COLLABORATION_GRAPH
  • COLS_IN_ALPHA_INDEX
  • COMPACT_LATEX
  • COMPACT_RTF
  • CPP_CLI_SUPPORT
  • CREATE_SUBDIRS
  • DIAFILE_DIRS
  • DIA_PATH
  • DIRECTORY_GRAPH
  • DISABLE_INDEX
  • DISTRIBUTE_GROUP_DOC
  • DOCBOOK_OUTPUT
  • DOCSET_BUNDLE_ID
  • DOCSET_FEEDNAME
  • DOCSET_PUBLISHER_ID
  • DOCSET_PUBLISHER_NAME
  • DOTFILE_DIRS
  • DOT_CLEANUP
  • DOT_FONTNAME
  • DOT_FONTPATH
  • DOT_FONTSIZE
  • DOT_GRAPH_MAX_NODES
  • DOT_IMAGE_FORMAT
  • DOT_MULTI_TARGETS
  • DOT_NUM_THREADS
  • DOT_PATH
  • DOT_TRANSPARENT
  • DOXYFILE_ENCODING
  • ECLIPSE_DOC_ID
  • ENABLED_SECTIONS
  • ENABLE_PREPROCESSING
  • ENUM_VALUES_PER_LINE
  • EXAMPLE_PATH
  • EXAMPLE_PATTERNS
  • EXAMPLE_RECURSIVE
  • EXCLUDE
  • EXCLUDE_PATTERNS
  • EXCLUDE_SYMBOLS
  • EXCLUDE_SYMLINKS
  • EXPAND_AS_DEFINED
  • EXPAND_ONLY_PREDEF
  • EXTENSION_MAPPING
  • EXTERNAL_GROUPS
  • EXTERNAL_PAGES
  • EXTERNAL_SEARCH
  • EXTERNAL_SEARCH_ID
  • EXTRACT_ALL
  • EXTRACT_ANON_NSPACES
  • EXTRACT_LOCAL_CLASSES
  • EXTRACT_LOCAL_METHODS
  • EXTRACT_PACKAGE
  • EXTRACT_PRIVATE
  • EXTRACT_STATIC
  • EXTRA_PACKAGES
  • EXTRA_SEARCH_MAPPINGS
  • EXT_LINKS_IN_WINDOW
  • FILE_PATTERNS
  • FILE_VERSION_FILTER
  • FILTER_PATTERNS
  • FILTER_SOURCE_FILES
  • FILTER_SOURCE_PATTERNS
  • FORCE_LOCAL_INCLUDES
  • FORMULA_FONTSIZE
  • FORMULA_TRANSPARENT
  • FULL_PATH_NAMES
  • GENERATE_AUTOGEN_DEF
  • GENERATE_BUGLIST
  • GENERATE_CHI
  • GENERATE_DEPRECATEDLIST
  • GENERATE_DOCBOOK
  • GENERATE_DOCSET
  • GENERATE_ECLIPSEHELP
  • GENERATE_HTML
  • GENERATE_HTMLHELP
  • GENERATE_LATEX
  • GENERATE_LEGEND
  • GENERATE_MAN
  • GENERATE_PERLMOD
  • GENERATE_QHP
  • GENERATE_RTF
  • GENERATE_TAGFILE
  • GENERATE_TESTLIST
  • GENERATE_TODOLIST
  • GENERATE_TREEVIEW
  • GENERATE_XML
  • GRAPHICAL_HIERARCHY
  • GROUP_GRAPHS
  • HAVE_DOT
  • HHC_LOCATION
  • HIDE_FRIEND_COMPOUNDS
  • HIDE_IN_BODY_DOCS
  • HIDE_SCOPE_NAMES
  • HIDE_UNDOC_CLASSES
  • HIDE_UNDOC_MEMBERS
  • HIDE_UNDOC_RELATIONS
  • HTML_COLORSTYLE_GAMMA
  • HTML_COLORSTYLE_HUE
  • HTML_COLORSTYLE_SAT
  • HTML_DYNAMIC_SECTIONS
  • HTML_EXTRA_FILES
  • HTML_EXTRA_STYLESHEET
  • HTML_FILE_EXTENSION
  • HTML_FOOTER
  • HTML_HEADER
  • HTML_INDEX_NUM_ENTRIES
  • HTML_OUTPUT
  • HTML_STYLESHEET
  • HTML_TIMESTAMP
  • IDL_PROPERTY_SUPPORT
  • IGNORE_PREFIX
  • IMAGE_PATH
  • INCLUDED_BY_GRAPH
  • INCLUDE_FILE_PATTERNS
  • INCLUDE_GRAPH
  • INCLUDE_PATH
  • INHERIT_DOCS
  • INLINE_GROUPED_CLASSES
  • INLINE_INFO
  • INLINE_INHERITED_MEMB
  • INLINE_SIMPLE_STRUCTS
  • INLINE_SOURCES
  • INPUT
  • INPUT_ENCODING
  • INPUT_FILTER
  • INTERACTIVE_SVG
  • INTERNAL_DOCS
  • JAVADOC_AUTOBRIEF
  • LATEX_BATCHMODE
  • LATEX_BIB_STYLE
  • LATEX_CMD_NAME
  • LATEX_EXTRA_FILES
  • LATEX_FOOTER
  • LATEX_HEADER
  • LATEX_HIDE_INDICES
  • LATEX_OUTPUT
  • LATEX_SOURCE_CODE
  • LAYOUT_FILE
  • LOOKUP_CACHE_SIZE
  • MACRO_EXPANSION
  • MAKEINDEX_CMD_NAME
  • MAN_EXTENSION
  • MAN_LINKS
  • MAN_OUTPUT
  • MAN_SUBDIR
  • MARKDOWN_SUPPORT
  • MATHJAX_CODEFILE
  • MATHJAX_EXTENSIONS
  • MATHJAX_FORMAT
  • MATHJAX_RELPATH
  • MAX_DOT_GRAPH_DEPTH
  • MAX_INITIALIZER_LINES
  • MSCFILE_DIRS
  • MSCGEN_PATH
  • MULTILINE_CPP_IS_BRIEF
  • OPTIMIZE_FOR_FORTRAN
  • OPTIMIZE_OUTPUT_FOR_C
  • OPTIMIZE_OUTPUT_JAVA
  • OPTIMIZE_OUTPUT_VHDL
  • OUTPUT_DIRECTORY
  • OUTPUT_LANGUAGE
  • PAPER_TYPE
  • PDF_HYPERLINKS
  • PERLMOD_LATEX
  • PERLMOD_MAKEVAR_PREFIX
  • PERLMOD_PRETTY
  • PERL_PATH
  • PREDEFINED
  • PROJECT_BRIEF
  • PROJECT_LOGO
  • PROJECT_NAME
  • PROJECT_NUMBER
  • QCH_FILE
  • QHG_LOCATION
  • QHP_CUST_FILTER_ATTRS
  • QHP_CUST_FILTER_NAME
  • QHP_NAMESPACE
  • QHP_SECT_FILTER_ATTRS
  • QHP_VIRTUAL_FOLDER
  • QT_AUTOBRIEF
  • QUIET
  • RECURSIVE
  • REFERENCED_BY_RELATION
  • REFERENCES_LINK_SOURCE
  • REFERENCES_RELATION
  • REPEAT_BRIEF
  • RTF_EXTENSIONS_FILE
  • RTF_HYPERLINKS
  • RTF_OUTPUT
  • RTF_STYLESHEET_FILE
  • SEARCHDATA_FILE
  • SEARCHENGINE
  • SEARCHENGINE_URL
  • SEARCH_INCLUDES
  • SEPARATE_MEMBER_PAGES
  • SERVER_BASED_SEARCH
  • SHORT_NAMES
  • SHOW_FILES
  • SHOW_GROUPED_MEMB_INC
  • SHOW_INCLUDE_FILES
  • SHOW_NAMESPACES
  • SHOW_USED_FILES
  • SIP_SUPPORT
  • SKIP_FUNCTION_MACROS
  • SORT_BRIEF_DOCS
  • SORT_BY_SCOPE_NAME
  • SORT_GROUP_NAMES
  • SORT_MEMBERS_CTORS_1ST
  • SORT_MEMBER_DOCS
  • SOURCE_BROWSER
  • SOURCE_TOOLTIPS
  • STRICT_PROTO_MATCHING
  • STRIP_CODE_COMMENTS
  • STRIP_FROM_INC_PATH
  • STRIP_FROM_PATH
  • SUBGROUPING
  • TAB_SIZE
  • TAGFILES
  • TCL_SUBST
  • TEMPLATE_RELATIONS
  • TOC_EXPAND
  • TREEVIEW_WIDTH
  • TYPEDEF_HIDES_STRUCT
  • UML_LIMIT_NUM_FIELDS
  • UML_LOOK
  • USE_HTAGS
  • USE_MATHJAX
  • USE_MDFILE_AS_MAINPAGE
  • USE_PDFLATEX
  • VERBATIM_HEADERS
  • WARNINGS
  • WARN_FORMAT
  • WARN_IF_DOC_ERROR
  • WARN_IF_UNDOCUMENTED
  • WARN_LOGFILE
  • WARN_NO_PARAMDOC
  • XML_OUTPUT
  • XML_PROGRAMLISTING

Project related configuration options

DOXYFILE_ENCODING

This tag specifies the encoding used for all characters in the config file that follow. The default is UTF-8 which is also the encoding used for all text before the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of possible encodings.

The default value is: UTF-8.

PROJECT_NAME

The PROJECT_NAME tag is a single word (or a sequence of words surrounded by double-quotes, unless you are using Doxywizard) that should identify the project for which the documentation is generated. This name is used in the title of most generated pages and in a few other places.

The default value is: My Project.

PROJECT_NUMBER

The PROJECT_NUMBER tag can be used to enter a project or revision number. This could be handy for archiving the generated documentation or if some version control system is used.

PROJECT_BRIEF

Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short.

PROJECT_LOGO

With the PROJECT_LOGO tag one can specify an logo or icon that is included in the documentation. The maximum height of the logo should not exceed 55 pixels and the maximum width should not exceed 200 pixels. Doxygen will copy the logo to the output directory.

OUTPUT_DIRECTORY

The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path into which the generated documentation will be written. If a relative path is entered, it will be relative to the location where doxygen was started. If left blank the current directory will be used.

CREATE_SUBDIRS

If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-directories (in 2 levels) under the output directory of each output format and will distribute the generated files over these directories. Enabling this option can be useful when feeding doxygen a huge amount of source files, where putting all generated files in the same directory would otherwise causes performance problems for the file system.

The default value is: NO.

ALLOW_UNICODE_NAMES

If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII characters to appear in the names of generated files. If set to NO, non-ASCII characters will be escaped, for example _xE3_x81_x84 will be used for Unicode U+3044.

The default value is: NO.

OUTPUT_LANGUAGE

The OUTPUT_LANGUAGE tag is used to specify the language in which all documentation generated by doxygen is written. Doxygen will use this information to generate all constant output in the proper language.

Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian and Vietnamese.

The default value is: English.

BRIEF_MEMBER_DESC

If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member descriptions after the members that are listed in the file and class documentation (similar to Javadoc). Set to NO to disable this.

The default value is: YES.

REPEAT_BRIEF

If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief description of a member or function before the detailed description
Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the brief descriptions will be completely suppressed.

The default value is: YES.

ABBREVIATE_BRIEF

This tag implements a quasi-intelligent brief description abbreviator that is used to form the text in various listings. Each string in this list, if found as the leading text of the brief description, will be stripped from the text and the result, after processing the whole list, is used as the annotated text. Otherwise, the brief description is used as-is. If left blank, the following values are used ($name is automatically replaced with the name of the entity): The $name class, The $name widget, The $name file, is, provides, specifies, contains, represents, a, an and the.

ALWAYS_DETAILED_SEC

If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then doxygen will generate a detailed section even if there is only a brief description.

The default value is: NO.

INLINE_INHERITED_MEMB

If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited members of a class in the documentation of that class as if those members were ordinary class members. Constructors, destructors and assignment operators of the base classes will not be shown.

The default value is: NO.

FULL_PATH_NAMES

If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path before files name in the file list and in the header files. If set to NO the shortest path that makes the file name unique will be used

The default value is: YES.

STRIP_FROM_PATH

The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. Stripping is only done if one of the specified strings matches the left-hand part of the path. The tag can be used to show relative paths in the file list. If left blank the directory from which doxygen is run is used as the path to strip.
Note that you can specify absolute paths here, but also relative paths, which will be relative from the directory where doxygen is started.

This tag requires that the tag FULL_PATH_NAMES is set to YES.

STRIP_FROM_INC_PATH

The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the path mentioned in the documentation of a class, which tells the reader which header file to include in order to use a class. If left blank only the name of the header file containing the class definition is used. Otherwise one should specify the list of include paths that are normally passed to the compiler using the -I flag.

SHORT_NAMES

If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but less readable) file names. This can be useful is your file systems doesn't support long names like on DOS, Mac, or CD-ROM.

The default value is: NO.

JAVADOC_AUTOBRIEF

If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the first line (until the first dot) of a Javadoc-style comment as the brief description. If set to NO, the Javadoc-style will behave just like regular Qt-style comments (thus requiring an explicit @brief command for a brief description.)

The default value is: NO.

QT_AUTOBRIEF

If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first line (until the first dot) of a Qt-style comment as the brief description. If set to NO, the Qt-style will behave just like regular Qt-style comments (thus requiring an explicit \brief command for a brief description.)

The default value is: NO.

MULTILINE_CPP_IS_BRIEF

The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a multi-line C++ special comment block (i.e. a block of //! or /// comments) as a brief description. This used to be the default behavior. The new default is to treat a multi-line C++ comment block as a detailed description. Set this tag to YES if you prefer the old behavior instead.
Note that setting this tag to YES also means that rational rose comments are not recognized any more.

The default value is: NO.

INHERIT_DOCS

If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the documentation from any documented member that it re-implements.

The default value is: YES.

SEPARATE_MEMBER_PAGES

If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a new page for each member. If set to NO, the documentation of a member will be part of the file/class/namespace that contains it.

The default value is: NO.

TAB_SIZE

The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen uses this value to replace tabs by spaces in code fragments.

Minimum value: 1, maximum value: 16, default value: 4.

ALIASES

This tag can be used to specify a number of aliases that act as commands in the documentation. An alias has the form:

 name=value

For example adding

 "sideeffect=@par Side Effects:\n"

will allow you to put the command \sideeffect (or @sideeffect) in the documentation, which will result in a user-defined paragraph with heading "Side Effects:". You can put \n's in the value part of an alias to insert newlines.

TCL_SUBST

This tag can be used to specify a number of word-keyword mappings (TCL only). A mapping has the form "name=value". For example adding "class=itcl::class" will allow you to use the command class in the itcl::class meaning.

OPTIMIZE_OUTPUT_FOR_C

Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources only. Doxygen will then generate output that is more tailored for C. For instance, some of the names that are used will be different. The list of all members will be omitted, etc.

The default value is: NO.

OPTIMIZE_OUTPUT_JAVA

Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or Python sources only. Doxygen will then generate output that is more tailored for that language. For instance, namespaces will be presented as packages, qualified scopes will look different, etc.

The default value is: NO.

OPTIMIZE_FOR_FORTRAN

Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran sources. Doxygen will then generate output that is tailored for Fortran.

The default value is: NO.

OPTIMIZE_OUTPUT_VHDL

Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL sources. Doxygen will then generate output that is tailored for VHDL.

The default value is: NO.

EXTENSION_MAPPING

Doxygen selects the parser to use depending on the extension of the files it parses. With this tag you can assign which parser to use for a given extension. Doxygen has a built-in mapping, but you can override or extend it using this tag. The format is ext=language, where ext is a file extension, and language is one of the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: Fortran. In the later case the parser tries to guess whether the code is fixed or free formatted code, this is the default for Fortran type files), VHDL.

For instance to make doxygen treat .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C.

Note For files without extension you can use no_extension as a placeholder.
Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.

MARKDOWN_SUPPORT

If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments according to the Markdown format, which allows for more readable documentation. See http://daringfireball.net/projects/markdown/ for details. The output of markdown processing is further processed by doxygen, so you can mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in case of backward compatibilities issues.

The default value is: YES.

AUTOLINK_SUPPORT

When enabled doxygen tries to link words that correspond to documented classes, or namespaces to their corresponding documentation. Such a link can be prevented in individual cases by by putting a % sign in front of the word or globally by setting AUTOLINK_SUPPORT to NO.

The default value is: YES.

BUILTIN_STL_SUPPORT

If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to include (a tag file for) the STL sources as input, then you should set this tag to YES in order to let doxygen match functions declarations and definitions whose arguments contain STL classes (e.g. func(std::string); versus func(std::string) {}). This also make the inheritance and collaboration diagrams that involve STL classes more complete and accurate.

The default value is: NO.

CPP_CLI_SUPPORT

If you use Microsoft's C++/CLI language, you should set this option to YES to enable parsing support.

The default value is: NO.

SIP_SUPPORT

Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. Doxygen will parse them like normal C++ but will assume all classes use public instead of private inheritance when no explicit protection keyword is present.

The default value is: NO.

IDL_PROPERTY_SUPPORT

For Microsoft's IDL there are propget and propput attributes to indicate getter and setter methods for a property. Setting this option to YES will make doxygen to replace the get and set methods by a property in the documentation. This will only work if the methods are indeed getting or setting a simple type. If this is not the case, or you want to show the methods anyway, you should set this option to NO.

The default value is: YES.

DISTRIBUTE_GROUP_DOC

If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC tag is set to YES, then doxygen will reuse the documentation of the first member in the group (if any) for the other members of the group. By default all members of a group must be documented explicitly.

The default value is: NO.

SUBGROUPING

Set the SUBGROUPING tag to YES to allow class member groups of the same type (for instance a group of public functions) to be put as a subgroup of that type (e.g. under the Public Functions section). Set it to NO to prevent subgrouping. Alternatively, this can be done per class using the \nosubgrouping command.

The default value is: YES.

INLINE_GROUPED_CLASSES

When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions are shown inside the group in which they are included (e.g. using \ingroup) instead of on a separate page (for HTML and Man pages) or section (for [image] and RTF).
Note that this feature does not work in combination with SEPARATE_MEMBER_PAGES.

The default value is: NO.

INLINE_SIMPLE_STRUCTS

When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions with only public data fields or simple typedef fields will be shown inline in the documentation of the scope in which they are defined (i.e. file, namespace, or group documentation), provided this scope is documented. If set to NO, structs, classes, and unions are shown on a separate page (for HTML and Man pages) or section (for [image] and RTF).

The default value is: NO.

TYPEDEF_HIDES_STRUCT

When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or enum is documented as struct, union, or enum with the name of the typedef. So typedef struct TypeS {} TypeT, will appear in the documentation as a struct with name TypeT. When disabled the typedef will appear as a member of a file, namespace, or class. And the struct will be named TypeS. This can typically be useful for C code in case the coding convention dictates that all compound types are typedef'ed and only the typedef is referenced, never the tag name.

The default value is: NO.

LOOKUP_CACHE_SIZE

The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given their name and scope. Since this can be an expensive process and often the same symbol appears multiple times in the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small doxygen will become slower. If the cache is too large, memory is wasted. The cache size is given by this formula: . The valid range is 0..9, the default is 0, corresponding to a cache size of $2^{16} = 65536$ symbols. At the end of a run doxygen will report the cache usage and suggest the optimal cache size from a speed point of view.

Minimum value: 0, maximum value: 9, default value: 0.

Build related configuration options

EXTRACT_ALL

If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in documentation are documented, even if no documentation was available. Private class members and static file members will be hidden unless the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.

Note
This will also disable the warnings about undocumented members that are normally produced when WARNINGS is set to YES.

The default value is: NO.

EXTRACT_PRIVATE

If the EXTRACT_PRIVATE tag is set to YES all private members of a class will be included in the documentation.

The default value is: NO.

EXTRACT_PACKAGE

If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.

The default value is: NO.

EXTRACT_STATIC

If the EXTRACT_STATIC tag is set to YES all static members of a file will be included in the documentation.

The default value is: NO.

EXTRACT_LOCAL_CLASSES

If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined locally in source files will be included in the documentation. If set to NO only classes defined in header files are included. Does not have any effect for Java sources.

The default value is: YES.

EXTRACT_LOCAL_METHODS

This flag is only useful for Objective-C code. When set to YES local methods, which are defined in the implementation section but not in the interface are included in the documentation. If set to NO only methods in the interface are included.

The default value is: NO.

EXTRACT_ANON_NSPACES

If this flag is set to YES, the members of anonymous namespaces will be extracted and appear in the documentation as a namespace called 'anonymous_namespace{file}', where file will be replaced with the base name of the file that contains the anonymous namespace. By default anonymous namespace are hidden.

The default value is: NO.

HIDE_UNDOC_MEMBERS

If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all undocumented members inside documented classes or files. If set to NO these members will be included in the various overviews, but no documentation section is generated. This option has no effect if EXTRACT_ALL is enabled.

The default value is: NO.

HIDE_UNDOC_CLASSES

If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all undocumented classes that are normally visible in the class hierarchy. If set to NO these classes will be included in the various overviews. This option has no effect if EXTRACT_ALL is enabled.

The default value is: NO.

HIDE_FRIEND_COMPOUNDS

If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend (class|struct|union) declarations. If set to NO these declarations will be included in the documentation.

The default value is: NO.

HIDE_IN_BODY_DOCS

If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any documentation blocks found inside the body of a function. If set to NO these blocks will be appended to the function's detailed documentation block.

The default value is: NO.

INTERNAL_DOCS

The INTERNAL_DOCS tag determines if documentation that is typed after a \internal command is included. If the tag is set to NO then the documentation will be excluded. Set it to YES to include the internal documentation.

The default value is: NO.

CASE_SENSE_NAMES

If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file names in lower-case letters. If set to YES upper-case letters are also allowed. This is useful if you have classes or files whose names only differ in case and if your file system supports case sensitive file names. Windows and Mac users are advised to set this option to NO.

The default value is: system dependent.

HIDE_SCOPE_NAMES

If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with their full class and namespace scopes in the documentation. If set to YES the scope will be hidden.

The default value is: NO.

SHOW_INCLUDE_FILES

If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of the files that are included by a file in the documentation of that file.

The default value is: YES.

SHOW_GROUPED_MEMB_INC

If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each grouped member an include statement to the documentation, telling the reader which file to include in order to use the member.

The default value is: NO.

FORCE_LOCAL_INCLUDES

If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include files with double quotes in the documentation rather than with sharp brackets.

The default value is: NO.

INLINE_INFO

If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the documentation for inline members.

The default value is: YES.

SORT_MEMBER_DOCS

If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the (detailed) documentation of file and class members alphabetically by member name. If set to NO the members will appear in declaration order.

The default value is: YES.

SORT_BRIEF_DOCS

If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief descriptions of file, namespace and class members alphabetically by member name. If set to NO the members will appear in declaration order. Note that this will also influence the order of the classes in the class list.

The default value is: NO.

SORT_MEMBERS_CTORS_1ST

If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO the constructors will appear in the respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.

Note
If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief member documentation.
If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting detailed member documentation.

The default value is: NO.

SORT_GROUP_NAMES

If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy of group names into alphabetical order. If set to NO the group names will appear in their defined order.

The default value is: NO.

SORT_BY_SCOPE_NAME

If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by fully-qualified names, including namespaces. If set to NO, the class list will be sorted only by class name, not including the namespace part.

Note
This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
This option applies only to the class list, not to the alphabetical list.

The default value is: NO.

STRICT_PROTO_MATCHING

If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still accept a match between prototype and implementation in such cases.

The default value is: NO.

GENERATE_TODOLIST

The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo list. This list is created by putting \todo commands in the documentation.

The default value is: YES.

GENERATE_TESTLIST

The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test list. This list is created by putting \test commands in the documentation.

The default value is: YES.

GENERATE_BUGLIST

The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug list. This list is created by putting \bug commands in the documentation.

The default value is: YES.

GENERATE_DEPRECATEDLIST

The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) the deprecated list. This list is created by putting \deprecated commands in the documentation.

The default value is: YES.

ENABLED_SECTIONS

The ENABLED_SECTIONS tag can be used to enable conditional documentation sections, marked by \if <section_label> ... \endif and \cond <section_label> ... \endcond blocks.

MAX_INITIALIZER_LINES

The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the initial value of a variable or macro / define can have for it to appear in the documentation. If the initializer consists of more lines than specified here it will be hidden. Use a value of 0 to hide initializers completely. The appearance of the value of individual variables and macros / defines can be controlled using \showinitializer or \hideinitializer command in the documentation regardless of this setting.

Minimum value: 0, maximum value: 10000, default value: 30.

SHOW_USED_FILES

Set the SHOW_USED_FILES tag to NO to disable the list of files generated at the bottom of the documentation of classes and structs. If set to YES the list will mention the files that were used to generate the documentation.

The default value is: YES.

SHOW_FILES

Set the SHOW_FILES tag to NO to disable the generation of the Files page. This will remove the Files entry from the Quick Index and from the Folder Tree View (if specified).

The default value is: YES.

SHOW_NAMESPACES

Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces page. This will remove the Namespaces entry from the Quick Index and from the Folder Tree View (if specified).

The default value is: YES.

FILE_VERSION_FILTER

The FILE_VERSION_FILTER tag can be used to specify a program or script that doxygen should invoke to get the current version for each file (typically from the version control system). Doxygen will invoke the program by executing (via popen()) the command command input-file, where command is the value of the FILE_VERSION_FILTER tag, and input-file is the name of an input file provided by doxygen. Whatever the program writes to standard output is used as the file version.Example of using a shell script as a filter for Unix:

 FILE_VERSION_FILTER = "/bin/sh versionfilter.sh"

Example shell script for CVS:

#!/bin/sh
cvs status $1 | sed -n 's/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p'

Example shell script for Subversion:

#!/bin/sh
svn stat -v $1 | sed -n 's/^[ A-Z?\*|!]\{1,15\}/r/;s/ \{1,15\}/\/r/;s/ .*//p'

Example filter for ClearCase:

FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"

LAYOUT_FILE

The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by doxygen. The layout file controls the global structure of the generated output files in an output format independent way. To create the layout file that represents doxygen's defaults, run doxygen with the -l option. You can optionally specify a file name after the option, if omitted DoxygenLayout.xml will be used as the name of the layout file.
Note that if you run doxygen from a directory containing a file called DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE tag is left empty.

CITE_BIB_FILES

The CITE_BIB_FILES tag can be used to specify one or more bib files containing the reference definitions. This must be a list of .bib files. The .bib extension is automatically appended if omitted. This requires the bibtex tool to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. For [image] the style of the bibliography can be controlled using LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the search path. Do not use file names with spaces, bibtex cannot handle them. See also \cite for info how to create references.

Configuration options related to warning and progress messages

QUIET

The QUIET tag can be used to turn on/off the messages that are generated to standard output by doxygen. If QUIET is set to YES this implies that the messages are off.

The default value is: NO.

WARNINGS

The WARNINGS tag can be used to turn on/off the warning messages that are generated to standard error (stderr) by doxygen. If WARNINGS is set to YES this implies that the warnings are on.
Tip: Turn warnings on while writing the documentation.

The default value is: YES.

WARN_IF_UNDOCUMENTED

If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag will automatically be disabled.

The default value is: YES.

WARN_IF_DOC_ERROR

If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for potential errors in the documentation, such as not documenting some parameters in a documented function, or documenting parameters that don't exist or using markup commands wrongly.

The default value is: YES.

WARN_NO_PARAMDOC

This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that are documented, but have no documentation for their parameters or return value. If set to NO doxygen will only warn about wrong or incomplete parameter documentation, but not about the absence of documentation.

The default value is: NO.

WARN_FORMAT

The WARN_FORMAT tag determines the format of the warning messages that doxygen can produce. The string should contain the $file, $line, and $text tags, which will be replaced by the file and line number from which the warning originated and the warning text. Optionally the format may contain $version, which will be replaced by the version of the file (if it could be obtained via FILE_VERSION_FILTER)

The default value is: $file:$line: $text.

WARN_LOGFILE

The WARN_LOGFILE tag can be used to specify a file to which warning and error messages should be written. If left blank the output is written to standard error (stderr).

Configuration options related to the input files

INPUT

The INPUT tag is used to specify the files and/or directories that contain documented source files. You may enter file names like myfile.cpp or directories like /usr/src/myproject. Separate the files or directories with spaces.

Note
If this tag is empty the current directory is searched.

INPUT_ENCODING

This tag can be used to specify the character encoding of the source files that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. See the libiconv documentation for the list of possible encodings.

The default value is: UTF-8.

FILE_PATTERNS

If the value of the INPUT tag contains directories, you can use the FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and *.h) to filter out the source-files in the directories. If left blank the following patterns are tested: *.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js.

RECURSIVE

The RECURSIVE tag can be used to specify whether or not subdirectories should be searched for input files as well.

The default value is: NO.

EXCLUDE

The EXCLUDE tag can be used to specify files and/or directories that should be excluded from the INPUT source files. This way you can easily exclude a subdirectory from a directory tree whose root is specified with the INPUT tag.
Note that relative paths are relative to the directory from which doxygen is run.

EXCLUDE_SYMLINKS

The EXCLUDE_SYMLINKS tag can be used to select whether or not files or directories that are symbolic links (a Unix file system feature) are excluded from the input.

The default value is: NO.

EXCLUDE_PATTERNS

If the value of the INPUT tag contains directories, you can use the EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude certain files from those directories.
Note that the wildcards are matched against the file with absolute path, so to exclude all test directories for example use the pattern */test/*

EXCLUDE_SYMBOLS

The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names (namespaces, classes, functions, etc.) that should be excluded from the output. The symbol name can be a fully qualified name, a word, or if the wildcard * is used, a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test
Note that the wildcards are matched against the file with absolute path, so to exclude all test directories use the pattern */test/*

EXAMPLE_PATH

The EXAMPLE_PATH tag can be used to specify one or more files or directories that contain example code fragments that are included (see the \include command).

EXAMPLE_PATTERNS

If the value of the EXAMPLE_PATH tag contains directories, you can use the EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and *.h) to filter out the source-files in the directories. If left blank all files are included.

EXAMPLE_RECURSIVE

If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be searched for input files to be used with the \include or \dontinclude commands irrespective of the value of the RECURSIVE tag.

The default value is: NO.

IMAGE_PATH

The IMAGE_PATH tag can be used to specify one or more files or directories that contain images that are to be included in the documentation (see the \image command).

INPUT_FILTER

The INPUT_FILTER tag can be used to specify a program that doxygen should invoke to filter for each input file. Doxygen will invoke the filter program by executing (via popen()) the command:
<filter> <input-file>
where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the name of an input file. Doxygen will then use the output that the filter program writes to standard output. If FILTER_PATTERNS is specified, this tag will be ignored.
Note that the filter must not add or remove lines; it is applied before the code is scanned, but not when the output code is generated. If lines are added or removed, the anchors will not be placed correctly.

FILTER_PATTERNS

The FILTER_PATTERNS tag can be used to specify filters on a per file pattern basis. Doxygen will compare the file name with each pattern and apply the filter if there is a match. The filters are a list of the form: pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how filters are used. If the FILTER_PATTERNS tag is empty or if none of the patterns match the file name, INPUT_FILTER is applied.

FILTER_SOURCE_FILES

If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using INPUT_FILTER ) will also be used to filter the input files that are used for producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).

The default value is: NO.

FILTER_SOURCE_PATTERNS

The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file pattern. A pattern will override the setting for FILTER_PATTERN (if any) and it is also possible to disable source filtering for a specific pattern using *.ext= (so without naming a filter).

This tag requires that the tag FILTER_SOURCE_FILES is set to YES.

USE_MDFILE_AS_MAINPAGE

If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that is part of the input, its contents will be placed on the main page (index.html). This can be useful if you have a project on for instance GitHub and want to reuse the introduction page also for the doxygen output.

Configuration options related to source browsing

SOURCE_BROWSER

If the SOURCE_BROWSER tag is set to YES then a list of source files will be generated. Documented entities will be cross-referenced with these sources.
Note: To get rid of all source code in the generated output, make sure that also VERBATIM_HEADERS is set to NO.

The default value is: NO.

INLINE_SOURCES

Setting the INLINE_SOURCES tag to YES will include the body of functions, classes and enums directly into the documentation.

The default value is: NO.

STRIP_CODE_COMMENTS

Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any special comment blocks from generated source code fragments. Normal C, C++ and Fortran comments will always remain visible.

The default value is: YES.

REFERENCED_BY_RELATION

If the REFERENCED_BY_RELATION tag is set to YES then for each documented function all documented functions referencing it will be listed.

The default value is: NO.

REFERENCES_RELATION

If the REFERENCES_RELATION tag is set to YES then for each documented function all documented entities called/used by that function will be listed.

The default value is: NO.

REFERENCES_LINK_SOURCE

If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set to YES, then the hyperlinks from functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will link to the documentation.

The default value is: YES.

SOURCE_TOOLTIPS

If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the source code will show a tooltip with additional information such as prototype, brief description and links to the definition and documentation. Since this will make the HTML file larger and loading of large files a bit slower, you can opt to disable this feature.

The default value is: YES.

This tag requires that the tag SOURCE_BROWSER is set to YES.

USE_HTAGS

If the USE_HTAGS tag is set to YES then the references to source code will point to the HTML generated by the htags(1) tool instead of doxygen built-in source browser. The htags tool is part of GNU's global source tagging system (see http://www.gnu.org/software/global/global.html). You will need version 4.8.6 or higher.
To use it do the following:

  1. Install the latest version of global
  2. Enable SOURCE_BROWSER and USE_HTAGS in the config file
  3. Make sure the INPUT points to the root of the source tree
  4. Run doxygen as normal
    Doxygen will invoke htags (and that will in turn invoke gtags), so these tools must be available from the command line (i.e. in the search path).
    The result: instead of the source browser generated by doxygen, the links to source code will now point to the output of htags.

The default value is: NO.

This tag requires that the tag SOURCE_BROWSER is set to YES.

VERBATIM_HEADERS

If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a verbatim copy of the header file for each class for which an include is specified. Set to NO to disable this.

See also
Section \class.

The default value is: YES.

CLANG_ASSISTED_PARSING

If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the clang parser for more accurate parsing at the cost of reduced performance. This can be particularly helpful with template rich C++ code for which doxygen's built-in parser lacks the necessary type information.

Note
The availability of this option depends on whether or not doxygen was compiled with the --with-libclang option.

The default value is: NO.

CLANG_OPTIONS

If clang assisted parsing is enabled you can provide the compiler with command line options that you would normally use when invoking the compiler. Note that the include paths will already be set by doxygen for the files and directories specified with INPUT and INCLUDE_PATH.

This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.

Configuration options related to the alphabetical class index

ALPHABETICAL_INDEX

If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all compounds will be generated. Enable this if the project contains a lot of classes, structs, unions or interfaces.

The default value is: YES.

COLS_IN_ALPHA_INDEX

The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in which the alphabetical index list will be split.

Minimum value: 1, maximum value: 20, default value: 5.

This tag requires that the tag ALPHABETICAL_INDEX is set to YES.

IGNORE_PREFIX

In case all classes in a project start with a common prefix, all classes will be put under the same header in the alphabetical index. The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) that should be ignored while generating the index headers.

This tag requires that the tag ALPHABETICAL_INDEX is set to YES.

Configuration options related to the HTML output

GENERATE_HTML

If the GENERATE_HTML tag is set to YES doxygen will generate HTML output

The default value is: YES.

HTML_OUTPUT

The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it.

The default directory is: html.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_FILE_EXTENSION

The HTML_FILE_EXTENSION tag can be used to specify the file extension for each generated HTML page (for example: .htm, .php, .asp).

The default value is: .html.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_HEADER

The HTML_HEADER tag can be used to specify a user-defined HTML header file for each generated HTML page. If the tag is left blank doxygen will generate a standard header.
To get valid HTML the header file that includes any scripts and style sheets that doxygen needs, which is dependent on the configuration options used (e.g. the setting GENERATE_TREEVIEW). It is highly recommended to start with a default header using

doxygen -w html new_header.html new_footer.html new_stylesheet.css YourConfigFile

and then modify the file new_header.html.

See also section Doxygen usage for information on how to generate the default header that doxygen normally uses.

Note
The header is subject to change so you typically have to regenerate the default header when upgrading to a newer version of doxygen. The following markers have a special meaning inside the header and footer:
$title
will be replaced with the title of the page.
$datetime
will be replaced with current the date and time.
$date
will be replaced with the current date.
$year
will be replaces with the current year.
$doxygenversion
will be replaced with the version of doxygen
$projectname
will be replaced with the name of the project (see PROJECT_NAME)
$projectnumber
will be replaced with the project number (see PROJECT_NUMBER)
$projectbrief
will be replaced with the project brief description (see PROJECT_BRIEF)
$projectlogo
will be replaced with the project logo (see PROJECT_LOGO)
$treeview
will be replaced with links to the javascript and style sheets needed for the navigation tree (or an empty string when GENERATE_TREEVIEW is disabled).
$search
will be replaced with a links to the javascript and style sheets needed for the search engine (or an empty string when SEARCHENGINE is disabled).
$mathjax
will be replaced with a links to the javascript and style sheets needed for the MathJax feature (or an empty string when USE_MATHJAX is disabled).
$relpath^
If CREATE_SUBDIRS is enabled, the command $relpath^ can be used to produce a relative path to the root of the HTML output directory, e.g. use $relpath^doxygen.css, to refer to the standard style sheet.

To cope with differences in the layout of the header and footer that depend on configuration settings, the header can also contain special blocks that will be copied to the output or skipped depending on the configuration. Such blocks have the following form:

 <!--BEGIN BLOCKNAME-->
 Some context copied when condition BLOCKNAME holds
 <!--END BLOCKNAME-->
 <!--BEGIN !BLOCKNAME-->
 Some context copied when condition BLOCKNAME does not hold
 <!--END !BLOCKNAME-->

The following block names are supported:

DISABLE_INDEX
Content within this block is copied to the output when the DISABLE_INDEX option is enabled (so when the index is disabled).
GENERATE_TREEVIEW
Content within this block is copied to the output when the GENERATE_TREEVIEW option is enabled.
SEARCHENGINE
Content within this block is copied to the output when the SEARCHENGINE option is enabled.
PROJECT_NAME
Content within the block is copied to the output when the PROJECT_NAME option is not empty.
PROJECT_NUMBER
Content within the block is copied to the output when the PROJECT_NUMBER option is not empty.
PROJECT_BRIEF
Content within the block is copied to the output when the PROJECT_BRIEF option is not empty.
PROJECT_LOGO
Content within the block is copied to the output when the PROJECT_LOGO option is not empty.
TITLEAREA
Content within this block is copied to the output when a title is visible at the top of each page. This is the case if either PROJECT_NAME, PROJECT_BRIEF, PROJECT_LOGO is filled in or if both DISABLE_INDEX and SEARCHENGINE are enabled.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_FOOTER

The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each generated HTML page. If the tag is left blank doxygen will generate a standard footer.

See HTML_HEADER for more information on how to generate a default footer and what special commands can be used inside the footer.

See also section Doxygen usage for information on how to generate the default footer that doxygen normally uses.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_STYLESHEET

The HTML_STYLESHEET tag can be used to specify a user-defined cascading style sheet that is used by each HTML page. It can be used to fine-tune the look of the HTML output. If left blank doxygen will generate a default style sheet.

See also section Doxygen usage for information on how to generate the style sheet that doxygen normally uses.

Note
It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as it is more robust and this tag (HTML_STYLESHEET) will in the future become obsolete.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_EXTRA_STYLESHEET

The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-defined cascading style sheet that is included after the standard style sheets created by doxygen. Using this option one can overrule certain style aspects. This is preferred over using HTML_STYLESHEET since it does not replace the standard style sheet and is therefor more robust against future updates. Doxygen will copy the style sheet file to the output directory. Here is an example stylesheet that gives the contents area a fixed width:

body {
        background-color: #CCC;
        color: black;
        margin: 0;
}

div.contents {
        margin-bottom: 10px;
        padding: 12px;
        margin-left: auto;
        margin-right: auto;
        width: 960px;
        background-color: white;
        border-radius: 8px;
}

#titlearea {
        background-color: white;
}

hr.footer {
        display: none;
}

.footer {
        background-color: #AAA;
}

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_EXTRA_FILES

The HTML_EXTRA_FILES tag can be used to specify one or more extra images or other source files which should be copied to the HTML output directory. Note that these files will be copied to the base HTML output directory. Use the $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these files. In the HTML_STYLESHEET file, use the file name only. Also note that the files will be copied as-is; there are no commands or markers available.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_HUE

The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen will adjust the colors in the stylesheet and background images according to this color. Hue is specified as an angle on a colorwheel, see http://en.wikipedia.org/wiki/Hue for more information. For instance the value 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 purple, and 360 is red again.

Minimum value: 0, maximum value: 359, default value: 220.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_SAT

The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors in the HTML output. For a value of 0 the output will use grayscales only. A value of 255 will produce the most vivid colors.

Minimum value: 0, maximum value: 255, default value: 100.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_GAMMA

The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the luminance component of the colors in the HTML output. Values below 100 gradually make the output lighter, whereas values above 100 make the output darker. The value divided by 100 is the actual gamma applied, so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not change the gamma.

Minimum value: 40, maximum value: 240, default value: 80.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_TIMESTAMP

If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML page will contain the date and time when the page was generated. Setting this to NO can help when comparing the output of multiple runs.

The default value is: YES.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_DYNAMIC_SECTIONS

If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML documentation will contain sections that can be hidden and shown after the page has loaded.

The default value is: NO.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_INDEX_NUM_ENTRIES

With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries shown in the various tree structured indices initially; the user can expand and collapse entries dynamically later on. Doxygen will expand the tree to such a level that at most the specified number of entries are visible (unless a fully collapsed tree already exceeds this amount). So setting the number of entries 1 will produce a full collapsed tree by default. 0 is a special value representing an infinite number of entries and will result in a full expanded tree by default.

Minimum value: 0, maximum value: 9999, default value: 100.

This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_DOCSET

If the GENERATE_DOCSET tag is set to YES, additional index files will be generated that can be used as input for Apple's Xcode 3 integrated development environment, introduced with OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a Makefile in the HTML output directory. Running make will produce the docset in that directory and running make install will install the docset in ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.

The default value is: NO.

This tag requires that the tag GENERATE_HTML is set to YES.

DOCSET_FEEDNAME

This tag determines the name of the docset feed. A documentation feed provides an umbrella under which multiple documentation sets from a single provider (such as a company or product suite) can be grouped.

The default value is: Doxygen generated docs.

This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_BUNDLE_ID

This tag specifies a string that should uniquely identify the documentation set bundle. This should be a reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen will append .docset to the name.

The default value is: org.doxygen.Project.

This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_PUBLISHER_ID

The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify the documentation publisher. This should be a reverse domain-name style string, e.g. com.mycompany.MyDocSet.documentation.

The default value is: org.doxygen.Publisher.

This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_PUBLISHER_NAME

The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.

The default value is: Publisher.

This tag requires that the tag GENERATE_DOCSET is set to YES.

GENERATE_HTMLHELP

If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three additional HTML index files: index.hhp, index.hhc, and index.hhk. The index.hhp is a project file that can be read by Microsoft's HTML Help Workshop on Windows.
The HTML Help Workshop contains a compiler that can convert all HTML output generated by doxygen into a single compiled HTML file (.chm). Compiled HTML files are now used as the Windows 98 help format, and will replace the old Windows help format (.hlp) on all Windows platforms in the future. Compressed HTML files also contain an index, a table of contents, and you can search for words in the documentation. The HTML workshop also contains a viewer for compressed HTML files.

The default value is: NO.

This tag requires that the tag GENERATE_HTML is set to YES.

CHM_FILE

The CHM_FILE tag can be used to specify the file name of the resulting .chm file. You can add a path in front of the file if the result should not be written to the html output directory.

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

HHC_LOCATION

The HHC_LOCATION tag can be used to specify the location (absolute path including file name) of the HTML help compiler (hhc.exe). If non-empty doxygen will try to run the HTML help compiler on the generated index.hhp.

The file has to be specified with full path.

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

GENERATE_CHI

The GENERATE_CHI flag controls if a separate .chi index file is generated (YES) or that it should be included in the master .chm file (NO).

The default value is: NO.

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

CHM_INDEX_ENCODING

The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) and project file content.

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

BINARY_TOC

The BINARY_TOC flag controls whether a binary table of contents is generated (YES) or a normal table of contents (NO) in the .chm file. Furthermore it enables the Previous and Next buttons.

The default value is: NO.

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

TOC_EXPAND

The TOC_EXPAND flag can be set to YES to add extra items for group members to the table of contents of the HTML help documentation and to the tree view.

The default value is: NO.

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

GENERATE_QHP

If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated HTML documentation.

The default value is: NO.

This tag requires that the tag GENERATE_HTML is set to YES.

QCH_FILE

If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify the file name of the resulting .qch file. The path specified is relative to the HTML output folder.

This tag requires that the tag GENERATE_QHP is set to YES.

QHP_NAMESPACE

The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help Project output. For more information please see Qt Help Project / Namespace.

The default value is: org.doxygen.Project.

This tag requires that the tag GENERATE_QHP is set to YES.

QHP_VIRTUAL_FOLDER

The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt Help Project output. For more information please see Qt Help Project / Virtual Folders.

The default value is: doc.

This tag requires that the tag GENERATE_QHP is set to YES.

QHP_CUST_FILTER_NAME

If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom filter to add. For more information please see Qt Help Project / Custom Filters.

This tag requires that the tag GENERATE_QHP is set to YES.

QHP_CUST_FILTER_ATTRS

The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the custom filter to add. For more information please see Qt Help Project / Custom Filters.

This tag requires that the tag GENERATE_QHP is set to YES.

QHP_SECT_FILTER_ATTRS

The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's filter section matches. Qt Help Project / Filter Attributes.

This tag requires that the tag GENERATE_QHP is set to YES.

QHG_LOCATION

The QHG_LOCATION tag can be used to specify the location of Qt's qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the generated .qhp file.

This tag requires that the tag GENERATE_QHP is set to YES.

GENERATE_ECLIPSEHELP

If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be generated, together with the HTML files, they form an Eclipse help plugin.

To install this plugin and make it available under the help contents menu in Eclipse, the contents of the directory containing the HTML and XML files needs to be copied into the plugins directory of eclipse. The name of the directory within the plugins directory should be the same as the ECLIPSE_DOC_ID value.

After copying Eclipse needs to be restarted before the help appears.

The default value is: NO.

This tag requires that the tag GENERATE_HTML is set to YES.

ECLIPSE_DOC_ID

A unique identifier for the Eclipse help plugin. When installing the plugin the directory name containing the HTML and XML files should also have this name. Each documentation set should have its own identifier.

The default value is: org.doxygen.Project.

This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.

DISABLE_INDEX

If you want full control over the layout of the generated HTML pages it might be necessary to disable the index and replace it with your own. The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top of each HTML page. A value of NO enables the index and the value YES disables it. Since the tabs in the index contain the same information as the navigation tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.

The default value is: NO.

This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_TREEVIEW

The GENERATE_TREEVIEW tag is used to specify whether a tree-like index structure should be generated to display hierarchical information. If the tag value is set to YES, a side panel will be generated containing a tree-like index structure (just like the one that is generated for HTML Help). For this to work a browser that supports JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). Windows users are probably better off using the HTML help feature.

Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can further fine-tune the look of the index. As an example, the default style sheet generated by doxygen has an example that shows how to put an image at the root of the tree instead of the PROJECT_NAME.

Since the tree basically has the same information as the tab index, you could consider setting DISABLE_INDEX to YES when enabling this option.

The default value is: NO.

This tag requires that the tag GENERATE_HTML is set to YES.

ENUM_VALUES_PER_LINE

The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that doxygen will group on one line in the generated HTML documentation.
Note that a value of 0 will completely suppress the enum values from appearing in the overview section.

Minimum value: 0, maximum value: 20, default value: 4.

This tag requires that the tag GENERATE_HTML is set to YES.

TREEVIEW_WIDTH

If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used to set the initial width (in pixels) of the frame in which the tree is shown.

Minimum value: 0, maximum value: 1500, default value: 250.

This tag requires that the tag GENERATE_HTML is set to YES.

EXT_LINKS_IN_WINDOW

When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to external symbols imported via tag files in a separate window.

The default value is: NO.

This tag requires that the tag GENERATE_HTML is set to YES.

FORMULA_FONTSIZE

Use this tag to change the font size of [image] formulas included as images in the HTML documentation. When you change the font size after a successful doxygen run you need to manually remove any form_*.png images from the HTML output directory to force them to be regenerated.

Minimum value: 8, maximum value: 50, default value: 10.

This tag requires that the tag GENERATE_HTML is set to YES.

FORMULA_TRANSPARENT

Use the FORMULA_TRANPARENT tag to determine whether or not the images generated for formulas are transparent PNGs. Transparent PNGs are not supported properly for IE 6.0, but are supported on all modern browsers.
Note that when changing this option you need to delete any form_*.png files in the HTML output directory before the changes have effect.

The default value is: YES.

This tag requires that the tag GENERATE_HTML is set to YES.

USE_MATHJAX

Enable the USE_MATHJAX option to render [image] formulas using MathJax (see http://www.mathjax.org) which uses client side Javascript for the rendering instead of using prerendered bitmaps. Use this if you do not have [image] installed or if you want to formulas look prettier in the HTML output. When enabled you may also need to install MathJax separately and configure the path to it using the MATHJAX_RELPATH option.

The default value is: NO.

This tag requires that the tag GENERATE_HTML is set to YES.

MATHJAX_FORMAT

When MathJax is enabled you can set the default output format to be used for the MathJax output. See the MathJax site for more details.

Possible values are: HTML-CSS (which is slower, but has the best compatibility), NativeMML (i.e. MathML) and SVG.

The default value is: HTML-CSS.

This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_RELPATH

When MathJax is enabled you need to specify the location relative to the HTML output directory using the MATHJAX_RELPATH option. The destination directory should contain the MathJax.js script. For instance, if the mathjax directory is located at the same level as the HTML output directory, then MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax Content Delivery Network so you can quickly see the result without installing MathJax. However, it is strongly recommended to install a local copy of MathJax from http://www.mathjax.org before deployment.

The default value is: http://cdn.mathjax.org/mathjax/latest.

This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_EXTENSIONS

The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax extension names that should be enabled during MathJax rendering. For example

MATHJAX_EXTENSIONS     = TeX/AMSmath TeX/AMSsymbols

This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_CODEFILE

The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces of code that will be used on startup of the MathJax code. See the MathJax site for more details. As an example to disable the "Math Renderer" menu item in the "Math Settings" menu of MathJax:

MATHJAX_CODEFILE = disableRenderer.js

with in the file disableRenderer.js:

  MathJax.Hub.Config({
   menuSettings: {
    showRenderer: false,
   }
  });

This tag requires that the tag USE_MATHJAX is set to YES.

SEARCHENGINE

When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output. The underlying search engine uses javascript and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) there is already a search function so this one should typically be disabled. For large projects the javascript based search engine can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.

It is possible to search using the keyboard; to jump to the search box use <access key> + S (what the <access key> is depends on the OS and browser, but it is typically <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down key> to jump into the search results window, the results can be navigated using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel the search. The filter options can be selected when the cursor is inside the search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> to select a filter and <Enter> or <escape> to activate or cancel the filter option.

The default value is: YES.

This tag requires that the tag GENERATE_HTML is set to YES.

SERVER_BASED_SEARCH

When the SERVER_BASED_SEARCH tag is enabled the search engine will be implemented using a web server instead of a web client using Javascript.

There are two flavors of web server based searching depending on the EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for searching and an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing and searching needs to be provided by external tools. See the section External Indexing and Searching for details.

The default value is: NO.

This tag requires that the tag SEARCHENGINE is set to YES.

EXTERNAL_SEARCH

When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP script for searching. Instead the search results are written to an XML file which needs to be processed by an external indexer. Doxygen will invoke an external search engine pointed to by the SEARCHENGINE_URL option to obtain the search results.
Doxygen ships with an example indexer (doxyindexer) and search engine (doxysearch.cgi) which are based on the open source search engine library Xapian.
See the section External Indexing and Searching for details.

The default value is: NO.

This tag requires that the tag SEARCHENGINE is set to YES.

SEARCHENGINE_URL

The SEARCHENGINE_URL should point to a search engine hosted by a web server which will return the search results when EXTERNAL_SEARCH is enabled.
Doxygen ships with an example indexer (doxyindexer) and search engine (doxysearch.cgi) which are based on the open source search engine library Xapian. See the section External Indexing and Searching for details.

This tag requires that the tag SEARCHENGINE is set to YES.

SEARCHDATA_FILE

When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed search data is written to a file for indexing by an external tool. With the SEARCHDATA_FILE tag the name of this file can be specified.

The default file is: searchdata.xml.

This tag requires that the tag SEARCHENGINE is set to YES.

EXTERNAL_SEARCH_ID

When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple projects and redirect the results back to the right project.

This tag requires that the tag SEARCHENGINE is set to YES.

EXTRA_SEARCH_MAPPINGS

The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen projects other than the one defined by this configuration file, but that are all added to the same external search index. Each project needs to have a unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of to a relative location where the documentation can be found.

The format is:

EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...

This tag requires that the tag SEARCHENGINE is set to YES.

Configuration options related to the LaTeX output

GENERATE_LATEX

If the GENERATE_LATEX tag is set to YES doxygen will generate [image] output.

The default value is: YES.

LATEX_OUTPUT

The LATEX_OUTPUT tag is used to specify where the [image] docs will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it.

The default directory is: latex.

This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_CMD_NAME

The LATEX_CMD_NAME tag can be used to specify the [image] command name to be invoked.
Note that when enabling USE_PDFLATEX this option is only used for generating bitmaps for formulas in the HTML output, but not in the Makefile that is written to the output directory.

The default file is: latex.

This tag requires that the tag GENERATE_LATEX is set to YES.

MAKEINDEX_CMD_NAME

The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate index for [image].

The default file is: makeindex.

This tag requires that the tag GENERATE_LATEX is set to YES.

COMPACT_LATEX

If the COMPACT_LATEX tag is set to YES doxygen generates more compact [image] documents. This may be useful for small projects and may help to save some trees in general.

The default value is: NO.

This tag requires that the tag GENERATE_LATEX is set to YES.

PAPER_TYPE

The PAPER_TYPE tag can be used to set the paper type that is used by the printer.

Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x 14 inches) and executive (7.25 x 10.5 inches).

The default value is: a4.

This tag requires that the tag GENERATE_LATEX is set to YES.

EXTRA_PACKAGES

The EXTRA_PACKAGES tag can be used to specify one or more [image] package names that should be included in the [image] output. To get the times font for instance you can specify

EXTRA_PACKAGES=times

If left blank no extra packages will be included.

This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_HEADER

The LATEX_HEADER tag can be used to specify a personal [image] header for the generated [image] document. The header should contain everything until the first chapter.

If it is left blank doxygen will generate a standard header. See section Doxygen usage for information on how to let doxygen write the default header to a separate file.

Note: Only use a user-defined header if you know what you are doing!

The following commands have a special meaning inside the header: $title, $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will replace them by respectively the title of the page, the current date and time, only the current date, the version number of doxygen, the project name (see PROJECT_NAME), or the project number (see PROJECT_NUMBER).

This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_FOOTER

The LATEX_FOOTER tag can be used to specify a personal [image] footer for the generated [image] document. The footer should contain everything after the last chapter. If it is left blank doxygen will generate a standard footer.

Note: Only use a user-defined footer if you know what you are doing!

This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_EXTRA_FILES

The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or other source files which should be copied to the LATEX_OUTPUT output directory. Note that the files will be copied as-is; there are no commands or markers available.

This tag requires that the tag GENERATE_LATEX is set to YES.

PDF_HYPERLINKS

If the PDF_HYPERLINKS tag is set to YES, the [image] that is generated is prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will contain links (just like the HTML output) instead of page references. This makes the output suitable for online browsing using a PDF viewer.

The default value is: YES.

This tag requires that the tag GENERATE_LATEX is set to YES.

USE_PDFLATEX

If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate the PDF file directly from the [image] files. Set this option to YES to get a higher quality PDF documentation.

The default value is: YES.

This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_BATCHMODE

If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode command to the generated [image] files. This will instruct [image] to keep running if errors occur, instead of asking the user for help. This option is also used when generating formulas in HTML.

The default value is: NO.

This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_HIDE_INDICES

If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the index chapters (such as File Index, Compound Index, etc.) in the output.

The default value is: NO.

This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_SOURCE_CODE

If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source code with syntax highlighting in the [image] output.
Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.

The default value is: NO.

This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_BIB_STYLE

The LATEX_BIB_STYLE tag can be used to specify the style to use for the bibliography, e.g. plainnat, or ieeetr. See http://en.wikipedia.org/wiki/BibTeX and \cite for more info.

The default value is: plain.

This tag requires that the tag GENERATE_LATEX is set to YES.

Configuration options related to the RTF output

GENERATE_RTF

If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The RTF output is optimized for Word 97 and may not look too pretty with other RTF readers/editors.

The default value is: NO.

RTF_OUTPUT

The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it.

The default directory is: rtf.

This tag requires that the tag GENERATE_RTF is set to YES.

COMPACT_RTF

If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF documents. This may be useful for small projects and may help to save some trees in general.

The default value is: NO.

This tag requires that the tag GENERATE_RTF is set to YES.

RTF_HYPERLINKS

If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will contain hyperlink fields. The RTF file will contain links (just like the HTML output) instead of page references. This makes the output suitable for online browsing using Word or some other Word compatible readers that support those fields.

Note: WordPad (write) and others do not support links.

The default value is: NO.

This tag requires that the tag GENERATE_RTF is set to YES.

RTF_STYLESHEET_FILE

Load stylesheet definitions from file. Syntax is similar to doxygen's config file, i.e. a series of assignments. You only have to provide replacements, missing definitions are set to their default value.
See also section Doxygen usage for information on how to generate the default style sheet that doxygen normally uses.

This tag requires that the tag GENERATE_RTF is set to YES.

RTF_EXTENSIONS_FILE

Set optional variables used in the generation of an RTF document. Syntax is similar to doxygen's config file. A template extensions file can be generated using doxygen -e rtf extensionFile.

This tag requires that the tag GENERATE_RTF is set to YES.

Configuration options related to the man page output

GENERATE_MAN

If the GENERATE_MAN tag is set to YES doxygen will generate man pages for classes and files.

The default value is: NO.

MAN_OUTPUT

The MAN_OUTPUT tag is used to specify where the man pages will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it. A directory man3 will be created inside the directory specified by MAN_OUTPUT.

The default directory is: man.

This tag requires that the tag GENERATE_MAN is set to YES.

MAN_EXTENSION

The MAN_EXTENSION tag determines the extension that is added to the generated man pages. In case the manual section does not start with a number, the number 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is optional.

The default value is: .3.

This tag requires that the tag GENERATE_MAN is set to YES.

MAN_SUBDIR

The MAN_SUBDIR tag determines the name of the directory created within MAN_OUTPUT in which the man pages are placed. If defaults to man followed by MAN_EXTENSION with the initial . removed.

This tag requires that the tag GENERATE_MAN is set to YES.

MAN_LINKS

If the MAN_LINKS tag is set to YES and doxygen generates man output, then it will generate one additional man file for each entity documented in the real man page(s). These additional files only source the real man page, but without them the man command would be unable to find the correct page.

The default value is: NO.

This tag requires that the tag GENERATE_MAN is set to YES.

Configuration options related to the XML output

GENERATE_XML

If the GENERATE_XML tag is set to YES doxygen will generate an XML file that captures the structure of the code including all documentation.

The default value is: NO.

XML_OUTPUT

The XML_OUTPUT tag is used to specify where the XML pages will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it.

The default directory is: xml.

This tag requires that the tag GENERATE_XML is set to YES.

XML_PROGRAMLISTING

If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program listings (including syntax highlighting and cross-referencing information) to the XML output. Note that enabling this will significantly increase the size of the XML output.

The default value is: YES.

This tag requires that the tag GENERATE_XML is set to YES.

Configuration options related to the DOCBOOK output

GENERATE_DOCBOOK

If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files that can be used to generate PDF.

The default value is: NO.

DOCBOOK_OUTPUT

The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it.

The default directory is: docbook.

This tag requires that the tag GENERATE_DOCBOOK is set to YES.

Configuration options for the AutoGen Definitions output

GENERATE_AUTOGEN_DEF

If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen Definitions (see http://autogen.sf.net) file that captures the structure of the code including all documentation. Note that this feature is still experimental and incomplete at the moment.

The default value is: NO.

Configuration options related to the Perl module output

GENERATE_PERLMOD

If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module file that captures the structure of the code including all documentation.
Note that this feature is still experimental and incomplete at the moment.

The default value is: NO.

PERLMOD_LATEX

If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary Makefile rules, Perl scripts and [image] code to be able to generate PDF and DVI output from the Perl module output.

The default value is: NO.

This tag requires that the tag GENERATE_PERLMOD is set to YES.

PERLMOD_PRETTY

If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely formatted so it can be parsed by a human reader. This is useful if you want to understand what is going on. On the other hand, if this tag is set to NO the size of the Perl module output will be much smaller and Perl will parse it just the same.

The default value is: YES.

This tag requires that the tag GENERATE_PERLMOD is set to YES.

PERLMOD_MAKEVAR_PREFIX

The names of the make variables in the generated doxyrules.make file are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful so different doxyrules.make files included by the same Makefile don't overwrite each other's variables.

This tag requires that the tag GENERATE_PERLMOD is set to YES.

Configuration options related to the preprocessor

ENABLE_PREPROCESSING

If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all C-preprocessor directives found in the sources and include files.

The default value is: YES.

MACRO_EXPANSION

If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names in the source code. If set to NO only conditional compilation will be performed. Macro expansion can be done in a controlled way by setting EXPAND_ONLY_PREDEF to YES.

The default value is: NO.

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

EXPAND_ONLY_PREDEF

If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then the macro expansion is limited to the macros specified with the PREDEFINED and EXPAND_AS_DEFINED tags.

The default value is: NO.

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

SEARCH_INCLUDES

If the SEARCH_INCLUDES tag is set to YES the includes files in the INCLUDE_PATH will be searched if a #include is found.

The default value is: YES.

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

INCLUDE_PATH

The INCLUDE_PATH tag can be used to specify one or more directories that contain include files that are not input files but should be processed by the preprocessor.

This tag requires that the tag SEARCH_INCLUDES is set to YES.

INCLUDE_FILE_PATTERNS

You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard patterns (like *.h and *.hpp) to filter out the header-files in the directories. If left blank, the patterns specified with FILE_PATTERNS will be used.

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

PREDEFINED

The PREDEFINED tag can be used to specify one or more macro names that are defined before the preprocessor is started (similar to the -D option of e.g. gcc). The argument of the tag is a list of macros of the form: name or name=definition (no spaces). If the definition and the "=" are omitted, "=1" is assumed. To prevent a macro definition from being undefined via #undef or recursively expanded use the := operator instead of the = operator.

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

EXPAND_AS_DEFINED

If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this tag can be used to specify a list of macro names that should be expanded. The macro definition that is found in the sources will be used. Use the PREDEFINED tag if you want to use a different macro definition that overrules the definition found in the source code.

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

SKIP_FUNCTION_MACROS

If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will remove all references to function-like macros that are alone on a line, have an all uppercase name, and do not end with a semicolon. Such function macros are typically used for boiler-plate code, and will confuse the parser if not removed.

The default value is: YES.

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

Configuration options related to external references

TAGFILES

The TAGFILES tag can be used to specify one or more tag files.

For each tag file the location of the external documentation should be added. The format of a tag file without this location is as follows:

  TAGFILES = file1 file2 ...

Adding location for the tag files is done as follows:

  TAGFILES = file1=loc1 "file2 = loc2" ...

where loc1 and loc2 can be relative or absolute paths or URLs. See the section Linking to external documentation for more information about the use of tag files.

Note
Each tag file must have a unique name (where the name does NOT include the path). If a tag file is not located in the directory in which doxygen is run, you must also specify the path to the tagfile here.

GENERATE_TAGFILE

When a file name is specified after GENERATE_TAGFILE, doxygen will create a tag file that is based on the input files it reads. See section Linking to external documentation for more information about the usage of tag files.

ALLEXTERNALS

If the ALLEXTERNALS tag is set to YES all external class will be listed in the class index. If set to NO only the inherited external classes will be listed.

The default value is: NO.

EXTERNAL_GROUPS

If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in the modules index. If set to NO, only the current project's groups will be listed.

The default value is: YES.

EXTERNAL_PAGES

If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in the related pages index. If set to NO, only the current project's pages will be listed.

The default value is: YES.

PERL_PATH

The PERL_PATH should be the absolute path and name of the perl script interpreter (i.e. the result of 'which perl').

The default file (with absolute path) is: /usr/bin/perl.

Configuration options related to the dot tool

CLASS_DIAGRAMS

If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram (in HTML and [image]) for classes with base or super classes. Setting the tag to NO turns the diagrams off. Note that this option also works with HAVE_DOT disabled, but it is recommended to install and use dot, since it yields more powerful graphs.

The default value is: YES.

MSCGEN_PATH

You can define message sequence charts within doxygen comments using the \msc command. Doxygen will then run the mscgen tool) to produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to specify the directory where the mscgen tool resides. If left empty the tool is assumed to be found in the default search path.

DIA_PATH

You can include diagrams made with dia in doxygen documentation. Doxygen will then run dia to produce the diagram and insert it in the documentation. The DIA_PATH tag allows you to specify the directory where the dia binary resides. If left empty dia is assumed to be found in the default search path.

HIDE_UNDOC_RELATIONS

If set to YES, the inheritance and collaboration graphs will hide inheritance and usage relations if the target is undocumented or is not a class.

The default value is: YES.

HAVE_DOT

If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is available from the path. This tool is part of Graphviz, a graph visualization toolkit from AT&T and Lucent Bell Labs. The other options in this section have no effect if this option is set to NO

The default value is: NO.

DOT_NUM_THREADS

The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed to run in parallel. When set to 0 doxygen will base this on the number of processors available in the system. You can set it explicitly to a value larger than 0 to get control over the balance between CPU load and processing speed.

Minimum value: 0, maximum value: 32, default value: 0.

This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTNAME

When you want a differently looking font n the dot files that doxygen generates you can specify the font name using DOT_FONTNAME. You need to make sure dot is able to find the font, which can be done by putting it in a standard location or by setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory containing the font.

The default value is: Helvetica.

This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTSIZE

The DOT_FONTSIZE tag can be used to set the size (in points) of the font of dot graphs.

Minimum value: 4, maximum value: 24, default value: 10.

This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTPATH

By default doxygen will tell dot to use the default font as specified with DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set the path where dot can find it using this tag.

This tag requires that the tag HAVE_DOT is set to YES.

CLASS_GRAPH

If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for each documented class showing the direct and indirect inheritance relations. Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.

The default value is: YES.

This tag requires that the tag HAVE_DOT is set to YES.

COLLABORATION_GRAPH

If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a graph for each documented class showing the direct and indirect implementation dependencies (inheritance, containment, and class references variables) of the class with other documented classes.

The default value is: YES.

This tag requires that the tag HAVE_DOT is set to YES.

GROUP_GRAPHS

If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for groups, showing the direct groups dependencies.

The default value is: YES.

This tag requires that the tag HAVE_DOT is set to YES.

UML_LOOK

If the UML_LOOK tag is set to YES doxygen will generate inheritance and collaboration diagrams in a style similar to the OMG's Unified Modeling Language.

The default value is: NO.

This tag requires that the tag HAVE_DOT is set to YES.

UML_LIMIT_NUM_FIELDS

If the UML_LOOK tag is enabled, the fields and methods are shown inside the class node. If there are many fields or methods and many nodes the graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the number of items for each type to make the size more manageable. Set this to 0 for no limit. Note that the threshold may be exceeded by 50% before the limit is enforced. So when you set the threshold to 10, up to 15 fields may appear, but if the number exceeds 15, the total amount of fields shown is limited to 10.

Minimum value: 0, maximum value: 100, default value: 10.

This tag requires that the tag HAVE_DOT is set to YES.

TEMPLATE_RELATIONS

If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and collaboration graphs will show the relations between templates and their instances.

The default value is: NO.

This tag requires that the tag HAVE_DOT is set to YES.

INCLUDE_GRAPH

If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to YES then doxygen will generate a graph for each documented file showing the direct and indirect include dependencies of the file with other documented files.

The default value is: YES.

This tag requires that the tag HAVE_DOT is set to YES.

INCLUDED_BY_GRAPH

If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to YES then doxygen will generate a graph for each documented file showing the direct and indirect include dependencies of the file with other documented files.

The default value is: YES.

This tag requires that the tag HAVE_DOT is set to YES.

CALL_GRAPH

If the CALL_GRAPH tag is set to YES then doxygen will generate a call dependency graph for every global function or class method.
Note that enabling this option will significantly increase the time of a run. So in most cases it will be better to enable call graphs for selected functions only using the \callgraph command.

The default value is: NO.

This tag requires that the tag HAVE_DOT is set to YES.

CALLER_GRAPH

If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller dependency graph for every global function or class method.
Note that enabling this option will significantly increase the time of a run. So in most cases it will be better to enable caller graphs for selected functions only using the \callergraph command.

The default value is: NO.

This tag requires that the tag HAVE_DOT is set to YES.

GRAPHICAL_HIERARCHY

If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical hierarchy of all classes instead of a textual one.

The default value is: YES.

This tag requires that the tag HAVE_DOT is set to YES.

DIRECTORY_GRAPH

If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the dependencies a directory has on other directories in a graphical way. The dependency relations are determined by the #include relations between the files in the directories.

The default value is: YES.

This tag requires that the tag HAVE_DOT is set to YES.

DOT_IMAGE_FORMAT

The DOT_IMAGE_FORMAT tag can be used to set the image format of the images generated by dot.

Note
If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files visible in IE 9+ (other browsers do not have this requirement).

Possible values are: png, jpg, gif and svg.

The default value is: png.

This tag requires that the tag HAVE_DOT is set to YES.

INTERACTIVE_SVG

If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to enable generation of interactive SVG images that allow zooming and panning.
Note that this requires a modern browser other than Internet Explorer. Tested and working are Firefox, Chrome, Safari, and Opera.

Note
For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files visible. Older versions of IE do not have SVG support.

The default value is: NO.

This tag requires that the tag HAVE_DOT is set to YES.

DOT_PATH

The DOT_PATH tag can be used to specify the path where the dot tool can be found. If left blank, it is assumed the dot tool can be found in the path.

This tag requires that the tag HAVE_DOT is set to YES.

DOTFILE_DIRS

The DOTFILE_DIRS tag can be used to specify one or more directories that contain dot files that are included in the documentation (see the \dotfile command).

This tag requires that the tag HAVE_DOT is set to YES.

MSCFILE_DIRS

The MSCFILE_DIRS tag can be used to specify one or more directories that contain msc files that are included in the documentation (see the \mscfile command).

DIAFILE_DIRS

The DIAFILE_DIRS tag can be used to specify one or more directories that contain dia files that are included in the documentation (see the \diafile command).

DOT_GRAPH_MAX_NODES

The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes that will be shown in the graph. If the number of nodes in a graph becomes larger than this value, doxygen will truncate the graph, which is visualized by representing a node as a red box. Note that doxygen if the number of direct children of the root node in a graph is already larger than DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.

Minimum value: 0, maximum value: 10000, default value: 50.

This tag requires that the tag HAVE_DOT is set to YES.

MAX_DOT_GRAPH_DEPTH

The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs generated by dot. A depth value of 3 means that only nodes reachable from the root by following a path via at most 3 edges will be shown. Nodes that lay further from the root node will be omitted. Note that setting this option to 1 or 2 may greatly reduce the computation time needed for large code bases. Also note that the size of a graph can be further restricted by DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.

Minimum value: 0, maximum value: 1000, default value: 0.

This tag requires that the tag HAVE_DOT is set to YES.

DOT_TRANSPARENT

Set the DOT_TRANSPARENT tag to YES to generate images with a transparent background. This is disabled by default, because dot on Windows does not seem to support this out of the box.
Warning: Depending on the platform used, enabling this option may lead to badly anti-aliased labels on the edges of a graph (i.e. they become hard to read).

The default value is: NO.

This tag requires that the tag HAVE_DOT is set to YES.

DOT_MULTI_TARGETS

Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output files in one run (i.e. multiple -o and -T options on the command line). This makes dot run faster, but since only newer versions of dot (>1.8.10) support this, this feature is disabled by default.

The default value is: NO.

This tag requires that the tag HAVE_DOT is set to YES.

GENERATE_LEGEND

If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page explaining the meaning of the various boxes and arrows in the dot generated graphs.

The default value is: YES.

This tag requires that the tag HAVE_DOT is set to YES.

DOT_CLEANUP

If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot files that are used to generate the various graphs.

The default value is: YES.

This tag requires that the tag HAVE_DOT is set to YES.

Examples

Suppose you have a simple project consisting of two files: a source file example.cc and a header file example.h. Then a minimal configuration file is as simple as:

INPUT            = example.cc example.h

Assuming the example makes use of Qt classes and perl is located in /usr/bin, a more realistic configuration file would be:

PROJECT_NAME     = Example
INPUT            = example.cc example.h
WARNINGS         = YES
TAGFILES         = qt.tag
PERL_PATH        = /usr/local/bin/perl
SEARCHENGINE     = NO

To generate the documentation for the QdbtTabular package I have used the following configuration file:

PROJECT_NAME     = QdbtTabular
OUTPUT_DIRECTORY = html
WARNINGS         = YES
INPUT            = examples/examples.doc src
FILE_PATTERNS    = *.cc *.h
INCLUDE_PATH     = examples
TAGFILES         = qt.tag
PERL_PATH        = /usr/bin/perl
SEARCHENGINE     = YES

To regenerate the Qt-1.44 documentation from the sources, you could use the following config file:

PROJECT_NAME         = Qt
OUTPUT_DIRECTORY     = qt_docs
HIDE_UNDOC_MEMBERS   = YES
HIDE_UNDOC_CLASSES   = YES
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION      = YES
EXPAND_ONLY_PREDEF   = YES
SEARCH_INCLUDES      = YES
FULL_PATH_NAMES      = YES
STRIP_FROM_PATH      = $(QTDIR)/
PREDEFINED           = USE_TEMPLATECLASS Q_EXPORT= \
                       QArrayT:=QArray \
                       QListT:=QList \
                       QDictT:=QDict \
                       QQueueT:=QQueue \
                       QVectorT:=QVector \
                       QPtrDictT:=QPtrDict \
                       QIntDictT:=QIntDict \
                       QStackT:=QStack \
                       QDictIteratorT:=QDictIterator \
                       QListIteratorT:=QListIterator \
                       QCacheT:=QCache \
                       QCacheIteratorT:=QCacheIterator \
                       QIntCacheT:=QIntCache \
                       QIntCacheIteratorT:=QIntCacheIterator \
                       QIntDictIteratorT:=QIntDictIterator \
                       QPtrDictIteratorT:=QPtrDictIterator
INPUT                = $(QTDIR)/doc \
                       $(QTDIR)/src/widgets \
                       $(QTDIR)/src/kernel \
                       $(QTDIR)/src/dialogs \
                       $(QTDIR)/src/tools
FILE_PATTERNS        = *.cpp *.h q*.doc
INCLUDE_PATH         = $(QTDIR)/include
RECURSIVE            = YES

For the Qt-2.1 sources I recommend to use the following settings:

PROJECT_NAME          = Qt
PROJECT_NUMBER        = 2.1
HIDE_UNDOC_MEMBERS    = YES
HIDE_UNDOC_CLASSES    = YES
SOURCE_BROWSER        = YES
INPUT                 = $(QTDIR)/src
FILE_PATTERNS         = *.cpp *.h q*.doc
RECURSIVE             = YES
EXCLUDE_PATTERNS      = *codec.cpp moc_* */compat/* */3rdparty/*
ALPHABETICAL_INDEX    = YES
COLS_IN_ALPHA_INDEX   = 3
IGNORE_PREFIX         = Q
ENABLE_PREPROCESSING  = YES
MACRO_EXPANSION       = YES
INCLUDE_PATH          = $(QTDIR)/include
PREDEFINED            = Q_PROPERTY(x)= \
                        Q_OVERRIDE(x)= \
                        Q_EXPORT= \
                        Q_ENUMS(x)= \
                        "QT_STATIC_CONST=static const " \
                        _WS_X11_ \
                        INCLUDE_MENUITEM_DEF
EXPAND_ONLY_PREDEF    = YES
EXPAND_AS_DEFINED     = Q_OBJECT_FAKE Q_OBJECT ACTIVATE_SIGNAL_WITH_PARAM \
                        Q_VARIANT_AS

Here doxygen's preprocessor is used to substitute some macro names that are normally substituted by the C preprocessor, but without doing full macro expansion.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Special Commands

Doxygen
Special Commands

Introduction

All commands in the documentation start with a backslash (\) or an at-sign (@). If you prefer you can replace all commands starting with a backslash below by their counterparts that start with an at-sign.

Some commands have one or more arguments. Each argument has a certain range:

  • If <sharp> braces are used the argument is a single word.
  • If (round) braces are used the argument extends until the end of the line on which the command was found.
  • If {curly} braces are used the argument extends until the next paragraph. Paragraphs are delimited by a blank line or by a section indicator.

If in addition to the above argument specifiers [square] brackets are used the argument is optional.

Here is an alphabetically sorted list of all commands with references to their documentation:

  • \a
  • \addindex
  • \addtogroup
  • \anchor
  • \arg
  • \attention
  • \author
  • \authors
  • \b
  • \brief
  • \bug
  • \c
  • \callgraph
  • \callergraph
  • \category
  • \cite
  • \class
  • \code
  • \cond
  • \copybrief
  • \copydetails
  • \copydoc
  • \copyright
  • \date
  • \def
  • \defgroup
  • \deprecated
  • \details
  • \diafile
  • \dir
  • \docbookonly
  • \dontinclude
  • \dot
  • \dotfile
  • \e
  • \else
  • \elseif
  • \em
  • \endcode
  • \endcond
  • \enddocbookonly
  • \enddot
  • \endhtmlonly
  • \endif
  • \endinternal
  • \endlatexonly
  • \endlink
  • \endmanonly
  • \endmsc
  • \endparblock
  • \endrtfonly
  • \endsecreflist
  • \endverbatim
  • \endxmlonly
  • \enum
  • \example
  • \exception
  • \extends
  • \f$
  • \f[
  • \f]
  • \f{
  • \f}
  • \file
  • \fn
  • \headerfile
  • \hideinitializer
  • \htmlinclude
  • \htmlonly
  • \idlexcept
  • \if
  • \ifnot
  • \image
  • \implements
  • \include
  • \includelineno
  • \ingroup
  • \internal
  • \invariant
  • \interface
  • \latexinclude
  • \latexonly
  • \li
  • \line
  • \link
  • \mainpage
  • \manonly
  • \memberof
  • \msc
  • \mscfile
  • \n
  • \name
  • \namespace
  • \nosubgrouping
  • \note
  • \overload
  • \p
  • \package
  • \page
  • \par
  • \paragraph
  • \param
  • \parblock
  • \post
  • \pre
  • \private
  • \privatesection
  • \property
  • \protected
  • \protectedsection
  • \protocol
  • \public
  • \publicsection
  • \pure
  • \ref
  • \refitem
  • \related
  • \relates
  • \relatedalso
  • \relatesalso
  • \remark
  • \remarks
  • \result
  • \return
  • \returns
  • \retval
  • \rtfonly
  • \sa
  • \secreflist
  • \section
  • \see
  • \short
  • \showinitializer
  • \since
  • \skip
  • \skipline
  • \snippet
  • \struct
  • \subpage
  • \subsection
  • \subsubsection
  • \tableofcontents
  • \test
  • \throw
  • \throws
  • \todo
  • \tparam
  • \typedef
  • \union
  • \until
  • \var
  • \verbatim
  • \verbinclude
  • \version
  • \vhdlflow
  • \warning
  • \weakgroup
  • \xmlonly
  • \xrefitem
  • \$
  • \@
  • \\
  • \&
  • \~
  • \<
  • \>
  • \#
  • \%
  • \"
  • \.
  • \::
  • \|
  • \--
  • \---

The following subsections provide a list of all commands that are recognized by doxygen. Unrecognized commands are treated as normal text.

--- Structural indicators ---

\addtogroup <name> [(title)]

Defines a group just like \defgroup, but in contrast to that command using the same <name> more than once will not result in a warning, but rather one group with a merged documentation and the first title found in any of the commands.

The title is optional, so this command can also be used to add a number of entities to an existing group using @{ and @} like this:

  /*! \addtogroup mygrp
   *  Additional documentation for group 'mygrp'
   *  @{
   */

  /*!
   *  A function
   */
  void func1()
  {
  }

  /*! Another function */
  void func2()
  {
  }

  /*! @} */
See also
page Grouping, sections \defgroup, \ingroup, and \weakgroup.

\callgraph

When this command is put in a comment block of a function or method and HAVE_DOT is set to YES, then doxygen will generate a call graph for that function (provided the implementation of the function or method calls other documented functions). The call graph will be generated regardless of the value of CALL_GRAPH.

Note
The completeness (and correctness) of the call graph depends on the doxygen code parser which is not perfect.
See also
section \callergraph.

\callergraph

When this command is put in a comment block of a function or method and HAVE_DOT is set to YES, then doxygen will generate a caller graph for that function (provided the implementation of the function or method calls other documented functions). The caller graph will be generated regardless of the value of CALLER_GRAPH.

Note
The completeness (and correctness) of the caller graph depends on the doxygen code parser which is not perfect.
See also
section \callgraph.

\category <name> [<header-file>] [<header-name>]

For Objective-C only: Indicates that a comment block contains documentation for a class category with name <name>. The arguments are equal to the \class command.

See also
section \class.

\class <name> [<header-file>] [<header-name>]

Indicates that a comment block contains documentation for a class with name <name>. Optionally a header file and a header name can be specified. If the header-file is specified, a link to a verbatim copy of the header will be included in the HTML documentation. The <header-name> argument can be used to overwrite the name of the link that is used in the class documentation to something other than <header-file>. This can be useful if the include name is not located on the default include path (like <X11/X.h>). With the <header-name> argument you can also specify how the include statement should look like, by adding either quotes or sharp brackets around the name. Sharp brackets are used if just the name is given. Note that the last two arguments can also be specified using the \headerfile command.

Example:
/* A dummy class */

class Test
{
};

/*! \class Test class.h "inc/class.h"
 *  \brief This is a test class.
 *
 * Some details about the Test class
 */
Click here for the corresponding HTML documentation that is generated by doxygen.

\def <name>

Indicates that a comment block contains documentation for a #define macro.

Example:
/*! \file define.h
    \brief testing defines

    This is to test the documentation of defines.
*/

/*!
  \def MAX(x,y)
  Computes the maximum of \a x and \a y.
*/

/*!
   Computes the absolute value of its argument \a x.
*/
#define ABS(x) (((x)>0)?(x):-(x))
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)>(y)?(y):(x))
        /*!< Computes the minimum of \a x and \a y. */
Click here for the corresponding HTML documentation that is generated by doxygen.

\defgroup <name> (group title)

Indicates that a comment block contains documentation for a group of classes, files or namespaces. This can be used to categorize classes, files or namespaces, and document those categories. You can also use groups as members of other groups, thus building a hierarchy of groups.

The <name> argument should be a single-word identifier.

See also
page Grouping, sections \ingroup, \addtogroup, and \weakgroup.

\dir [<path fragment>]

Indicates that a comment block contains documentation for a directory. The "path fragment" argument should include the directory name and enough of the path to be unique with respect to the other directories in the project. The STRIP_FROM_PATH option determines what is stripped from the full path before it appears in the output.

\enum <name>

Indicates that a comment block contains documentation for an enumeration, with name <name>. If the enum is a member of a class and the documentation block is located outside the class definition, the scope of the class should be specified as well. If a comment block is located directly in front of an enum declaration, the \enum comment may be omitted.

Note:
The type of an anonymous enum cannot be documented, but the values of an anonymous enum can.
Example:
class Test
{
  public:
    enum TEnum { Val1, Val2 };

    /*! Another enum, with inline docs */
    enum AnotherEnum
    {
      V1, /*!< value 1 */
      V2  /*!< value 2 */
    };
};

/*! \class Test
 * The class description.
 */

/*! \enum Test::TEnum
 * A description of the enum type.
 */

/*! \var Test::TEnum Test::Val1
 * The description of the first enum value.
 */
Click here for the corresponding HTML documentation that is generated by doxygen.

\example <file-name>

Indicates that a comment block contains documentation for a source code example. The name of the source file is <file-name>. The text of this file will be included in the documentation, just after the documentation contained in the comment block. All examples are placed in a list. The source code is scanned for documented members and classes. If any are found, the names are cross-referenced with the documentation. Source files or directories can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

If <file-name> itself is not unique for the set of example files specified by the EXAMPLE_PATH tag, you can include part of the absolute path to disambiguate it.

If more than one source file is needed for the example, the \include command can be used.

Example:
/** A Test class.
 *  More details about this class.
 */

class Test
{
  public:
    /** An example member function.
     *  More details about this function.
     */
    void example();
};

void Test::example() {}

/** \example example_test.cpp
 * This is an example of how to use the Test class.
 * More details about this example.
 */
Where the example file example_test.cpp looks as follows:
void main()
{
  Test t;
  t.example();
}
Click here for the corresponding HTML documentation that is generated by doxygen.
See also
section \include.

\endinternal

This command ends a documentation fragment that was started with a \internal command. The text between \internal and \endinternal will only be visible if INTERNAL_DOCS is set to YES.

\extends <name>

This command can be used to manually indicate an inheritance relation, when the programming language does not support this concept natively (e.g. C).

The file manual.c in the example directory shows how to use this command.

Click here for the corresponding HTML documentation that is generated by doxygen.

See also
section \implements and section \memberof

\file [<name>]

Indicates that a comment block contains documentation for a source or header file with name <name>. The file name may include (part of) the path if the file-name alone is not unique. If the file name is omitted (i.e. the line after \file is left blank) then the documentation block that contains the \file command will belong to the file it is located in.

Important:
The documentation of global functions, variables, typedefs, and enums will only be included in the output if the file they are in is documented as well.
Example:
/** \file file.h
 * A brief file description.
 * A more elaborated file description.
 */

/**
 * A global integer value.
 * More details about this value.
 */
extern int globalValue;
Click here for the corresponding HTML documentation that is generated by doxygen.
Note
In the above example JAVADOC_AUTOBRIEF has been set to YES in the configuration file.

\fn (function declaration)

Indicates that a comment block contains documentation for a function (either global or as a member of a class). This command is only needed if a comment block is not placed in front (or behind) the function declaration or definition.

If your comment block is in front of the function declaration or definition this command can (and to avoid redundancy should) be omitted.

A full function declaration including arguments should be specified after the \fn command on a single line, since the argument ends at the end of the line!

This command is equivalent to \var, \typedef, and \property.

Warning
Do not use this command if it is not absolutely needed, since it will lead to duplication of information and thus to errors.
Example:
class Test
{
  public:
    const char *member(char,int) throw(std::out_of_range);
};

const char *Test::member(char c,int n) throw(std::out_of_range) {}

/*! \class Test
 * \brief Test class.
 *
 * Details about Test.
 */

/*! \fn const char *Test::member(char c,int n)
 *  \brief A member function.
 *  \param c a character.
 *  \param n an integer.
 *  \exception std::out_of_range parameter is out of range.
 *  \return a character pointer.
 */
Click here for the corresponding HTML documentation that is generated by doxygen.
See also
sections \var, \property, and \typedef.

\headerfile <header-file> [<header-name>]

Intended to be used for class, struct, or union documentation, where the documentation is in front of the definition. The arguments of this command are the same as the second and third argument of \class. The <header-file> name refers to the file that should be included by the application to obtain the definition of the class, struct, or union. The <header-name> argument can be used to overwrite the name of the link that is used in the class documentation to something other than <header-file>. This can be useful if the include name is not located on the default include path (like <X11/X.h>).

With the <header-name> argument you can also specify how the include statement should look like, by adding either double quotes or sharp brackets around the name. By default sharp brackets are used if just the name is given.

If a pair of double quotes is given for either the <header-file> or <header-name> argument, the current file (in which the command was found) will be used but with quotes. So for a comment block with a \headerfile command inside a file test.h, the following three commands are equivalent:

  \headerfile test.h "test.h"
  \headerfile test.h ""
  \headerfile ""

To get sharp brackets you do not need to specify anything, but if you want to be explicit you could use any of the following:

  \headerfile test.h <test.h>
  \headerfile test.h <>
  \headerfile <>

To globally reverse the default include representation to local includes you can set FORCE_LOCAL_INCLUDES to YES.

To disable the include information altogether set SHOW_INCLUDE_FILES to NO.

\hideinitializer

By default the value of a define and the initializer of a variable are displayed unless they are longer than 30 lines. By putting this command in a comment block of a define or variable, the initializer is always hidden. The maximum number of initialization lines can be changed by means of the configuration parameter MAX_INITIALIZER_LINES, the default value is 30.

See also
section \showinitializer.

\idlexcept <name>

Indicates that a comment block contains documentation for a IDL exception with name <name>.

\implements <name>

This command can be used to manually indicate an inheritance relation, when the programming language does not support this concept natively (e.g. C).

The file manual.c in the example directory shows how to use this command.

Click here for the corresponding HTML documentation that is generated by doxygen.

See also
section \extends and section \memberof

\ingroup (<groupname> [<groupname> <groupname>])

If the \ingroup command is placed in a comment block of a class, file or namespace, then it will be added to the group or groups identified by <groupname>.

See also
page Grouping, sections \defgroup, \addtogroup, and \weakgroup

\interface <name> [<header-file>] [<header-name>]

Indicates that a comment block contains documentation for an interface with name <name>. The arguments are equal to the arguments of the \class command.

See also
section \class.

\internal

This command starts a documentation fragment that is meant for internal use only. The fragment naturally ends at the end of the comment block. You can also force the internal section to end earlier by using the \endinternal command.

If the \internal command is put inside a section (see for example \section) all subsections after the command are considered to be internal as well. Only a new section at the same level will end the fragment that is considered internal.

You can use INTERNAL_DOCS in the config file to show (YES) or hide (NO) the internal documentation.

See also
section \endinternal.

\mainpage [(title)]

If the \mainpage command is placed in a comment block the block is used to customize the index page (in HTML) or the first chapter (in [image]).

The title argument is optional and replaces the default title that doxygen normally generates. If you do not want any title you can specify notitle as the argument of \mainpage.

Here is an example:

/*! \mainpage My Personal Index Page
 *
 * \section intro_sec Introduction
 *
 * This is the introduction.
 *
 * \section install_sec Installation
 *
 * \subsection step1 Step 1: Opening the box
 *
 * etc...
 */

You can refer to the main page using: \ref index.

See also
section \section, section \subsection, and section \page.

\memberof <name>

This command makes a function a member of a class in a similar way as \relates does, only with this command the function is represented as a real member of the class. This can be useful when the programming language does not support the concept of member functions natively (e.g. C).

It is also possible to use this command together with \public, \protected or \private.

The file manual.c in the example directory shows how to use this command.

Click here for the corresponding HTML documentation that is generated by doxygen.

See also
sections \extends, \implements, \public, \protected and \private.

\name [(header)]

This command turns a comment block into a header definition of a member group. The comment block should be followed by a //@{ ... //@} block containing the members of the group.

See section Member Groups for an example.

\namespace <name>

Indicates that a comment block contains documentation for a namespace with name <name>.

\nosubgrouping

This command can be put in the documentation of a class. It can be used in combination with member grouping to avoid that doxygen puts a member group as a subgroup of a Public/Protected/Private/... section.

See also
sections \publicsection, \protectedsection and \privatesection.

\overload [(function declaration)]

This command can be used to generate the following standard text for an overloaded member function:

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

If the documentation for the overloaded member function is not located in front of the function declaration or definition, the optional argument should be used to specify the correct function.

Any other documentation that is inside the documentation block will by appended after the generated message.

Note 1:
You are responsible that there is indeed an earlier documented member that is overloaded by this one. To prevent that document reorders the documentation you should set SORT_MEMBER_DOCS to NO in this case.
Note 2:
The \overload command does not work inside a one-line comment.
Example:
class Test
{
  public:
    void drawRect(int,int,int,int);
    void drawRect(const Rect &r);
};

void Test::drawRect(int x,int y,int w,int h) {}
void Test::drawRect(const Rect &r) {}

/*! \class Test
 *  \brief A short description.
 *
 *  More text.
 */

/*! \fn void Test::drawRect(int x,int y,int w,int h)
 * This command draws a rectangle with a left upper corner at ( \a x , \a y ),
 * width \a w and height \a h.
 */

/*!
 * \overload void Test::drawRect(const Rect &r)
 */
Click here for the corresponding HTML documentation that is generated by doxygen.

\package <name>

Indicates that a comment block contains documentation for a Java package with name <name>.

\page <name> (title)

Indicates that a comment block contains a piece of documentation that is not directly related to one specific class, file or member. The HTML generator creates a page containing the documentation. The [image] generator starts a new section in the chapter 'Page documentation'.

Example:
/*! \page page1 A documentation page
  \tableofcontents
  Leading text.
  \section sec An example section
  This page contains the subsections \ref subsection1 and \ref subsection2.
  For more info see page \ref page2.
  \subsection subsection1 The first subsection
  Text.
  \subsection subsection2 The second subsection
  More text.
*/

/*! \page page2 Another page
  Even more info.
*/
Click here for the corresponding HTML documentation that is generated by doxygen.
Note:
The <name> argument consists of a combination of letters and number digits. If you wish to use upper case letters (e.g. MYPAGE1), or mixed case letters (e.g. MyPage1) in the <name> argument, you should set CASE_SENSE_NAMES to YES. However, this is advisable only if your file system is case sensitive. Otherwise (and for better portability) you should use all lower case letters (e.g. mypage1) for <name> in all references to the page.
See also
section \section, section \subsection, and section \ref.

\private

Indicates that the member documented by the comment block is private, i.e., should only be accessed by other members in the same class.

Note that Doxygen automatically detects the protection level of members in object-oriented languages. This command is intended for use only when the language does not support the concept of protection level natively (e.g. C, PHP 4).

For starting a section of private members, in a way similar to the "private:" class marker in C++, use \privatesection.

See also
sections \memberof, \public, \protected and \privatesection.

\privatesection

Starting a section of private members, in a way similar to the "private:" class marker in C++. Indicates that the member documented by the comment block is private, i.e., should only be accessed by other members in the same class.

See also
sections \memberof, \public, \protected and \private.

\property (qualified property name)

Indicates that a comment block contains documentation for a property (either global or as a member of a class). This command is equivalent to \fn, \typedef, and \var.

See also
sections \fn, \typedef, and \var.

\protected

Indicates that the member documented by the comment block is protected, i.e., should only be accessed by other members in the same or derived classes.

Note that Doxygen automatically detects the protection level of members in object-oriented languages. This command is intended for use only when the language does not support the concept of protection level natively (e.g. C, PHP 4).

For starting a section of protected members, in a way similar to the "protected:" class marker in C++, use \protectedsection.

See also
sections \memberof, \public, \private and \protectedsection.

\protectedsection

Starting a section of protected members, in a way similar to the "protected:" class marker in C++. Indicates that the member documented by the comment block is protected, i.e., should only be accessed by other members in the same or derived classes.

See also
sections \memberof, \public, \private and \protected.

\protocol <name> [<header-file>] [<header-name>]

Indicates that a comment block contains documentation for a protocol in Objective-C with name <name>. The arguments are equal to the \class command.

See also
section \class.

\public

Indicates that the member documented by the comment block is public, i.e., can be accessed by any other class or function.

Note that Doxygen automatically detects the protection level of members in object-oriented languages. This command is intended for use only when the language does not support the concept of protection level natively (e.g. C, PHP 4).

For starting a section of public members, in a way similar to the "public:" class marker in C++, use \publicsection.

See also
sections \memberof, \protected, \private and \publicsection.

\publicsection

Starting a section of public members, in a way similar to the "public:" class marker in C++. Indicates that the member documented by the comment block is public, i.e., can be accessed by any other class or function.

See also
sections \memberof, \protected, \private and \public.

\pure

Indicates that the member documented by the comment block is pure virtual, i.e., it is abstract and has no implementation associated with it.

This command is intended for use only when the language does not support the concept of pure virtual methods natively (e.g. C, PHP 4).

\relates <name>

This command can be used in the documentation of a non-member function <name>. It puts the function inside the 'related function' section of the class documentation. This command is useful for documenting non-friend functions that are nevertheless strongly coupled to a certain class. It prevents the need of having to document a file, but only works for functions.

Example:
/*!
 * A String class.
 */

class String
{
  friend int strcmp(const String &,const String &);
};

/*!
 * Compares two strings.
 */

int strcmp(const String &s1,const String &s2)
{
}

/*! \relates String
 * A string debug function.
 */
void stringDebug()
{
}
Click here for the corresponding HTML documentation that is generated by doxygen.

\related <name>

Equivalent to \relates

\relatesalso <name>

This command can be used in the documentation of a non-member function <name>. It puts the function both inside the 'related function' section of the class documentation as well as leaving it at its normal file documentation location. This command is useful for documenting non-friend functions that are nevertheless strongly coupled to a certain class. It only works for functions.

\relatedalso <name>

Equivalent to \relatesalso

\showinitializer

By default the value of a define and the initializer of a variable are only displayed if they are less than 30 lines long. By putting this command in a comment block of a define or variable, the initializer is shown unconditionally. The maximum number of initialization lines can be changed by means of the configuration parameter MAX_INITIALIZER_LINES, the default value is 30.

See also
section \hideinitializer.

\static

Indicates that the member documented by the comment block is static, i.e., it works on a class, instead of on an instance of the class.

This command is intended for use only when the language does not support the concept of static methods natively (e.g. C).

\struct <name> [<header-file>] [<header-name>]

Indicates that a comment block contains documentation for a struct with name <name>. The arguments are equal to the arguments of the \class command.

See also
section \class.

\typedef (typedef declaration)

Indicates that a comment block contains documentation for a typedef (either global or as a member of a class). This command is equivalent to \fn, \property, and \var.

See also
section \fn, \property, and \var.

\union <name> [<header-file>] [<header-name>]

Indicates that a comment block contains documentation for a union with name <name>. The arguments are equal to the arguments of the \class command.

See also
section \class.

\var (variable declaration)

Indicates that a comment block contains documentation for a variable or enum value (either global or as a member of a class). This command is equivalent to \fn, \property, and \typedef.

See also
section \fn, \property, and \typedef.

\vhdlflow [(title for the flow chart)]

This is a VHDL specific command, which can be put in the documentation of a process to produce a flow chart of the logic in the process. Optionally a title for the flow chart can be given.

Note
Currently the flow chart will only appear in the HTML output.

\weakgroup <name> [(title)]

Can be used exactly like \addtogroup, but has a lower priority when it comes to resolving conflicting grouping definitions.

See also
page Grouping and section \addtogroup.

--- Section indicators ---

\attention { attention text }

Starts a paragraph where a message that needs attention may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \attention commands will be joined into a single paragraph. The \attention command ends when a blank line or some other sectioning command is encountered.

\author { list of authors }

Starts a paragraph where one or more author names may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \author commands will be joined into a single paragraph. Each author description will start a new line. Alternatively, one \author command may mention several authors. The \author command ends when a blank line or some other sectioning command is encountered.

Example:
/*!
 *  \brief     Pretty nice class.
 *  \details   This class is used to demonstrate a number of section commands.
 *  \author    John Doe
 *  \author    Jan Doe
 *  \version   4.1a
 *  \date      1990-2011
 *  \pre       First initialize the system.
 *  \bug       Not all memory is freed when deleting an object of this class.
 *  \warning   Improper use can crash your application
 *  \copyright GNU Public License.
 */
class SomeNiceClass {};
Click here for the corresponding HTML documentation that is generated by doxygen.

\authors { list of authors }

Equivalent to \author.

\brief { brief description }

Starts a paragraph that serves as a brief description. For classes and files the brief description will be used in lists and at the start of the documentation page. For class and file members, the brief description will be placed at the declaration of the member and prepended to the detailed description. A brief description may span several lines (although it is advised to keep it brief!). A brief description ends when a blank line or another sectioning command is encountered. If multiple \brief commands are present they will be joined. See section \author for an example.

Synonymous to \short.

\bug { bug description }

Starts a paragraph where one or more bugs may be reported. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \bug commands will be joined into a single paragraph. Each bug description will start on a new line. Alternatively, one \bug command may mention several bugs. The \bug command ends when a blank line or some other sectioning command is encountered. See section \author for an example.

\cond [(section-label)]

Starts a conditional section that ends with a corresponding \endcond command, which is typically found in another comment block. The main purpose of this pair of commands is to (conditionally) exclude part of a file from processing (in older version of doxygen this could only be achieved using C preprocessor commands).

The section between \cond and \endcond can be included by adding its section label to the ENABLED_SECTIONS configuration option. If the section label is omitted, the section will be excluded from processing unconditionally. The section label can be a logical expression build of section labels, round brackets, && (AND), || (OR) and ! (NOT). If you use an expression you need to wrap it in round brackets, i.e \cond (!LABEL1 && LABEL2).

For conditional sections within a comment block one should use a \if ... \endif block.

Conditional sections can be nested. In this case a nested section will only be shown if it and its containing section are included.

Here is an example showing the commands in action:

/** An interface */
class Intf
{
  public:
    /** A method */
    virtual void func() = 0;

    /// @cond TEST

    /** A method used for testing */
    virtual void test() = 0;

    /// @endcond
};

/// @cond DEV
/*
 *  The implementation of the interface
 */
class Implementation : public Intf
{
  public:
    void func();

    /// @cond TEST
    void test();
    /// @endcond

    /// @cond
    /** This method is obsolete and does
     *  not show up in the documentation.
     */
    void obsolete();
    /// @endcond
};

/// @endcond

The output will be different depending on whether or not ENABLED_SECTIONS contains TEST, or DEV

See also
sections \endcond and ENABLED_SECTIONS.

\copyright { copyright description }

Starts a paragraph where the copyright of an entity can be described. This paragraph will be indented. The text of the paragraph has no special internal structure. See section \author for an example.

\date { date description }

Starts a paragraph where one or more dates may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \date commands will be joined into a single paragraph. Each date description will start on a new line. Alternatively, one \date command may mention several dates. The \date command ends when a blank line or some other sectioning command is encountered. See section \author for an example.

\deprecated { description }

Starts a paragraph indicating that this documentation block belongs to a deprecated entity. Can be used to describe alternatives, expected life span, etc.

\details { detailed description }

Just like \brief starts a brief description, \details starts the detailed description. You can also start a new paragraph (blank line) then the \details command is not needed.

\else

Starts a conditional section if the previous conditional section was not enabled. The previous section should have been started with a \if, \ifnot, or \elseif command.

See also
\if, \ifnot, \elseif, \endif.

\elseif (section-label)

Starts a conditional documentation section if the previous section was not enabled. A conditional section is disabled by default. To enable it you must put the section-label after the ENABLED_SECTIONS tag in the configuration file. The section label can be a logical expression build of section names, round brackets, && (AND), || (OR) and ! (NOT). Conditional blocks can be nested. A nested section is only enabled if all enclosing sections are enabled as well.

See also
sections \endif, \ifnot, \else, and \elseif.

\endcond

Ends a conditional section that was started by \cond.

See also
section \cond.

\endif

Ends a conditional section that was started by \if or \ifnot For each \if or \ifnot one and only one matching \endif must follow.

See also
sections \if and \ifnot.

\exception <exception-object> { exception description }

Starts an exception description for an exception object with name <exception-object>. Followed by a description of the exception. The existence of the exception object is not checked. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \exception commands will be joined into a single paragraph. Each exception description will start on a new line. The \exception description ends when a blank line or some other sectioning command is encountered. See section \fn for an example.

\if (section-label)

Starts a conditional documentation section. The section ends with a matching \endif command. A conditional section is disabled by default. To enable it you must put the section-label after the ENABLED_SECTIONS tag in the configuration file.

The section label can be a logical expression build of section names, round brackets, && (AND), || (OR) and ! (NOT). If you use an expression you need to wrap it in round brackets, i.e \cond (!LABEL1 && LABEL2).

Conditional blocks can be nested. A nested section is only enabled if all enclosing sections are enabled as well.

Example:
  /*! Unconditionally shown documentation.
   *  \if Cond1
   *    Only included if Cond1 is set.
   *  \endif
   *  \if Cond2
   *    Only included if Cond2 is set.
   *    \if Cond3
   *      Only included if Cond2 and Cond3 are set.
   *    \endif
   *    More text.
   *  \endif
   *  Unconditional text.
   */

You can also use conditional commands inside aliases. To document a class in two languages you could for instance use:

Example 2:
/*! \english
 *  This is English.
 *  \endenglish
 *  \dutch
 *  Dit is Nederlands.
 *  \enddutch
 */
class Example
{
};

Where the following aliases are defined in the configuration file:

ALIASES  = "english=\if english" \
           "endenglish=\endif" \
           "dutch=\if dutch" \
           "enddutch=\endif"

and ENABLED_SECTIONS can be used to enable either english or dutch.

See also
sections \endif, \ifnot, \else, \elseif, and ENABLED_SECTIONS.

\ifnot (section-label)

Starts a conditional documentation section. The section ends with a matching \endif command. This conditional section is enabled by default. To disable it you must put the section-label after the ENABLED_SECTIONS tag in the configuration file. The section label can be a logical expression build of section names, round brackets, && (AND), || (OR) and ! (NOT).

See also
sections \endif, \if, \else, and \elseif, and ENABLED_SECTIONS.

\invariant { description of invariant }

Starts a paragraph where the invariant of an entity can be described. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \invariant commands will be joined into a single paragraph. Each invariant description will start on a new line. Alternatively, one \invariant command may mention several invariants. The \invariant command ends when a blank line or some other sectioning command is encountered.

\note { text }

Starts a paragraph where a note can be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \note commands will be joined into a single paragraph. Each note description will start on a new line. Alternatively, one \note command may mention several notes. The \note command ends when a blank line or some other sectioning command is encountered. See section \par for an example.

\par [(paragraph title)] { paragraph }

If a paragraph title is given this command starts a paragraph with a user defined heading. The heading extends until the end of the line. The paragraph following the command will be indented.

If no paragraph title is given this command will start a new paragraph. This will also work inside other paragraph commands (like \param or \warning) without ending that command.

The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. The \par command ends when a blank line or some other sectioning command is encountered.

Example:
/*! \class Test
 * Normal text.
 *
 * \par User defined paragraph:
 * Contents of the paragraph.
 *
 * \par
 * New paragraph under the same heading.
 *
 * \note
 * This note consists of two paragraphs.
 * This is the first paragraph.
 *
 * \par
 * And this is the second paragraph.
 *
 * More normal text.
 */

class Test {};
Click here for the corresponding HTML documentation that is generated by doxygen.

\param [(dir)] <parameter-name> { parameter description }

Starts a parameter description for a function parameter with name <parameter-name>, followed by a description of the parameter. The existence of the parameter is checked and a warning is given if the documentation of this (or any other) parameter is missing or not present in the function declaration or definition.

The \param command has an optional attribute, (dir), specifying the direction of the parameter. Possible values are "[in]", "[in,out]", and "[out]", note the [square] brackets in this description. When a parameter is both input and output, [in,out] is used as attribute. Here is an example for the function memcpy:

/*!
* Copies bytes from a source memory area to a destination memory area,
* where both areas may not overlap.
* @param[out] dest The memory area to copy to.
* @param[in] src The memory area to copy from.
* @param[in] n The number of bytes to copy
*/
void memcpy(void *dest, const void *src, size_t n);

The parameter description is a paragraph with no special internal structure. All visual enhancement commands may be used inside the paragraph.

Multiple adjacent \param commands will be joined into a single paragraph. Each parameter description will start on a new line. The \param description ends when a blank line or some other sectioning command is encountered. See section \fn for an example.

Note that you can also document multiple parameters with a single \param command using a comma separated list. Here is an example:

/** Sets the position.
* @param x,y,z Coordinates of the position in 3D space.
*/
void setPosition(double x,double y,double z,double t)
{
}

Note that for PHP one can also specify the type (or types if you separate them with a pipe symbol) which are allowed for a parameter (as this is not part of the definition). The syntax is the same as for phpDocumentor, i.e.

@param  datatype1|datatype2 $paramname description

\parblock

For commands that expect a single paragraph as argument (such as \par, \param and \warning), the \parblock command allows to start a description that covers multiple paragraphs, which then ends with \endparblock.

Example:

/** Example of a param command with a description consisting of two paragraphs
 *  \param p
 *  \parblock
 *  First paragraph of the param description.
 *
 *  Second paragraph of the param description.
 *  \endparblock
 *  Rest of the comment block continues.
 */

Note that the \parblock command may also appear directly after \param's first argument.

\endparblock

This ends a block of paragraphs started with \parblock.

\tparam <template-parameter-name> { description }

Starts a template parameter for a class or function template parameter with name <template-parameter-name>, followed by a description of the template parameter.

Otherwise similar to \param.

\post { description of the postcondition }

Starts a paragraph where the postcondition of an entity can be described. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \post commands will be joined into a single paragraph. Each postcondition will start on a new line. Alternatively, one \post command may mention several postconditions. The \post command ends when a blank line or some other sectioning command is encountered.

\pre { description of the precondition }

Starts a paragraph where the precondition of an entity can be described. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \pre commands will be joined into a single paragraph. Each precondition will start on a new line. Alternatively, one \pre command may mention several preconditions. The \pre command ends when a blank line or some other sectioning command is encountered.

\remark { remark text }

Starts a paragraph where one or more remarks may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \remark commands will be joined into a single paragraph. Each remark will start on a new line. Alternatively, one \remark command may mention several remarks. The \remark command ends when a blank line or some other sectioning command is encountered.

\remarks { remark text }

Equivalent to \remark.

\result { description of the result value }

Equivalent to \return.

\return { description of the return value }

Starts a return value description for a function. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \return commands will be joined into a single paragraph. The \return description ends when a blank line or some other sectioning command is encountered. See section \fn for an example.

\returns { description of the return value }

Equivalent to \return.

\retval <return value> { description }

Starts a description for a function's return value with name <return value>, followed by a description of the return value. The text of the paragraph that forms the description has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \retval commands will be joined into a single paragraph. Each return value description will start on a new line. The \retval description ends when a blank line or some other sectioning command is encountered.

\sa { references }

Starts a paragraph where one or more cross-references to classes, functions, methods, variables, files or URL may be specified. Two names joined by either :: or # are understood as referring to a class and one of its members. One of several overloaded methods or constructors may be selected by including a parenthesized list of argument types after the method name.

Synonymous to \see.

See also
section autolink for information on how to create links to objects.

\see { references }

Equivalent to \sa. Introduced for compatibility with Javadoc.

\short { short description }

Equivalent to \brief.

\since { text }

This command can be used to specify since when (version or time) an entity is available. The paragraph that follows \since does not have any special internal structure. All visual enhancement commands may be used inside the paragraph. The \since description ends when a blank line or some other sectioning command is encountered.

\test { paragraph describing a test case }

Starts a paragraph where a test case can be described. The description will also add the test case to a separate test list. The two instances of the description will be cross-referenced. Each test case in the test list will be preceded by a header that indicates the origin of the test case.

\throw <exception-object> { exception description }

Synonymous \exception.

Note:
the command \throws is a synonym for this command.
See also
section \exception

\throws <exception-object> { exception description }

Equivalent to \throw.

\todo { paragraph describing what is to be done }

Starts a paragraph where a TODO item is described. The description will also add an item to a separate TODO list. The two instances of the description will be cross-referenced. Each item in the TODO list will be preceded by a header that indicates the origin of the item.

\version { version number }

Starts a paragraph where one or more version strings may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \version commands will be joined into a single paragraph. Each version description will start on a new line. Alternatively, one \version command may mention several version strings. The \version command ends when a blank line or some other sectioning command is encountered. See section \author for an example.

\warning { warning message }

Starts a paragraph where one or more warning messages may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \warning commands will be joined into a single paragraph. Each warning description will start on a new line. Alternatively, one \warning command may mention several warnings. The \warning command ends when a blank line or some other sectioning command is encountered. See section \author for an example.

\xrefitem <key> "(heading)" "(list title)" { text }

This command is a generalization of commands such as \todo and \bug. It can be used to create user-defined text sections which are automatically cross-referenced between the place of occurrence and a related page, which will be generated. On the related page all sections of the same type will be collected.

The first argument <key> is an identifier uniquely representing the type of the section. The second argument is a quoted string representing the heading of the section under which text passed as the fourth argument is put. The third argument (list title) is used as the title for the related page containing all items with the same key. The keys "todo", "test", "bug" and "deprecated" are predefined.

To get an idea on how to use the \xrefitem command and what its effect is, consider the todo list, which (for English output) can be seen an alias for the command

\xrefitem todo "Todo" "Todo List"

Since it is very tedious and error-prone to repeat the first three parameters of the command for each section, the command is meant to be used in combination with the ALIASES option in the configuration file. To define a new command \reminder, for instance, one should add the following line to the configuration file:

ALIASES += "reminder=\xrefitem reminders \"Reminder\" \"Reminders\""

Note the use of escaped quotes for the second and third argument of the \xrefitem command.

In case parameter "(heading)" is the empty string no heading is generated. This can be useful when used in combination with the \page command e.g.

/** @page my_errors My Errors
 *  @brief Errors page
 *
 *  Errors page contents.
 */

/** \error ERROR 101: in case a file can not be opened.
    Check about file system read/write access. */
#define MY_ERR_CANNOT_OPEN_FILE                   101

/** \error ERROR 102: in case a file can not be closed.
    Check about file system read/write access. */
#define MY_ERR_CANNOT_CLOSE_FILE                  102

with \error defined as

ALIASES += "error=\xrefitem my_errors \"\" \"\""

--- Commands to create links ---

\addindex (text)

This command adds (text) to the [image] index.

\anchor <word>

This command places an invisible, named anchor into the documentation to which you can refer with the \ref command.

Note
Anchors can currently only be put into a comment block that is marked as a page (using \page) or mainpage (\mainpage).
See also
section \ref.

\cite <label>

Adds a bibliographic reference in the text and in the list of bibliographic references. The <label> must be a valid BibTeX label that can be found in one of the .bib files listed in CITE_BIB_FILES. For the [image] output the formatting of the reference in the text can be configured with LATEX_BIB_STYLE. For other output formats a fixed representation is used. Note that using this command requires the bibtex tool to be present in the search path.

\endlink

This command ends a link that is started with the \link command.

See also
section \link.

\link <link-object>

The links that are automatically generated by doxygen always have the name of the object they point to as link-text.

The \link command can be used to create a link to an object (a file, class, or member) with a user specified link-text. The link command should end with an \endlink command. All text between the \link and \endlink commands serves as text for a link to the <link-object> specified as the first argument of \link.

See also
Section autolink for more information on automatically generated links and valid link-objects.

\ref <name> ["(text)"]

Creates a reference to a named section, subsection, page or anchor. For HTML documentation the reference command will generate a link to the section. For a section or subsection the title of the section will be used as the text of the link. For an anchor the optional text between quotes will be used or <name> if no text is specified. For [image] documentation the reference command will generate a section number for sections or the text followed by a page number if <name> refers to an anchor.

See also
Section \page for an example of the \ref command.

\refitem <name>

Just like the \ref command, this command creates a reference to a named section, but this reference appears in a list that is started by \secreflist and ends with \endsecreflist. An example of such a list can be seen at the top of the page.

\secreflist

Starts an index list of item, created with \refitem that each link to a named section.

\endsecreflist

End an index list started with \secreflist.

\subpage <name> ["(text)"]

This command can be used to create a hierarchy of pages. The same structure can be made using the \defgroup and \ingroup commands, but for pages the \subpage command is often more convenient. The main page (see \mainpage) is typically the root of hierarchy.

This command behaves similar as \ref in the sense that it creates a reference to a page labeled <name> with the optional link text as specified in the second argument.

It differs from the \ref command in that it only works for pages, and creates a parent-child relation between pages, where the child page (or sub page) is identified by label <name>.

See the \section and \subsection commands if you want to add structure without creating multiple pages.

Note
Each page can be the sub page of only one other page and no cyclic relations are allowed, i.e. the page hierarchy must have a tree structure.

Here is an example:

/*! \mainpage A simple manual

Some general info.

This manual is divided in the following sections:
- \subpage intro
- \subpage advanced "Advanced usage"
*/

//-----------------------------------------------------------

/*! \page intro Introduction
This page introduces the user to the topic.
Now you can proceed to the \ref advanced "advanced section".
*/

//-----------------------------------------------------------

/*! \page advanced Advanced Usage
This page is for advanced users.
Make sure you have first read \ref intro "the introduction".
*/

\tableofcontents

Creates a table of contents at the top of a page, listing all sections and subsections in the page.

Warning
This command only works inside related page documentation and not in other documentation blocks and only has effect in the HTML output!

\section <section-name> (section title)

Creates a section with name <section-name>. The title of the section should be specified as the second argument of the \section command.

Warning
This command only works inside related page documentation and not in other documentation blocks!
See also
Section \page for an example of the \section command.

\subsection <subsection-name> (subsection title)

Creates a subsection with name <subsection-name>. The title of the subsection should be specified as the second argument of the \subsection command.

Warning
This command only works inside a section of a related page documentation block and not in other documentation blocks!
See also
Section \page for an example of the \subsection command.

\subsubsection <subsubsection-name> (subsubsection title)

Creates a subsubsection with name <subsubsection-name>. The title of the subsubsection should be specified as the second argument of the \subsubsection command.

Warning
This command only works inside a subsection of a related page documentation block and not in other documentation blocks!
See also
Section \page for an example of the \section command and \subsection command.

\paragraph <paragraph-name> (paragraph title)

Creates a named paragraph with name <paragraph-name>. The title of the paragraph should be specified as the second argument of the \paragraph command.

Warning
This command only works inside a subsubsection of a related page documentation block and not in other documentation blocks!

--- Commands for displaying examples ---

\dontinclude <file-name>

This command can be used to parse a source file without actually verbatim including it in the documentation (as the \include command does). This is useful if you want to divide the source file into smaller pieces and add documentation between the pieces. Source files or directories can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

The class and member declarations and definitions inside the code fragment are 'remembered' during the parsing of the comment block that contained the \dontinclude command.

For line by line descriptions of source files, one or more lines of the example can be displayed using the \line, \skip, \skipline, and \until commands. An internal pointer is used for these commands. The \dontinclude command sets the pointer to the first line of the example.

Example:
/*! A test class. */

class Test
{
  public:
    /// a member function
    void example();
};

/*! \page example
 *  \dontinclude example_test.cpp
 *  Our main function starts like this:
 *  \skip main
 *  \until {
 *  First we create an object \c t of the Test class.
 *  \skipline Test
 *  Then we call the example member function
 *  \line example
 *  After that our little test routine ends.
 *  \line }
 */
Where the example file example_test.cpp looks as follows:
void main()
{
  Test t;
  t.example();
}
Click here for the corresponding HTML documentation that is generated by doxygen.

Alternatively, the \snippet command can be used to include only a fragment of a source file. For this to work the fragment has to be marked.

See also
sections \line, \skip, \skipline, \until, and \include.

\include <file-name>

This command can be used to include a source file as a block of code. The command takes the name of an include file as an argument. Source files or directories can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

If <file-name> itself is not unique for the set of example files specified by the EXAMPLE_PATH tag, you can include part of the absolute path to disambiguate it.

Using the \include command is equivalent to inserting the file into the documentation block and surrounding it with \code and \endcode commands.

The main purpose of the \include command is to avoid code duplication in case of example blocks that consist of multiple source and header files.

For a line by line description of a source files use the \dontinclude command in combination with the \line, \skip, \skipline, and \until commands.

Alternatively, the \snippet command can be used to include only a fragment of a source file. For this to work the fragment has to be marked.

Note
Doxygen's special commands do not work inside blocks of code. It is allowed to nest C-style comments inside a code block though.
See also
sections \example, \dontinclude, and \verbatim.

\includelineno <file-name>

This command works the same way as \include, but will add line numbers to the included file.

See also
section \include.

\line ( pattern )

This command searches line by line through the example that was last included using \include or \dontinclude until it finds a non-blank line. If that line contains the specified pattern, it is written to the output.

The internal pointer that is used to keep track of the current line in the example, is set to the start of the line following the non-blank line that was found (or to the end of the example if no such line could be found).

See section \dontinclude for an example.

\skip ( pattern )

This command searches line by line through the example that was last included using \include or \dontinclude until it finds a line that contains the specified pattern.

The internal pointer that is used to keep track of the current line in the example, is set to the start of the line that contains the specified pattern (or to the end of the example if the pattern could not be found).

See section \dontinclude for an example.

\skipline ( pattern )

This command searches line by line through the example that was last included using \include or \dontinclude until it finds a line that contains the specified pattern. It then writes the line to the output.

The internal pointer that is used to keep track of the current line in the example, is set to the start of the line following the line that is written (or to the end of the example if the pattern could not be found).

Note:
The command:
\skipline pattern
is equivalent to:
\skip pattern
\line pattern

See section \dontinclude for an example.

\snippet <file-name> ( block_id )

Where the \include command can be used to include a complete file as source code, this command can be used to quote only a fragment of a source file.

For example, the putting the following command in the documentation, references a snippet in file example.cpp residing in a subdirectory which should be pointed to by EXAMPLE_PATH.

  \snippet snippets/example.cpp Adding a resource

The text following the file name is the unique identifier for the snippet. This is used to delimit the quoted code in the relevant snippet file as shown in the following example that corresponds to the above \snippet command:

QImage image(64, 64, QImage::Format_RGB32);
image.fill(qRgb(255, 160, 128));
//! [Adding a resource]
document->addResource(QTextDocument::ImageResource,
QUrl("mydata://image.png"), QVariant(image));
//! [Adding a resource]
...

Note that the lines containing the block markers will not be included, so the output will be:

document->addResource(QTextDocument::ImageResource,
QUrl("mydata://image.png"), QVariant(image));

Note also that the [block_id] markers should appear exactly twice in the source file.

see section \dontinclude for an alternative way to include fragments of a source file that does not require markers.

\until ( pattern )

This command writes all lines of the example that was last included using \include or \dontinclude to the output, until it finds a line containing the specified pattern. The line containing the pattern will be written as well.

The internal pointer that is used to keep track of the current line in the example, is set to the start of the line following last written line (or to the end of the example if the pattern could not be found).

See section \dontinclude for an example.

\verbinclude <file-name>

This command includes the file <file-name> verbatim in the documentation. The command is equivalent to pasting the file in the documentation and placing \verbatim and \endverbatim commands around it.

Files or directories that doxygen should look for can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

\htmlinclude <file-name>

This command includes the file <file-name> as is in the HTML documentation. The command is equivalent to pasting the file in the documentation and placing \htmlonly and \endhtmlonly commands around it.

Files or directories that doxygen should look for can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

\latexinclude <file-name>

This command includes the file <file-name> as is in the [image] documentation. The command is equivalent to pasting the file in the documentation and placing \latexonly and \endlatexonly commands around it.

Files or directories that doxygen should look for can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

--- Commands for visual enhancements ---

\a <word>

Displays the argument <word> in italics. Use this command to emphasize words. Use this command to refer to member arguments in the running text.

Example:
  ... the \a x and \a y coordinates are used to ...
This will result in the following text:

... the x and y coordinates are used to ...

Equivalent to \e and \em. To emphasize multiple words use <em>multiple words</em>.

\arg { item-description }

This command has one argument that continues until the first blank line or until another \arg is encountered. The command can be used to generate a simple, not nested list of arguments. Each argument should start with a \arg command.

Example:
Typing:
  \arg \c AlignLeft left alignment.
  \arg \c AlignCenter center alignment.
  \arg \c AlignRight right alignment

  No other types of alignment are supported.
will result in the following text:

  • AlignLeft left alignment.
  • AlignCenter center alignment.
  • AlignRight right alignment

No other types of alignment are supported.
Note:
For nested lists, HTML commands should be used.

Equivalent to \li

\b <word>

Displays the argument <word> using a bold font. Equivalent to <b>word</b>. To put multiple words in bold use <b>multiple words</b>.

\c <word>

Displays the argument <word> using a typewriter font. Use this to refer to a word of code. Equivalent to <tt>word</tt>.

Example:
Typing:
     ... This function returns \c void and not \c int ...
will result in the following text:

... This function returns void and not int ...

Equivalent to \p To have multiple words in typewriter font use <tt>multiple words</tt>.

\code [ '{'<word>'}']

Starts a block of code. A code block is treated differently from ordinary text. It is interpreted as source code. The names of classes and members and other documented entities are automatically replaced by links to the documentation.

By default the language that is assumed for syntax highlighting is based on the location where the \code block was found. If this part of a Python file for instance, the syntax highlight will be done according to the Python syntax.

If it unclear from the context which language is meant (for instance the comment is in a .txt or .markdown file) then you can also explicitly indicate the language, by putting the file extension typically that doxygen associated with the language in curly brackets after the code block. Here is an example:

  \code{.py}
  class Python:
     pass
  \endcode

  \code{.cpp}
  class Cpp {};
  \endcode
See also
section \endcode and section \verbatim.

\copydoc <link-object>

Copies a documentation block from the object specified by <link-object> and pastes it at the location of the command. This command can be useful to avoid cases where a documentation block would otherwise have to be duplicated or it can be used to extend the documentation of an inherited member.

The link object can point to a member (of a class, file or group), a class, a namespace, a group, a page, or a file (checked in that order). Note that if the object pointed to is a member (function, variable, typedef, etc), the compound (class, file, or group) containing it should also be documented for the copying to work.

To copy the documentation for a member of a class one can, for instance, put the following in the documentation:

  /*! @copydoc MyClass::myfunction()
   *  More documentation.
   */

if the member is overloaded, you should specify the argument types explicitly (without spaces!), like in the following:

  //! @copydoc MyClass::myfunction(type1,type2)

Qualified names are only needed if the context in which the documentation block is found requires them.

The \copydoc command can be used recursively, but cycles in the \copydoc relation will be broken and flagged as an error.

Note that \copydoc foo() is roughly equivalent to doing:

  \brief
  \details

See \copybrief and \copydetails for copying only the brief or detailed part of the comment block.

\copybrief <link-object>

Works in a similar way as \copydoc but will only copy the brief description, not the detailed documentation.

\copydetails <link-object>

Works in a similar way as \copydoc but will only copy the detailed documentation, not the brief description.

\docbookonly

Starts a block of text that will be verbatim included in the generated docbook documentation only. The block ends with a \enddocbookonly command.

See also
section \manonly, \latexonly, \rtfonly, \xmlonly, and \htmlonly.

\dot

Starts a text fragment which should contain a valid description of a dot graph. The text fragment ends with \enddot. Doxygen will pass the text on to dot and include the resulting image (and image map) into the output. The nodes of a graph can be made clickable by using the URL attribute. By using the command \ref inside the URL value you can conveniently link to an item inside doxygen. Here is an example:

/*! class B */
class B {};
/*! class C */
class C {};
/*! \mainpage
* Class relations expressed via an inline dot graph:
* \dot
* digraph example {
* node [shape=record, fontname=Helvetica, fontsize=10];
* b [ label="class B" URL="\ref B"];
* c [ label="class C" URL="\ref C"];
* b -> c [ arrowhead="open", style="dashed" ];
* }
* \enddot
* Note that the classes in the above graph are clickable
* (in the HTML output).
*/

\msc

Starts a text fragment which should contain a valid description of a message sequence chart. See http://www.mcternan.me.uk/mscgen/ for examples. The text fragment ends with \endmsc.

Note
The text fragment should only include the part of the message sequence chart that is within the msc {...} block.
You need to install the mscgen tool, if you want to use this command.

Here is an example of the use of the \msc command.

/** Sender class. Can be used to send a command to the server.
* The receiver will acknowledge the command by calling Ack().
* \msc
* Sender,Receiver;
* Sender->Receiver [label="Command()", URL="\ref Receiver::Command()"];
* Sender<-Receiver [label="Ack()", URL="\ref Ack()", ID="1"];
* \endmsc
*/
class Sender
{
public:
/** Acknowledgment from server */
void Ack(bool ok);
};
/** Receiver class. Can be used to receive and execute commands.
* After execution of a command, the receiver will send an acknowledgment
* \msc
* Receiver,Sender;
* Receiver<-Sender [label="Command()", URL="\ref Command()"];
* Receiver->Sender [label="Ack()", URL="\ref Sender::Ack()", ID="1"];
* \endmsc
*/
class Receiver
{
public:
/** Executable a command on the server */
void Command(int commandId);
};
See also
section \mscfile.

\dotfile <file> ["caption"]

Inserts an image generated by dot from <file> into the documentation.

The first argument specifies the file name of the image. doxygen will look for files in the paths (or files) that you specified after the DOTFILE_DIRS tag. If the dot file is found it will be used as an input file to the dot tool. The resulting image will be put into the correct output directory. If the dot file name contains spaces you'll have to put quotes ("...") around it.

The second argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

\mscfile <file> ["caption"]

Inserts an image generated by mscgen from <file> into the documentation. See http://www.mcternan.me.uk/mscgen/ for examples.

The first argument specifies the file name of the image. doxygen will look for files in the paths (or files) that you specified after the MSCFILE_DIRS tag. If the msc file is found it will be used as an input file to the mscgen tool. The resulting image will be put into the correct output directory. If the msc file name contains spaces you'll have to put quotes ("...") around it.

The second argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

See also
section \msc.

\diafile <file> ["caption"]

Inserts an image made in dia from <file> into the documentation.

The first argument specifies the file name of the image. doxygen will look for files in the paths (or files) that you specified after the DIAFILE_DIRS tag. If the dia file is found it will be used as an input file dia. The resulting image will be put into the correct output directory. If the dia file name contains spaces you'll have to put quotes ("...") around it.

The second argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

\e <word>

Displays the argument <word> in italics. Use this command to emphasize words.

Example:
Typing:
  ... this is a \e really good example ...
will result in the following text:

... this is a really good example ...

Equivalent to \a and \em. To emphasize multiple words use <em>multiple words</em>.

\em <word>

Displays the argument <word> in italics. Use this command to emphasize words.

Example:
Typing:
  ... this is a \em really good example ...
will result in the following text:

... this is a really good example ...

Equivalent to \a and \e. To emphasize multiple words use <em>multiple words</em>.

\endcode

Ends a block of code.

See also
section \code

\enddocbookonly

Ends a block of text that was started with a \docbookonly command.

See also
section \docbookonly.

\enddot

Ends a block that was started with \dot.

\endmsc

Ends a block that was started with \msc.

\endhtmlonly

Ends a block of text that was started with a \htmlonly command.

See also
section \htmlonly.

\endlatexonly

Ends a block of text that was started with a \latexonly command.

See also
section \latexonly.

\endmanonly

Ends a block of text that was started with a \manonly command.

See also
section \manonly.

\endrtfonly

Ends a block of text that was started with a \rtfonly command.

See also
section \rtfonly.

\endverbatim

Ends a block of text that was started with a \verbatim command.

See also
section \verbatim.

\endxmlonly

Ends a block of text that was started with a \xmlonly command.

See also
section \xmlonly.

\f$

Marks the start and end of an in-text formula.

See also
section formulas for an example.

\f[

Marks the start of a long formula that is displayed centered on a separate line.

See also
section \f] and section formulas.

\f]

Marks the end of a long formula that is displayed centered on a separate line.

See also
section \f[ and section formulas.

\f{environment}{

Marks the start of a formula that is in a specific environment.

Note
The second { is optional and is only to help editors (such as Vim) to do proper syntax highlighting by making the number of opening and closing braces the same.
See also
section \f} and section formulas.

\f}

Marks the end of a formula that is in a specific environment.

See also
section \f{ and section formulas.

\htmlonly ["[block]"]

Starts a block of text that will be verbatim included in the generated HTML documentation only. The block ends with a \endhtmlonly command.

This command can be used to include HTML code that is too complex for doxygen (i.e. applets, java-scripts, and HTML tags that require specific attributes).

Normally the contents between \htmlonly and \endhtmlonly is inserted as-is. When you want to insert a HTML fragment that has block scope like a table or list which should appear outside <p>..</p>, this can lead to invalid HTML. You can use \htmlonly[block] to make doxygen end the current paragraph and restart it after \endhtmlonly.

Note
environment variables (like $(HOME) ) are resolved inside a HTML-only block.
See also
section \manonly, \latexonly, \rtfonly, \xmlonly, and \docbookonly.

\image <format> <file> ["caption"] [<sizeindication>=<size>]

Inserts an image into the documentation. This command is format specific, so if you want to insert an image for more than one format you'll have to repeat this command for each format.

The first argument specifies the output format. Currently, the following values are supported: html, latex and rtf.

The second argument specifies the file name of the image. doxygen will look for files in the paths (or files) that you specified after the IMAGE_PATH tag. If the image is found it will be copied to the correct output directory. If the image name contains spaces you'll have to put quotes ("...") around it. You can also specify an absolute URL instead of a file name, but then doxygen does not copy the image nor check its existence.

The third argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified on a single line and between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

The fourth argument is also optional and can be used to specify the width or height of the image. This is only useful for [image] output (i.e. format=latex). The sizeindication can be either width or height. The size should be a valid size specifier in [image] (for example 10cm or 6in or a symbolic width like \textwidth).

Here is example of a comment block:

  /*! Here is a snapshot of my new application:
   *  \image html application.jpg
   *  \image latex application.eps "My application" width=10cm
   */

And this is an example of how the relevant part of the configuration file may look:

  IMAGE_PATH     = my_image_dir
Warning
The image format for HTML is limited to what your browser supports. For [image], the image format must be Encapsulated PostScript (eps).

Doxygen does not check if the image is in the correct format. So you have to make sure this is the case!

\latexonly

Starts a block of text that will be verbatim included in the generated [image] documentation only. The block ends with a \endlatexonly command.

This command can be used to include [image] code that is too complex for doxygen (i.e. images, formulas, special characters). You can use the \htmlonly and \endhtmlonly pair to provide a proper HTML alternative.

Note: environment variables (like $(HOME) ) are resolved inside a [image] -only block.

See also
sections \rtfonly, \xmlonly, \manonly, \htmlonly, and \docbookonly.

\manonly

Starts a block of text that will be verbatim included in the generated MAN documentation only. The block ends with a \endmanonly command.

This command can be used to include groff code directly into MAN pages. You can use the \htmlonly and \endhtmlonly and \latexonly and \endlatexonly pairs to provide proper HTML and [image] alternatives.

See also
sections \htmlonly, \xmlonly, \rtfonly, \latexonly, and \docbookonly.

\li { item-description }

This command has one argument that continues until the first blank line or until another \li is encountered. The command can be used to generate a simple, not nested list of arguments. Each argument should start with a \li command.

Example:
Typing:
  \li \c AlignLeft left alignment.
  \li \c AlignCenter center alignment.
  \li \c AlignRight right alignment

  No other types of alignment are supported.
will result in the following text:

  • AlignLeft left alignment.
  • AlignCenter center alignment.
  • AlignRight right alignment

No other types of alignment are supported.
Note:
For nested lists, HTML commands should be used.

Equivalent to \arg

\n

Forces a new line. Equivalent to <br> and inspired by the printf function.

\p <word>

Displays the parameter <word> using a typewriter font. You can use this command to refer to member function parameters in the running text.

Example:
  ... the \p x and \p y coordinates are used to ...
This will result in the following text:

... the x and y coordinates are used to ...

Equivalent to \c To have multiple words in typewriter font use <tt>multiple words</tt>.

\rtfonly

Starts a block of text that will be verbatim included in the generated RTF documentation only. The block ends with a \endrtfonly command.

This command can be used to include RTF code that is too complex for doxygen.

Note: environment variables (like $(HOME) ) are resolved inside a RTF-only block.

See also
sections \manonly, \xmlonly, \latexonly, \htmlonly, and \docbookonly.

\verbatim

Starts a block of text that will be verbatim included in the documentation. The block should end with a \endverbatim command. All commands are disabled in a verbatim block.

Warning
Make sure you include a \endverbatim command for each \verbatim command or the parser will get confused!
See also
sections \code, \endverbatim, and \verbinclude.

\xmlonly

Starts a block of text that will be verbatim included in the generated XML output only. The block ends with a \endxmlonly command.

This command can be used to include custom XML tags.

See also
sections \manonly, \rtfonly, \latexonly, \htmlonly, and \docbookonly.

\\

This command writes a backslash character (\) to the output. The backslash has to be escaped in some cases because doxygen uses it to detect commands.

\@

This command writes an at-sign (@) to the output. The at-sign has to be escaped in some cases because doxygen uses it to detect JavaDoc commands.

\~[LanguageId]

This command enables/disables a language specific filter. This can be used to put documentation for different language into one comment block and use the OUTPUT_LANGUAGE tag to filter out only a specific language. Use \~language_id to enable output for a specific language only and \~ to enable output for all languages (this is also the default mode).

Example:

/*! \~english This is English \~dutch Dit is Nederlands \~german Dies ist
    Deutsch. \~ output for all languages.
 */

\&

This command writes the & character to the output. This character has to be escaped because it has a special meaning in HTML.

\$

This command writes the $ character to the output. This character has to be escaped in some cases, because it is used to expand environment variables.

\#

This command writes the # character to the output. This character has to be escaped in some cases, because it is used to refer to documented entities.

\<

This command writes the < character to the output. This character has to be escaped because it has a special meaning in HTML.

\>

This command writes the > character to the output. This character has to be escaped because it has a special meaning in HTML.

\%

This command writes the % character to the output. This character has to be escaped in some cases, because it is used to prevent auto-linking to word that is also a documented class or struct.

\"

This command writes the " character to the output. This character has to be escaped in some cases, because it is used in pairs to indicate an unformatted text fragment.

\.

This command writes a dot (.) to the output. This can be useful to prevent ending a brief description when JAVADOC_AUTOBRIEF is enabled or to prevent starting a numbered list when the dot follows a number at the start of a line.

\::

This command writes a double colon (::) to the output. This character sequence has to be escaped in some cases, because it is used to reference to documented entities.

\|

This command writes a pipe symbol (|) to the output. This character has to be escaped in some cases, because it is used for Markdown tables.

\--

This command writes two dashes (--) to the output. This allows writing two consecutive dashes to the output instead of one n-dash character (–).

\---

This command writes three dashes (---) to the output. This allows writing three consecutuve dashes to the output instead of one m-dash character (—).

--- Commands included for Qt compatibility ---

The following commands are supported to remain compatible to the Qt class browser generator. Do not use these commands in your own documentation.

  • \annotatedclasslist
  • \classhierarchy
  • \define
  • \functionindex
  • \header
  • \headerfilelist
  • \inherit
  • \l
  • \postheader

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: HTML Commands

Doxygen
HTML Commands

Here is a list of all HTML commands that may be used inside the documentation. Note that although these HTML tags are translated to the proper commands for output formats other than HTML, all attributes of a HTML tag are passed on to the HTML output only (the HREF and NAME attributes for the A tag are the only exception).

  • <A HREF="..."> Starts a hyperlink (if supported by the output format).
  • <A NAME="..."> Starts a named anchor (if supported by the output format).
  • </A> Ends a link or anchor
  • <B> Starts a piece of text displayed in a bold font.
  • </B> Ends a <B> section.
  • <BLOCKQUOTE> Starts a quotation block.
  • </BLOCKQUOTE> Ends the quotation block.
  • <BODY> Does not generate any output.
  • </BODY> Does not generate any output.
  • <BR> Forces a line break.
  • <CENTER> starts a section of centered text.
  • </CENTER> ends a section of centered text.
  • <CAPTION> Starts a caption. Use within a table only.
  • </CAPTION> Ends a caption. Use within a table only.
  • <CODE> Starts a piece of text displayed in a typewriter font. Note that only for C# code, this command is equivalent to \code.
  • </CODE> Ends a <CODE> section. Note that only for C# code, this command is equivalent to \endcode.
  • <DD> Starts an item description.
  • </DD> Ends an item description.
  • <DFN> Starts a piece of text displayed in a typewriter font.
  • </DFN> Ends a <DFN> section.
  • <DIV> Starts a section with a specific style (HTML only)
  • </DIV> Ends a section with a specific style (HTML only)
  • <DL> Starts a description list.
  • </DL> Ends a description list.
  • <DT> Starts an item title.
  • </DT> Ends an item title.
  • <EM> Starts a piece of text displayed in an italic font.
  • </EM> Ends a <EM> section.
  • <FORM> Does not generate any output.
  • </FORM> Does not generate any output.
  • <HR> Writes a horizontal ruler.
  • <H1> Starts an unnumbered section.
  • </H1> Ends an unnumbered section.
  • <H2> Starts an unnumbered subsection.
  • </H2> Ends an unnumbered subsection.
  • <H3> Starts an unnumbered subsubsection.
  • </H3> Ends an unnumbered subsubsection.
  • <I> Starts a piece of text displayed in an italic font.
  • <INPUT> Does not generate any output.
  • </I> Ends a <I> section.
  • <IMG> This command is written with attributes to the HTML output only.
  • <LI> Starts a new list item.
  • </LI> Ends a list item.
  • <META> Does not generate any output.
  • <MULTICOL> ignored by doxygen.
  • </MUTLICOL> ignored by doxygen.
  • <OL> Starts a numbered item list.
  • </OL> Ends a numbered item list.
  • <P> Starts a new paragraph.
  • </P> Ends a paragraph.
  • <PRE> Starts a preformatted fragment.
  • </PRE> Ends a preformatted fragment.
  • <SMALL> Starts a section of text displayed in a smaller font.
  • </SMALL> Ends a <SMALL> section.
  • <SPAN> Starts an inline text fragment with a specific style (HTML only)
  • </SPAN> Ends an inline text fragment with a specific style (HTML only)
  • <STRONG> Starts a section of bold text.
  • </STRONG> Ends a section of bold text.
  • <SUB> Starts a piece of text displayed in subscript.
  • </SUB> Ends a <SUB> section.
  • <SUP> Starts a piece of text displayed in superscript.
  • </SUP> Ends a <SUP> section.
  • <TABLE> starts a table.
  • </TABLE> ends a table.
  • <TD> Starts a new table data element.
  • </TD> Ends a table data element.
  • <TH> Starts a new table header.
  • </TH> Ends a table header.
  • <TR> Starts a new table row.
  • </TR> Ends a table row.
  • <TT> Starts a piece of text displayed in a typewriter font.
  • </TT> Ends a <TT> section.
  • <KBD> Starts a piece of text displayed in a typewriter font.
  • </KBD> Ends a <KBD> section.
  • <UL> Starts an unnumbered item list.
  • </UL> Ends an unnumbered item list.
  • <VAR> Starts a piece of text displayed in an italic font.
  • </VAR> Ends a <VAR> section.

The special HTML4 character entities.
The list of entities with their descriptions has been taken from Character entity references in HTML 4. ( Portions © International Organization for Standardization 1986 Permission to copy in any form is granted for use with conforming SGML systems and applications as defined in ISO 8879, provided this notice is included in all copies.)

  • &nbsp;     no-break space = non-breaking space:
  • &iexcl;    inverted exclamation mark: ¡
  • &cent;     cent sign: ¢
  • &pound;    pound sign: £
  • &curren;   currency sign: ¤
  • &yen;      yen sign = yuan sign: ¥
  • &brvbar;   broken bar = broken vertical bar: ¦
  • &sect;     section sign: §
  • &uml;      diaeresis = spacing diaeresis: ¨
  • &copy;     copyright sign: ©
  • &ordf;     feminine ordinal indicator: ª
  • &laquo;    left-pointing double angle quotation mark = left pointing guillemet: «
  • &not;      not sign: ¬
  • &shy;      soft hyphen = discretionary hyphen:
  • &reg;      registered sign = registered trade mark sign: ®
  • &macr;     macron = spacing macron = overline = APL overbar: ¯
  • &deg;      degree sign: °
  • &plusmn;   plus-minus sign = plus-or-minus sign: ±
  • &sup2;     superscript two = superscript digit two = squared: ²
  • &sup3;     superscript three = superscript digit three = cubed: ³
  • &acute;    acute accent = spacing acute: ´
  • &micro;    micro sign: µ
  • &para;     pilcrow sign = paragraph sign: ¶
  • &middot;   middle dot = Georgian comma = Greek middle dot: ·
  • &cedil;    cedilla = spacing cedilla: ¸
  • &sup1;     superscript one = superscript digit one: ¹
  • &ordm;     masculine ordinal indicator: º
  • &raquo;    right-pointing double angle quotation mark = right pointing guillemet: »
  • &frac14;   vulgar fraction one quarter = fraction one quarter: ¼
  • &frac12;   vulgar fraction one half = fraction one half: ½
  • &frac34;   vulgar fraction three quarters = fraction three quarters: ¾
  • &iquest;   inverted question mark = turned question mark: ¿
  • &Agrave;   latin capital letter A with grave = latin capital letter A grave: À
  • &Aacute;   latin capital letter A with acute: Á
  • &Acirc;    latin capital letter A with circumflex: Â
  • &Atilde;   latin capital letter A with tilde: Ã
  • &Auml;     latin capital letter A with diaeresis: Ä
  • &Aring;    latin capital letter A with ring above = latin capital letter A ring: Å
  • &AElig;    latin capital letter AE = latin capital ligature AE: Æ
  • &Ccedil;   latin capital letter C with cedilla: Ç
  • &Egrave;   latin capital letter E with grave: È
  • &Eacute;   latin capital letter E with acute: É
  • &Ecirc;    latin capital letter E with circumflex: Ê
  • &Euml;     latin capital letter E with diaeresis: Ë
  • &Igrave;   latin capital letter I with grave: Ì
  • &Iacute;   latin capital letter I with acute: Í
  • &Icirc;    latin capital letter I with circumflex: Î
  • &Iuml;     latin capital letter I with diaeresis: Ï
  • &ETH;      latin capital letter ETH: Ð
  • &Ntilde;   latin capital letter N with tilde: Ñ
  • &Ograve;   latin capital letter O with grave: Ò
  • &Oacute;   latin capital letter O with acute: Ó
  • &Ocirc;    latin capital letter O with circumflex: Ô
  • &Otilde;   latin capital letter O with tilde: Õ
  • &Ouml;     latin capital letter O with diaeresis: Ö
  • &times;    multiplication sign: ×
  • &Oslash;   latin capital letter O with stroke = latin capital letter O slash: Ø
  • &Ugrave;   latin capital letter U with grave: Ù
  • &Uacute;   latin capital letter U with acute: Ú
  • &Ucirc;    latin capital letter U with circumflex: Û
  • &Uuml;     latin capital letter U with diaeresis: Ü
  • &Yacute;   latin capital letter Y with acute: Ý
  • &THORN;    latin capital letter THORN: Þ
  • &szlig;    latin small letter sharp s = ess-zed: ß
  • &agrave;   latin small letter a with grave = latin small letter a grave: à
  • &aacute;   latin small letter a with acute: á
  • &acirc;    latin small letter a with circumflex: â
  • &atilde;   latin small letter a with tilde: ã
  • &auml;     latin small letter a with diaeresis: ä
  • &aring;    latin small letter a with ring above = latin small letter a ring: å
  • &aelig;    latin small letter ae = latin small ligature ae: æ
  • &ccedil;   latin small letter c with cedilla: ç
  • &egrave;   latin small letter e with grave: è
  • &eacute;   latin small letter e with acute: é
  • &ecirc;    latin small letter e with circumflex: ê
  • &euml;     latin small letter e with diaeresis: ë
  • &igrave;   latin small letter i with grave: ì
  • &iacute;   latin small letter i with acute: í
  • &icirc;    latin small letter i with circumflex: î
  • &iuml;     latin small letter i with diaeresis: ï
  • &eth;      latin small letter eth: ð
  • &ntilde;   latin small letter n with tilde: ñ
  • &ograve;   latin small letter o with grave: ò
  • &oacute;   latin small letter o with acute: ó
  • &ocirc;    latin small letter o with circumflex: ô
  • &otilde;   latin small letter o with tilde: õ
  • &ouml;     latin small letter o with diaeresis: ö
  • &divide;   division sign: ÷
  • &oslash;   latin small letter o with stroke, = latin small letter o slash: ø
  • &ugrave;   latin small letter u with grave: ù
  • &uacute;   latin small letter u with acute: ú
  • &ucirc;    latin small letter u with circumflex: û
  • &uuml;     latin small letter u with diaeresis: ü
  • &yacute;   latin small letter y with acute: ý
  • &thorn;    latin small letter thorn: þ
  • &yuml;     latin small letter y with diaeresis: ÿ
  • &fnof;     latin small f with hook = function = florin: ƒ
  • &Alpha;    greek capital letter alpha: Α
  • &Beta;     greek capital letter beta: Β
  • &Gamma;    greek capital letter gamma: Γ
  • &Delta;    greek capital letter delta: Δ
  • &Epsilon;  greek capital letter epsilon: Ε
  • &Zeta;     greek capital letter zeta: Ζ
  • &Eta;      greek capital letter eta: Η
  • &Theta;    greek capital letter theta: Θ
  • &Iota;     greek capital letter iota: Ι
  • &Kappa;    greek capital letter kappa: Κ
  • &Lambda;   greek capital letter lambda: Λ
  • &Mu;       greek capital letter mu: Μ
  • &Nu;       greek capital letter nu: Ν
  • &Xi;       greek capital letter xi: Ξ
  • &Omicron;  greek capital letter omicron: Ο
  • &Pi;       greek capital letter pi: Π
  • &Rho;      greek capital letter rho: Ρ
  • &Sigma;    greek capital letter sigma: Σ
  • &Tau;      greek capital letter tau: Τ
  • &Upsilon;  greek capital letter upsilon: Υ
  • &Phi;      greek capital letter phi: Φ
  • &Chi;      greek capital letter chi: Χ
  • &Psi;      greek capital letter psi: Ψ
  • &Omega;    greek capital letter omega: Ω
  • &alpha;    greek small letter alpha: α
  • &beta;     greek small letter beta: β
  • &gamma;    greek small letter gamma: γ
  • &delta;    greek small letter delta: δ
  • &epsilon;  greek small letter epsilon: ε
  • &zeta;     greek small letter zeta: ζ
  • &eta;      greek small letter eta: η
  • &theta;    greek small letter theta: θ
  • &iota;     greek small letter iota: ι
  • &kappa;    greek small letter kappa: κ
  • &lambda;   greek small letter lambda: λ
  • &mu;       greek small letter mu: μ
  • &nu;       greek small letter nu: ν
  • &xi;       greek small letter xi: ξ
  • &omicron;  greek small letter omicron: ο
  • &pi;       greek small letter pi: π
  • &rho;      greek small letter rho: ρ
  • &sigmaf;   greek small letter final sigma: ς
  • &sigma;    greek small letter sigma: σ
  • &tau;      greek small letter tau: τ
  • &upsilon;  greek small letter upsilon: υ
  • &phi;      greek small letter phi: φ
  • &chi;      greek small letter chi: χ
  • &psi;      greek small letter psi: ψ
  • &omega;    greek small letter omega: ω
  • &thetasym; greek small letter theta symbol: ϑ
  • &upsih;    greek upsilon with hook symbol: ϒ
  • &piv;      greek pi symbol: ϖ
  • &bull;     bullet = black small circle: •
  • &hellip;   horizontal ellipsis = three dot leader: …
  • &prime;    prime = minutes = feet: ′
  • &Prime;    double prime = seconds = inches: ″
  • &oline;    overline = spacing overscore: ‾
  • &frasl;    fraction slash: ⁄
  • &weierp;   script capital P = power set = Weierstrass p: ℘
  • &image;    blackletter capital I = imaginary part: ℑ
  • &real;     blackletter capital R = real part symbol: ℜ
  • &trade;    trade mark sign: ™
  • &alefsym;  alef symbol = first transfinite cardinal: ℵ
  • &larr;     leftwards arrow: ←
  • &uarr;     upwards arrow: ↑
  • &rarr;     rightwards arrow: →
  • &darr;     downwards arrow: ↓
  • &harr;     left right arrow: ↔
  • &crarr;    downwards arrow with corner leftwards = carriage return: ↵
  • &lArr;     leftwards double arrow: ⇐
  • &uArr;     upwards double arrow: ⇑
  • &rArr;     rightwards double arrow: ⇒
  • &dArr;     downwards double arrow: ⇓
  • &hArr;     left right double arrow: ⇔
  • &forall;   for all: ∀
  • &part;     partial differential: ∂
  • &exist;    there exists: ∃
  • &empty;    empty set = null set = diameter: ∅
  • &nabla;    nabla = backward difference: ∇
  • &isin;     element of: ∈
  • &notin;    not an element of: ∉
  • &ni;       contains as member: ∋
  • &prod;     n-ary product = product sign: ∏
  • &sum;      n-ary sumation: ∑
  • &minus;    minus sign: −
  • &lowast;   asterisk operator: ∗
  • &radic;    square root = radical sign: √
  • &prop;     proportional to: ∝
  • &infin;    infinity: ∞
  • &ang;      angle: ∠
  • &and;      logical and = wedge: ∧
  • &or;       logical or = vee: ∨
  • &cap;      intersection = cap: ∩
  • &cup;      union = cup: ∪
  • &int;      integral: ∫
  • &there4;   therefore: ∴
  • &sim;      tilde operator = varies with = similar to: ∼
  • &cong;     approximately equal to: ≅
  • &asymp;    almost equal to = asymptotic to: ≈
  • &ne;       not equal to: ≠
  • &equiv;    identical to: ≡
  • &le;       less-than or equal to: ≤
  • &ge;       greater-than or equal to: ≥
  • &sub;      subset of: ⊂
  • &sup;      superset of: ⊃
  • &nsub;     not a subset of: ⊄
  • &sube;     subset of or equal to: ⊆
  • &supe;     superset of or equal to: ⊇
  • &oplus;    circled plus = direct sum: ⊕
  • &otimes;   circled times = vector product: ⊗
  • &perp;     up tack = orthogonal to = perpendicular: ⊥
  • &sdot;     dot operator: ⋅
  • &lceil;    left ceiling = apl upstile: ⌈
  • &rceil;    right ceiling: ⌉
  • &lfloor;   left floor = apl downstile: ⌊
  • &rfloor;   right floor: ⌋
  • &lang;     left-pointing angle bracket = bra: ⟨
  • &rang;     right-pointing angle bracket = ket: ⟩
  • &loz;      lozenge: ◊
  • &spades;   black spade suit: ♠
  • &clubs;    black club suit = shamrock: ♣
  • &hearts;   black heart suit = valentine: ♥
  • &diams;    black diamond suit: ♦
  • &quot;     quotation mark = APL quote: "
  • &amp;      ampersand: &
  • &lt;       less-than sign: <
  • &gt;       greater-than sign: >
  • &OElig;    latin capital ligature OE: Œ
  • &oelig;    latin small ligature oe: œ
  • &Scaron;   latin capital letter S with caron: Š
  • &scaron;   latin small letter s with caron: š
  • &Yuml;     latin capital letter Y with diaeresis: Ÿ
  • &circ;     modifier letter circumflex accent: ˆ
  • &tilde;    small tilde: ˜
  • &ensp;     en space:
  • &emsp;     em space:
  • &thinsp;   thin space:
  • &zwnj;     zero width non-joiner: ‌
  • &zwj;      zero width joiner: ‍
  • &lrm;      left-to-right mark: ‎
  • &rlm;      right-to-left mark: ‏
  • &ndash;    en dash: –
  • &mdash;    em dash: —
  • &lsquo;    left single quotation mark: ‘
  • &rsquo;    right single quotation mark: ’
  • &sbquo;    single low-9 quotation mark: ‚
  • &ldquo;    left double quotation mark: “
  • &rdquo;    right double quotation mark: ”
  • &bdquo;    double low-9 quotation mark: „
  • &dagger;   dagger: †
  • &Dagger;   double dagger: ‡
  • &permil;   per mille sign: ‰
  • &lsaquo;   single left-pointing angle quotation mark: ‹
  • &rsaquo;   single right-pointing angle quotation mark: ›
  • &euro;     euro sign: €

Doxygen extensions:

  • &tm;      trade mark sign: ™
  • &apos;    apostrophe: '

Finally, to put invisible comments inside comment blocks, HTML style comments can be used:

/*! <!-- This is a comment with a comment block --> Visible text */

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: XML Commands

Doxygen
XML Commands

Doxygen supports most of the XML commands that are typically used in C# code comments. The XML tags are defined in Appendix E of the ECMA-334 standard, which defines the C# language. Unfortunately, the specification is not very precise and a number of the examples given are of poor quality.

Here is the list of tags supported by doxygen:

  • <c> Identifies inline text that should be rendered as a piece of code. Similar to using <tt>text</tt>.
  • <code> Set one or more lines of source code or program output. Note that this command behaves like \code ... \endcode for C# code, but it behaves like the HTML equivalent <code>...</code> for other languages.
  • <description> Part of a <list> command, describes an item.
  • <example> Marks a block of text as an example, ignored by doxygen.
  • <exception cref="member"> Identifies the exception a method can throw.
  • <include> Can be used to import a piece of XML from an external file. Ignored by doxygen at the moment.
  • <inheritdoc> Can be used to insert the documentation of a member of a base class into the documentation of a member of a derived class that reimplements it.
  • <item> List item. Can only be used inside a <list> context.
  • <list type="type"> Starts a list, supported types are bullet or number and table. A list consists of a number of <item> tags. A list of type table, is a two column table which can have a header.
  • <listheader> Starts the header of a list of type "table".
  • <para> Identifies a paragraph of text.
  • <param name="paramName"> Marks a piece of text as the documentation for parameter "paramName". Similar to using \param.
  • <paramref name="paramName"> Refers to a parameter with name "paramName". Similar to using \a.
  • <permission> Identifies the security accessibility of a member. Ignored by doxygen.
  • <remarks> Identifies the detailed description.
  • <returns> Marks a piece of text as the return value of a function or method. Similar to using \return.
  • <see cref="member"> Refers to a member. Similar to \ref.
  • <seealso cref="member"> Starts a "See also" section referring to "member". Similar to using \sa member.
  • <summary> Identifies the brief description. Similar to using \brief.
  • <term> Part of a <list> command.
  • <typeparam name="paramName"> Marks a piece of text as the documentation for type parameter "paramName". Similar to using \param.
  • <typeparamref name="paramName"> Refers to a parameter with name "paramName". Similar to using \a.
  • <value> Identifies a property. Ignored by doxygen.

Here is an example of a typical piece of code using some of the above commands:

/// <summary>
/// A search engine.
/// </summary>
class Engine
{
/// <summary>
/// The Search method takes a series of parameters to specify the search criterion
/// and returns a dataset containing the result set.
/// </summary>
/// <param name="connectionString">the connection string to connect to the
/// database holding the content to search</param>
/// <param name="maxRows">The maximum number of rows to
/// return in the result set</param>
/// <param name="searchString">The text that we are searching for</param>
/// <returns>A DataSet instance containing the matching rows. It contains a maximum
/// number of rows specified by the maxRows parameter</returns>
public DataSet Search(string connectionString, int maxRows, int searchString)
{
DataSet ds = new DataSet();
return ds;
}
}

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Internationalization

Doxygen
Internationalization

Support for multiple languages

Doxygen has built-in support for multiple languages. This means that the text fragments, generated by doxygen, can be produced in languages other than English (the default). The output language is chosen through the configuration option OUTPUT_LANGUAGE in the configuration file (with default name and known as Doxyfile).

Currently (version 1.8.6), 40 languages are supported (sorted alphabetically): Afrikaans, Arabic, Armenian, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto, Finnish, French, German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean (+En), Latvian, Lithuanian, Macedonian, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Serbian, SerbianCyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese..

The table of information related to the supported languages follows. It is sorted by language alphabetically. The Status column was generated from sources and shows approximately the last version when the translator was updated.

Language | Maintainer | Contact address (replace the at and dot) | Status
Afrikaans | Johan Prinsloo | johan at zippysnoek dot com | 1.6.0
Arabic Moaz Reyad
Muhammad Bashir Al-Noimi 		[resigned]
mbnoimi at gmail dot com 		1.4.6
Armenian | Armen Tangamyan | armen dot tangamyan at anu dot edu dot au | 1.8.0
Brazilian Portuguese | Fabio "FJTC" Jun Takada Chino | jun-chino at uol dot com dot br | 1.8.0
Catalan Maximiliano Pin
Albert Mora 		max dot pin at bitroit dot com
[unreachable] 		1.8.0
Chinese Lian Yang
Li Daobing
Wei Liu 		lian dot yang dot cn at gmail dot com
lidaobing at gmail dot com
liuwei at asiainfo dot com 		1.8.2
Chinese Traditional Daniel YC Lin
Gary Lee 		dlin dot tw at gmail dot com
garywlee at gmail dot com 		almost up-to-date
Croatian | Boris Bralo | boris dot bralo at gmail dot com | 1.8.2
Czech | Petr Přikryl | prikryl at atlas dot cz | up-to-date
Danish Poul-Erik Hansen
Erik Søe Sørensen 		pouhan at gnotometrics dot dk
eriksoe+doxygen at daimi dot au dot dk 		1.8.0
Dutch | Dimitri van Heesch | dimitri at stack dot nl | up-to-date
English | Dimitri van Heesch | dimitri at stack dot nl | up-to-date
Esperanto | Ander Martínez | ander dot basaundi at gmail dot com | 1.8.4
Finnish | Antti Laine | antti dot a dot laine at tut dot fi | 1.6.0
French David Martinet
Xavier Outhier
Benoît BROSSE 		contact at e-concept-applications dot fr
xouthier at yahoo dot fr
Benoit dot BROSSE at ingenico dot com 		up-to-date
German Peter Grotrian
Jens Seidel 		Peter dot Grotrian at pdv-FS dot de
jensseidel at users dot sf dot net 		1.8.4
Greek | Paul Gessos | gessos dot paul at yahoo dot gr | 1.8.4
Hungarian Ákos Kiss
Földvári György 		akiss at users dot sourceforge dot net
[unreachable] 		1.4.6
Indonesian | Hendy Irawan | ceefour at gauldong dot net | 1.8.0
Italian Alessandro Falappa
Ahmed Aldo Faisal 		alessandro at falappa dot net
aaf23 at cam dot ac dot uk 		1.8.2
Japanese Suzumizaki-Kimikata
Hiroki Iseri
Ryunosuke Satoh
Kenji Nagamatsu
Iwasa Kazmi 		szmml at h12u.com
goyoki at gmail dot com
sun594 at hotmail dot com
[unreachable]
[unreachable] 		up-to-date
JapaneseEn | see the Japanese language | English based
Korean Kim Taedong
SooYoung Jung
Richard Kim 		fly1004 at gmail dot com
jung5000 at gmail dot com
[unreachable] 		up-to-date
KoreanEn | see the Korean language | English based
Latvian | Lauris | lauris at nix.lv | 1.8.4
Lithuanian Tomas Simonaitis
Mindaugas Radzius
Aidas Berukstis
-- searching for the maintainer -- 		[unreachable]
[unreachable]
[unreachable]
[Please, try to help to find someone.] 		1.4.6
Macedonian | Slave Jovanovski | slavejovanovski at yahoo dot com | 1.6.0
Norwegian | Lars Erik Jordet | lejordet at gmail dot com | 1.4.6
Persian | Ali Nadalizadeh | nadalizadeh at gmail dot com | 1.7.5
Polish Piotr Kaminski
Grzegorz Kowal
Krzysztof Kral 		[unreachable]
[unreachable]
krzysztof dot kral at gmail dot com 		1.8.2
Portuguese Rui Godinho Lopes
Fabio "FJTC" Jun Takada Chino 		[resigned]
jun-chino at uol dot com dot br 		1.8.0
Romanian Ionut Dumitrascu
Alexandru Iosup 		reddumy at yahoo dot com
aiosup at yahoo dot com 		almost up-to-date
Russian Brilliantov Kirill Vladimirovich
Alexandr Chelpanov 		brilliantov at byterg dot ru
cav at cryptopro dot ru 		almost up-to-date
Serbian | Dejan Milosavljevic | [unreachable] | 1.6.0
SerbianCyrillic | Nedeljko Stefanovic | stenedjo at yahoo dot com | 1.6.0
Slovak Kali+Laco Švec
Petr Přikryl 		[the Slovak language advisors]
prikryl at atlas dot cz 		up-to-date
Slovene | Matjaž Ostroveršnik | matjaz dot ostroversnik at ostri dot org | 1.4.6
Spanish Bartomeu
Francisco Oltra Thennet
David Vaquero 		bartomeu at loteria3cornella dot com
[unreachable]
david at grupoikusnet dot com 		up-to-date
Swedish | Björn Palmqvist | bjorn.palmqvist at aidium.se | almost up-to-date
Turkish | Emin Ilker Cetinbas | niw3 at yahoo dot com | 1.7.5
Ukrainian Olexij Tkatchenko
Petro Yermolenko 		[resigned]
python at i dot ua 		1.8.4
Vietnamese | Dang Minh Tuan | tuanvietkey at gmail dot com | 1.6.0

Most people on the list have indicated that they were also busy doing other things, so if you want to help to speed things up please let them (or me) know.

If you want to add support for a language that is not yet listed please read the next section.

Adding a new language to doxygen

This short HOWTO explains how to add support for the new language to doxygen:

Just follow the following steps:

  1. Tell me for which language you want to add support. If no one else is already working on support for that language, you will be assigned as the maintainer for the language.
  2. Create a copy of doxygen/src/translator_en.h and name it doxygen/src/translator_<your_2_letter_country_code>.h I'll use xx in the rest of this document (and XX for the uppercase version).

  3. Edit doxygen/src/language.cpp: Add the following code:

    #ifdef LANG_XX
#include<translator_xx.h>
#endif

    Remember to use the same symbol LANG_XX that was added to doxygen/src/lang_cfg.h.

    Now, in setTranslator() add

    #ifdef LANG_XX
    else if (L_EQUAL("your_language_name"))
    {
      theTranslator = new TranslatorYourLanguage;
    }
#endif

    after the if { ... }. I.e., it must be placed after the code for creating the English translator at the beginning, and before the else { ... } part that creates the translator for the default language (English again).

  4. Edit doxygen/src/translator_xx.h:
    • Use the UTF-8 capable editor and open the file using the UTF-8 mode.
    • Rename TRANSLATOR_EN_H to TRANSLATOR_XX_H twice (i.e. in the #ifndef and #define preprocessor commands at the beginning of the file).
    • Rename TranslatorEnglish to TranslatorYourLanguage
    • In the member idLanguage() change "english" into the name of your language (use lower case characters only). Depending on the language you may also wish to change the member functions latexLanguageSupportCommand() and other (you will recognize them when you start the work).
    • Edit all the strings that are returned by the member functions that start with tr. Try to match punctuation and capitals! To enter special characters (with accents) you can:
      • Enter them directly if your keyboard supports that. Recall that the text is expected to be saved using the UTF-8 encoding. Doxygen will translate the characters to proper [image] and leaves the HTML and man output in UTF-8.
      • Use HTML codes like &auml; for an a with an umlaut (i.e. ä). See the HTML specification for the codes.
    • On *nix systems:
      • Rerun the configure script from the root (i.e. in the doxygen directory) so that it generates doxygen/src/lang_cfg.h. This file should now contain a #define for your language code.
      • Run make again from the root (i.e. in the doxygen directory) of the distribution, in order to regenerate the Makefiles.
    • On Windows:
      • stop Visual Stdio
      • open a command window
      • goto the directory doxygen\src
      • give the command python languages.py > ..\winbuild\Languages.rules
      • close the command window
      • start Visual Studio again
      • Your language should now be selectable in the General part of the Settings of the Properties window of lang_cfg.py, by default Your language will be on. Rebuild doxygen (and doxywizard) now.
  6. Now you can use OUTPUT_LANGUAGE = your_language_name in the config file to generate output in your language.
  7. Send translator_xx.h to me so I can add it to doxygen. Send also your name and e-mail address to be included in the maintainers.txt list. You can also clone the doxygen repository at GitHub and make a Pull Request later.

Maintaining a language

New versions of doxygen may use new translated sentences. In such situation, the Translator class requires implementation of new methods – its interface changes. Of course, the English sentences need to be translated to the other languages. At least, new methods have to be implemented by the language-related translator class; otherwise, doxygen wouldn't even compile. Waiting until all language maintainers have translated the new sentences and sent the results would not be very practical. The following text describes the usage of translator adapters to solve the problem.

The role of Translator Adapters. Whenever the Translator class interface changes in the new release, the new class TranslatorAdapter_x_y_z is added to the translator_adapter.h file (here x, y, and z are numbers that correspond to the current official version of doxygen). All translators that previously derived from the Translator class now derive from this adapter class.

The TranslatorAdapter_x_y_z class implements the new, required methods. If the new method replaces some similar but obsolete method(s) (e.g. if the number of arguments changed and/or the functionality of the older method was changed or enriched), the TranslatorAdapter_x_y_z class may use the obsolete method to get the result which is as close as possible to the older result in the target language. If it is not possible, the result (the default translation) is obtained using the English translator, which is (by definition) always up-to-date.

For example, when the new trFile() method with parameters (to determine the capitalization of the first letter and the singular/plural form) was introduced to replace the older method trFiles() without arguments, the following code appeared in one of the translator adapter classes:

    /*! This is the default implementation of the obsolete method
     * used in the documentation of a group before the list of
     * links to documented files.  This is possibly localized.
     */
    virtual QCString trFiles()
    { return "Files"; }

    /*! This is the localized implementation of newer equivalent
     * using the obsolete method trFiles().
     */
    virtual QCString trFile(bool first_capital, bool singular)
    {
      if (first_capital && !singular)
        return trFiles();  // possibly localized, obsolete method
      else
        return english.trFile(first_capital, singular);
    }

The trFiles() is not present in the TranslatorEnglish class, because it was removed as obsolete. However, it was used until now and its call was replaced by

    trFile(true, false)

in the doxygen source files. Probably, many language translators implemented the obsolete method, so it perfectly makes sense to use the same language dependent result in those cases. The TranslatorEnglish does not implement the old method. It derives from the abstract Translator class. On the other hand, the old translator for a different language does not implement the new trFile() method. Because of that it is derived from another base class – TranslatorAdapter_x_y_z. The TranslatorAdapter_x_y_z class has to implement the new, required trFile() method. However, the translator adapter would not be compiled if the trFiles() method was not implemented. This is the reason for implementing the old method in the translator adapter class (using the same code, that was removed from the TranslatorEnglish).

The simplest way would be to pass the arguments to the English translator and to return its result. Instead, the adapter uses the old trFiles() in one special case – when the new trFile(true, false) is called. This is the mostly used case at the time of introducing the new method – see above. While this may look too complicated, the technique allows the developers of the core sources to change the Translator interface, while the users may not even notice the change. Of course, when the new trFile() is used with different arguments, the English result is returned and it will be noticed by non English users. Here the maintainer of the language translator should implement at least that one particular method.

What says the base class of a language translator? If the language translator class inherits from any adapter class then maintenance is needed. In such case, the language translator is considered not up-to-date. On the other hand, if the language translator derives directly from the abstract class Translator, the language translator is up-to-date.

The translator adapter classes are chained so that the older translator adapter class uses the one-step-newer translator adapter as the base class. The newer adapter does less adapting work than the older one. The oldest adapter class derives (indirectly) from all of the adapter classes. The name of the adapter class is chosen so that its suffix is derived from the previous official version of doxygen that did not need the adapter. This way, one can say approximately, when the language translator class was last updated – see details below.

The newest translator adapter derives from the abstract TranslatorAdapterBase class that derives directly from the abstract Translator class. It adds only the private English-translator member for easy implementation of the default translation inside the adapter classes, and it also enforces implementation of one method for notifying the user that the language translation is not up-to-date (because of that some sentences in the generated files may appear in English).

Once the oldest adapter class is not used by any of the language translators, it can be removed from the doxygen project. The maintainers should try to reach the state with the minimal number of translator adapter classes.

To simplify the maintenance of the language translator classes for the supported languages, the translator.py Python script was developed (located in doxygen/doc directory). It extracts the important information about obsolete and new methods from the source files for each of the languages. The information is stored in the translator report ASCII file (translator_report.txt).

If you compiled this documentation from sources and if you have also doxygen sources available the link doxygen/doc/translator_report.txt should be valid.

Looking at the base class of the language translator, the script guesses also the status of the translator – see the last column of the table with languages above. The translator.py is called automatically when the doxygen documentation is generated. You can also run the script manually whenever you feel that it can help you. Of course, you are not forced to use the results of the script. You can find the same information by looking at the adapter class and its base classes.

How should I update my language translator? First, you should be the language maintainer, or you should let him/her know about the changes. The following text was written for the language maintainers as the primary audience.

There are several approaches to be taken when updating your language. If you are not extremely busy, you should always chose the most radical one. When the update takes much more time than you expected, you can always decide use some suitable translator adapter to finish the changes later and still make your translator working.

The most radical way of updating the language translator is to make your translator class derive directly from the abstract class Translator and provide translations for the methods that are required to be implemented – the compiler will tell you if you forgot to implement some of them. If you are in doubt, have a look at the TranslatorEnglish class to recognize the purpose of the implemented method. Looking at the previously used adapter class may help you sometimes, but it can also be misleading because the adapter classes do implement also the obsolete methods (see the previous trFiles() example).

In other words, the up-to-date language translators do not need the TranslatorAdapter_x_y_z classes at all, and you do not need to implement anything else than the methods required by the Translator class (i.e. the pure virtual methods of the Translator – they end with =0;).

If everything compiles fine, try to run translator.py, and have a look at the translator report (ASCII file) at the doxygen/doc directory. Your translator is marked as up-to-date only if the script does not detect anything special. If the translator uses the Translator base class, there still may be some remarks related to your source code. In the case, the translator is marked as almost up-to-date. Namely, the obsolete methods–that are not used at all–may be listed in the section for your language. Simply, remove their code (and run the translator.py again). Also, you will be informed when you forgot to change the base class of your translator class to some newer adapter class or directly to the Translator class.

If you do not have time to finish all the updates you should still start with the most radical approach as described above. You can always change the base class to the translator adapter class that implements all of the not-yet-implemented methods.

If you prefer to update your translator gradually, have a look at TranslatorEnglish (the translator_en.h file). Inside, you will find the comments like new since 1.2.4 that separate always a number of methods that were implemented in the stated version. Do implement the group of methods that are placed below the comment that uses the same version numbers as your translator adapter class. (For example, your translator class have to use the TranslatorAdapter_1_2_4, if it does not implement the methods below the comment new since 1.2.4. When you implement them, your class should use a newer translator adapter.

Run the translator.py script occasionally and give it your xx identification (from translator_xx.h) to create the translator report shorter (also produced faster) – it will contain only the information related to your translator. Once you reach the state when the base class should be changed to some newer adapter, you will see the note in the translator report.

Warning: Don't forget to compile doxygen to discover, whether it is compilable. The translator.py does not check if everything is correct with respect to the compiler. Because of that, it may lie sometimes about the necessary base class.

The most obsolete language translators would lead to implementation of too complicated adapters. Because of that, doxygen developers may decide to derive such translators from the TranslatorEnglish class, which is by definition always up-to-date.

When doing so, all the missing methods will be replaced by the English translation. This means that not-implemented methods will always return the English result. Such translators are marked using the word obsolete. You should read it really obsolete. No guess about the last update can be done.

Often, it is possible to construct better result from the obsolete methods. Because of that, the translator adapter classes should be used if possible. On the other hand, implementation of adapters for really obsolete translators brings too much maintenance and run-time overhead.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Perl Module Output

Doxygen
Perl Module Output

Since version 1.2.18, Doxygen can generate a new output format we have called the "Perl Module output format". It has been designed as an intermediate format that can be used to generate new and customized output without having to modify the Doxygen source. Therefore, its purpose is similar to the XML output format that can be also generated by Doxygen. The XML output format is more standard, but the Perl Module output format is possibly simpler and easier to use.

The Perl Module output format is still experimental at the moment and could be changed in incompatible ways in future versions, although this should not be very probable. It is also lacking some features of other Doxygen backends. However, it can be already used to generate useful output, as shown by the Perl Module-based [image] generator.

Please report any bugs or problems you find in the Perl Module backend or the Perl Module-based [image] generator to the doxygen-develop mailing list. Suggestions are welcome as well.

Usage

When the GENERATE_PERLMOD tag is enabled in the Doxyfile, running Doxygen generates a number of files in the perlmod/ subdirectory of your output directory. These files are the following:

  • DoxyDocs.pm: This is the Perl module that actually contains the documentation, in the Perl Module format described below.

  • DoxyModel.pm: This Perl module describes the structure of DoxyDocs.pm, independently of the actual documentation. See below for details.

  • doxyrules.make: This file contains the make rules to build and clean the files that are generated from the Doxyfile. Also contains the paths to those files and other relevant information. This file is intended to be included by your own Makefile.

  • Makefile: This is a simple Makefile including doxyrules.make.

To make use of the documentation stored in DoxyDocs.pm you can use one of the default Perl Module-based generators provided by Doxygen (at the moment this includes the Perl Module-based [image] generator, see below) or write your own customized generator. This should not be too hard if you have some knowledge of Perl and it's the main purpose of including the Perl Module backend in Doxygen. See below for details on how to do this.

<– want to use [image] but not possible in headings –>

Using the LaTeX generator.

The Perl Module-based [image] generator is pretty experimental and incomplete at the moment, but you could find it useful nevertheless. It can generate documentation for functions, typedefs and variables within files and classes and can be customized quite a lot by redefining [image] macros. However, there is still no documentation on how to do this.

Setting the PERLMOD_LATEX tag to YES in the Doxyfile enables the creation of some additional files in the perlmod/ subdirectory of your output directory. These files contain the Perl scripts and [image] code necessary to generate PDF and DVI output from the Perl Module output, using pdflatex and latex respectively. Rules to automate the use of these files are also added to doxyrules.make and the Makefile.

The additional generated files are the following:

  • doxylatex.pl: This Perl script uses DoxyDocs.pm and DoxyModel.pm to generate doxydocs.tex, a [image] file containing the documentation in a format that can be accessed by [image] code. This file is not directly LaTeXable.

  • doxyformat.tex: This file contains the [image] code that transforms the documentation from doxydocs.tex into [image] text suitable to be [image] 'ed and presented to the user.

  • doxylatex-template.pl: This Perl script uses DoxyModel.pm to generate doxytemplate.tex, a [image] file defining default values for some macros. doxytemplate.tex is included by doxyformat.tex to avoid the need of explicitly defining some macros.

  • doxylatex.tex: This is a very simple [image] document that loads some packages and includes doxyformat.tex and doxydocs.tex. This document is [image] 'ed to produce the PDF and DVI documentation by the rules added to doxyrules.make.

Creation of PDF and DVI output

To try this you need to have installed latex, pdflatex and the packages used by doxylatex.tex.

  1. Update your Doxyfile to the latest version using:

    doxygen -u Doxyfile

  2. Set both GENERATE_PERLMOD and PERLMOD_LATEX tags to YES in your Doxyfile.

  3. Run Doxygen on your Doxyfile:

    doxygen Doxyfile

  4. A perlmod/ subdirectory should have appeared in your output directory. Enter the perlmod/ subdirectory and run:

    make pdf

    This should generate a doxylatex.pdf with the documentation in PDF format.

  5. Run:

    make dvi

    This should generate a doxylatex.dvi with the documentation in DVI format.

Documentation format.

The Perl Module documentation generated by Doxygen is stored in DoxyDocs.pm. This is a very simple Perl module that contains only two statements: an assignment to the variable $doxydocs and the customary 1; statement which usually ends Perl modules. The documentation is stored in the variable $doxydocs, which can then be accessed by a Perl script using DoxyDocs.pm.

$doxydocs contains a tree-like structure composed of three types of nodes: strings, hashes and lists.

  • Strings: These are normal Perl strings. They can be of any length can contain any character. Their semantics depends on their location within the tree. This type of node has no children.

  • Hashes: These are references to anonymous Perl hashes. A hash can have multiple fields, each with a different key. The value of a hash field can be a string, a hash or a list, and its semantics depends on the key of the hash field and the location of the hash within the tree. The values of the hash fields are the children of the node.

  • Lists: These are references to anonymous Perl lists. A list has an undefined number of elements, which are the children of the node. Each element has the same type (string, hash or list) and the same semantics, depending on the location of the list within the tree.

As you can see, the documentation contained in $doxydocs does not present any special impediment to be processed by a simple Perl script.

Data structure

You might be interested in processing the documentation contained in DoxyDocs.pm without needing to take into account the semantics of each node of the documentation tree. For this purpose, Doxygen generates a DoxyModel.pm file which contains a data structure describing the type and children of each node in the documentation tree.

The rest of this section is to be written yet, but in the meantime you can look at the Perl scripts generated by Doxygen (such as doxylatex.pl or doxytemplate-latex.pl) to get an idea on how to use DoxyModel.pm.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:44 for Doxygen by doxygen 1.8.7


Doxygen: Perl Module Tree Nodes

Doxygen
Perl Module Tree Nodes

Nodes in the documentation tree of the Perl Module output format.

This is a description of the structure of the documentation tree in DoxyDocs.pm. Each item in the list below describes a node in the tree, and the format of the description is as follows:

  • [ key => ] Name (type). Explanation of the content.

Where

  • The "key =>" part only appears if the parent node is a hash. "key" is the key for this node.

  • "Name" is a unique name for the node, defined in DoxyModel.pm.

  • "(type)" is the type of the node: "string" for string nodes, "hash" for hash nodes, "list" for list nodes, and "doc" for documentation subtrees. The structure of documentation subtrees is not described anywhere yet, but you can look for example at doxylatex.pl to see how to process it.

The meaning of each node in the documentation tree is as follows:

  • Root (hash). Root node.
    • classes => Classes (list). Documented classes.
      • Class (hash). A documented class.
        • protected_members => ClassProtectedMembers (hash). Information about the protected members in the class.
          • members => ClassProtectedMemberList (list). protected member list.
            • ClassProtectedMember (hash). A protected member.
              • protection => ClassProtectedMemberProtection (string). Protection of the protected member.
              • detailed => ClassProtectedMemberDetailed (hash). Detailed information about the protected member.
                • doc => ClassProtectedMemberDetailedDoc (doc). Detailed documentation for the protected member.
                • see => ClassProtectedMemberSee (doc). "See also" documentation for the protected member.
              • kind => ClassProtectedMemberKind (string). Kind of protected member (usually "variable").
              • name => ClassProtectedMemberName (string). Name of the protected member.
              • type => ClassProtectedMemberType (string). Data type of the protected member.
        • detailed => ClassDetailed (hash). Detailed information about the class.
          • doc => ClassDetailedDoc (doc). Detailed documentation block for the class.
        • protected_typedefs => ClassProtectedTypedefs (hash). Information about the protected typedefs in the class.
          • members => ClassProtectedTypedefList (list). protected typedef list.
            • ClassProtectedTypedef (hash). A protected typedef.
              • protection => ClassProtectedTypedefProtection (string). Protection of the protected typedef.
              • detailed => ClassProtectedTypedefDetailed (hash). Detailed information about the protected typedef.
                • doc => ClassProtectedTypedefDetailedDoc (doc). Detailed documentation for the protected typedef.
                • see => ClassProtectedTypedefSee (doc). "See also" documentation for the protected typedef.
              • kind => ClassProtectedTypedefKind (string). Kind of protected typedef (usually "typedef").
              • name => ClassProtectedTypedefName (string). Name of the protected typedef.
              • type => ClassProtectedTypedefType (string). Data type of the protected typedef.
        • name => ClassName (string). Name of the class.
        • private_members => ClassPrivateMembers (hash). Information about the private members in the class.
          • members => ClassPrivateMemberList (list). private member list.
            • ClassPrivateMember (hash). A private member.
              • protection => ClassPrivateMemberProtection (string). Protection of the private member.
              • detailed => ClassPrivateMemberDetailed (hash). Detailed information about the private member.
                • doc => ClassPrivateMemberDetailedDoc (doc). Detailed documentation for the private member.
                • see => ClassPrivateMemberSee (doc). "See also" documentation for the private member.
              • kind => ClassPrivateMemberKind (string). Kind of private member (usually "variable").
              • name => ClassPrivateMemberName (string). Name of the private member.
              • type => ClassPrivateMemberType (string). Data type of the private member.
        • private_typedefs => ClassPrivateTypedefs (hash). Information about the private typedefs in the class.
          • members => ClassPrivateTypedefList (list). private typedef list.
            • ClassPrivateTypedef (hash). A private typedef.
              • protection => ClassPrivateTypedefProtection (string). Protection of the private typedef.
              • detailed => ClassPrivateTypedefDetailed (hash). Detailed information about the private typedef.
                • doc => ClassPrivateTypedefDetailedDoc (doc). Detailed documentation for the private typedef.
                • see => ClassPrivateTypedefSee (doc). "See also" documentation for the private typedef.
              • kind => ClassPrivateTypedefKind (string). Kind of private typedef (usually "typedef").
              • name => ClassPrivateTypedefName (string). Name of the private typedef.
              • type => ClassPrivateTypedefType (string). Data type of the private typedef.
        • protected_methods => ClassProtectedMethods (hash). Information about the protected methods in the class.
          • members => ClassProtectedMethodList (list). protected method list.
            • ClassProtectedMethod (hash). A protected method.
              • parameters => ClassProtectedMethodParams (list). List of the parameters of the protected method.
                • ClassProtectedMethodParam (hash). A parameter of the protected method.
                  • declaration_name => ClassProtectedMethodParamName (string). The name of the parameter.
                  • type => ClassProtectedMethodParamType (string). The data type of the parameter.
              • protection => ClassProtectedMethodProtection (string). Protection of the protected method.
              • virtualness => ClassProtectedMethodVirtualness (string). Virtualness of the protected method.
              • detailed => ClassProtectedMethodDetailed (hash). Detailed information about the protected method.
                • params => ClassProtectedMethodPDBlocks (list). List of parameter documentation blocks for the protected method.
                  • ClassProtectedMethodPDBlock (hash). A parameter documentation block for the protected method.
                    • parameters => ClassProtectedMethodPDParams (list). Parameter list for this parameter documentation block.
                      • ClassProtectedMethodPDParam (hash). A parameter documented by this documentation block.
                        • name => ClassProtectedMethodPDParamName (string). Name of the parameter.
                    • doc => ClassProtectedMethodPDDoc (doc). Documentation for this parameter documentation block.
                • doc => ClassProtectedMethodDetailedDoc (doc). Detailed documentation for the protected method.
                • see => ClassProtectedMethodSee (doc). "See also" documentation for the protected method.
                • return => ClassProtectedMethodReturn (doc). Documentation about the return value of the protected method.
              • kind => ClassProtectedMethodKind (string). Kind of protected method (usually "function").
              • name => ClassProtectedMethodName (string). Name of the protected method.
              • type => ClassProtectedMethodType (string). Data type returned by the protected method.
              • static => ClassProtectedMethodStatic (string). Whether the protected method is static.
        • public_typedefs => ClassPublicTypedefs (hash). Information about the public typedefs in the class.
          • members => ClassPublicTypedefList (list). public typedef list.
            • ClassPublicTypedef (hash). A public typedef.
              • protection => ClassPublicTypedefProtection (string). Protection of the public typedef.
              • detailed => ClassPublicTypedefDetailed (hash). Detailed information about the public typedef.
                • doc => ClassPublicTypedefDetailedDoc (doc). Detailed documentation for the public typedef.
                • see => ClassPublicTypedefSee (doc). "See also" documentation for the public typedef.
              • kind => ClassPublicTypedefKind (string). Kind of public typedef (usually "typedef").
              • name => ClassPublicTypedefName (string). Name of the public typedef.
              • type => ClassPublicTypedefType (string). Data type of the public typedef.
        • public_members => ClassPublicMembers (hash). Information about the public members in the class.
          • members => ClassPublicMemberList (list). public member list.
            • ClassPublicMember (hash). A public member.
              • protection => ClassPublicMemberProtection (string). Protection of the public member.
              • detailed => ClassPublicMemberDetailed (hash). Detailed information about the public member.
                • doc => ClassPublicMemberDetailedDoc (doc). Detailed documentation for the public member.
                • see => ClassPublicMemberSee (doc). "See also" documentation for the public member.
              • kind => ClassPublicMemberKind (string). Kind of public member (usually "variable").
              • name => ClassPublicMemberName (string). Name of the public member.
              • type => ClassPublicMemberType (string). Data type of the public member.
        • private_methods => ClassPrivateMethods (hash). Information about the private methods in the class.
          • members => ClassPrivateMethodList (list). private method list.
            • ClassPrivateMethod (hash). A private method.
              • parameters => ClassPrivateMethodParams (list). List of the parameters of the private method.
                • ClassPrivateMethodParam (hash). A parameter of the private method.
                  • declaration_name => ClassPrivateMethodParamName (string). The name of the parameter.
                  • type => ClassPrivateMethodParamType (string). The data type of the parameter.
              • protection => ClassPrivateMethodProtection (string). Protection of the private method.
              • virtualness => ClassPrivateMethodVirtualness (string). Virtualness of the private method.
              • detailed => ClassPrivateMethodDetailed (hash). Detailed information about the private method.
                • params => ClassPrivateMethodPDBlocks (list). List of parameter documentation blocks for the private method.
                  • ClassPrivateMethodPDBlock (hash). A parameter documentation block for the private method.
                    • parameters => ClassPrivateMethodPDParams (list). Parameter list for this parameter documentation block.
                      • ClassPrivateMethodPDParam (hash). A parameter documented by this documentation block.
                        • name => ClassPrivateMethodPDParamName (string). Name of the parameter.
                    • doc => ClassPrivateMethodPDDoc (doc). Documentation for this parameter documentation block.
                • doc => ClassPrivateMethodDetailedDoc (doc). Detailed documentation for the private method.
                • see => ClassPrivateMethodSee (doc). "See also" documentation for the private method.
                • return => ClassPrivateMethodReturn (doc). Documentation about the return value of the private method.
              • kind => ClassPrivateMethodKind (string). Kind of private method (usually "function").
              • name => ClassPrivateMethodName (string). Name of the private method.
              • type => ClassPrivateMethodType (string). Data type returned by the private method.
              • static => ClassPrivateMethodStatic (string). Whether the private method is static.
        • public_methods => ClassPublicMethods (hash). Information about the public methods in the class.
          • members => ClassPublicMethodList (list). public method list.
            • ClassPublicMethod (hash). A public method.
              • parameters => ClassPublicMethodParams (list). List of the parameters of the public method.
                • ClassPublicMethodParam (hash). A parameter of the public method.
                  • declaration_name => ClassPublicMethodParamName (string). The name of the parameter.
                  • type => ClassPublicMethodParamType (string). The data type of the parameter.
              • protection => ClassPublicMethodProtection (string). Protection of the public method.
              • virtualness => ClassPublicMethodVirtualness (string). Virtualness of the public method.
              • detailed => ClassPublicMethodDetailed (hash). Detailed information about the public method.
                • params => ClassPublicMethodPDBlocks (list). List of parameter documentation blocks for the public method.
                  • ClassPublicMethodPDBlock (hash). A parameter documentation block for the public method.
                    • parameters => ClassPublicMethodPDParams (list). Parameter list for this parameter documentation block.
                      • ClassPublicMethodPDParam (hash). A parameter documented by this documentation block.
                        • name => ClassPublicMethodPDParamName (string). Name of the parameter.
                    • doc => ClassPublicMethodPDDoc (doc). Documentation for this parameter documentation block.
                • doc => ClassPublicMethodDetailedDoc (doc). Detailed documentation for the public method.
                • see => ClassPublicMethodSee (doc). "See also" documentation for the public method.
                • return => ClassPublicMethodReturn (doc). Documentation about the return value of the public method.
              • kind => ClassPublicMethodKind (string). Kind of public method (usually "function").
              • name => ClassPublicMethodName (string). Name of the public method.
              • type => ClassPublicMethodType (string). Data type returned by the public method.
              • static => ClassPublicMethodStatic (string). Whether the public method is static.
    • files => Files (list). Documented files.
      • File (hash). A documented file.
        • detailed => FileDetailed (hash). Detailed information about the file.
          • doc => FileDetailedDoc (doc). Detailed documentation block for the file.
        • functions => FileFunctions (hash). Information about the functions in the file.
          • members => FileFunctionList (list). function list.
            • FileFunction (hash). A function.
              • parameters => FileFunctionParams (list). List of the parameters of the function.
                • FileFunctionParam (hash). A parameter of the function.
                  • declaration_name => FileFunctionParamName (string). The name of the parameter.
                  • type => FileFunctionParamType (string). The data type of the parameter.
              • protection => FileFunctionProtection (string). Protection of the function.
              • virtualness => FileFunctionVirtualness (string). Virtualness of the function.
              • detailed => FileFunctionDetailed (hash). Detailed information about the function.
                • params => FileFunctionPDBlocks (list). List of parameter documentation blocks for the function.
                  • FileFunctionPDBlock (hash). A parameter documentation block for the function.
                    • parameters => FileFunctionPDParams (list). Parameter list for this parameter documentation block.
                      • FileFunctionPDParam (hash). A parameter documented by this documentation block.
                        • name => FileFunctionPDParamName (string). Name of the parameter.
                    • doc => FileFunctionPDDoc (doc). Documentation for this parameter documentation block.
                • doc => FileFunctionDetailedDoc (doc). Detailed documentation for the function.
                • see => FileFunctionSee (doc). "See also" documentation for the function.
                • return => FileFunctionReturn (doc). Documentation about the return value of the function.
              • kind => FileFunctionKind (string). Kind of function (usually "function").
              • name => FileFunctionName (string). Name of the function.
              • type => FileFunctionType (string). Data type returned by the function.
              • static => FileFunctionStatic (string). Whether the function is static.
        • name => FileName (string). Name of the file.
        • variables => FileVariables (hash). Information about the variables in the file.
          • members => FileVariableList (list). variable list.
            • FileVariable (hash). A variable.
              • protection => FileVariableProtection (string). Protection of the variable.
              • detailed => FileVariableDetailed (hash). Detailed information about the variable.
                • doc => FileVariableDetailedDoc (doc). Detailed documentation for the variable.
                • see => FileVariableSee (doc). "See also" documentation for the variable.
              • kind => FileVariableKind (string). Kind of variable (usually "variable").
              • name => FileVariableName (string). Name of the variable.
              • type => FileVariableType (string). Data type of the variable.
        • typedefs => FileTypedefs (hash). Information about the typedefs in the file.
          • members => FileTypedefList (list). typedef list.
            • FileTypedef (hash). A typedef.
              • protection => FileTypedefProtection (string). Protection of the typedef.
              • detailed => FileTypedefDetailed (hash). Detailed information about the typedef.
                • doc => FileTypedefDetailedDoc (doc). Detailed documentation for the typedef.
                • see => FileTypedefSee (doc). "See also" documentation for the typedef.
              • kind => FileTypedefKind (string). Kind of typedef (usually "typedef").
              • name => FileTypedefName (string). Name of the typedef.
              • type => FileTypedefType (string). Data type of the typedef.

Go to the next section or return to the index.

Generated on Sun Apr 20 2014 18:54:45 for Doxygen by doxygen 1.8.7


Doxygen: Doxygen's Internals

Doxygen
Doxygen's Internals

Doxygen's internals

Note that this section is still under construction!

The following picture shows how source files are processed by doxygen.

Data flow overview

The following sections explain the steps above in more detail.

Config parser

The configuration file that controls the settings of a project is parsed and the settings are stored in the singleton class Config in src/config.h. The parser itself is written using flex and can be found in src/config.l. This parser is also used directly by doxywizard, so it is put in a separate library.

Each configuration option has one of 5 possible types: String, List, Enum, Int, or Bool. The values of these options are available through the global functions Config_getXXX(), where XXX is the type of the option. The argument of these function is a string naming the option as it appears in the configuration file. For instance: Config_getBool("GENERATE_TESTLIST") returns a reference to a boolean value that is TRUE if the test list was enabled in the config file.

The function readConfiguration() in src/doxygen.cpp reads the command line options and then calls the configuration parser.

C Preprocessor

The input files mentioned in the config file are (by default) fed to the C Preprocessor (after being piped through a user defined filter if available).

The way the preprocessor works differs somewhat from a standard C Preprocessor. By default it does not do macro expansion, although it can be configured to expand all macros. Typical usage is to only expand a user specified set of macros. This is to allow macro names to appear in the type of function parameters for instance.

Another difference is that the preprocessor parses, but not actually includes code when it encounters a #include (with the exception of #include found inside { ... } blocks). The reasons behind this deviation from the standard is to prevent feeding multiple definitions of the same functions/classes to doxygen's parser. If all source files would include a common header file for instance, the class and type definitions (and their documentation) would be present in each translation unit.

The preprocessor is written using flex and can be found in src/pre.l. For condition blocks (#if) evaluation of constant expressions is needed. For this a yacc based parser is used, which can be found in src/constexp.y and src/constexp.l.

The preprocessor is invoked for each file using the preprocessFile() function declared in src/pre.h, and will append the preprocessed result to a character buffer. The format of the character buffer is

0x06 file name 1
0x06 preprocessed contents of file 1
...
0x06 file name n
0x06 preprocessed contents of file n

Language parser

The preprocessed input buffer is fed to the language parser, which is implemented as a big state machine using flex. It can be found in the file src/scanner.l. There is one parser for all languages (C/C++/Java/IDL). The state variables insideIDL and insideJava are uses at some places for language specific choices.

The task of the parser is to convert the input buffer into a tree of entries (basically an abstract syntax tree). An entry is defined in src/entry.h and is a blob of loosely structured information. The most important field is section which specifies the kind of information contained in the entry.

Possible improvements for future versions:

  • Use one scanner/parser per language instead of one big scanner.
  • Move the first pass parsing of documentation blocks to a separate module.
  • Parse defines (these are currently gathered by the preprocessor, and ignored by the language parser).

Data organizer

This step consists of many smaller steps, that build dictionaries of the extracted classes, files, namespaces, variables, functions, packages, pages, and groups. Besides building dictionaries, during this step relations (such as inheritance relations), between the extracted entities are computed.

Each step has a function defined in src/doxygen.cpp, which operates on the tree of entries, built during language parsing. Look at the "Gathering information" part of parseInput() for details.

The result of this step is a number of dictionaries, which can be found in the Doxygen "namespace" defined in src/doxygen.h. Most elements of these dictionaries are derived from the class Definition; The class MemberDef, for instance, holds all information for a member. An instance of such a class can be part of a file ( class FileDef ), a class ( class ClassDef ), a namespace ( class NamespaceDef ), a group ( class GroupDef ), or a Java package ( class PackageDef ).

Tag file parser

If tag files are specified in the configuration file, these are parsed by a SAX based XML parser, which can be found in src/tagreader.cpp. The result of parsing a tag file is the insertion of Entry objects in the entry tree. The field Entry::tagInfo is used to mark the entry as external, and holds information about the tag file.

Documentation parser

Special comment blocks are stored as strings in the entities that they document. There is a string for the brief description and a string for the detailed description. The documentation parser reads these strings and executes the commands it finds in it (this is the second pass in parsing the documentation). It writes the result directly to the output generators.

The parser is written in C++ and can be found in src/docparser.cpp. The tokens that are eaten by the parser come from src/doctokenizer.l. Code fragments found in the comment blocks are passed on to the source parser.

The main entry point for the documentation parser is validatingParseDoc() declared in src/docparser.h. For simple texts with special commands validatingParseText() is used.

Source parser

If source browsing is enabled or if code fragments are encountered in the documentation, the source parser is invoked.

The code parser tries to cross-reference to source code it parses with documented entities. It also does syntax highlighting of the sources. The output is directly written to the output generators.

The main entry point for the code parser is parseCode() declared in src/code.h.

Output generators

After data is gathered and cross-referenced, doxygen generates output in various formats. For this it uses the methods provided by the abstract class OutputGenerator. In order to generate output for multiple formats at once, the methods of OutputList are called instead. This class maintains a list of concrete output generators, where each method called is delegated to all generators in the list.

To allow small deviations in what is written to the output for each concrete output generator, it is possible to temporarily disable certain generators. The OutputList class contains various disable() and enable() methods for this. The methods OutputList::pushGeneratorState() and OutputList::popGeneratorState() are used to temporarily save the set of enabled/disabled output generators on a stack.

The XML is generated directly from the gathered data structures. In the future XML will be used as an intermediate language (IL). The output generators will then use this IL as a starting point to generate the specific output formats. The advantage of having an IL is that various independently developed tools written in various languages, could extract information from the XML output. Possible tools could be:

  • an interactive source browser
  • a class diagram generator
  • computing code metrics.

Debugging

Since doxygen uses a lot of flex code it is important to understand how flex works (for this one should read the man page) and to understand what it is doing when flex is parsing some input. Fortunately, when flex is used with the -d option it outputs what rules matched. This makes it quite easy to follow what is going on for a particular input fragment.

To make it easier to toggle debug information for a given flex file I wrote the following perl script, which automatically adds or removes -d from the correct line in the Makefile:

#!/usr/bin/perl

$file = shift @ARGV;
print "Toggle debugging mode for $file\n";

# add or remove the -d flex flag in the makefile
unless (rename "Makefile.libdoxygen","Makefile.libdoxygen.old") {
  print STDERR "Error: cannot rename Makefile.libdoxygen!\n";
  exit 1;
}
if (open(F,"<Makefile.libdoxygen.old")) {
  unless (open(G,">Makefile.libdoxygen")) {
    print STDERR "Error: opening file Makefile.libdoxygen for writing\n";
    exit 1;
  }
  print "Processing Makefile.libdoxygen...\n";
  while (<F>) {
    if ( s/\(LEX\) (-i )?-P([a-zA-Z]+)YY -t $file/(LEX) -d \1-P\2YY -t $file/g ) {
      print "Enabling debug info for $file\n";
    }
    elsif ( s/\(LEX\) -d (-i )?-P([a-zA-Z]+)YY -t $file/(LEX) \1-P\2YY -t $file/g ) {
      print "Disabling debug info for $file\n";
    }
    print G "$_";
  }
  close F;
  unlink "Makefile.libdoxygen.old";
}
else {
  print STDERR "Warning file Makefile.libdoxygen.old does not exist!\n";
}

# touch the file
$now = time;
utime $now, $now, $file

Another way to get rules matching / debugging information from the flex code is in the following way:

touch src/<flex code file>.l
make LEX="flex -d"

to remove the rules / debug information again:

touch src/<flex codefile>.l
make

Note that by running doxygen with -d lex you get information about which flex codefile is used.

Return to the index.

Generated on Sun Apr 20 2014 18:54:45 for Doxygen by doxygen 1.8.7


Doxygen: Changelog

Doxygen
Changelog

Table of Contents

  • 1.8 Series
    • Release 1.8.7
    • Release 1.8.6
    • Release 1.8.5
    • Release 1.8.4
    • Release 1.8.3.1
    • Release 1.8.3
    • Release 1.8.2
    • Release 1.8.1.2
    • Release 1.8.1.1
    • Release 1.8.1
    • Release 1.8.0
  • 1.7 Series
  • 1.6 Series

1.8 Series

Release 1.8.7

(release date 21-04-2014)

  • Bug 436885 - c-source and h-source missing for latex [view]
  • Bug 625601 - FORTRAN: recognition free versus fixed formatted code [view]
  • Bug 626172 - Latex $projectname with "&" gets no escaped [view]
  • Bug 643618 - Fortran: variable with name "type" confuses Doxygen [view]
  • Bug 674851 - Percent to prevent auto-linking in page title is not removed for navpath [view]
  • Bug 678436 - Nested \if messes up list items [view]
  • Bug 678436 - Nested \if messes up list items [view]
  • Bug 683115 - Command ignored when using umlauts in markdown and also C-comments in markdown didn't work properly [view]
  • Bug 692985 - Notes in xml output are not correctly separated [view]
  • Bug 705220 - Enables using unicode (non ASCII) to name output files [view]
  • Bug 705499 - Nested namespace causes incorrect display when referenced via .tag file [view]
  • Bug 712251 - Documentation for enumeration not generated [view]
  • Bug 720691 - Code coloring in case of file without extension [view]
  • Bug 721032 - Trouble with /cond /endcond [view]
  • Bug 721169 - Wrong call graph in simple situation [view]
  • Bug 721302 - [Latex/PDF] Merging brief and detailed description in file section [view]
  • Bug 721462 - Parsing problem with C++11 empty initializer lists [view]
  • Bug 721618 - Move contructors and move assignment operators of embedded classes of template classes cannot be matched. [view]
  • Bug 721878 - Dia diagrams not displayed by Firefox [view]
  • Bug 722457 - regression referencing namespaced type [view]
  • Bug 722603 - doxygen nested \if \endif sample not working [view]
  • Bug 722619 - doxygen 1.8.6 sorts the contents of a namespace by group within the Class List [view]
  • Bug 722711 - Link refs with no title swallow an extra newline [view]
  • Bug 722759 - Documentation for derived classes no longer has an "Additional Inherited Members" section after upgrading Doxygen from 1.8.3.1 to 1.8.6 [view]
  • Bug 722786 - configure --prefix=/opt/foo not accepted [view]
  • Bug 722788 - Command \| not working when last character in markdown table line [view]
  • Bug 723299 - Last line of code block lost if it is only one character and there is no text afterward [view]
  • Bug 723314 - Doxygen crashes on incorrect end group /**< @} */ [view]
  • Bug 723516 - star is not printed in \code environment [view]
  • Bug 724241 - Internal inconsistency: namespace in IDL [view]
  • Bug 724949 - Server side (PHP) search broke in 1.8.3 [view]
  • Bug 726219 - python3 import style causes doxygen to ignore some inheritances [view]
  • Bug 726294 - Markdown Extra - fenced code block: '>' before tab width parsed as block quote [view]
  • Bug 726469 - Tilde sign in combination with <pre> and MARKDOWN_SUPPORT disabled [view]
  • Bug 726722 - Blockquote followed by text inserts an extra paragraph [view]
  • Bug 726734 - alignment of blockquotes in pdf [view]
  • Bug 728077 - Build fails when --with-libclang on Fedora [view]
  • Bug 728530 - Crash on \addindex \term [view]
  • A new files have been added but is not incorporated in the windows build part [view]
  • Add docbook directory to be removed as well [view]
  • Add extra (documenattion) directories to ignore pattern [view]
  • Add index support to context [view]
  • Add line numbers in case comment is not closed properly. [view]
  • Add template context for annotated class index [view]
  • Add validation of internal consistency to html entity mapper [view]
  • Add warning when encountering a nested comment start (/*) without matching end (*/). [view]
  • Added \latexinclude command (thanks to Juan Zaratiegui for the patch) [view]
  • Added basic arithmetic operations to the template expressions, and made the expression lexer faster [view]
  • Added dir tree nodes to the context [view]
  • Added directory info to the context [view]
  • Added doc/config.doc to .gitignore [view]
  • Added language update for Swedish (thanks to Björn Palmqvist) [view]
  • Added last and first attributes to index tree node [view]
  • Added missing \+ command to build LaTeX manual [view]
  • Added new language maintainer for Swedish, removed generated file language.doc [view]
  • Added optional [block] option to \htmlonly [view]
  • Added reference counting for all context objects [view]
  • Added stricter URL filtering to prevent DOM Based XSS when the tree view is enabled [view]
  • Added support for \-- and \--- to prevent interpretation as ndash and mdash [view]
  • Added support for elif to the template language [view]
  • Added support for range tag in the template language [view]
  • Alterative way to get rules information from flex [view]
  • Better message in case doxygen -u is used [view]
  • Changed "See Also" back to "See also" [view]
  • Chm don't add images multiple times [view]
  • Command \< and \> are not properly shown in section headers (and consequently in index) [view]
  • Consistency of usage of the word LaTeX in the documentation [view]
  • Context enhancement [view]
  • Corrected some definitions for some Fortran keywords [view]
  • Disabled config dependency check to avoid regression [view]
  • Documentation corrections [view]
  • Enable Previous and Next buttons in chm output file [view]
  • Enabling possibility to have { and } in (latex) index items [view]
  • Error message is given for make distclean as generated_src is a directory [view]
  • Extension in config.xml if type=string with format=image [view]
  • Extension specific filtering [view]
  • Fix id parsing for atx markdown headers [view]
  • Fix segfault on invalid bounding FIG when patching dot [view]
  • Fix to VHDL scanner. [view]
  • Fix typos in russian translation [view]
  • Fixed Tidy's 'empty span' warning in HTML output [view]
  • Fixed compiler warnings in section.h [view]
  • Fixed difference between generated XML schema and XML files for HTML entities [view]
  • Fixed issues with @parblock and added regression test case [view]
  • Fixed issues with SEPARATE_MEMBER_PAGES and INLINE_SIMPLE_STRUCTS [view]
  • Fixed memory leak in nested comment administration [view]
  • Fixed off-by one error for last character in compound.xsd [view]
  • Fixed potential crash caused by overloading the variadic warn function [view]
  • Fixed problem handling Obj-C protocol list when proceeded by a newline [view]
  • Fixed problem with ending a paragraph when htmlonly was at the end of a comment block [view]
  • Fixed typo in changelog [view]
  • Fixed typo in doxyindexer.vcproj [view]
  • Fixes for missing build dependencies [view]
  • Give message when PROJECT_LOGO cannot be found or cannot be converted [view]
  • Handlingh of -- by \c and <code> results in - adjusted documentation [view]
  • Improve rendering of sub and superscripts in LaTeX [view]
  • Improved handling of percent symbol [view]
  • Improved performance of rendering large index pages, by replacing images in the tables by spans [view]
  • In case of sections with the same name they are not reported. [view]
  • Inconsistency in usage of simplesecr versus simplesectsep corrected [view]
  • Inconsistency in usage of simplesecr versus simplesectsep corrected [view]
  • Incorrect handling dependencies [view]
  • Items XML_SCHEMA and XML_DTD declared obsolete [view]
  • List only the project pages in "Related Pages" [view]
  • Made documentation more consistent [view]
  • Make sure all ids in g_linkRefs are lower case [view]
  • Make the MAN_SUBDIR setting overide the name of the directry the man pages are placed in. [view]
  • Meta tag in the HTML search page was not closed properly [view]
  • Minor fixes for the new build locations [view]
  • Missing & and chars after " in tree of chm documentation [view]
  • More context changes [view]
  • More work on the template and context mechanisms [view]
  • On windows citelist.doc remains [view]
  • Place where dot executable is found [view]
  • Properly escape the XCODE path. [view]
  • Pull out property names in Objective-C. [view]
  • Recognize all HTML4 special character entities [view]
  • Reduced and improved functionality of QList [view]
  • Removed config.doc as it is generated by configgen.py [view]
  • Removed generated file src/settings.h from source repository [view]
  • Removed message, minor restructuring [view]
  • Removed remark about installdox from the FAQ [view]
  • Restructered html entity handling [view]
  • Reverted #132 after submitter reported that it did not work [view]
  • Showing error message on windows in case on error on startup [view]
  • Simplified LaTeX header/footer escaping [view]
  • Some restructuring and some compiler warning fixes [view]
  • Spitting generated files better from source files [view]
  • Superfluous < sign [view]
  • Superfluous backslash in documentation [view]
  • Superfluous include removed [view]
  • Undo previous commit [view]
  • Unified DirFileContext and NestingContext [view]
  • Update doctokenizer.l [view]
  • Update doctokenizer.l [view]
  • Updated copyright [view]
  • Use \newline i.s.o. \par for linebreaks in LaTeX [view]
  • Use hook arrow for hyphens in symbol names in the LaTeX output. [view]
  • Wrong UTF 8 codes [view]
  • Fix broken links to subpages in LaTeX output [view]
  • \xmlonly aoppeared twice in see also section of \htmlonly and \docbookonly [view]
  • add css-escape to avoid jquery based xss [view]
  • add parameter [view]
  • add search.py, a client for doxygen_sqlite3.db [view]
  • add space between br and / for better compatibility [view]
  • added option to have numbers in the bookmark pane (PDF output) [view]
  • config.l: dependency checks for booleans [view]
  • detect python2 as Python 2 binary [view]
  • fixed compile issue on Linux [view]
  • pass libclang header file location; add paths for Ubuntu's llvm-3.4 [view]
  • sqlite3: SQLITE_TRANSIENTs [view]
  • sqlite3: add new searches to search.py [view]
  • sqlite3: clear bindings on errors and more care with return [view]
  • sqlite3: extract more info [view]
  • sqlite3: fedora has libsqlite3.so in /usr/lib64 [view]
  • sqlite3: leave out insertMemberReference until xref location is valid [view]
  • sqlite3: remove some debug messages [view]
  • sqlite3: speedup the SELECTs [view]
  • sqlite3: updates [view]
  • sqlite3: use the new qtools API [view]
  • testsqlite3: a test for sqlite3gen [view]
  • util/patternMatch: break when pattern is found [view]
  • util/patternMatch: don't extract a QCString(QFileInfo) each time we QRegExp.match [view]

Release 1.8.6

(release date 24-12-2013)

Bug fixes (ids refer to the bugzilla database, lines without bug id refer to commits in GitHub)

  • Bug 154880 - if "using namespace" used, call of a static member function in C++ is not recognized or recognized wrong
  • Bug 647517 - make install prepends a slash to the installation path Removed superfluous /
  • Bug 668424 - HTML links in RTF output are broken
  • Bug 683897 - class list not sorted?
  • Bug 692004 - show includes for free functions
  • Bug 693537 - Create possibility to keep user comments in Doxyfile
  • Bug 701949 - Latex: Hyperlinks for \secreflist / \refitem
  • Bug 702265 - Generated Doxyfile differs from result of doxygen -u (partial fix)
  • Bug 705910 - Indexing and searching cannot treat non ASCII identifiers
  • Bug 706520 - Fortran: in body documentation lands on wrong place In some cases, in propriety code, with in body Fortran documentation doxygen crashed. I REOPENED Bug_706520 for this
  • Bug 706804 - Fortran: Doxygen mixes up function-attributes with the return type test string should not be equal to "function" but should contain "function"
  • Bug 706813 - RPM build via spec file fails
  • Bug 706874 - Doxygen crash if missing new-line in a snippet
  • Bug 706916 - C++ exception specifications are no longer parsed correctly
  • Bug 707102 - update the Japanese translation
  • Bug 707353 - Accept IDs using unicode(non ASCII) characters in python codes
  • Bug 707389 - GENERATE_TREEVIEW=YES disables touch scrolling with Android 3.x
  • Bug 707431 - Cannot @ref or @link C++ operator overloads
  • Bug 707483 - Wrong page number and header in pdf output
  • Bug 707554 - When I use @INCLUDE DoxyWizard is closed Current directory was not changed at the right time so the include files could not be found in the "current" directory (i.e. the directory where the Doxyfile resides too, as this directory is shown as the current directory in the doxywizard). This is also important when the doxywizard is started from a shortcut.
  • Bug 707567 - Asterisks in comment wrongly displayed for @code
  • Bug 707641 - `FILTER_SOURCE_FILES=YES` required to build CALL_GRAPHS https://bugzilla.gnome.org/show_bug.cgi?id=707641
  • Bug 707685 - Fortran: error message when missing last EOL In case the original buffer in either fixed or free format code does not contain an EOL as last character, add it.
  • Bug 707713 - Add support for dia diagrams
  • Bug 707825 - Const treatment
  • Bug 707925 - False warning for Java "warning: missing ( in exception list on member"
  • Bug 707985 - Strange output when : appended to an parameter description
  • Bug 707995 - @copydoc not working for const member overloads
  • Bug 708446 - Deprecated list breaks HTML tree with xhtml extension
  • Bug 708455 - Enabling INLINE_SIMPLE_STRUCTS messes up Data Structures in tree
  • Bug 708806 - Wrong path to graph_legend figure in graph_legend.html when CREATE_SUBDIRS = YES
  • Bug 709052 - Templated and non-templated method mixup documentation
  • Bug 709226 - Struct member fields not documented with INLINE_SIMPLE_STRUCTS
  • Bug 709526 - C++ parsing problem with operators <<, <, >, >> inside templates
  • Bug 709706 - Terminating C comments within markdown files breaks aliases
  • Bug 709780 - Copying of files via \image tag can get confused by symlinks at the destination
  • Bug 709803 - Generated hhc file contains an error for a section of a mainpage
  • Bug 709845 - Fortran: problem with types with name starting with is
  • Bug 709870 - Broken links on members HTML page when using BUILTIN_STL_SUPPORT
  • Bug 709921 - position of linebreak in template argument list affects inheritance relation
  • Bug 710917 - Segfault while parsing a C file
  • Bug 710998 - latex_count=5 is not enough
  • Bug 711004 - Vertical bars cannot be sent straight to makeindex
  • Bug 711097 - Compiler warnings because char is unsigned on ARM/PPC: "comparison is always false"
  • Bug 711378 - Nested Aliases fail when the nested alias has two or more arguments.
  • Bug 711639 - [PATCH] #include does not work with absolute paths
  • Bug 711723 - Comment /**/ confuses doxygen
  • Bug 711787 - Long initialization line in C stops doxygen An extra "breakpoint" in the input string has been created in the form of a , (comma), so for initialization lines the line will be shorter and the , (comma) will be copied later on.
  • Bug 712795 - segmentation fault in memberdef.cpp
  • Bug 712819 - Some external namespaces appear in list despite having ALLEXTERNALS = NO
  • Bug 715172 - Consistently document Fortran's equivalent function bodies
  • Bug 719389 - HTML escaping incorrectly applied in source tooltips
  • Bug 719422 - private java class is mentioned in inherited by list of super class
  • Bug 719463 - Invalid null key and segmentation fault
  • Bug 719489 - Label "abstract" instead of "pure virtual" for Java language
  • Bug 719525 - Can't build because the definitions of ***YY_flex_debug are missing.
  • Bug 719591 - expand_as_defined macro does not properly work
  • Bug 719639 - @xrefitem with empty heading string
  • Bug 720046 - Document inline objective-C blocks
  • Bug 720092 - USE_MDFILE_AS_MAINPAGE doesn't work if full path is specified.
  • Bug 720580 - inline source browser shows wrong code with muilti-line c++11's raw strings
  • Add support for honoring svg image format preference in msc
  • Added @parblock and @endparblock commands
  • Added compile support for Mavericks
  • Added fix to avoid errors with older compilers.
  • Added generated files to gitignore
  • Added missing docs tag
  • Added missing pthread lib to doxyapp
  • Added missing space after @parblock
  • Added rudimentary support for Django like template system for output creation.
  • Added the possibility to specify the -d option in the Visual studio GUI on windows for the lex rules
  • Adjust internationalization part to current situation
  • Alignment of @code and @verbatim section When having a code and a verbatim section the boxes are not alligned, this patch fixes this. Example code, aa.c; standard Doxyfile: /** \file
  • Allow @ref to unlabeled markdown page by name, i.e. @ref mypage.md
  • Allow links to other markdown pages of the form [link text](page.md)
  • Avoid accessing uninitialized memory in fileToString
  • Build problem with unistd.h and Cygwin The standard g++ compiler under windows (win32-g++) has unistd.gh file; Microsoft windows does not have it, therfore it is better to use the winbuild directory in case of windows adn no dependency otherwise
  • Consistency in language part of the documentation Made documentation more inline with other parts of the documentation (regarding the way e.g. filenames are presented) Corrected some spelling errors Corrected the warning in the language.doc by placing ta reference to the files from which language.doc is generated Corrected the color for the languages that are still v1.4.6 (language name now also red in stead of a pink background, was confusing with languages that were 1.5 / 1.6 compatible)
  • Corrected some inconsistencies in the comments
  • Debug output for lexical analyzer
  • Deleted generated files from source repository
  • Doxygen didn't allow @ref to parameters of type reference to an array.
  • Doxysearch under Cygwin should not have extension cgi.exe but just .cgi
  • Esperanto not supported by htmlhelp compiler reverting for esperanto to default language (US English)
  • Fixed a number of compiler warnings reported by newer clang compiler
  • Fixed compilation issues in doxyapp
  • Fixed compile warning
  • Fixed compiler warning related to implicit size_t to int conversion
  • Fixed constness warning
  • Fixed invalid if statement found by cppcheck
  • Fixed issue with Romanian translator preventing treeview from working
  • Fixed regression autolinking C# template such as MyGenericClass<T>.g()
  • Fixed regression in argument matching for the template example
  • Fortran added keyword IMPURE
  • French translator up-to-date.
  • Internal documentation for debug possibilities Documentation regarding usage of -d option with [f]lex Initial documentation regarding the -d options with doxygen
  • LaTeX: Fix ToC entries of index/bibliography
  • Made lexer rule explicit
  • Make Python detection in configure work with version older than 2.7
  • Minor layout tweaks and extra guard
  • More fixes for the Windows build
  • Patch regarding generating the rules file for the windows build regarding languages, some inconsistencies in the (windows) build system, corrections to some spelling.
  • Regenerated language.doc
  • Removed japanese characters in maintainers.txt as they break the build
  • Removed redundant backslashes in regexp pattern
  • Report details about fork() failure in logs.
  • Russian translator updated, new Russian maintainer added.
  • Small spelling correction to generate an rtf extensions file -> to generate a rtf extensions file
  • Some texts can be independent of \htmlonly / \latexonly
  • Space missing in error message. the word 'in' and the vale of filesOption were concatenated
  • This patch contains changes regarding the build system so that the *nix and Windows systems use the same information (consistency). Some use names routine names have been changed (from .l files with -P option) to reflect the file name that generated the routines, this makes it easier to create a general procedure. A number of include / header files are files are generated from different file types (html, xml, js), due some limitations of the windows build system the generated file names had to be changed (the extension in the windows build system is only available including the '.' so e.g. the file jquery_fx.js generates now jquery_fx.js.h instead of jquery_fx_js.h) In the windows version the creation of .cpp files from .l files has been adjusted to correct for the YY_BUF_SIZE problems. Furthermore on windows (and also used on *nix) some commends have been replaced with python scripts so that on windows only python is need (besides flex and and bison). On *nix also perl is required for the generation using tmake.
  • Updated Visual Studio project files to include new source files
  • Usage of the -d opion corrected Giving an error when a wrong -d option is given. Made some error mesages more consistent. Corrected usage of the exit call, in case of an error: exit(1) otherwise exit(0). A closer look should be made on exitDoxygen as it does not contain any exit statements and it is unclear (to me) when it is used.
  • VHDL-2008 and arrays on unconstrained elements
  • consider currentFile when searching for global symbols
  • doc/language.doc generated from the updated sources (bgcolored)
  • doc/language.tpl -- UTF-8 reflected in the langhowto template
  • doc/language.tpl -- trailing spaces removed
  • doc/translator.py -- coloured status in HTML
  • doxygen /** style creates spurious code blocks with markdown enabled
  • doxygen version 1.8.5 throws many "Internal Inconsistency" errors when parsing .idl files
  • doxygen.sty.h was not ignored and not included/generated properly
  • testing dir was missing from 'make archive'
  • usage: make -d print dev doxygen options

Release 1.8.5

(release date 23-08-2013)

Changes

  • Doxygen's source code is now managed using git and GitHub. Automatic builds and regression tests are scheduled via Travis CI.
  • Configuration data for the config file, the documentation, and the wizard are now produced from a single source (thanks to Albert)
  • All translation files have been migrated to UTF-8 (thanks to Petr Prikryl)
  • Added black box testing framework and a set of tests.

New features

  • Added SOURCE_TOOLTIPS option for advanced tooltip support while source browsing.

Bug fixes

  • Bug 668007 - HTML commands - documentation of </dd> tag missing
  • Bug 676879 - parameter on doxywizard manual Added sentenc in respect to possible argument for doxywizard Added images to the LaTex / pdf version of the manual
  • Bug 684324 - Strange behavior when placing cite within brief.
  • Bug 688858 - SHORT_NAMES break references to \page in PDF output
  • Bug 691315 - Line breaks are not copied/displayed properly when using @copydoc.
  • Bug 691830 - Logical confusion with DISABLE_INDEX and GENERATE_TREEVIEW
  • Bug 694147 - #undef is ignored by doxygen
  • Bug 698998 - vhdldocgen fails to generate proper latex for VHDL record type
  • Bug 700385 - Incorrectly parsed Q_PROPERTY with 'unsigned int' type
  • Bug 700646 - XML output does not handle HTML entities in titles
  • Bug 700693 - Duplicate entry for class template member function with no parameter
  • Bug 700696 - Template static member functions duplicated as non-static public
  • Bug 700709 - typedef warning when "using" some operator functions
  • Bug 700710 - Docbook output produces invalid XML for <programlisting> elements
  • Bug 700740 - Doxygen does not create links on C++ 11 style enum classes
  • Bug 700788 - support @cite within brief description.
  • Bug 700908 - code after \@cond is removed
  • Bug 701295 - Doxygen 1.8.4 goes into an endless loop
  • Bug 701314 - URLs are not created on C# classes in some cases
  • Bug 701550 - Error List window in Visual Studio no longer recognizes doxygen warnings
  • Bug 701771 - EXPAND_AS_DEFINED not working with some project structures
  • Bug 701919 - VHDL cross-references fail when unpaired apostrophe present
  • Bug 702066 - VHDL: Bad HTML formatting when using inline sources
  • Bug 702170 - Missing space before optional option in method argument list
  • Bug 702189 - Markdown and @image
  • Bug 702491 - UTF-16LE BOM not handled by source browser and \snippet
  • Bug 702590 - Crash with TAB_SIZE=-1
  • Bug 702676 - Closing ) of function in function documentation is in wrong color
  • Bug 703574 - Add configure options to enable static SQLite and non-standard SQLite
  • Bug 703112 - Backward documentation comments are not allowed in Fortran type-bound procedures
  • Bug 703133 - "operator--()" transformed to "operator&ndash;()" in @copydoc
  • Bug 703170 - Segmentation fault parsing a fortran file
  • Bug 703213 - Can't use @ref instead of \ref with msc
  • Bug 703301 - Misleading warning about DOT font
  • Bug 703791 - Out-of-line docs for class template specialisations failing
  • Bug 704079 - Generated XML is malformed
  • Bug 704172 - Nested Aliases fail when the nested alias has two or more arguments.
  • Bug 704412 - doxygen don't hide private Inherited Members
  • Bug 704971 - Can't build with MinGW
  • Bug 704973 - Doxywizard can't show file names using non-ASCII(Unicode)
  • Bug 705190 - Incorrectly parsed Q_PROPERTY with 'long long' or 'long int' type
  • Bug 705217 - Can't use unicode characters to execute external commands
  • Bug 705218 - QRegExp doesn't work with 80-FF
  • Bug 705219 - Accept IDs using unicode for C/C++ preprocessor
  • Bug 705586 - @code tag as the last line of a comment block causes the parser to hang
  • Bug 705702 - Post-comment blocks on C++11 using definitions attach to following entity
  • Bug 706236 - Confusing use of GENERATE_TAGFILE
  • Bug 706520 - Fortran: in body documentation lands on wrong place
  • Small typo correceted in doxywizard_usage.doc Generated config.doc file in git is not identical to the generated one
  • Various improvements to the (still experimental) sqlite3 support (thanks to Adrian Negreanu)
  • jquery: use the env MINIFIER if specified
  • Some words now in code style __attribute__ was seen (markdown) as the bold word attribute Reformulation of a sentence due to a not nice split of word (__declspec was split directly after __ in pdf)
  • Extended list with supported options for automatic link generation
  • Added -v option (analogous to --version). In case option started with -- and is not a known valuue (help or version) and error is given instead of starting Doxygen
  • Fixed regression when nested class were processed before their parent
  • Minor changes to the way the code for config options is generated (thanks to Albert for the patch)
  • Brief description did not appear in the page index, when a page did not have any details.
  • Using & in the project name caused invalid HTML and LaTeX output
  • Fixed regression caused by the patch for bug 705219
  • Fixed issue running dot on files with non-ascii characters
  • Delayed expanding the HTML navigation tree until after the page has loaded
  • Made some fixed to the configure script for Cygwin (thanks to David Stacey)
  • config.xml is now used to generate configoptions.cpp and config.doc
  • Fixed whitespace issue when using \overload without arguments
  • Avoid space in the output after \n command following by a newline.
  • Fixed problem handling C comments inside a \code block.
  • Improved handling of \internal and \endinternal
  • Removed extra newline when reading in an input file
  • Make XML output adhere to MAX_INITIALIZER_LINES
  • Fixed issue handling \elseif after \ifnot
  • Fixed regression that could cause double nested classes
  • Fixed issue handling \docbookonly..\enddocbookonly section
  • The language specifier in e.g. \code{.py} was ignored for the XML output
  • Fix reference to scoped enum imported via a tag file.
  • Replaced utf8 character that broke latex compilation of the manual
  • Fixed unused parameter warnings
  • Add support for writing and importing C++11 style enums to and from tag files
  • Fixed regression introduced by fixed bug Bug 700740
  • Fixed type in function name
  • Remove some unneeded and still enabled debug info
  • Included fix for "Constant Groups" regression on file pages (thanks to Michael Stahl)
  • Add scopes to Fortran prototype name parsing (thanks to Oleg Batrashev).
  • Prototype scan for function, does not yet catch parameter types (thanks to Oleg Batrashev).

Release 1.8.4

(release date 19-05-2013)

Changes

  • id 686384: When INLINE_SIMPLE_STRUCTS is enabled, also structs with simple typedefs will be inlined.
  • Doxywizard: scrolling with mouse wheel no longer affects the values in the expert view.
  • id 681733: More consistent warnings and errors.

New features

  • Added support for "clang assisted parsing", which allows the code to also be parsed via libclang (C/C++ frontend of LLVM) and can improve the quality of the syntax highting, cross-references, and call graphs, especially for template heavy C++ code. To enable this feature you have to configure doxygen with the --with-libclang option. Then you get two new configuration options: CLANG_ASSISTED_PARSING to enable or disable parsing via clang and CLANG_OPTIONS to pass additional compiler options needed to compile the files. Note that enabling this feature has a significant performance penality.
  • Included patch donated by Intel which adds Docbook support. This can be enabled via GENERATE_DOCBOOK and the output location can be controlled using DOCBOOK_OUTPUT. Docbook specific sections can be added using \docbookonly ... \enddocbookonly
  • Added support for UNO IDL (interace language used in Open/Libre Office), thanks to Michael Stahl for the patch.
  • Included patch by Adrian Negreanu which stores data gathered by doxygen in a sqlite3 database. Currently still work in progress and can only be enabled using --with-sqlite3 during ./configure.
  • For interactive SVG graphs, edges are now highlighted when hovered by the mouse.
  • Include patch by Adrian Negreanu to show duration statistics after a run. You can enable this by running doxygen with the "-d Time" option.
  • Included patch by Markus Geimer which adds a new option LATEX_EXTRA_FILES which works similarily to HTML_EXTRA_FILES in that it copied specified files to the LaTeX output directory.
  • id 698223: Added support for C++11 keyword alignas
  • id 693178: Added support for processing DocSets with Dash (thanks to Bogdan Popescu for the patch
  • id 684782: Added option EXTERNAL_PAGES which can be used to determine whether or not pages importated via tags will appear under related pages (similar to EXTERNAL_GROUPS).
  • id 692227: Added new MathJax command MATHJAX_CODEFILE which supports including a file with MathJax related scripting to be inserted before the MathJax script is loaded. Thanks to Albert for the patch.
  • id 693537: Comments in the config file starting with ## will now be kept when upgrading the file with doxygen -u (and doxygen -s -u). Thanks to Albert for the patch.
  • id 693422: Adds support for Latvian (thanks to a patch by Lauris).
  • Included language updates for Ukrainian, Romanian, and Korean

Bug fixes

  • id 145294: Fixed parse issue when using less than inside a template argument.
  • id 325266 man page output was missing a linebreak before .SH when definition a group with a section.
  • id 338205: @anchor were wrong when CREATE_SUBDIRS was enabled.
  • id 427012: Putting a @todo in front of an anonoymous namespace caused bogus entry in the todo list.
  • id 564462: Fixed alignment issue with tabs and multibyte characters.
  • id 567542: Character entities in titles were not rendered correctly in the HTML navigation tree.
  • id 571561: No space between * and tag (e.g. \endcode) made parser misbehave
  • id 583233: Included patch to limit generated Doxyfile comments to 80 columns
  • id 592626: Fixed off-by-one with MAX_DOT_GRAPH_DEPTH.
  • id 619790: Improved linking to template specializations. Thanks to David Haney for the patch.
  • id 627712: Doxygen Header in C Files makes empty Lines in HTML Source Code when starts in Line 1
  • id 639954: Fortran: array constructors with brackets were not correctly recognized.
  • id 646428: The generated man pages had a .PP just before the subject description
  • id 646431: On generated manpages the return section is incorrectly indented
  • id 650004: use \page now generates a man page were the . is not replaced by _8.
  • id 657704: Fixed issue with PROJECT_LOGO when using backslashes in the path.
  • id 666008: Fortran: Using @var at module levele didn't work. expect a file/path name.
  • id 673218: Replaced "echo -n" with "printf" in the configure script.
  • id 674856: Removed warning when using \endinternal
  • id 675607: Added &, @, and # as allowed characters for commands that
  • id 679626: Included patch by Abert to correctly link pages in the manual
  • id 681874: Added support for single column Markdown tables.
  • id 682369: Incomplete documentation on doxygen -w latex
  • id 683516: Doxygen crashed when structural commands (like \var) appeared in .md files.
  • id 686259: Fixed character encoding problem when multibytes characters were used in anchors.
  • id 691071: Documentation before an anonymous member did not appear.
  • id 692162: Fixed Markdown related indentation problem.
  • id 692320: Regression: Text after @copydoc was not visible anymore.
  • id 692537: Linked to external pages was done using the page label rather than the file name.
  • id 693331: build using ./configure ; make did not work if the path contained a space.
  • id 693406: Tag files are now identfied by the full path instead of only the name of the tag file.
  • id 694376: In some cases members were missing from the tag file.
  • id 694027: Fortran: derive intent from documentation in case no intent is specified
  • id 694610: Warning was not reported at the correct line in two cases.
  • id 694631, 694632: @cond..@endcond did not work properly for removing macro definitions.
  • id 694685: Fixed crash when adding two different functions with the same name to the same group.
  • id 694726: VHDL: fixed issue generating LaTeX output.
  • id 695277: Fortran: improved handling of protected statement
  • id 695974: Fortran: Fixed issue resulting in "Stack buffers nested too deeply" error.
  • id 696708: @cond was not handled properly by the preprocessor.
  • id 697233: @copyright command did not end a brief description.
  • id 697249: Markdown tables caused errors reported at wrong line number.
  • id 697494: Removed double entry from the messages produced by doxygen.
  • id 698818: Fixed problem handling @cond for #define's
  • id 698007: Fixed potential crash when searching files.
  • id 696925: #include's inside namespace could result in duplicate entries.
  • id 696954: Doxywizard: Labels of items are now also grayed out when an item is disabled (thanks to Albert for the patch).
  • id 699195: Changed Markdown page label to support multiple .md files with the same name.
  • id 699218: Fixed issue with margin computation in resize.js.
  • id 699381: Lonely h4,h5,h6 end tag caused assert.
  • id 699437: Trailing comments were not always rendered properly if MARKDOWN_SUPPORT was enabled.
  • id 699460: Updated doxygen man page (thanks to Manuel for the patch).
  • id 699464: Added reference to \xmlonly and \docbookonly in \htmlonly
  • id 699731: LaTeX: switch to using the xtabular package instead of longtable to prevent overfull vbox errors.
  • id 699732: Template parameters and Exceptions were rendered differently than Parameters and Return Values in the LaTeX output.
  • id 700153: Tcl: Fixed crash when parsing certain Tcl code.
  • id 700345: Comment blocking ending with ///// made slashes appear in the output.
  • id 700456: Added support for separating auto list items with an empty paragraph.
  • Included a couple of VHDL fixes (thanks to Martin Kreis for the patch)
  • \include and \includelineno both showed line numbers.
  • Putting '// @endverbatim' inside a C comment block was not handled properly by the preprocessor.
  • Fixed various typo's in the manual and improved cross referencing (thanks to Albert and Guillem Jover for their help)
  • Added a couple of missing configuration dependencies.

Release 1.8.3.1

(release date 20-01-2013)

Changes

  • Changed to way the search results for multiple projects can be linked together. A project is now no longer identified by the tag files name but via new option EXTERNAL_SEARCH_ID giving a bit more flexibility.
  • Disabled the disk cache for member data. Allows removing quite some complexity in doxygen and is not really needed now that 64bit systems with >4GB RAM are becoming more common. Let me know if you think you benefit from this caching.
  • id 691607: Using $relpath$ in a custom footer could lead to ambiguities when followed by a name that could also be a marker, like 'search'. Now $relpath^ should be used instead. $relpath$ is still supported for backward compatibility.

New features

  • You can now use EXTENSION_MAPPING on files without any extension using no_extension as placeholder (thanks to Jason Majors for the patch).
  • To make navindex section inside a layout file that links to a specific URL you can use usergroup with the url attribute.
  • To make navindex section without any link inside a layout file you can use usergroup with special title [none].

Bug fixes

  • id 644350: Fortran: Included patch to improve parsing line continuation characters.
  • id 645423: Fortran: added support for protected attribute
  • id 682550,691315: When using @copydoc, paragraphs breaks did not appear in the copied documentation.
  • id 686581: Fortran: handle single quotes in normal Fortran comment.
  • id 686689, 691335: Scope of forwardly declared template class was lost in the output.
  • id 689713: Tcl: Inline source code was not rendered correctly.
  • id 690787: Fixed case were a cyclic inheritance relation could crash doxygen.
  • id 690831: Using @subpage in a -# style list was not handled properly.
  • id 691000: For a mainpage without title the project name is now shown as the title in the XML output.
  • id 691277: The generated list of citations is now no longer included in the tag file.
  • id 691073: Documenting strongly typed enum values outside of the enum did not work.
  • id 691310: Python: = was missing in the output for variable assignment.
  • id 691323: Doxygen could crash when creating inline msc graphs.
  • id 691340: Members didn't have a More.. link to jump to detailed docs.
  • id 691602: Doxygen did not probably distinguish between two template
  • id 691798: regression: C++ style comments that started with a line of slashes did not get processed correctly anymore.
  • id 692031: Fixed parse error when left shift operator occurred as a default parameter. members or functions that only differ in the return type.
  • Setting SEARCH_INCLUDES to NO resulted in no include graphs and no include files being listed in the output.
  • Improved support for MinGW (thanks to a patch by Brecht Sanders).
  • Removed the Graphviz/dot dependency when building the doxygen documentation.
  • Anchors to sub pages were wrong in the XML output.
  • Included VHDL patch by Martin Kreis that improves the flow chart generation.
  • corrected several code pages and fontsets for proper RTF output for a number of languages such as Greek.

Release 1.8.3

(release date 26-12-2012)

Changes

  • Expanding the tree in an index page of the HTML output, will now expand only one level instead of the whole sub-tree (thanks to Pez Cuckow for the patch).
  • A blockquote in Markdown does no longer require a whitespace after the last '>' if the '>' is followed by a newline.
  • id 682718: Included patch to add version info to all generated template files (headers, footers, stylesheets, layout files, etc).

New features

  • Added support for using external tools to index and search through the HTML documentation. An example index tool is provided (doxyindexer) and an example search engine (doxysearch.cgi). To configure the external search engine the following new options are added to the configuration file: EXTERNAL_SEARCH (to enable the feature), SEARCHENGINE_URL (to specify the URL of the search engine), SEARCHDATA_FILE (to specify the name of the raw search data to index), EXTRA_SEARCH_MAPPINGS (for search through multiple projects). See the manual for details.
  • Added USE_MDFILE_AS_MAINPAGE config option to select a markdown page to be used as the main page.
  • id 630645: This patch (contributed by Albert) adds support for simple logic expressions for \cond, \if, and friends, i.e. you can do \if (SOME_SECTION_NAME && (!THIS_ALTERNATIVE || THAT_ALTERNATIVE))
  • id 684152: Patch (contributed by Albert) adds a new configuration option MATHJAX_FORMAT to select the MathJax output format. Options are HTML-CSS, NativeMML, or SVG.

Bug fixes

  • id 670853: Fixed compile issues with 0 to QCString cast for old compilers.
  • id 678139: A class A deriving from another class B inside a namespace not known to doxygen, caused class B to appear in the global scope.
  • id 681209: Fixed problem processing .bib files when they were located in a path containing spaces.
  • id 681830: Using \addindex in a page will now produce a link to the word, instead of the start of the page.
  • id 681831: The TREEVIEW_WIDTH option did not have any effect.
  • id 681898: Jumping from a level 3 section to a level 1 section did not appear correctly in the page TOC.
  • id 681976: C++11: Improved handling of noexcept expressions, e.g.: Test() noexcept ( noexcept(T::T()) ) = default;
  • id 682048: Improved SIGINT handling when running multiple dot instances.
  • id 682602: Fixed problem processing .bib files when using a non default output directory.
  • id 682713: Comment for IDL_PROPERTY_SUPPORT in the config file template did not have line wrapping.
  • id 682728: Setting SHOW_FILES to NO prevented call graphs from being generated.
  • id 682740: Fortran: In initialization statement the "=" was missing
  • id 683284: Fortran: ALIASes where not replaced in !! and !< comments.
  • id 683976: Added meta tag "generator" to HTML output (thanks to Albert for the patch).
  • id 684781: Sections of the main page did not appear in the navigation tree until the main page had sub pages. Also fixed bug in treeview that caused mainpage with title and sections to appear at the same level as the sections.
  • id 685125: Doxygen could select the wrong overloaded method when the only difference in parameter types was the template type of a typedef.
  • id 685181: Inheriting member documentation did not work in combination with Java interfaces.
  • id 685623: Enum values did not appear in the detailed documentation when using C++11 style enums.
  • id 685879: Even though HIDE_UNDOC_MEMBERS was enabled, the navigation still showed undocumented members.
  • id 685940: Fixed back button behaviour when using the navigation tree.
  • id 686284: Added anchors to refs in the index.qhp TOC.
  • id 686826: Added XML declaration to index.qhp TOC.
  • id 686956: When a class and its base class has the same nested class, the collaboration diagram could point to the wrong class.
  • id 686983: Comments inside a function macro parameter appeared before the expanded macro, instead of being treated as part of the parameter.
  • id 687301: Allow minus in the name of a HTML attribute.
  • id 687572: Code fragments were wrapped too early in the latex output.
  • id 688226: Fixed Qt version number in ./configure --help text.
  • id 688463: Included patch to prevent processing identifiers starting with _ or __ as markdown.
  • id 688531: Horizontal ruler inside paragraph caused missing </p>
  • id 688542: Using "usergroup" in the layout.xml caused missing <div>
  • id 688739: Fixed problem with user defined entries in the eclipse help index (thanks to Rene Papenhoven for the fix).
  • id 688647: Fixed problem parsing initializer list with C++11 style uniform types.
  • id 689341: \if around list item preceded by whitespace caused wrong list in the output.
  • id 689461: Correct link in documentation of SIP_SUPPORT option.
  • id 689720: Fixed bug that could prevent refman.tex from being generated.
  • id 689833: Fixed missing space in Chinese translation.
  • id 690093: Files added via HTML_EXTRA_STYLESHEET did not correct refer to files that where placed in a subdirectory.
  • id 690190: Searching for multibyte characters did not work with the server based search engine.
  • id 690250: Fixed case where line numbers got out of sync with the code.
  • id 690341: First member of an anonymous C++11 style enum was not shown properly.
  • id 690385: Fixed case where _'s where falsely converted to Markdown emphasis.
  • id 690403: Title not used when \ref'ing to a \section imported via a tag file.
  • id 690418: Behavior of @cond was accidentally reversed by new expression parser.
  • id 690602: Fixed problems handling @cond inside /// comments.
  • id 690629: Fixed case where doxygen would during preprocessing.
  • id 690685: A file specified using HTML_EXTRA_STYLEHSHEET did not end up in the Qt Help index.
  • Improved the way enum's are rendered in the HTML output.
  • When inlining structs (INLINE_SIMPLE_STRUCTS=YES) a <p> was missing for members with a detailed description, causing invalid XHTML.
  • Fixed problem loading the navigation tree when using .xhtml as the file extension.
  • The navigation tree was not always correctly positioned upon initial load when using Chrome.
  • HTML Navigation tree showed static members even when EXTRACT_STATIC was set to NO.
  • Same word could appear multiple times in the match list for an entry in the search results when using server based search.

Release 1.8.2

(release date 11-08-2012)

Changes

  • Using a fenched block (~~~~) in Markdown without explicit extension will now be interpreted as a @code..@endcode block instead of @verbatim..@endverbatim.
  • Classes inheriting from an class that is outside the scope of doxygen are still shown in diagrams. This does not hold for usage relations.

New features

  • Added support for C++11:
    • strongly typed enums, e.g.:
      enum class E
    • enums with explicit type, e.g.:
      enum E : unsigned int { ... }
    • id 678097: added support for final keyword on classes and methods.
    • support for override keyword for methods.
    • nullptr is new a type keyword in code fragments.
    • support for variables with initializer lists, e.g.:
      const int var {10};
    • support for trailing return types, e.g.:
      auto foo() -> Bar;
    • id 672372: added support for template aliases, e.g.:
      template<typename T> using A = B<T>;
    • support for C++11 variadic templates, e.g.:
      template<typename... Values> class C;
    • support for documenting template class declarations.
    • id 680098: static_assert(...); inside a class is now ignored.
    • id 679740: Add support parameters with default lambda functions, e.g.:
      int foo(int i, std::function<int(int)> f = [](int x) -> int { return x / 2; })
    • default initializers for non-static data members, e.g.:
      class C { public: int x = 4; int y {6}; int z = y*func(); };
    • support for decltype as a way selecting a type for a variable, e.g.:
      int x; decltype(x) y;
    • support for new string literals, e.g.
      u8"utf8", u"utf-16", U"utf-32", L"wchar"
    • support for raw string literals (with and without user defined delimiter), e.g.
      R"(some"thing)", u8R"raw(some)"thing)raw"
    • support for explictly deleted and defaulted special members (=default and =delete).
  • Made several improvements to the way Objective-C categories and protocols are handled:
    • Class extensions are now treated as part of the class, whereas categories are listed separately.
    • Fixed parse problem where category had a { } section.
    • Fixed parse problem for categories that implemented protocols.
    • Fixed render bug for protocols in class diagrams.
    • Attributes with the same name as a method are now no longer matched.
    • Internal properties are now also marked with [implementation]
    • Members of categories are shown in the class they extend as well, and cross reference links are made between these members.
    • Class extension implementing protocols are now shown as protocols inherited by the class itself, including the "Implemented by" relation.
  • Added option HTML_EXTRA_STYLESHEET which allows adding an additional stylesheet without completely replacing doxygen.css.
  • Added option AUTOLINK_SUPPORT which can be used to enable/disable autolinking globally.
  • Included language updates for Czech, Spanish, Greek, Slovak, and Esparanto.

Bug fixes

  • Fixed render glitch where template member of a base class was not properly hidden in the derived class.
  • Privately nested classes no longer appear in the declaration section of their parent if EXTRACT_PRIVATE is disabled.
  • In the declaration section the separator line was in between the member and its brief description.
  • Fixed a couple of compiler warning with the new XCode 4.4 compiler.
  • Added compilation support for Mountain Lion (Mac OS X 10.8).
  • id 679631: Nested namespaces did not appear in the namespace list if the parent namespace was undocumented.
  • id 680227: Fixed some spelling errors in the code comments.
  • id 680398: Fortran: comma at begin of argument list description in case of implicit type
  • id 680405: Fortran: Entities on line with USE, ONLY were not hyperlinked in code.
  • id 680408: Fortran: handle carriage return in non terminated strings.
  • id 680492: Using Markdown formatting in @todo/@bug/.. like descriptions did not work.
  • id 680575: Fixed potential crash when <code> appeared inside <summary> for C# code.
  • id 680697: \xrefitems of the same type are not grouped together under the same heading (just like \todo and friends).
  • Fixed case where full directory path was shown even though FULL_PATH_NAMES was set to NO.
  • id 680709: HTML output of template-derived classes contained unescaped characters.
  • id 679963: "Class Index" appeared twice in the PDF TOC, Index at the end did not appear at all.
  • In a declaration no link was created when referring to a class inside an undocumented namespace imported via a tag file.
  • id 681281: Make default for TAB_SIZE 4 and added remark in Markdown section of the manual about the effect of TAB_SIZE on code block processing when using tabs in the comment block.
  • id 681023: Project logo was not included in the Qt help output.
  • id 680992: Fixed a couple of typos in the comments.
  • id 681350: Fixed a problem with Markdown processing of a @code block inside an indented /// style comment.
  • id 679928: Disabled section level correction for Markdown pages as is was confusing.

Release 1.8.1.2

(release date 12-07-2012)

Changes

  • doxygen now strips the leading indentation shared by the lines in a @code..@endcode block.
  • id 678218: Changed title of the SVG graphs from 'G' to the root node of the graph.

New features

  • Added button in the navigation tree to allow enabling/disabling syncing the navigation tree with the content.
  • Extended the number of HTML entities with Greek letters and other symbols (thanks to Charles Karney for the patch).
  • id 663645: Added support for C++11 strongly typed enums (enum class E { ... }).

Bug fixes

  • id 590518: Added missing class member initialization to a class in doxmlparser and made the library compile again.
  • id 667678: Added support for Obj-C property attribute "unsafe_retained".
  • id 674842,676984: Unmatched quote in a comment prevented alias expansion.
  • id 676019: Fixed another case where local include path did not appear correctly in the class documentation.
  • id 676966: Fortran: Some keyword were not colored in the source view.
  • id 676981: Fortran: Argument type was wrong type of in case of out of place !> comment
  • id 677935: Included patch to fix problem compiling for x86 release on Windows.
  • id 677992: Section without title could result in an invalid Qt Help index.
  • id 678022: Anonymous enum could result in an invalid Qt Help index.
  • id 678102: Superfluous trailing comma in javascript prevented navigation tree to load in IE7.
  • id 678177: a + at the start of a line inside a <pre> block, triggered the start of a list. Also -- and --- where not kept untouched inside a <pre> block.
  • id 678180: ndash (--) appearing in a brief description could lead to invalid SVG images.
  • id 678288: -- and --- inside a Markdown code block were not handled properly.
  • id 679331,675766: In body documentation with a different indentation then the main documentation was not rendered correctly (MARKDOWN=YES).
  • id 679436: Using an escaped pipe symbol in a Markdown table did not get unescaped in the output.
  • id 679533: Code fragments did not appear properly in the doxygen manual.
  • id 679615: Added missing delete call in a piece of debugging code.
  • id 679626: Fixed some navigation issues in the manual
  • Not all inherited members appeared in the "Additional inherited members" list.
  • Link to call after "Inherited members" was not correct when CREATE_SUBDIRS was enabled.
  • New VHDL diagram was not generated if the path contained spaces.
  • Fixed a couple of problems handling Objective-C categories.

Release 1.8.1.1

(release date 10-06-2012)

Changes

  • Integrated the root navigation tree in navtree.js for faster loading.
  • When the navigation tree is enabled, clicking jump to a line in the source code view will now highlight the line.

New features

  • VHDL code now has a new Design Overview page (thanks for Martin Kreis for the patch). Requires HAVE_DOT=YES, and DOT_IMAGE_FORMAT=svg.
  • id 677678: Added support for strong and weak attributes in Objective-C properties.

Bug fixes

  • id 618462: Fortran: Appearance of comments in the HTML output are now customizable via CSS again.
  • id 673660: <code> inside a <summary> or <remarks> section is now treated as @code (was already the code for C#).
  • id 673921: When a comment started at indent >= 4 after a /** and continued at the same indent without leading * after a blank line, the continued part appeared at as a code block when Markdown was enabled.
  • id 675036: If a file was not indexed, the navigation tree became empty.
  • id 676019: Include path using quotes did not work as documented.
  • id 676877: @warning did not end at blank line when followed by a numbered list.
  • id 676902: An anonymous namespace could introduce an invalid entry in the navigation list.
  • id 676948: Breadcrumb navigation path had wrong links when CREATE_SUBDIRS was enabled.
  • id 677315: Fixed case where function was incorrectly detected as a variable.
  • id 677589: Fixed typo in the documentation of the LAYOUT_FILE option.
  • id 677771: Fixed visual misalignment for first argument.
  • The "arrow out" button in interactive SVG did not work when served from a web server, due to the use of an absolute path.
  • If a declation was too wide for a page, the content in HTML spilled over the boundary of its box, which looked ugly.
  • Empty lines in a code fragment were collapsed.
  • Navigation tree entries of the hierarchy appeared under class index as well.
  • Grouped globals and enum values were not added to the navigation index.
  • Inlined class were not properly shows in the navigation index.
  • Documented class in undocumented namespace did not show up in class list and navigation tree.
  • ALLEXTERNALS=YES did not show all external classes in the class list.
  • External reference via URL did not work for new "Additional Inherited Members" section + inherited from class link.
  • Objective-C protocols and C# generics were not index and listed properly in the navigation tree and indices.
  • Undocumented files could produce a broken link in the navigation tree.
  • Additional Inherited Members could turn up empty of all members of the inherited class were grouped and SUBGROUPING was set to NO.

Release 1.8.1

(release date 19-05-2012)

Changes

  • Changed the way indexes (Class,File,Namespace,Groups) are rendered:

    There are now shown in a uniform way in the HTML output as a tree. Trees can be expanded and collapsed interactively (this makes USE_INLINE_TREES obsolete).

    The class list now also shows namespaces and nested classes. The file list now also shows directories (this makes SHOW_DIRECTORIES obsolete).

    Member sections are now each rendered in a separate table. This makes the HTML_ALIGN_MEMBERS option obsolete.

    Note: If you use a custom header for the HTML output (HTML_HEADER) make sure you add the following:

    <script type="text/javascript" src="$relpath$jquery.js"></script>
<script type="text/javascript" src="$relpath$dynsections.js"></script>
    Otherwise the interactivity of the trees does not work.

  • Included a couple of performance improvements (thanks to Dirk Reiners)
  • Changed the way member attributes (like protected, virtual, and static) are rendered in the HTML output.
  • Changed the look of the source code output.
  • Included language updates for Chinese, Czech, German, Esperanto, Italian, Slovak, Spanish, Hungarian, and Polish.
  • Syntax highlighing in source code fragments is no longer dependent on LATEX_SOURCE_CODE being set to YES.
  • Added natural scrolling for tablet devices (like the iPad) when using the treeview.
  • For interactive SVGs the print button has been replaced by a "arrow out" button that opens the original non-interactive SVG in a new window for easy printing or saving.
  • id 661499: Long names are now wrapped in the dot nodes to avoid very wide graphs.

New features

  • id 666527: Added support for <inheritdoc/> C# XML command (thanks to John Werner for the patch).
  • id 670965, Added support for resolving environment variables of the form $(PROGRAMFILES(X86)) inside the config file
  • Doxygen now shows Objective-C properties in collaboration diagrams (thanks to Sven Weidauer for the patch).
  • Added ability to search for group or page titles.
  • Inherited class members are now shown as expandable sections in the member overview (default is collapsed). Each section is rendered as a table.
  • id 674349: Included build support for NetBSD.
  • A -- will now be rendered as an 'en dash', similarly, --- will produce an mdash.

Bug fixes

  • id 523156: Fortran: Prefix of routines got stripped.
  • id 666088: Include VHDL patch (thanks to Martin Kreis).
  • id 670235: Fixed include guard detection problem when using #pragma once
  • id 670805: A numbered list (1. 2. 3.) where each list item ended with an empty line is no longer treated as a set of separate lists (all starting with 1.).
  • id 670889: Java: last enum value did not appear in the output unless it was followed by a comma.
  • id 671023, 671312: Regression: Autolist items starting on a new paragraph at indent level larger than 0 were not processed correctly.
  • id 671076: Sections could be missing from the navigation tree in some situations.
  • id 671158: @tableofcontents did not work for the main page (@mainpage)
  • id 671159: Sections in a separate markdown page did not appear in the table of contents.
  • id 671166: Fortran: Fixed problem causing call/caller graphs not to be generated.
  • id 671171: RPM spec file was updated to make it work with RHEL 6.2 (thanks to Peter Klotz for the patch)
  • id 671240: Corrected line number of error message reported for pages.
  • id 671291: C# regression: enum values where not shown in the docs.
  • id 671395: When #some_member appeared at the start of a line it was seen as a level one header instead of a link to a member when Markdown processing was enable. Now at least one space is required after the # to make it a header.
  • id 671426: Fixed case where doxygen could crash when a section and subsection had the same label.
  • id 671591: docset creating could fail due to invalid Nodes.xml
  • id 671702: Using \internal in a group or member did not hide it from the navigation tree if there was no documentation.
  • id 671709: Backticks in C# comments did not appear as inline fragments, like was the case for other languages.
  • id 672119: PHP: defines are now shown as constants rather than enums.
  • id 672662: File with .md or .markdown extension were not included with the default setting of FILE_PATTERNS.
  • id 672366: mailto style URLs did not work correctly in combination with CREATE_SUBDIRS = YES.
  • id 672472: Removed bogus </b> when using @par.
  • id 672475: Added "warning:" prefix to "missing \endcode" message.
  • id 672479: Doxygen comments after a macro definition were not removed in the source browser view.
  • id 672526: Removed black line in front of custom paragraphs.
  • id 672536: PHP: use keyword was not handled correctly when importing classes from another namespace.
  • id 672620: Switched to using "Macro" in the output instead of "Define".
  • id 672656: Using ![caption](filename.png) did not work correctly for local images pointed to with IMAGE_PATH.
  • id 673045: A block of ///'s inside a verbatim block inside a .md file was replaced by /** .. */
  • id 673066: Doxygen now skips scanning files in directories starting with a dot (e.g. .svn).
  • id 673219: Included patch by Ryan Schmidt to make the Mac versions in qglobal.h match that of Apple header files.
  • id 673870: Added C++11 classes when BUILTIN_STL_SUPPORT is enabled.
  • id 673983: Using a backslash in a section cause 026E30F to appear in the latex TOC.
  • id 674563: Fortran: case sensitiveness for routines and functions did not work
  • id 674583: Fortran: continuation by ampersand not placed in code output.
  • id 675757: Fixed indenting issue after the end of a markdown code block inside a list.
  • id 676116: Use new index style for page index.
  • id 676294: Fixed LaTeX error when backslash appeared in a hyperlinked code fragment.
  • Tag files had wrong character encoding set in the header.
  • C# in/out did not appear in generics using covariance or contravariance.
  • When marker of an alias appeared at the end of the alias text it was not expanded.
  • Aliases did not work in Markdown files.
  • Fixed some problems with the navigation tree for IE9 and Opera.
  • Included patch by Jake Colman to make the configgen.py work with older Python version such as 2.4.3.
  • Fixed problem parsing \code{.py}...\endcode
  • UML_LIMIT_NUM_FIELDS did not work correctly in all cases.
  • Setting SORT_GROUP_NAMES to YES, had no effect on child groups within a group.

Release 1.8.0

(release date 25-02-2012)

Changes

  • Auto list items can now consist of multiple paragraphs. The indentation of the (first line) of a new paragraph detemines to which list item the paragraph belongs or if it marks the end of the list.
  • When UML_LOOK is enabled, relations shown on the edge of a graph are not shown as attributes (conform to the UML notation)
  • Updated the manual and improved the look.
  • Made the contents in the navigation tree more consistent for groups, pages with subpages, and grouped subpages.
  • id 669079: Latex: made the margins of latex page layout smaller using the geometry package.
  • The tool doxytag has been declared obsolete and is removed (it wasn't working properly anyway). Same goes for the installdox script.
  • Updated the copyright in source code and doxywizard "about" to 2012.
  • id 668008: HTML version of the manual now has the treeview enabled for easier navigation.

New features

  • Added support for Markdown formatting. This is enabled by default, but can be disabled by setting MARKDOWN_SUPPORT to NO. When enabled the following is processed differently:
    • tabs are converted to spaces according to TAB_SIZE.
    • blockquotes are created for lines that start with one or more >'s (amount of >'s detemine the indentation level).
    • emphasis using *emphasize this* or _emphasis this_ or strong emphasis using **emphasis this**. Unlike classic Markdown 'some_great_indentifier' is not touched.
    • code spans can be created using back-ticks, i.e. `here's an example`
    • Using three or more -'s or *'s alone on a line with only spaces will produce a horizontal ruler.
    • A header can be created by putting a ===== (for h1) or ----- (for h2) on the next line or by using 1 to 6 #'s at the start of a line for h1-h6.
    • auto lists item can also start with + or * instead of only -
    • ordered lists can be made using 1. 2. ... labels.
    • verbatim blocks can be produced by indenting 4 additional spaces. Note that doxygen uses a relative indent of 4 spaces, not an absolute indent like Markdown does.
    • Markdown style hyperlinks and hyperlink references.
    • Simple tables can be created using the Markdown Extra format.
    • Fenced code blocks are also supported, include language selection.
    • files with extension .md or .markdown are converted to related pages.
    See the section about Markdown support in the manual for details.
  • It is now possible to add user defined tabs or groups of tabs to the navigation menu using the layout file (see the section of the manual about customizing the output for details).
  • Added new command \tableofcontents (or [TOC] if you prefer Markdown) which can be used in a related page with sections to produce a table of contents at the top of the HTML page (for other formats the command has no effect).
  • When using SVG images and INTERACTIVE_SVG is enabled, a print icon will be visible along with the navigation controls to facilitate printing of the part of the graph that is visible on screen.
  • Added obfuscation of email addresses for the HTML output to make email harvesting more difficult.
  • Added build targets for 64 bit Windows (thanks to Vladimir Simonov). The installer script is also updated to install a 64 bit version of doxygen on 64 bit systems and the 32 bit version on 32 bit systems.
  • Added support for using the HTML tag <blockquote> in comments.
  • Included patch by Gauthier Haderer that fixes some issues with the dbus XML parser.
  • Added support for Markdown style fenced code blocks.
  • Added option to @code command to force parsing and syntax highlighting according to a particular language.
  • Section of pages are now added to the navigation index.
  • Added support for cell alignment and table header shading in LaTeX and RTF output.
  • Added -d filteroutput option to show the output of an input filter (thanks to Albert for the patch).
  • id 668010: Latex: for Windows doxygen new generates a makepdf.bat file in the latex output dir to create the latex documentation.

Bug fixes

  • id 498703: Fixed encoding issue in CHM index file for group titles.
  • id 510975: FORTRAN: Keywords like .GT. recognized as symbols for cross ref.
  • id 511906, 581303, 622749: \copydoc did copy the brief description into the detailed section, causing a difference between the original and the copy.
  • id 555327: Using @ref for an example file, caused it to appear as file::ext.
  • id 567494: Fortran: Included patch for blockdata sub-programs.
  • id 628417: Fortran: doxygen filter, preparsing fixed form of null
  • id 662286: TCL: Inlcuded patch to fixed UTF-8 support.
  • id 662289: TCL: Included patch to prevent ##### from appearing in the output.
  • id 646319: Using a file name with path for HTML_STYLESHEET caused the path to appear in the HTML output.
  • id 664826: Fixed one more problem with include guard detection.
  • id 665629: Fixed parse problem when a #define appeared inside an enum.
  • id 665855: Fixed problem parsing C++ template specialization of the form A<func(T*)> such as used in boost::signal2 types.
  • id 666047: A </p> followed by an htmlonly..endhtmlonly section caused invalid XHTML output.
  • id 666085: Fixed include handling in case the include guard was documented.
  • id 666124: Fixed problem loading the navigation tree in IE8 when serving pages via a web server.
  • id 666337: Included patch to avoid hypenation hints in front of the first captial in a word.
  • id 666568: When SHOW_FILES was NO, a grouped function did not appear in the javascript based search index.
  • id 666909: extra spacing in the HTML output.
  • id 666986: Fixed case where search engine specific code appeared twice in the HTML output.
  • id 666993: Fixed bug in the generated makefile causing index not to be generated when using pdflatex.
  • id 667020: HTML output for example pages was not well-formed.
  • id 667192: Include statements in latex output where placed all on one line in the LaTeX output.
  • id 667835: PHP: Fixed problem handling heredoc blocks
  • id 667844: For aliases with a single argument it is no longer required to escape commas that appear inside the argument text.
  • id 668037: Latex: tables can now span multiple pages by using the xtab package.
  • id 668218: Doxygen will ignore the common prefix shared by all directories when computing a names for the directory's output files. This will make the names of the output more stable.
  • id 668519: Added missing newline in man page output.
  • id 669071, 669072: Fixed parse problem for Q_PROPERTY when a template with a namespaced type was used.
  • id 669078: Included patch which changes MATHJAX_RELPATH to use the content delivery network by default.
  • id 669138: Fortran: Fixed problem handling multiple definition statements on one line.
  • id 669406: Using -d Preprocessor now also works when QUIET is YES.
  • id 669434: Latex: citations where only generated properly if the bib files specified via CITE_BIB_FILES did not have a path.
  • id 669758: Tcl: Same function in multiple Tcl namespaces not added.
  • id 670289: Fixed case where doxygen would not correctly detect >> as a termination of a nested template.
  • id 670571: subpages generate empty pages in latex/rtf output and broken links when SHORT_NAME was set to YES.
  • Included VHDL fixes provided by Martin Kreis.
  • The word "dummy" wrongly appeared before the first parameter type in the LaTeX output for an Objective-C method.
  • Fixed several small glitches in the tree view javascript code.
  • Included a patch by Vladimir Simonov to make it possible to compile doxygen with Visual Studio 2005.
  • Fixed some typos in the manual (thanks Albert).

1.7 Series

Doxygen Release 1.7.6.1

(release date 10-12-2011)

Changes

  • Doxygen now reports its cache usage (for the symbol and the lookup cache) at the end of a run (if QUIET=NO), and recommends settings for SYMBOL_CACHE_SIZE and LOOKUP_CACHE_SIZE for your project if either cache is too small.

New features

  • Added new option LOOKUP_CACHE_SIZE to control the internal cache doxygen uses to find symbols given their name and a context.
  • Python: added support for @staticmethod

Bug fixes

  • Python: scopes are now shown with . instead of ::
  • id 665313: Space before @if was not preserved, causing problems with inline @if .. @endif constructs.
  • id 665583: Fixed XHTML validity problem when using mscgen graphs.
  • id 665641: Fixed XHTML validity problem when GENERATE_TREEVIEW was disabled.
  • id 665720: Included patch to fix hang issue when non-empty INCLUDE_PATH was used.
  • id 665778: Fixed parse issue when a comma appeared as part of an enum's value.

Doxygen Release 1.7.6

(release date 03-12-2011)

Changes

  • To improve the performance of loading the navigation tree, the data is now split into multiple javascript files which are loaded dynamically.
  • The selected member is now briefly highlighted in the HTML output (when GENERATE_TREEVIEW is enabled).
  • The navigation tree (GENERATE_TREEVIEW) now shows the same information as the index.
  • The navindex section of layout now also controls what is shown in the navigation tree.
  • Improved HTML output support for IE9.
  • Included redesigned VHDL parser (thanks to Martin Kreis for the patch)
  • When a class/structs has many (>15) members of the same type, only the first 10 are shown in the UML diagram.
  • Made the output of the javascript based search engine more compact.

New features

  • Update of the French translation.
  • id 607305: Added support for PHP heredoc and nowdoc constructs.
  • Added support for cross-referencing in case of operator-> overloading. This includes support for std::auto_ptr,std::smart_ptr,std::unique_ptr and std::weak_ptr when BUILTIN_STL_SUPPORT is enabled.

Bug fixes

  • Regression: some information was no longer available for a class, due to accidental deletion of a code block.
  • Regression: fixed matching problem in the code parser.
  • Included fixes for TCL to support commands with \ and command definitions preceded by whitespace (thanks to Rene Zaumseil)
  • When using "static int a,b" variable "b" incorrectly appeared in the output even though EXTRACT_STATIC was set to NO.
  • id 521717: .spec file was only updated after running ./configure
  • id 656642: Fixed potential crash when using doxygen for large projects.
  • id 656878: Fixed problem running bibtex with \cite command on Windows.
  • id 657152: Fixed constant expression evaluation error in the preprocessor.
  • id 652277: Removed bogus ' from the man page output.
  • id 659244: Quotes in the brief description could appear unescaped in the tooltip.
  • id 641336: #includes with ../ were not always processed correctly.
  • Fixed potential crash when INLINE_GROUPED_CLASSES and INLINE_SIMPLE_STRUCTS are set to YES.
  • id 658896: Fixed preprocessor problem handling #defines whose value was a constant string containing ///.
  • id 660332: Using a \ at the end of a comment line could cause parsing problems for C# as the \ was treated as a line continuation.
  • id 658033: Fixed parser problem when using multiple member groups inside a macro definition.
  • id 503239: Fixed several issues related to \cite handling.
  • id 658587: Improved the way macro definitions are collected.
  • id 660501: Fixed LaTeX error when using \name with a description.
  • id 661292: The documentation for \mainpage incorrectly mentioned that one has to use \ref main in case GENERATE_TREEVIEW was set to YES, which is no longer the case.
  • id 659096: Nested aliases definitions where not always expanded properly (regression w.r.t version 1.7.4)
  • id 658038: Fixed preprocessor problem where the @ character inside a macro definition could appear as @@.
  • id 658646: Fixed problem running mscgen for LaTeX and RTF output.
  • id 661723: Using ClassName%'s did not work anymore, and also ClassName's wasn't autolinked.
  • id 662044: Fixed potential printing of null pointer when using a version filter that returned blanks.
  • id 625518: Fortran: first problem where subroutine using results variable appeared as a function.
  • id 654153: If an URL appeared at the end of a sentence, the period was included in the URL.
  • id 656560: Fortran: Added support for the Double Complex type.
  • id 663640: Included workaround for Solaris CC issue in index.cpp
  • id 662190: Included patch to fix some TCL issues and add the TCL_SUBST configuration option.
  • id 661672: Fortran: Added support for ALIAS expansion in comment blocks.
  • id 663101: Fixed case where a macro was not corrected found in the header file when it could only be found via INCLUDE_PATH.
  • id 664718: using multiple <para>'s inside a <summary> block caused text to be joined without spacing.
  • id 656556: Java enums are now parsed as classes.
  • id 664826: Fixed problem in the preprocessor regarding the handling of include guards.
  • id 664893: Fixed typo in the docs for EXCLUDE_SYMLINKS.
  • id 665466: Using a relative URL with <a href> did not work when CREATE_SUBDIRS was enabled.
  • id 665464: Using an absolute URL with <img> did not work when CREATE_SUBDIRS was enabled.

Doxygen Release 1.7.5.1

(release date 21-08-2011)

New features

  • Update of the French translation.

Bug fixes

  • id 521717: .spec file was only updated after running ./configure
  • id 656642: Fixed potential crash when using doxygen for large projects.
  • id 656878: Fixed problem running bibtex with \cite command on Windows.
  • Regression: some information was no longer available for a class, due to accidental deletion of a code block.
  • Regression: fixed matching problem in the code parser.

Doxygen Release 1.7.5

(release date 14-08-2011)

Changes

  • id 641904: Function in the call graphs are now shown based on first appearance rather then alphabetical order.
  • id 616213: When customizing the HTML header $title now only generates the title excluding the project name (which can still be added using $projectname)
  • Improved the look of the class index: all items now have equal spacing.

New features

  • New option INTERACTIVE_SVG which when set to YES in combination with DOT_IMAGE_FORMAT=svg will make doxygen generate interactive SVG diagrams that support zooming and panning via the mouse (only for large graphs).
  • Added support for the Tcl programming language (thanks to Rene Zaumseil and Samuel Bentley for the patch).
  • Added @copyright command.
  • added option MATHJAX_EXTENSIONS to provide additional extensions for MathJax (thanks to David Munger for the patch).
  • added option INLINE_SIMPLE_STRUCTS which when enabled shows the fields of simple classes and structs (with only public data fields) as a table and inline in context (file/group/namespace/class) provided this context is documented.
  • When using the server based search engine (SEARCHENGINE=YES and SERVER_BASED_SEARCH=YES) doxygen now advertises a opensearch provider for your project, that allows integrating the search directly in the search field of the browser (thanks to Phil Lello for the patch).
  • id 503239: Added new option CITE_BIB_FILES and LATEX_BIB_STYLE and a new command \cite, allowing you to make references to literature (as defined in one or more .bib files). This also works for output formats other than LaTeX. The tool bibtex is required for this to work though. Thanks to David Munger for the initial patch upon which this feature is based.
  • PHP namespaces are now shown as A\B in the output.
  • Added new \snippet command that can be used to include marked sections from a source file. See http://www.doxygen.org/commands.html#cmdsnippet for more info.
  • Added translation support for Armenian, thank to Armen Tangamyan. and included translation updates for a number of languages.

Bug fixes

  • Fixed a couple of potential race conditions found by Helgrind while running dot from multiple threads.
  • Graphs did not appear when enabling both INTERACTIVE_SVG and HTML_DYNAMIC_SECTIONS.
  • PDFs generated by newer versions of dot (i.e. 2.28) did not appear in the output, because doxygen failed to extract the bounding box.
  • Improved call graph and cross-reference support for Python.
  • INTERACTIVE_SVG now also works with IE9 if the html file extension is set to xhtml.
  • Fixed several cases where the LaTeX output could produce too long lines.
  • id 318061: Putting two functions in the same group that only different in the number of template arguments did not work.
  • id 437346,564614: Fixed proper encoding of multibyte output in RTF depending on the code page (thanks to Hirao for the patch).
  • id 521717: The .spec file in the source distribution did not get updated to the latest version.
  • id 521861: Fortran: Continuation character was not recognised in fixed format code.
  • id 522496: Fortran: @param checking was not case insensitive.
  • id 560105: Fixed problem combining @cond with preprocessor directives.
  • id 577359: Using "struct A : C, D {};" showed a private inheritance relation for D.
  • id 584194: Some links to typedef where pointing to the typedef'ed class instead.
  • id 619560: Anonymous enums caused an invalid entry in the LaTeX TOC.
  • id 622935: Deriving from an unknown template class could cause the class to appear with a -g postfix in C#
  • id 625731: Fortran: Fixed issue handling private subroutines.
  • id 632946: LaTeX now starts a new page when starting a new module.
  • id 634837: Fortran: Prefix of function was overwritten and the word 'function' not specified.
  • id 637099: Fortran: Included fix for using collaboration diagrams.
  • id 642468: Added PHP support for namespace with curly braces.
  • id 643219: Fortran: Improved handling of semicolons.
  • id 643617: Fortran: Added support for "type is".
  • id 643944: A macro added to a group appeared twice in the group documentation if was also made related to a class using \relates.
  • id 646321: Fixed problem were the search box was missing when using a custom HTML header.
  • id 646447: Fixed unterminated img tab in the XHTML output.
  • id 646463: Fixed problem handling MSCFILE_DIRS option with multiple paths.
  • id 646533: Included patch to sort overloaded members by appearance in the code.
  • id 646747,646879: Putting an autolist inside a @todo, @bug or similar section did not work anymore.
  • id 646922: Referring to a logo with a relative path, caused a broken image target when using a custom HTML header.
  • id 647499: Fixed HTML rendering problem on older browsers when GENERATE_TREEVIEW was enabled.
  • id 647768: Linking to a section on the main page could result in a broken link when GENERATE_TREEVIEW was enabled.
  • id 647889: Fixed invalid warning when using @deparated method with default values for parameters.
  • id 648302: A function made related using @relates could end up in the wrong class if there was already a method with a matching argument list in that other class.
  • id 649103: Return types containing multiple *'s ended up in the output with only one * in some cases.
  • id 650397: Fixed problem with alias substitution if the alias had more then 9 parameters.
  • id 650430: For nested anonymous structs @xx markers could appear in the output.
  • id 650463: Added compilation support for MacOSX 10.7 (aka Lion).
  • id 650958: Fixed issue printing HTML pages when the GENERATE_TREEVIEW option is set to YES.
  • id 651611: Fixed broken link to an undocumented namespace.
  • id 652138: Fixed potential crash while parsing Fortran code.
  • id 652188: Fixed problem parsing comment which included an unterminated alias within quotes (i.e. "\word{")
  • id 652277: Lines starting with . did not appear in the man page output.
  • id 652389: Fortran: Fixed text is detailed function section.
  • id 652396: When enabling INTERACTIVE_SVG wide graphs are now also fit to the screen width.
  • id 652695: Added missing space between parameter type and name in the RTF output.
  • id 652741: Use background-color instead of background in doxygen.css.
  • id 653344: Fixed potential segfault while creating man pages.
  • id 653666: Fortran: add a space to "type" in argument list.
  • id 653801: Fixed problem handling include guard when multiple blocks guarded by the same guard were used in a header file.
  • id 653963: Fortran: Unified handling of @params at various places.
  • id 654108: make clean failed on a system without qmake.
  • id 654244: Fixed compile issue for HP Itanium.
  • id 654779: Fortran: Interface was seen as a class with constructor / destructor.
  • id 654869: Using the word "property" as a type in C caused wrong results.
  • id 654866: Fortran: fixed issue parsing function type that looked like C function pointers.
  • id 655178: Fortran: Fixed parse issue when using variable name starting with the word interface.
  • id 655591: Improved error handling for empty html style list.
  • id 655935: Fixed case where %s could end up in a warning messge.
  • id 656005: Methods of Objective-C categories defined in an .m file are now marked as private.

Doxygen Release 1.7.4

(release date 28-03-2011)

Changes

  • doxygen -w html now reads the default Doxyfile even if not specified explicitly
  • doxygen -w html now produces a template header and footer that can be used independent of the configuration options used.

New features

  • New option INLINE_GROUPED_CLASSES that when enabled shows grouped classes inside the group documentation, instead of on a separate page.
  • Included updates for the Italian and Russian translation.
  • id 640875: Added option HTML_EXTRA_FILES which makes it easier to copy additional files to the HTML output and also add them to the index files.
  • id 642579: Included patch that adds new LATEX_FOOTER option to customize the end of refman.tex in the LaTeX output.

Bug fixes

  • id 140259: Jumping to a @section did not work in the RTF output.
  • id 521854: Fortran: included patch for supporting multiple argument declarations on one line.
  • id 521861: Fixed problem with line continuation in Fortran.
  • id 566921: %A::B now prevents a link for A::B, instead of only for A and generating a warning that ::B cannot be linked.
  • id 598481: Fortran: Added support for extends keyword.
  • id 618374: Added support for inlining code in the VHDL output.
  • id 625519: Fortran: argument name starting with a reserved word was not handled properly.
  • id 634415: Fixed problem parsing an array of character literals.
  • id 635537: Links to file members were not made when found in tag files.
  • id 638637: The Doxyfile documentation contained some very long lines.
  • id 638655: Double quote in page or group title broke treeview.
  • id 638733: Improved documentation for DOT_IMAGE_FORMAT option.
  • id 638829: Added documentation to warn for consequences of using HTML_HEADER.
  • id 638856: Fixed problem autolinking to struct field using #S::a
  • id 639272: using @dot...@endot produced an image referenced with absolute path.
  • id 639521: \mscfile did not work properly for LaTeX output.
  • id 639716: Fixed problem where #include's could cause phantom __pad__ members to appear in the output (appeared on Windows only).
  • id 640259: Options PROJECT_LOGO and PROJECT_BRIEF were missing from the manual.
  • id 640463: Fixed problem parsing PHP "use" statement when the argument did not have a namespace scope.
  • id 640588: Included fix for proper splitting of multiple arguments given to the QHP_CUST_FILTER_ATTRS option.
  • id 640646: Long error messages could cause memory corruption.
  • id 640742: XML: switched indent option to no in the combine.xslt script.
  • id 640754: Comment with XML style list of type table was not rendered properly.
  • id 640822: Added support for overloading of C# indexer operators.
  • id 640828: Internal section marked with @internal was not shown as such anymore in the XML output.
  • id 640847: PHP: Fixed parse problem referring to class in global namespace.
  • id 640924: Included patch by Haffmans to make the custom header and footer independent of the chosen config options.
  • id 640927: Included fix to prevent a warning in the server side PHP search script.
  • id 641026: Included patch to fix broken hyperlink to page entry in xreflists.
  • id 641188: Header of \page was wrong in Man page output.
  • id 641336: #include's to other directories were not always linked.
  • id 641673: Using "use Foo\Foo;" in PHP could cause doxygen to hang.
  • id 641814: In some cases the HTML output could contain an extra </p>.
  • id 642030: Tooltips with HTML entities could be wrongly truncated.
  • id 642475: Include graphs could be incomplete.
  • id 643056: Fixed problem with macro expansion.
  • id 643279: Fixed potential crash when generating a warning for void f(int %x) style parameter, which is valid in C++/CLI.
  • id 643280: Included patch to enabled LargeAddressAware for Windows builds.
  • id 643276: Fixed cases where FILE_VERSION_FILTER was called for dummy files with name "generated".
  • id 643655: Fixed argument matching issue when one of match candidates was a typedef of a method pointer.
  • id 645754: mscfile tag was closed with dotfile in the XML output.
  • doxygen -w html now ignores the values for HTML_HEADER and HTML_FOOTER found in the config file.
  • Importing a group via a tag file could overrule a local group with the same name even when EXTERNAL_GROUPS was disabled.

Doxygen Release 1.7.3

(release date 03-01-2011)

Changes

  • Added a header for each HTML page above the navigation menu, showing the project name and logo and a short descriptin (all optional). Disabling the index (with DISABLE_INDEX) still shows the new header (you can still customize this using HTML_HEADER). This now works nicely in combination with GENERATE_TREEVIEW = YES and/or SEARCH_ENGINE = YES.
  • Redesigned the treeview feature. Instead of using frames, the navigation tree is now loaded on each page dynamically. This allows bookmarking a page and always keeps the top menu visible. Also the current item is automatically highlighted in the tree. Also updated the icons in the treeview to match the overall look'n'feel. Note: if you now use a custom HTML header, please update it using doxygen with the -w and the edit the default header.

New features

  • id 499544: Added SVG support to doxygen's dot output (setting DOT_IMAGE_FORMAT to svg now works as expected)
  • Added control to the wizard to configure the color of the output visually.
  • Added options to specify project synopsis and select a project logo to the wizard.
  • Added option PROJECT_LOGO which can be used to specify an image which will be shown in the header of each HTML page along with the project name (PROJECT_NAME option).
  • Added option PROJECT_BRIEF which can be used to specify a brief description which will be shown in the header of each HTML page just below the project name.
  • Added new option FILTER_SOURCE_PATTERNS which can be used in combination with FILTER_SOURCE_FILES to filter files used for the source browser based on file extension, which can overwrite the filter set by FILTER_PATTERNS and/or INPUT_FILTER.
  • Added new option STRICT_PROTO_MATCHING which is disabled by default, and makes the parameter matching to be less strict, resulting in fewer "No matching class member found" warnings.

Bug fixes

  • id 306076: code blocks with using directives did not get hyperlinked.
  • id 313527: enum values with bitfields did not get parsed correctly.
  • id 565715,630582: Included a patch that fixes a couple of Fortran issues (thanks to Albert).
  • id 615507: Fixed problem handling @cond..@endcond in Fortran code.
  • id 619040: Scope was missing in Tokens.xml when using docsets.
  • id 625517,523156: Applied patch tp avoid stripping prefixes for Fortran subroutines.
  • id 626476: allow label before end statement in Fortran
  • id 630901: </see> was not handled properly in comment block.
  • id 632311: Fixed potential crash for empty verbatim section.
  • id 632426: closing brace of a function with one parameter has wrong color in HTML.
  • id 632543: Added support for Fortan TYPEs with languge bindings. (thanks to a patch by Daniel Franke)
  • id 632879: An explicit link request such as #blah did not longer produce a warning if no symbol named blah was found.
  • id 633891: warnings in "inbody" documentation were shown with "unknown" file name.
  • id 634116: Titles customized via the layout file did not appear in the title page and navigation tree, only in the top menu.
  • id 634600: Fixed problem resolving typedef.
  • id 634775: Fixed a problem were // inside a code block got removed.
  • id 634857: Added support for escaping :: by using \:: (or @::)
  • id 634962: #include with relative path to parent dir did not get hyperlinked.
  • id 634986: Removed double definition of docParamName in compound.xsd.
  • id 635198: C++/CLI Finalizer methods were not parsed properly.
  • id 636475: Objective-C method names can now be used as the the first argument of \ref.
  • id 636588: Fixed a couple of problems in the compound.xsd schema used for XML output.
  • id 636598: DISTRIBUTE_GROUP_DOC now works again for enum values.
  • id 636947: Improved matching of typedef'ed array parameter and non typedef'ed array parameter.
  • id 637610: Added a number of fixed for Fortran interfaces.
  • id 637712: Handle files with the .for extension as Fortran.
  • id 637987: Fixed error in the grouping documentation.
  • Fixed line number sync problem when using Objective-C #import statements.
  • Fixed problem handling /** @cond */ in the preprocessor.
  • Member groups could get reordered in the output.

Doxygen Release 1.7.2

(release date 09-10-2010)

Changes

  • Changed the default font of the LaTeX output to helvetica.
  • Changed the way parameters and return values are represented in the LaTeX and RTF output. They are now listed using tables.

New features

  • added support for Apple's block object extension for C/Obj-C/C++.
  • added support for detecting Python constructors and destructors.
  • id 624575: Added \endinternal command that can be used to force the end of a section started with \internal.
  • id 552605: Added parsing support for PHP 5.3+ style namespaces.
  • id 582532: added \mscfile command which can be used to insert a message sequence chart given a .msc file. Also added a new config option MSCFILE_DIRS to provide directories were msc files are searched (Thanks to Adrien for the patch).
  • Added support for type specifiers for documenting PHP parameters, format: "@param type $paramname docs"
  • Added support for rendering formulas in the HTML output using MathJax instead of using prerendered bitmaps. For this purpose the options USE_MATHJAX and MATHJAX_RELPATH were added.

Bug fixes

  • id 306076: Fixed case where using of a namespace did not work inside an example.
  • id 336053,487871: /// were not stripped from formulas and \dot..\enddot
  • id 563698: dropped support for a4wide paper format for LaTeX, since it is on the LaTeX taboo list.
  • id 571014: Behaviour of CLASS_DIAGRAM=NO in combination with HAVE_DOT=YES, was not propely documented.
  • id 576291: Python comments for next class or method could end up in code of a method/class when enabling INLINE_SOURCES.
  • id 611174: Fixed problem handling nestes classes in Python.
  • id 621733: removed unexpected warnings about undocumented return types
  • id 622737: Undefined function macros could cause constant expression errors.
  • id 622780: updated copyright statement in PDF docs.
  • id 622935: C# generics appeared with -g extension in the output in some situations.
  • id 623023: Fixed parsing problem for "int &foo1(),&foo2();"
  • id 623052: Link to destructor was wrong in the member index.
  • id 623424: Fixed problem where struct description gets added to variable of struct type.
  • id 623673: Anchors were missing in the Qhp index for members.
  • id 623733: Fixed potential crash due to uninitialized line number.
  • id 623765: closed.png was wrongly linked when GENERATE_SUBDIRS and HTML_DYNAMIC_SECTIONS were enabled.
  • id 624014: Function macro was not handled properly when there was a line continuation directly after the name.
  • id 624095: Linking to a class via a tag file did not work if the class was in an undocumented namespace.
  • id 624104: Fixed a couple of typos in lodepng.h
  • id 624323: Graph legend image was missing form the index files.
  • Fixed a number of typos in the config file documentation (thanks to Jens Schweikhardt)
  • id 624514: Some enums were not cross-referenced.
  • id 624829: Missing \endcond could cause preprocessor issues in next file(s) to be parsed.
  • id 625070: a function definition in a namespace, documented in the header did not always get cross-referenced.
  • id 625296: Removed superfluous <td></td> from parameter list in HTML output.
  • id 625317: Unterminated comment could crash doxygen.
  • id 625531: Inherited documentation was only included for the last derived class in case of multiple inheritance.
  • id 625578: In the HTML output </div> was missing for built-in class diagrams.
  • id 625555: References in example files with underscores were wrong.
  • id 625982: When using japanese characters mixed with ascii characters doxygen incorrected ended the brief description with a dot.
  • id 625952: setting MULTILINE_CPP_IS_BRIEF to YES, cause /// to appear in the output.
  • id 626033,567774: EXTENSION_MAPPING did not work if a the mapped language was handled by the same parser as used for the original extension.
  • id 626175: Fixed bracket bug in LaTeX fancy headers.
  • id 626508: Allow hyphen in key argument of \xrefitem.
  • id 626647: \copydoc did not work for array type arguments (e.g. int[]).
  • Use \dotfile did not produce the correct map file, so URLs in dot files did not work.
  • id 627371: #define's in files only found via INCLUDE_PATH were not correctly handled.
  • id 628065: auto brief description ending with .) cause the ) to end up in the detailed part.
  • id 628242: Fixed encoding issue for the Spanish translation.
  • id 628678: Fixed segmentation fault in case of very long errors.
  • id 629040: Fixed type in search page of the documentation.
  • id 629182: Fixed problem detecting include guard.
  • id 629270: Made file extension to parser mapping case insensitive.
  • id 629485: Latex makefile clean target used rm command also for Windows.
  • id 629942: the EXCLUDE_SYMBOLS option was missing form the online docs.
  • id 631094: \htmlinclude and \verbinclude ended the brief description.
  • id 631380: Inconsistent behaviour when a brief description was given following by a detailed comment block with JAVADOC_AUTOBRIEF enabled.
  • Fixed a number of typos in the documentation (thanks to Albert van der Meer)
  • Fixed potential hangup when scanning directories defined as symlinks to absolute paths.
  • HTML attributes other than src were not copied for the <img> tag.

Doxygen Release 1.7.1

(release date 25-06-2010)

Changes

  • id 621695: Made warning and error messages appear with lower case "warning:" and "error:" prefix to make it easier to use the messages from Visual Studio.

New features

  • id 621908: Added new config option FORMULA_TRANSPARENT which allows selecting between transparent (YES) or non-transparent (NO) PNGs for formulas in the HTML output.
  • Update for Turkish translation.

Bug fixes

  • id 533821: Inheritance relation for a C# class deriving from a generic class was not handled correctly.
  • id 554638: Changing DOT_IMAGE_FORMAT did not cause the graphs to be regenerated.
  • id 576533: A field of the form "enum E *p" was ignore.
  • id 597016: Hide scope name was not working properly for todo items inside class members, where the class was inside a namespace.
  • id 617761: In dot graphs now also @ref worked (previously only \ref was supported).
  • id 621653: Fixed error when compiling doxygen for Solaris 8.
  • id 621733: Removed bogus warning about undocument return type for define when WARN_NO_PARAMDOC was enabled.
  • id 621780: Fixed parsing support for a function that returns a struct definition.
  • id 621785: Doxygen could hang when using \copydoc in a function with \param.
  • id 621805: Using //!< after a #define no longer worked.
  • id 621854,622219,622593: html help compiler (and also the Qt help compiler) was called before all dot images were generated.
  • id 621984: Using a auto-list in combination with \subpage cause the items to be inlined.
  • id 622018: Fixed problem parsing a @param command where the text part started with a formula.
  • id 622019: Added some instructions how to document Fortran code.
  • id 622041: Using \var multiple times in a comment block did not work properly.
  • id 622413: Tooltips could get wrongly truncated when multi-byte UTF-8 characters were used.
  • id 622471: Argument matching failed for typedef in another namespace.
  • Fixed crash situation while handling commands inside a @ref section.
  • Treeview icons were missing in the HTML output when setting GENERATE_TREEVIEW to NO and USE_INLINE_TREES to YES.

Doxygen Release 1.7.0

(release date 15-06-2010)

Changes

  • Changed the look of the HTML output.
  • Made several internal changes that should have a positive effect on the overall performance.

New features

  • The color of the HTML output can now easily be adjusted using three new options: HTML_COLORSTYLE_HUE, HTML_COLORSTYLE_SAT, and HTML_COLORSTYLE_GAMMA, which control respectively the hue, saturation, and gamma of all elements in the HTML output.
  • Moved dot invocations to the end of a doxygen run. Doxygen will now run multiple instances of dot in parallel (for better CPU utilisation on multi-core systems). The new config option DOT_NUM_THREADS determines the number of threads used (were 0 is auto-detect).
  • Added option EXT_LINKS_IN_WINDOW which controls whether or not links to symbols imported via tag files will be opened in a new window.
  • Included various language updates (thanks to Petr for coordinating).
  • Included patch by Stefan Oberhumer that allows customizing the way parameter lists are shown in the LaTeX output.

Bug fixes

  • id 306076: source browser could miss links for used namespaces.
  • id 361476,620924: \if and \endif did not work properly inside auto lists.
  • id 557164: No warning for missing return type documentation even though WARN_NO_PARAMDOC was set to YES.
  • id 577005: Handling of nesting \defgroup's was not always working properly.
  • id 578739: ø was not translated correctly in the LaTeX output.
  • id 583526: Use relative paths for mscgen diagrams to avoid errors in the LaTeX output.
  • id 592991: The "Use current settings at startup" feature of Doxywizard was broken.
  • id 593679: Links in the search results were broken if they pointed to symbols imported via tag files using an absolute path or URL.
  • id 593760,615682: Fixed man page output problem when using @par.
  • id 594021: A C comment before a #endif caused the preprocessor statement to be ignored.
  • id 597013: When HIDE_SCOPE_NAMES was enabled also the scope for nested classes was stripped. Now only the namespace scope will be stripped as before.
  • id 600829: Autolinks to namespace members did not work if an explicit # or :: was used.
  • id 602732: Slashes inside strings in java annotations were not handled properly.
  • id 606335: Fixed the "show html output" button in doxywizard for Windows when IE was set as the default browser.
  • id 608292: Formatting was lost for section copied with \copydoc.
  • id 608359: Fixed C++ parse issue for "class : public base {} var;" construct.
  • id 611056: Generated HTML footer file did not have UTF-8 encoding and the relative path marker needed when using CREATE_SUBDIRS = YES.
  • id 611193: Fixed parsing problem with try-functions having multiple catch handlers.
  • id 611642: Specialized private template member function appeared as public.
  • id 611888: Include dependency graphs were sometimes wrong.
  • id 612170: Some lines in the generated Doxyfile where too long.
  • id 612275: Fixed auto-link problem for certain URLs.
  • id 612292: Improved handling of ellipsis inside brief description when JAVADOC_AUTOBRIEF is enabled.
  • id 612364: Accessibility of macros was not handled properly in all cases.
  • id 612310: Enabling REFERENCED_BY_RELATION without SOURCE_BROWSER could result in broken links.
  • id 612458: Fixed problem handling @copydoc for function operators.
  • id 612609: A raw C# string constant could end up in the next string.
  • id 612969: subpages were not part of the XML output.
  • id 613024: First list item in the paragraph after a @todo item was not parsed properly.
  • id 614204: Generated man page links were having a heading underscore.
  • id 614443: Made include guard detect a bit more strict to avoid false positives.
  • id 614447: The labels of CVS tags were missing a colon.
  • id 614438: Fixed problem parsing Q_PROPERTY with template type and spaces.
  • id 615165: Made the date string in the HTML footer translatable, along with some other sentences on the directory pages.
  • id 612858: Inline attribute was shown also for non-inline template members.
  • id 615583: Fixed problem handling @copy for operators with const qualifier.
  • id 615755: Fixed problem handling '"' inside comments.
  • id 615957: Made the LaTeX output a bit less spatious using \input.
  • id 615695: Fixed preprocessor issue where a macro that was redefined was not resolved.
  • Fixed character encoding issue on the search results page.
  • id 615670: C# namespaces are now extracted also without comment block (the language spec does not allow XML documentation).
  • id 616209: included patch that fixes some typos in the code.
  • id 616344,610604: Pages with an underscore in the label generated a file name containing two underscores.
  • id 616387: text of the form something.symbol got autolinked when symbol had a global scope.
  • id 616761: Call graph could be wrong when local variable has the same name as a global function.
  • id 616947: Added documentation patch on how to create URL links with custom text.
  • id 616988: Doxywizard now removes non-existant files from the recent list and has an option to clear the list completely.
  • id 617051: A macro defined via PREDEFINED did not always overrule a macro definition in the code.
  • id 617278: Enabling call graphs produced invalid XHTML output.
  • id 617871: Non ascii characters in file or directory names caused problems on Windows.
  • id 618079: An ALIAS with parameters spanning multiple lines caused problems with /// style comments.
  • id 618632: Included patch to prevent image overflowing the page in the LaTeX output.
  • id 619728: Fixed problem using EXTENSION_MAPPING for C# (thanks to Vsevolod Kukol for the patch).
  • id 619978: Links to external files could be wrong when CREATE_SUBDIR was enabled.
  • id 620229: /* characters in a print broke parsing within an conditional section.
  • id 620926: \if and \endif did not work properly inside HTML tables.
  • Using @include in combination with LATEX_SOURCE_CODE caused wrong output.
  • Included a patch by Guido Tack which adds two new options for docsets (DOCSET_PUBLISHER_ID and DOCSET_PUBLISHER_NAME) and fixes an issue with linking to docset members.
  • Included patch by Stefan Oberhumer to support escaped {}'s in alias definition and parameters.

1.6 Series

Doxygen Release 1.6.3

(release date 21-02-2010)

New features

  • id 608480: Using \dir without argument will create directory documentation for the directory in which the \dir command was found.

Bug fixes

  • id 590161: perlmod output was wrong when using paragraph commands.
  • id 600525: Included patch for VHDL.
  • id 605698: Replaced size attribute of hr tag by class attribute in the HTML output.
  • id 606030,606192,607563: Using \dot produced "Error opening map file" or could even crash doxygen.
  • id 606084: Loading a new config file in doxywizard did not reset all values of a previously loaded config file.
  • id 606104: Grouped members with todo-like items were shown with "GlobalScope" prefix.
  • id 606156: Fixed RTF rendering problem with group index.
  • id 606206,610133: Added missing line break in LaTeX output.
  • id 606330, 608056: The title of pages whose label had an underscore was not shown
  • id 606717: Include guard not starting with #ifndef SOME_GUARD_H were not recognised as such.
  • id 606718: Setting SEARCHENGINE to YES and GENERATE_HTML to NO caused error that search results directory could not be created.
  • id 606772,608493: typedef'ed enums or struct with the same as the typedef did no longer show up.
  • id 607088,607946: Related pages (manual and automatic like the todo page) caused broken links when SHORT_NAMES was enabled.
  • id 607432,608002: Automatically generated related pages (like the todo page) caused broken links when CREATE_SUBDIR was enabled.
  • id 607736: comments after #if could cause next function call not to be cross-referenced.
  • id 607743: \internal inside a conditional section caused warning.
  • id 608016: Using \internal inside a \section did not end at the next \section as documented.
  • id 608018: \internal command produced message with .: in the LaTeX output.
  • id 608072: HTML Tables with custom attributes were not rendered properly.
  • id 608227: Man pages with underscore got double underscore in the name.
  • id 608590: Buffer overflow when using non-ascii characters as class name.
  • id 608921: Macro definition had effect even if the definition was not actually included.
  • id 609504: config.h and config.l where missing from the SVN repository.
  • id 609624: Todo items were merged for overloaded functions.
  • id 609709: C# enum values with @todo items were missing from the todo list.
  • id 610437: Removed bogus warning when using <br/> tag.
  • Fixed parsing problem for function pointer type starting with "typedef enum".
  • Preprocessor did not take EXCLUDE_PATTERNS into account, which could cause parse issues when importing a .tlb file.

Doxygen Release 1.6.2

(release date 30-12-2009)

Changes

  • id 594787: Autolinking to all-lower case words has been disabled, in accordance with the documentation.
  • id 604543: Doxygen now allows any extension supported by dot via the DOT_IMAGE_FORMAT option.
  • Switched back to using PNGs for built-in diagrams and formulas using the Lode Vandevenne's PNG encoder.

New features

  • Added new option SERVER_BASED_SEARCH to re-enable searching via a PHP enabled web browser instead of only using javascript locally. This method better scales to larger projects and allows full text search.
  • Added new options GENERATE_ECLIPSEHELP and ECLIPSE_DOC_ID to generate an index file that can be used to embed doxygen's HTML output into Eclipse as a help plugin (thanks to a patch by Ondrej Starek).
  • Wrote new documentation regarding the methods of searching in the HTML output.
  • Included patch by Ed Rosten to render formulas with proper anti-aliasing on non-white backgrounds using transparency.
  • Add new option FORCE_LOCAL_INCLUDES to make the default #include appearance in class documentation with "" i.s.o sharp brackets.
  • id 558457: Make \addindex put keywords into the .qhp file.
  • id 595214: #cmakedefine is now treated the same was as #define (for users of the CMake build system).
  • Added compilation support for OSX 10.6 (aka Snow Leopard)
  • Included language update for Brazilian.

Bug fixes

  • Doxywizard did not warn when it failed to save its config file.
  • id 557035: Empty class definitions were not included in Tokens file for docsets.
  • id 563233: GENERATE_QHP details was considered even though it is not defined.
  • id 567346: Comment parser could get stuck in certain cases.
  • id 570369: GENERATE_QHP should generate keywords for classes in generated *.qhc.
  • id 571964: Fixed two issues in the compound.xsd schema definition.
  • id 592991: Fixed wrong default destination directory.
  • id 593040: Fixed problem with distributing member group documentation for anonymous member groups.
  • id 593273: GENERATE_TODOLIST=NO and friends not longer worked.
  • id 593928: Added support for UCS-2 encoded input files.
  • id 594391: Fixed problem parsing fully-qualified java annotations.
  • id 594592,596815: Fixed problem handling quotes.
  • id 595191: Not all configuration options appeared in the index of the documentation and some were not sorted correctly.
  • id 595253: formulas had the .png extension while they were gifs.
  • id 595833: Fixed recursive lockup while resolving template relations.
  • id 595935: Doxygen's preprocessor got confused when /**/ appeared as part of a macro definition.
  • id 596085: Removed obsolete option USE_WINDOWS_ENCODING from the docs.
  • id 596233: RTF output was missing a new paragraph for brief member descriptions.
  • id 596807,596819: Code reformatting done for the LaTeX output could break multibyte UTF-8 characters causing invalid output.
  • id 596809: Using multibyte characters in a page label caused invalid output.
  • id 596816: Documented the interaction between LATEX_CMD_NAME and USE_PDFLATEX.
  • id 597015: Todo items for two inner classes with the same name where collapsed together in the todo list when HIDE_SCOPE_NAMES was enabled.
  • id 597016: Scope was not hidden for members in the todo list even though HIDE_SCOPE_NAMES was set to YES.
  • id 598497: Struct variable with explicit struct keyword got labelled with [read] attribute.
  • id 596902: PHP was not parsed properly when it appeared in a <script language="php"> section.
  • id 597415: Fixed problem matching base class member against the member in the derived class.
  • id 597518: Makefile for Docsets now honors DESTDIR.
  • id 598298: Made browsing for HHC_LOCATION via the wizard yield an absolute path.
  • id 599128: Changed default for CHM_INDEX_ENCODING to CP1250 to avoid issues in a Solaris environment.
  • id 595931: Removed unnecessary paragraphs from HTML table cells.
  • id 597541: referring to page labels of the form a-1 did not work.
  • id 599224: Code generators could produce extra </span> tags.
  • id 599974: Included the PHP search engine again (with new config option SERVER_BASED_SEARCH to enable it)
  • id 600544: Doxygen produced invalid Latex output for RCS tags.
  • id 600563: Fixed issue with include dependency tracking that could cause macro expansion not to work properly.
  • id 600940: Fixed issue with VHDL call graph (thank to Martin Kreis for the fix).
  • id 601138: Fixed problem parsing C++ function-try-blocks.
  • id 601222: #include inside a class could cause line numbers to be off.
  • id 601223: Fixed parsing problem skipping over /**/ comment.
  • id 601694: Fixed problem handling Javadoc style {@code ... } blocks.
  • id 601771: Special commands did not work in the title of the @mainpage.
  • id 602818: Fixed problem parsing files that start with UTF-8 BOM.
  • id 603001: Fixed problem parsing friend function with explicit scope.
  • id 603238: Fixed perlmod generation issue.
  • id 604948: Project number was not centered anymore in the HTML output.
  • id 604503: Using %word in a page title incorrectly did show the %.

Doxygen Release 1.6.1

(release date 25-08-2009)

Bug fixes

  • Fixed file handle leak when parsing include files. Also fixed the logic that determines whether or not an include file need to be parsed.
  • Search result pages were not using UTF-8 character encoding.
  • Search results pointing to external references were not linked correctly.
  • id 133418: Multiline second argument of \ref caused unexpected " warning.
  • id 592454: Feeding invalid XML could crash doxygen's DBus XML parser.
  • id 592485: Include patch to fix problem with building rpms.
  • id 592511,592625: Doxywizard problem with GENERATE_TREEVIEW.
  • id 592650: SHOW_USED_FILES now works again.
  • id 592808: xrefitems (like @todo) did not appear in the list when found in comments marked with @enum or @name.

Doxygen Release 1.6.0

(release date 20-08-2009)

Changes

  • id 580924, 541234: Replaced the PHP based search engine by a Javascript/DHTML based one. As a result the search feature no longer requires a HTTP server with PHP enabled to be usable. Searching is limited to symbols though, but it is now possible to filter on symbol type.
  • id 519886: Make the HTML output XHTML 1.0 compliant.
  • id 579950: Objective-C categories are now merged with their base class, unless there is no base class.
  • Member groups with the same header within the same scope are now merged. This also works for Objective-C categories.
  • Changed the LaTeX style sheet such that more of the markup is configurable. Please update your style sheet if you use a custom one.
  • id 584844: Treat \details inside a brief description as a new paragraph command.
  • Split GENERATE_TREEVIEW into two separate options: GENERATE_TREEVIEW and USE_INLINE_TREES.
  • Removed the dependencies on libpng and libz, doxygen now generates gifs again for internal class diagrams (like it did 7 years ago ;-)

New features

  • Added option SORT_MEMBERS_CTORS_1ST, which when enabled places the constructors and destructors first in an otherwise sorted list.
  • id 581518: Applied patch by Tobias Hunger that adds support for documenting DBus XML interface descriptions.
  • Included QtHelp patch by Karsten Heimrich which adds missing reference and keyword for methods.
  • Included updates for the Korean and Polish translation.

Bug fixes

  • id 131989: Fixed preprocessor handling for C# code.
  • id 133418: -- was not rendered correctly for LaTeX output
  • id 157485: Missing link in todo page.
  • id 318061: Two template functions that only differed in the number of template arguments were seen as the same function.
  • id 443939: HIDE_UNDOC_CLASSES did not work properly.
  • id 509348: Fixed problem with syncing the information of declaration and definition in the presence of an extra forward declaration in the source code.
  • id 522193: For C# enum values were merged together if the same enum name was used in different scopes.
  • id 523167: Included patch to handle PROGRAM statement in Fortran as subroutines/functions.
  • id 554636: Remove spacing around brackets for Obj-C protocols.
  • id 557026: Included patch for fixing wrongly labeled items in docsets.
  • id 560512: Improved parser to better disambiguate nested templates ending with >> from the bitshift right operator.
  • id 570238: Fixed matching problem for method in nested class, where the outer class is a template.
  • id 581746: Segfault/realloc error when a very long path was used.
  • id 582469: documented #define with guard caused wrong documentation.
  • id 582276: Doxywizard could crash on exit in some cases.
  • id 582676: Regression: a struct ivar in ObjC class screws up method identification.
  • id 583213: Included patch that avoids trailing spaces in the generated Doxyfile template.
  • id 584192: Included VHDL patch by Martin Klein
  • id 585543: Fixed case where matching declaration and definition did not work correctly.
  • id 585260: The "more..." link for files was broken, since the anchor was not generated.
  • id 586925: Fixed parsing problem when an unpaired apostrophe appeared in a Python comment.
  • id 588291: Included fix for doxywizard makefile.
  • id 588587: Added missing virtual destructor to CompAccept base class.
  • id 588968: Fixed segmentation fault for specific case in PHP code.
  • Fixed some issues building for Windows.
  • id 589514: Fixed problem handling strings like a"\b" within a comment.
  • id 589616: Fixed problem matching explicitly scoped parameter in a template class.
  • id 590712: A namespaced with name "internal" (C++/CLI keyword) could confuse doxygen's C++ parser.
  • id 591749: @optional/@required attributes for Objective-C were missing from the XML output.

Doxygen Release 1.5 and earlier

Go back to the main page.

Generated on Sun Apr 20 2014 18:54:45 for Doxygen by doxygen 1.8.7


Doxygen: Main Page

Doxygen
Doxygen Documentation
doxygen
Version: 1.8.7

Introduction

Doxygen is the de facto standard tool for generating documentation from annotated C++ sources, but it also supports other popular programming languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D.

Doxygen can help you in three ways:

  1. It can generate an on-line documentation browser (in HTML) and/or an off-line reference manual (in [image]) from a set of documented source files. There is also support for generating output in RTF (MS-Word), PostScript, hyperlinked PDF, compressed HTML, and Unix man pages. The documentation is extracted directly from the sources, which makes it much easier to keep the documentation consistent with the source code.
  2. You can configure doxygen to extract the code structure from undocumented source files. This is very useful to quickly find your way in large source distributions. Doxygen can also visualize the relations between the various elements by means of include dependency graphs, inheritance diagrams, and collaboration diagrams, which are all generated automatically.
  3. You can also use doxygen for creating normal documentation (as I did for the doxygen user manual and web-site).

Doxygen is developed under Mac OS X and Linux, but is set-up to be highly portable. As a result, it runs on most other Unix flavors as well. Furthermore, executables for Windows are available.

This manual is divided into three parts, each of which is divided into several sections.

The first part forms a user manual:

  • Section Installation discusses how to download, compile and install doxygen for your platform.
  • Section Getting started tells you how to generate your first piece of documentation quickly.
  • Section Documenting the code demonstrates the various ways that code can be documented.
  • Section Markdown support show the Markdown formatting supported by doxygen.
  • Section Lists shows how to create lists.
  • Section Grouping shows how to group things together.
  • Section Including formulas shows how to insert formulas in the documentation.
  • Section Graphs and diagrams describes the diagrams and graphs that doxygen can generate.
  • Section Preprocessing explains how doxygen deals with macro definitions.
  • Section Automatic link generation shows how to put links to files, classes, and members in the documentation.
  • Section Output Formats shows how to generate the various output formats supported by doxygen.
  • Section Searching shows various ways to search in the HTML documentation.
  • Section External Indexing and Searching shows how use the external search and index tools
  • Section Customizing the output explains how you can customize the output generated by doxygen.
  • Section Custom Commands show how to define and use custom commands in your comments.
  • Section Linking to external documentation explains how to let doxygen create links to externally generated documentation.
  • Section Frequently Asked Questions gives answers to frequently asked questions.
  • Section Troubleshooting tells you what to do when you have problems.

The second part forms a reference manual:

  • Section Features presents an overview of what doxygen can do.
  • Section Doxygen usage shows how to use the doxygen program.
  • Section Doxywizard usage shows how to use the doxywizard program.
  • Section Configuration shows how to fine-tune doxygen, so it generates the documentation you want.
  • Section Special Commands shows an overview of the special commands that can be used within the documentation.
  • Section HTML Commands shows an overview of the HTML commands that can be used within the documentation.
  • Section XML Commands shows an overview of the C# style XML commands that can be used within the documentation.

The third part provides information for developers:

  • Section Doxygen's Internals gives a global overview of how doxygen is internally structured.
  • Section Perl Module Output shows how to use the PerlMod output.
  • Section Internationalization explains how to add support for new output languages.

Doxygen license

Copyright © 1997-2014 by Dimitri van Heesch.

Permission to use, copy, modify, and distribute this software and its documentation under the terms of the GNU General Public License is hereby granted. No representations are made about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. See the GNU General Public License for more details.

Documents produced by doxygen are derivative works derived from the input used in their production; they are not affected by this license.

User examples

Doxygen supports a number of output formats where HTML is the most popular one. I've gathered some nice examples of real-life projects using doxygen.

These are part of a larger list of projects that use doxygen. If you know other projects, let me know and I'll add them.

Future work

Although doxygen is successfully used by large number of companies and open source projects already, there is always room for improvement.

You can submit enhancement requests in the bug tracker. Make sure the severity of the bug report is set to "enhancement".

Acknowledgments

Thanks go to:

  • Malte Zöckler and Roland Wunderling, authors of DOC++. The first version of doxygen borrowed some code of an old version of DOC++. Although I have rewritten practically all code since then, DOC++ has still given me a good start in writing doxygen.
  • All people at Qt Software, for creating a beautiful GUI Toolkit (which is very useful as a Windows/Unix platform abstraction layer :-)
  • My brother Frank for rendering the logos.
  • Harm van der Heijden for adding HTML help support.
  • Wouter Slegers of Your Creative Solutions for registering the www.doxygen.org domain.
  • Parker Waechter for adding the RTF output generator.
  • Joerg Baumann, for adding conditional documentation blocks, PDF links, and the configuration generator.
  • Tim Mensch for adding the todo command.
  • Christian Hammond for redesigning the web-site.
  • Ken Wong for providing the HTML tree view code.
  • Talin for adding support for C# style comments with XML markup.
  • Petr Prikryl for coordinating the internationalization support. All language maintainers for providing translations into many languages.
  • The band Porcupine Tree for providing hours of great music to listen to while coding.
  • many, many others for suggestions, patches and bug reports.

Go to the next section.

Generated on Sun Apr 20 2014 18:54:51 for Doxygen by doxygen 1.8.7


Doxygen: Related Pages

Doxygen
Related Pages
Here is a list of all related documentation pages:
[detail level 12]
Installation
Getting started
Documenting the code
Markdown support
Lists
Grouping
Including formulas
Graphs and diagrams
Preprocessing
Automatic link generation
Output Formats
▼ Searching
External Indexing and Searching
Customizing the output
Custom Commands
Linking to external documentation
Frequently Asked Questions
Troubleshooting
Features
Doxygen usage
Doxywizard usage
Configuration
Special Commands
HTML Commands
XML Commands
Internationalization
Perl Module Output
Perl Module Tree Nodes
Doxygen's Internals
Changelog
Generated on Sun Apr 20 2014 18:54:51 for Doxygen by doxygen 1.8.7


(1.8.6)

Doxygen supports the following 40 languages (sorted alphabetically):

Afrikaans, Arabic, Armenian, Brazilian Portuguese, Catalan, Chinese,
Chinese Traditional, Croatian, Czech, Danish, Dutch, English,
Esperanto, Finnish, French, German, Greek, Hungarian, Indonesian,
Italian, Japanese (+En), Korean (+En), Latvian, Lithuanian,
Macedonian, Norwegian, Persian, Polish, Portuguese, Romanian, Russian,
Serbian, SerbianCyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
Ukrainian, and Vietnamese.

Of them, 12 translators are up-to-date, 28 translators are based on
some adapter class, and 2 are English based.

----------------------------------------------------------------------
The following translator classes are up-to-date (sorted
alphabetically). This means that they derive from the Translator
class, they implement all 242 of the required methods, and even minor
problems were not spotted by the script:

  TranslatorCzech
  TranslatorDutch
  TranslatorEnglish
  TranslatorFrench
  TranslatorJapanese
  TranslatorKorean
  TranslatorSlovak
  TranslatorSpanish

----------------------------------------------------------------------
The following translator classes are ALMOST up-to-date (sorted
alphabetically). This means that they derive from the Translator
class, but there still may be some minor problems listed for them:

  TranslatorChinesetraditional	-- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs()
  TranslatorRomanian	-- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs()
  TranslatorRussian	-- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs()
  TranslatorSwedish	-- The "translate me!" found in a comment.
        The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs()

----------------------------------------------------------------------
The following translator classes need maintenance (the most obsolete
at the end). The other info shows the estimation of Doxygen version
when the class was last updated and number of methods that must be
implemented to become up-to-date:

  TranslatorUkrainian             1.8.4 	 8 methods to implement (3 %)
  TranslatorLatvian               1.8.4 	 8 methods to implement (3 %)
  TranslatorGreek                 1.8.4 	 8 methods to implement (3 %)
  TranslatorGerman                1.8.4 	 8 methods to implement (3 %)
  TranslatorEsperanto             1.8.4 	 8 methods to implement (3 %)
  TranslatorPolish                1.8.2 	14 methods to implement (5 %)
  TranslatorItalian               1.8.2 	15 methods to implement (6 %)
  TranslatorCroatian              1.8.2 	15 methods to implement (6 %)
  TranslatorChinese               1.8.2 	15 methods to implement (6 %)
  TranslatorPortuguese            1.8.0 	22 methods to implement (9 %)
  TranslatorIndonesian            1.8.0 	22 methods to implement (9 %)
  TranslatorDanish                1.8.0 	22 methods to implement (9 %)
  TranslatorCatalan               1.8.0 	22 methods to implement (9 %)
  TranslatorBrazilian             1.8.0 	22 methods to implement (9 %)
  TranslatorArmenian              1.8.0 	22 methods to implement (9 %)
  TranslatorTurkish               1.7.5 	25 methods to implement (10 %)
  TranslatorPersian               1.7.5 	25 methods to implement (10 %)
  TranslatorVietnamese            1.6.0 	33 methods to implement (13 %)
  TranslatorSerbian               1.6.0 	33 methods to implement (13 %)
  TranslatorSerbianCyrillic       1.6.0 	33 methods to implement (13 %)
  TranslatorMacedonian            1.6.0 	33 methods to implement (13 %)
  TranslatorFinnish               1.6.0 	33 methods to implement (13 %)
  TranslatorAfrikaans             1.6.0 	33 methods to implement (13 %)
  TranslatorSlovene               1.4.6 	57 methods to implement (23 %)
  TranslatorNorwegian             1.4.6 	55 methods to implement (22 %)
  TranslatorLithuanian            1.4.6 	57 methods to implement (23 %)
  TranslatorHungarian             1.4.6 	57 methods to implement (23 %)
  TranslatorArabic                1.4.6 	55 methods to implement (22 %)

----------------------------------------------------------------------
The following translator classes derive directly from the
TranslatorEnglish. The class identifier has the suffix 'En' that says
that this is intentional. Usually, there is also a non-English based
version of the translator for the language:

  TranslatorJapaneseEn	implements 4 methods
  TranslatorKoreanEn	implements 4 methods

======================================================================
WARNING: The following translator methods are declared in the
Translator class but their identifiers do not appear in source files.
The situation should be checked. The .cpp files and .h files excluding
the '*translator*' files in doxygen/src directory were simply searched
for occurrence of the method identifiers:

  QCString trBug()
  QCString trBugList()
  QCString trDeprecated()
  QCString trDeprecatedList()
  QCString trTest()
  QCString trTestList()
  QCString trTodo()
  QCString trTodoList()

======================================================================
Details for translators (classes sorted alphabetically):

TranslatorAfrikaans   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
-------------------

  Implements 209 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorArabic   (TranslatorAdapter_1_4_6)  55 methods to implement (22 %)
----------------

  Implements 187 of the required methods (77 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trSubprograms()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trModulesListDescription(bool extractAll)
    virtual QCString trModulesList()
    virtual QCString trTypeConstraints()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trMemberFunctionDocumentationFortran()
    virtual QCString trCompoundListDescriptionFortran()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trTypeDocumentation()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trModuleReference(const char * namespaceName)
    virtual QCString trModulesMemberDescription(bool extractAll)
    virtual QCString trModulesMembers()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trCompoundListFortran()
    virtual QCString trDataTypes()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trCompoundIndexFortran()
    virtual QCString trSubprogram(bool first_capital, bool singular)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trCallerGraph()
    virtual QCString trExtendsClass()
    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
    virtual QCString trType(bool first_capital, bool singular)
    virtual QCString trModule(bool first_capital, bool singular)
    virtual QCString trCompoundMembersFortran()
    virtual QCString trModulesIndex()
    virtual QCString trSubprogramDocumentation()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

  Obsolete methods (should be removed, never used):

    virtual QCString trHeaderFilesDescription()
    virtual QCString trField(bool/*first_capital*/, bool singular)
    virtual QCString trPackageDocumentation()
    virtual QCString trSources()
    virtual QCString trReimplementedForInternalReasons()
    virtual QCString trBugsAndLimitations()
    virtual QCString trHeaderFiles()
    virtual QCString trNoDescriptionAvailable()

TranslatorArmenian   (TranslatorAdapter_1_8_0)  22 methods to implement (9 %)
------------------

  Implements 220 of the required methods (90 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trTemplateParameters()
    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorBrazilian   (TranslatorAdapter_1_8_0)  22 methods to implement (9 %)
-------------------

  Implements 220 of the required methods (90 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trTemplateParameters()
    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorCatalan   (TranslatorAdapter_1_8_0)  22 methods to implement (9 %)
-----------------

  Implements 220 of the required methods (90 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trTemplateParameters()
    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorChinese   (TranslatorAdapter_1_8_2)  15 methods to implement (6 %)
-----------------

  Implements 227 of the required methods (93 %).

  Missing methods (should be implemented):

    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trConstantGroups()
    virtual QCString trMethodDocumentation()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorChinesetraditional   (Translator)
----------------------------

  Implements 242 of the required methods (100 %).

TranslatorCroatian   (TranslatorAdapter_1_8_2)  15 methods to implement (6 %)
------------------

  Implements 227 of the required methods (93 %).

  Missing methods (should be implemented):

    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trConstantGroups()
    virtual QCString trMethodDocumentation()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorDanish   (TranslatorAdapter_1_8_0)  22 methods to implement (9 %)
----------------

  Implements 220 of the required methods (90 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trTemplateParameters()
    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorEsperanto   (TranslatorAdapter_1_8_4)  8 methods to implement (3 %)
-------------------

  Implements 234 of the required methods (96 %).

  Missing methods (should be implemented):

    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trConstantGroups()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trSingletonReference(const char * sName)

TranslatorFinnish   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
-----------------

  Implements 209 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorGerman   (TranslatorAdapter_1_8_4)  8 methods to implement (3 %)
----------------

  Implements 234 of the required methods (96 %).

  Missing methods (should be implemented):

    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trConstantGroups()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trSingletonReference(const char * sName)

TranslatorGreek   (TranslatorAdapter_1_8_4)  8 methods to implement (3 %)
---------------

  Implements 234 of the required methods (96 %).

  Missing methods (should be implemented):

    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trConstantGroups()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trSingletonReference(const char * sName)

TranslatorHungarian   (TranslatorAdapter_1_4_6)  57 methods to implement (23 %)
-------------------

  Implements 185 of the required methods (76 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trSubprograms()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trModulesListDescription(bool extractAll)
    virtual QCString trModulesList()
    virtual QCString trTypeConstraints()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trMemberFunctionDocumentationFortran()
    virtual QCString trCompoundListDescriptionFortran()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trTypeDocumentation()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trModuleReference(const char * namespaceName)
    virtual QCString trModulesMemberDescription(bool extractAll)
    virtual QCString trModulesMembers()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trCompoundListFortran()
    virtual QCString trDataTypes()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trCompoundIndexFortran()
    virtual QCString trSubprogram(bool first_capital, bool singular)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trCallerGraph()
    virtual QCString trExtendsClass()
    virtual QCString trEnumerationValueDocumentation()
    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
    virtual QCString trType(bool first_capital, bool singular)
    virtual QCString trModule(bool first_capital, bool singular)
    virtual QCString trCompoundMembersFortran()
    virtual QCString trModulesIndex()
    virtual QCString trSubprogramDocumentation()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorIndonesian   (TranslatorAdapter_1_8_0)  22 methods to implement (9 %)
--------------------

  Implements 220 of the required methods (90 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trTemplateParameters()
    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorItalian   (TranslatorAdapter_1_8_2)  15 methods to implement (6 %)
-----------------

  Implements 227 of the required methods (93 %).

  Missing methods (should be implemented):

    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trConstantGroups()
    virtual QCString trMethodDocumentation()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorJapaneseEn   (TranslatorEnglish)  238 methods to implement (98 %)
--------------------

  Implements 4 of the required methods (1 %).

  This English-based translator implements the following methods:

    virtual QCString idLanguage()
    virtual QCString trRTFCharSet()
    virtual QCString trRTFansicp()
    virtual QCString latexLanguageSupportCommand()

TranslatorKoreanEn   (TranslatorEnglish)  238 methods to implement (98 %)
------------------

  Implements 4 of the required methods (1 %).

  This English-based translator implements the following methods:

    virtual QCString idLanguage()
    virtual QCString trRTFCharSet()
    virtual QCString trRTFansicp()
    virtual QCString latexLanguageSupportCommand()

TranslatorLatvian   (TranslatorAdapter_1_8_4)  8 methods to implement (3 %)
-----------------

  Implements 234 of the required methods (96 %).

  Missing methods (should be implemented):

    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trConstantGroups()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trSingletonReference(const char * sName)

TranslatorLithuanian   (TranslatorAdapter_1_4_6)  57 methods to implement (23 %)
--------------------

  Implements 185 of the required methods (76 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trSubprograms()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trModulesListDescription(bool extractAll)
    virtual QCString trModulesList()
    virtual QCString trTypeConstraints()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trMemberFunctionDocumentationFortran()
    virtual QCString trCompoundListDescriptionFortran()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trTypeDocumentation()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trModuleReference(const char * namespaceName)
    virtual QCString trModulesMemberDescription(bool extractAll)
    virtual QCString trModulesMembers()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trCompoundListFortran()
    virtual QCString trDataTypes()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trCompoundIndexFortran()
    virtual QCString trSubprogram(bool first_capital, bool singular)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trCallerGraph()
    virtual QCString trExtendsClass()
    virtual QCString trEnumerationValueDocumentation()
    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
    virtual QCString trType(bool first_capital, bool singular)
    virtual QCString trModule(bool first_capital, bool singular)
    virtual QCString trCompoundMembersFortran()
    virtual QCString trModulesIndex()
    virtual QCString trSubprogramDocumentation()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorMacedonian   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
--------------------

  Implements 209 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorNorwegian   (TranslatorAdapter_1_4_6)  55 methods to implement (22 %)
-------------------

  Implements 187 of the required methods (77 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trSubprograms()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trModulesListDescription(bool extractAll)
    virtual QCString trModulesList()
    virtual QCString trTypeConstraints()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trMemberFunctionDocumentationFortran()
    virtual QCString trCompoundListDescriptionFortran()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trTypeDocumentation()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trModuleReference(const char * namespaceName)
    virtual QCString trModulesMemberDescription(bool extractAll)
    virtual QCString trModulesMembers()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trCompoundListFortran()
    virtual QCString trDataTypes()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trCompoundIndexFortran()
    virtual QCString trSubprogram(bool first_capital, bool singular)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trCallerGraph()
    virtual QCString trExtendsClass()
    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
    virtual QCString trType(bool first_capital, bool singular)
    virtual QCString trModule(bool first_capital, bool singular)
    virtual QCString trCompoundMembersFortran()
    virtual QCString trModulesIndex()
    virtual QCString trSubprogramDocumentation()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

  Obsolete methods (should be removed, never used):

    virtual QCString trHeaderFilesDescription()
    virtual QCString trField(bool first_capital, bool singular)
    virtual QCString trPackageDocumentation()
    virtual QCString trSources()
    virtual QCString trReimplementedForInternalReasons()
    virtual QCString trBugsAndLimitations()
    virtual QCString trHeaderFiles()
    virtual QCString trNoDescriptionAvailable()

TranslatorPersian   (TranslatorAdapter_1_7_5)  25 methods to implement (10 %)
-----------------

  Implements 217 of the required methods (89 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trTemplateParameters()
    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorPolish   (TranslatorAdapter_1_8_2)  14 methods to implement (5 %)
----------------

  Implements 228 of the required methods (94 %).

  Missing methods (should be implemented):

    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trConstantGroups()
    virtual QCString trMethodDocumentation()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

  Obsolete methods (should be removed, never used):

    QCString trHeaderFilesDescription()
    virtual QCString trField(bool first_capital, bool singular)
    virtual QCString trPackageDocumentation()
    QCString trSources()
    QCString trReimplementedForInternalReasons()
    QCString trBugsAndLimitations()
    QCString trHeaderFiles()
    QCString trNoDescriptionAvailable()

TranslatorPortuguese   (TranslatorAdapter_1_8_0)  22 methods to implement (9 %)
--------------------

  Implements 220 of the required methods (90 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trTemplateParameters()
    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorRomanian   (Translator)
------------------

  Implements 242 of the required methods (100 %).

TranslatorRussian   (Translator)
-----------------

  Implements 242 of the required methods (100 %).

TranslatorSerbian   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
-----------------

  Implements 209 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorSerbianCyrillic   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
-------------------------

  Implements 209 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorSlovene   (TranslatorAdapter_1_4_6)  57 methods to implement (23 %)
-----------------

  Implements 185 of the required methods (76 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trSubprograms()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trModulesListDescription(bool extractAll)
    virtual QCString trModulesList()
    virtual QCString trTypeConstraints()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trMemberFunctionDocumentationFortran()
    virtual QCString trCompoundListDescriptionFortran()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trTypeDocumentation()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trModuleReference(const char * namespaceName)
    virtual QCString trModulesMemberDescription(bool extractAll)
    virtual QCString trModulesMembers()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trCompoundListFortran()
    virtual QCString trDataTypes()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trCompoundIndexFortran()
    virtual QCString trSubprogram(bool first_capital, bool singular)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trCallerGraph()
    virtual QCString trExtendsClass()
    virtual QCString trEnumerationValueDocumentation()
    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
    virtual QCString trType(bool first_capital, bool singular)
    virtual QCString trModule(bool first_capital, bool singular)
    virtual QCString trCompoundMembersFortran()
    virtual QCString trModulesIndex()
    virtual QCString trSubprogramDocumentation()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorSwedish   (Translator)
-----------------

  Implements 242 of the required methods (100 %).

TranslatorTurkish   (TranslatorAdapter_1_7_5)  25 methods to implement (10 %)
-----------------

  Implements 217 of the required methods (89 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trTemplateParameters()
    virtual QCString trServices()
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()

TranslatorUkrainian   (TranslatorAdapter_1_8_4)  8 methods to implement (3 %)
-------------------

  Implements 234 of the required methods (96 %).

  Missing methods (should be implemented):

    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trConstantGroups()
    virtual QCString trInterfaces()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trSingletonReference(const char * sName)

TranslatorVietnamese   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
--------------------

  Implements 209 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trDetailLevel()
    virtual QCString trSearching()
    virtual QCString trTemplateParameters()
    virtual QCString trNoMatches()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trLoading()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trServices()
    virtual QCString trFileIn(const char * name)
    virtual QCString trClassMethods()
    virtual QCString trProvidedByCategory()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trDesignOverview()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trConstantGroups()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trMethodDocumentation()
    virtual QCString trEnumReference(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trCiteReferences()
    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trInterfaces()
    virtual QCString trCopyright()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trExtendsClass()
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trInstanceMethods()


AfterDocs: afterdoc.h Source File

AfterDocs
  • Main Page
  • Classes
  • Files
  • File List
afterdoc.h
1
3 class Test
4 {
5 public:
9 enum EnumType
10 {
11 int EVal1,
12 int EVal2
13 };
14 void member();
15
16 protected:
17 int value;
18 };
Test::value
int value
Definition: afterdoc.h:17
Test
Definition: afterdoc.h:3
Test::member
void member()
a member function.
Test::EVal1
enum value 1
Definition: afterdoc.h:11
Test::EVal2
enum value 2
Definition: afterdoc.h:12
Test::EnumType
EnumType
An enum type.
Definition: afterdoc.h:9
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: Class List

AfterDocs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: Test Class Reference

AfterDocs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Public Types | Public Member Functions | Protected Attributes | List of all members
Test Class Reference

#include <afterdoc.h>

Public Types

enum EnumType { EVal1, EVal2 }
An enum type. More...

Public Member Functions

void member ()
a member function.

Protected Attributes

int value

Detailed Description

A test class

Member Enumeration Documentation

enum Test::EnumType

An enum type.

The documentation block cannot be put after the enum!

Enumerator
EVal1 | enum value 1
EVal2 | enum value 2

Member Data Documentation

int Test::value
protected

an integer value

The documentation for this class was generated from the following file:
  • afterdoc.h
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: Member List

AfterDocs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Test Member List

This is the complete list of members for Test, including all inherited members.

EnumType enum name | Test |
EVal1 enum value | Test |
EVal2 enum value | Test |
member() | Test |
value | Test | protected
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: Class Index

AfterDocs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: File List

AfterDocs
  • Main Page
  • Classes
  • Files
  • File List
File List
Here is a list of all documented files with brief descriptions:
afterdoc.h
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: Class Members

AfterDocs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
Here is a list of all documented class members with links to the class documentation for each member:
  • EnumType : Test
  • EVal1 : Test
  • EVal2 : Test
  • member() : Test
  • value : Test
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: Class Members - Enumerations

AfterDocs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • EnumType : Test
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: Class Members - Enumerator

AfterDocs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • EVal1 : Test
  • EVal2 : Test
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: Class Members - Functions

AfterDocs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • member() : Test
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: Class Members - Variables

AfterDocs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • value : Test
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


AfterDocs: Main Page

AfterDocs
  • Main Page
  • Classes
  • Files
AfterDocs Documentation
Generated on Sun Apr 20 2014 18:53:59 for AfterDocs by doxygen 1.8.7


Author Command: Class List

Author Command
  • Main Page
  • Related Pages
  • Classes
  • Class List
  • Class Index
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C SomeNiceClass Pretty nice class
Generated on Sun Apr 20 2014 18:53:58 for Author Command by doxygen 1.8.7


Author Command: Bug List

Author Command
  • Main Page
  • Related Pages
  • Classes
Bug List
Class SomeNiceClass
Not all memory is freed when deleting an object of this class.
Warning
Improper use can crash your application
Copyright
GNU Public License.
Generated on Sun Apr 20 2014 18:53:58 for Author Command by doxygen 1.8.7


Author Command: SomeNiceClass Class Reference

Author Command
  • Main Page
  • Related Pages
  • Classes
  • Class List
  • Class Index
SomeNiceClass Class Reference

Pretty nice class. More...

Detailed Description

Pretty nice class.

This class is used to demonstrate a number of section commands.

Author
John Doe
Jan Doe
Version
4.1a
Date
1990-2011
Precondition
First initialize the system.
Bug:
Not all memory is freed when deleting an object of this class.
Warning
Improper use can crash your application
Copyright
GNU Public License.
The documentation for this class was generated from the following file:
  • author.cpp
Generated on Sun Apr 20 2014 18:53:58 for Author Command by doxygen 1.8.7


Author Command: Class Index

Author Command
  • Main Page
  • Related Pages
  • Classes
  • Class List
  • Class Index
Class Index
S
S
SomeNiceClass
S
Generated on Sun Apr 20 2014 18:53:58 for Author Command by doxygen 1.8.7


Author Command: Main Page

Author Command
  • Main Page
  • Related Pages
  • Classes
Author Command Documentation
Generated on Sun Apr 20 2014 18:53:58 for Author Command by doxygen 1.8.7


Author Command: Related Pages

Author Command
  • Main Page
  • Related Pages
  • Classes
Related Pages
Here is a list of all related documentation pages:
Bug List
Generated on Sun Apr 20 2014 18:53:58 for Author Command by doxygen 1.8.7


Automatic link generation: Class List

Automatic link generation
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: autolink.cpp File Reference

Automatic link generation
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
Classes | Macros | Typedefs | Enumerations | Variables
autolink.cpp File Reference

Classes

class Test

Macros

#define ABS(x) (((x)>0)?(x):-(x))

Typedefs

typedef Test B

Enumerations

enum GlobEnum { GVal1, GVal2 }

Variables

int globVar

Detailed Description

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

Macro Definition Documentation

#define ABS ( x ) (((x)>0)?(x):-(x))

A macro definition.

Typedef Documentation

typedef Test B

A type definition.

Enumeration Type Documentation

enum GlobEnum

A global enum.

Enumerator
GVal1 | global enum value 1
GVal2 | global enum value 2

Variable Documentation

int globVar

A global variable.

Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: Test Class Reference

Automatic link generation
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Public Types | Public Member Functions | Protected Attributes | List of all members
Test Class Reference

Public Types

enum EType { Val1, Val2 }
An enum type. More...

Public Member Functions

Test ()
constructor More...
~Test ()
destructor More...
void | member (int)
A member function. More...
void | member (int, int)
An overloaded member function. More...

Protected Attributes

int var
A member variable.

Detailed Description

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 using another text as a link.

A link to the enumeration type EType.

A link to some enumeration values: Val1 and GVal1.

And last but not least a link to a file: autolink.cpp.

See also
Inside a see also section any word is checked, so EType, Val1, GVal1, ~Test and member will be replaced by links in HTML.

Member Enumeration Documentation

enum Test::EType

An enum type.

More details

Enumerator
Val1 | enum value 1
Val2 | enum value 2

Constructor & Destructor Documentation

Test::Test ( )

constructor

details.

Test::~Test ( )

destructor

details.

Member Function Documentation

void Test::member ( int )

A member function.

Details.

void Test::member | ( | int | ,
 |  | int |
 | ) |  |

An overloaded member function.

Details

The documentation for this class was generated from the following file:
  • autolink.cpp
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: Member List

Automatic link generation
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Test Member List

This is the complete list of members for Test, including all inherited members.

EType enum name | Test |
member(int) | Test |
member(int, int) | Test |
Test() | Test |
Val1 enum value | Test |
Val2 enum value | Test |
var | Test | protected
~Test() | Test |
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: Class Index

Automatic link generation
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: File List

Automatic link generation
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
File List
Here is a list of all documented files with brief descriptions:
autolink.cpp
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: Class Members

Automatic link generation
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
Here is a list of all documented class members with links to the class documentation for each member:
  • EType : Test
  • member() : Test
  • Test() : Test
  • Val1 : Test
  • Val2 : Test
  • var : Test
  • ~Test() : Test
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: Class Members - Enumerations

Automatic link generation
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • EType : Test
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: Class Members - Enumerator

Automatic link generation
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • Val1 : Test
  • Val2 : Test
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: Class Members - Functions

Automatic link generation
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • member() : Test
  • Test() : Test
  • ~Test() : Test
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: Class Members - Variables

Automatic link generation
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • var : Test
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: File Members

Automatic link generation
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Variables
  • Typedefs
  • Enumerations
  • Enumerator
  • Macros
Here is a list of all documented file members with links to the documentation:
  • ABS : autolink.cpp
  • B : autolink.cpp
  • GlobEnum : autolink.cpp
  • globVar : autolink.cpp
  • GVal1 : autolink.cpp
  • GVal2 : autolink.cpp
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: File Members

Automatic link generation
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Variables
  • Typedefs
  • Enumerations
  • Enumerator
  • Macros
  • ABS : autolink.cpp
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: File Members

Automatic link generation
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Variables
  • Typedefs
  • Enumerations
  • Enumerator
  • Macros
  • GlobEnum : autolink.cpp
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: File Members

Automatic link generation
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Variables
  • Typedefs
  • Enumerations
  • Enumerator
  • Macros
  • GVal1 : autolink.cpp
  • GVal2 : autolink.cpp
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: File Members

Automatic link generation
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Variables
  • Typedefs
  • Enumerations
  • Enumerator
  • Macros
  • B : autolink.cpp
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: File Members

Automatic link generation
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Variables
  • Typedefs
  • Enumerations
  • Enumerator
  • Macros
  • globVar : autolink.cpp
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Automatic link generation: Main Page

Automatic link generation
  • Main Page
  • Classes
  • Files
Automatic link generation Documentation
Generated on Sun Apr 20 2014 18:53:59 for Automatic link generation by doxygen 1.8.7


Class Command: Class List

Class Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test This is a test class
Generated on Sun Apr 20 2014 18:53:57 for Class Command by doxygen 1.8.7


Class Command: class.h Source File

Class Command
  • Main Page
  • Classes
  • Files
  • File List
class.h
1 /* A dummy class */
2
3 class Test
4 {
5 };
6
Test
This is a test class.
Definition: class.h:3
Generated on Sun Apr 20 2014 18:53:57 for Class Command by doxygen 1.8.7


Class Command: Test Class Reference

Class Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
Test Class Reference

This is a test class. More...

#include "inc/class.h"

Detailed Description

This is a test class.

Some details about the Test class

The documentation for this class was generated from the following file:
  • class.h
Generated on Sun Apr 20 2014 18:53:57 for Class Command by doxygen 1.8.7


Class Command: Class Index

Class Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:57 for Class Command by doxygen 1.8.7


Class Command: File List

Class Command
  • Main Page
  • Classes
  • Files
  • File List
File List
Here is a list of all documented files with brief descriptions:
class.h
Generated on Sun Apr 20 2014 18:53:57 for Class Command by doxygen 1.8.7


Class Command: Main Page

Class Command
  • Main Page
  • Classes
  • Files
Class Command Documentation
Generated on Sun Apr 20 2014 18:53:57 for Class Command by doxygen 1.8.7


Define Command: define.h File Reference

Define Command
  • Main Page
  • Files
  • File List
  • File Members
Macros
define.h File Reference

testing defines More...

Go to the source code of this file.

Macros

#define | ABS(x) (((x)>0)?(x):-(x))
#define | MAX(x, y) ((x)>(y)?(x):(y))
#define | MIN(x, y) ((x)>(y)?(y):(x))

Detailed Description

testing defines

This is to test the documentation of defines.

Macro Definition Documentation

#define ABS ( x ) (((x)>0)?(x):-(x))

Computes the absolute value of its argument x.

#define MAX | ( | x,
 |  | y
 | ) | ((x)>(y)?(x):(y))

Computes the maximum of x and y.

#define MIN | ( | x,
 |  | y
 | ) | ((x)>(y)?(y):(x))

Computes the minimum of x and y.

Generated on Sun Apr 20 2014 18:53:57 for Define Command by doxygen 1.8.7


Define Command: define.h Source File

Define Command
  • Main Page
  • Files
  • File List
  • File Members
define.h
Go to the documentation of this file.
1
15 #define ABS(x) (((x)>0)?(x):-(x))
16 #define MAX(x,y) ((x)>(y)?(x):(y))
17 #define MIN(x,y) ((x)>(y)?(y):(x))
18
Generated on Sun Apr 20 2014 18:53:57 for Define Command by doxygen 1.8.7


Define Command: File List

Define Command
  • Main Page
  • Files
  • File List
  • File Members
File List
Here is a list of all documented files with brief descriptions:
define.h Testing defines
Generated on Sun Apr 20 2014 18:53:57 for Define Command by doxygen 1.8.7


Define Command: File Members

Define Command
  • Main Page
  • Files
  • File List
  • File Members
  • All
  • Macros
Here is a list of all documented file members with links to the documentation:
  • ABS : define.h
  • MAX : define.h
  • MIN : define.h
Generated on Sun Apr 20 2014 18:53:57 for Define Command by doxygen 1.8.7


Define Command: File Members

Define Command
  • Main Page
  • Files
  • File List
  • File Members
  • All
  • Macros
  • ABS : define.h
  • MAX : define.h
  • MIN : define.h
Generated on Sun Apr 20 2014 18:53:57 for Define Command by doxygen 1.8.7


Define Command: Main Page

Define Command
  • Main Page
  • Files
Define Command Documentation
Generated on Sun Apr 20 2014 18:53:57 for Define Command by doxygen 1.8.7


Diagrams: Class List

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C A
C B
C C
C D
C E
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: A Class Reference

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Public Attributes | List of all members
A Class Reference

#include <diagrams_a.h>

Inheritance diagram for A:
[legend]
Collaboration diagram for A:
[legend]

Public Attributes

A * m_self

Member Data Documentation

A* A::m_self
The documentation for this class was generated from the following file:
  • diagrams_a.h
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Member List

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
A Member List

This is the complete list of members for A, including all inherited members.

m_self A
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: B Class Reference

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Public Attributes | List of all members
B Class Reference

#include <diagrams_b.h>

Inheritance diagram for B:
[legend]
Collaboration diagram for B:
[legend]

Public Attributes

A * m_a

Member Data Documentation

A* B::m_a
The documentation for this class was generated from the following file:
  • diagrams_b.h
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Member List

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
B Member List

This is the complete list of members for B, including all inherited members.

m_a B
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: C Class Reference

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Public Attributes | List of all members
C Class Reference

#include <diagrams_c.h>

Inheritance diagram for C:
[legend]
Collaboration diagram for C:
[legend]

Public Attributes

D * m_d
- Public Attributes inherited from A
A * m_self

Member Data Documentation

D* C::m_d
The documentation for this class was generated from the following file:
  • diagrams_c.h
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Member List

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
C Member List

This is the complete list of members for C, including all inherited members.

m_d | C
m_self | A
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: D Class Reference

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Public Attributes | List of all members
D Class Reference

#include <diagrams_d.h>

Inheritance diagram for D:
[legend]
Collaboration diagram for D:
[legend]

Public Attributes

C m_c

Additional Inherited Members

- Protected Attributes inherited from A
A * m_self

Member Data Documentation

C D::m_c
The documentation for this class was generated from the following file:
  • diagrams_d.h
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Member List

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
D Member List

This is the complete list of members for D, including all inherited members.

m_a | B | private
m_c | D |
m_self | A | protected
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: E Class Reference

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
List of all members
E Class Reference

#include <diagrams_e.h>

Inheritance diagram for E:
[legend]
Collaboration diagram for E:
[legend]

Additional Inherited Members

- Public Attributes inherited from D
C m_c
- Protected Attributes inherited from A
A * m_self
The documentation for this class was generated from the following file:
  • diagrams_e.h
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Member List

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
E Member List

This is the complete list of members for E, including all inherited members.

m_c | D |
m_self | A | protected
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Class Index

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Class Index
A | B | C | D | E
A
B
C
D
E
A B C D E
A | B | C | D | E
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: diagrams_a.h File Reference

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
Classes
diagrams_a.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class A
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: diagrams_a.h Source File

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
diagrams_a.h
Go to the documentation of this file.
1 #ifndef _DIAGRAMS_A_H
2 #define _DIAGRAMS_A_H
3 class A { public: A *m_self; };
4 #endif
A
Definition: diagrams_a.h:3
A::m_self
A * m_self
Definition: diagrams_a.h:3
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: diagrams_b.h File Reference

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
Classes
diagrams_b.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class B
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: diagrams_b.h Source File

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
diagrams_b.h
Go to the documentation of this file.
1 #ifndef _DIAGRAMS_B_H
2 #define _DIAGRAMS_B_H
3 class A;
4 class B { public: A *m_a; };
5 #endif
B::m_a
A * m_a
Definition: diagrams_b.h:4
B
Definition: diagrams_b.h:4
A
Definition: diagrams_a.h:3
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: diagrams_c.h File Reference

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
Classes
diagrams_c.h File Reference
#include "diagrams_c.h"
Include dependency graph for diagrams_c.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class C
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: diagrams_c.h Source File

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
diagrams_c.h
Go to the documentation of this file.
1 #ifndef _DIAGRAMS_C_H
2 #define _DIAGRAMS_C_H
3 #include "diagrams_c.h"
4 class D;
5 class C : public A { public: D *m_d; };
6 #endif
diagrams_c.h
D
Definition: diagrams_d.h:6
C::m_d
D * m_d
Definition: diagrams_c.h:5
A
Definition: diagrams_a.h:3
C
Definition: diagrams_c.h:5
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: diagrams_d.h File Reference

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
Classes
diagrams_d.h File Reference
#include "diagrams_a.h"
#include "diagrams_b.h"
Include dependency graph for diagrams_d.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class D
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: diagrams_d.h Source File

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
diagrams_d.h
Go to the documentation of this file.
1 #ifndef _DIAGRAM_D_H
2 #define _DIAGRAM_D_H
3 #include "diagrams_a.h"
4 #include "diagrams_b.h"
5 class C;
6 class D : virtual protected A, private B { public: C m_c; };
7 #endif
diagrams_a.h
B
Definition: diagrams_b.h:4
D
Definition: diagrams_d.h:6
A
Definition: diagrams_a.h:3
C
Definition: diagrams_c.h:5
diagrams_b.h
D::m_c
C m_c
Definition: diagrams_d.h:6
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: diagrams_e.h File Reference

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
Classes
diagrams_e.h File Reference
#include "diagrams_d.h"
Include dependency graph for diagrams_e.h:

Go to the source code of this file.

Classes

class E
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: diagrams_e.h Source File

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
diagrams_e.h
Go to the documentation of this file.
1 #ifndef _DIAGRAM_E_H
2 #define _DIAGRAM_E_H
3 #include "diagrams_d.h"
4 class E : public D {};
5 #endif
diagrams_d.h
E
Definition: diagrams_e.h:4
D
Definition: diagrams_d.h:6
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: File List

Diagrams
  • Main Page
  • Classes
  • Files
  • File List
File List
Here is a list of all files with brief descriptions:
diagrams_a.h
diagrams_b.h
diagrams_c.h
diagrams_d.h
diagrams_e.h
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Class Members

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
  • All
  • Variables
Here is a list of all class members with links to the classes they belong to:
  • m_a : B
  • m_c : D
  • m_d : C
  • m_self : A
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Class Members - Variables

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
  • All
  • Variables
  • m_a : B
  • m_c : D
  • m_d : C
  • m_self : A
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Graph Legend

Diagrams
  • Main Page
  • Classes
  • Files
Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

The boxes in the above graph have the following meaning:

  • A filled gray box represents the struct or class for which the graph is generated.
  • A box with a black border denotes a documented struct or class.
  • A box with a grey border denotes an undocumented struct or class.
  • A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.

The arrows have the following meaning:

  • A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • A dark green arrow is used for protected inheritance.
  • A dark red arrow is used for private inheritance.
  • A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Class Hierarchy

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Class Hierarchy

Go to the graphical class hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 123]
▼C A
C C
▼C D
C E
▼C B
C D
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Main Page

Diagrams
  • Main Page
  • Classes
  • Files
Diagrams Documentation
Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Diagrams: Class Hierarchy

Diagrams
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Class Hierarchy

Go to the textual class hierarchy

Generated on Sun Apr 20 2014 18:53:59 for Diagrams by doxygen 1.8.7


Python: Class List

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12]
▼N docstring
C PyClass
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: docstring.PyClass Class Reference

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • docstring
  • PyClass
Public Member Functions | List of all members
docstring.PyClass Class Reference

Public Member Functions

def | __init__
def | PyMethod

Detailed Description

Documentation for a class.

More details.

Constructor & Destructor Documentation

def docstring.PyClass.__init__ ( self )
The constructor.

Member Function Documentation

def docstring.PyClass.PyMethod ( self )
Documentation for a method.
The documentation for this class was generated from the following file:
  • docstring.py
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Member List

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • docstring
  • PyClass
docstring.PyClass Member List

This is the complete list of members for docstring.PyClass, including all inherited members.

__init__ | docstring.PyClass
PyMethod | docstring.PyClass
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Class Index

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class Index
P
P
PyClass (docstring)
P
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: docstring.py File Reference

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • File List
Classes | Namespaces | Functions
docstring.py File Reference

Classes

class docstring.PyClass

Namespaces

docstring

Functions

def docstring.func
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: File List

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • File List
File List
Here is a list of all files with brief descriptions:
docstring.py
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Class Members

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
Here is a list of all class members with links to the classes they belong to:
  • __init__() : docstring.PyClass
  • PyMethod() : docstring.PyClass
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Class Members - Functions

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • __init__() : docstring.PyClass
  • PyMethod() : docstring.PyClass
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Main Page

Python
  • Main Page
  • Packages
  • Classes
  • Files
Python Documentation
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: docstring Namespace Reference

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • Packages
  • Package Functions
Classes | Functions
docstring Namespace Reference

Classes

class PyClass

Functions

def func

Detailed Description

@package docstring
Documentation for this module.

More details.

Function Documentation

def docstring.func ( )
Documentation for a function.

More details.
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Package Functions

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • Packages
  • Package Functions
  • All
  • Functions
Here is a list of all namespace members with links to the namespace documentation for each member:
  • func() : docstring
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Package Functions

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • Packages
  • Package Functions
  • All
  • Functions
  • func() : docstring
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Packages

Python
  • Main Page
  • Packages
  • Classes
  • Files
  • Packages
  • Package Functions
Packages
Here are the packages with brief descriptions (if available):
N docstring
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Enum Command: Class List

Enum Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test
Generated on Sun Apr 20 2014 18:53:57 for Enum Command by doxygen 1.8.7


Enum Command: Test Class Reference

Enum Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Public Types | List of all members
Test Class Reference

#include <enum.h>

Public Types

enum | TEnum { Val1, Val2 }
enum | AnotherEnum { V1, V2 }

Detailed Description

The class description.

Member Enumeration Documentation

enum Test::AnotherEnum

Another enum, with inline docs

Enumerator
V1 | value 1
V2 | value 2
enum Test::TEnum

A description of the enum type.

Enumerator
Val1

The description of the first enum value.

The documentation for this class was generated from the following file:
  • enum.h
Generated on Sun Apr 20 2014 18:53:57 for Enum Command by doxygen 1.8.7


Enum Command: Member List

Enum Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Test Member List

This is the complete list of members for Test, including all inherited members.

AnotherEnum enum name | Test
TEnum enum name | Test
V1 enum value | Test
V2 enum value | Test
Val1 enum value | Test
Val2 enum value (defined in Test) | Test
Generated on Sun Apr 20 2014 18:53:57 for Enum Command by doxygen 1.8.7


Enum Command: Class Index

Enum Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:57 for Enum Command by doxygen 1.8.7


Enum Command: enum.h Source File

Enum Command
  • Main Page
  • Classes
  • Files
  • File List
enum.h
1 class Test
2 {
3 public:
4 enum TEnum { Val1, Val2 };
5
7 enum AnotherEnum
8 {
9 V1,
10 V2
11 };
12 };
13
Test::V2
Definition: enum.h:10
Test::V1
Definition: enum.h:9
Test
Definition: enum.h:1
Test::AnotherEnum
AnotherEnum
Definition: enum.h:7
Test::Val1
Definition: enum.h:4
Test::TEnum
TEnum
Definition: enum.h:4
Generated on Sun Apr 20 2014 18:53:57 for Enum Command by doxygen 1.8.7


Enum Command: File List

Enum Command
  • Main Page
  • Classes
  • Files
  • File List
File List
Here is a list of all documented files with brief descriptions:
enum.h
Generated on Sun Apr 20 2014 18:53:57 for Enum Command by doxygen 1.8.7


Enum Command: Class Members

Enum Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Enumerations
  • Enumerator
Here is a list of all documented class members with links to the class documentation for each member:
  • AnotherEnum : Test
  • TEnum : Test
  • V1 : Test
  • V2 : Test
  • Val1 : Test
Generated on Sun Apr 20 2014 18:53:57 for Enum Command by doxygen 1.8.7


Enum Command: Class Members - Enumerations

Enum Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Enumerations
  • Enumerator
  • AnotherEnum : Test
  • TEnum : Test
Generated on Sun Apr 20 2014 18:53:57 for Enum Command by doxygen 1.8.7


Enum Command: Class Members - Enumerator

Enum Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Enumerations
  • Enumerator
  • V1 : Test
  • V2 : Test
  • Val1 : Test
Generated on Sun Apr 20 2014 18:53:57 for Enum Command by doxygen 1.8.7


Enum Command: Main Page

Enum Command
  • Main Page
  • Classes
  • Files
Enum Command Documentation
Generated on Sun Apr 20 2014 18:53:57 for Enum Command by doxygen 1.8.7


Example Command: Class List

Example Command
  • Main Page
  • Classes
  • Examples
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test A Test class
Generated on Sun Apr 20 2014 18:53:58 for Example Command by doxygen 1.8.7


Example Command: Test Class Reference

Example Command
  • Main Page
  • Classes
  • Examples
  • Class List
  • Class Index
  • Class Members
Public Member Functions | List of all members
Test Class Reference

A Test class. More...

Public Member Functions

void example ()
An example member function. More...

Detailed Description

A Test class.

More details about this class.

Examples:
example_test.cpp.

Member Function Documentation

void Test::example ( )

An example member function.

More details about this function.

Examples:
example_test.cpp.
The documentation for this class was generated from the following file:
  • example.cpp
Generated on Sun Apr 20 2014 18:53:58 for Example Command by doxygen 1.8.7


Example Command: Member List

Example Command
  • Main Page
  • Classes
  • Examples
  • Class List
  • Class Index
  • Class Members
Test Member List

This is the complete list of members for Test, including all inherited members.

example() Test
Generated on Sun Apr 20 2014 18:53:58 for Example Command by doxygen 1.8.7


Example Command: Class Index

Example Command
  • Main Page
  • Classes
  • Examples
  • Class List
  • Class Index
  • Class Members
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:58 for Example Command by doxygen 1.8.7


Example Command: example_test.cpp

Example Command
  • Main Page
  • Classes
  • Examples
example_test.cpp

This is an example of how to use the Test class.More details about this example.

void main()
{
Test t;
t.example();
}
Generated on Sun Apr 20 2014 18:53:58 for Example Command by doxygen 1.8.7


Example Command: Examples

Example Command
  • Main Page
  • Classes
  • Examples
Examples
Here is a list of all examples:
  • example_test.cpp
Generated on Sun Apr 20 2014 18:53:58 for Example Command by doxygen 1.8.7


Example Command: Class Members

Example Command
  • Main Page
  • Classes
  • Examples
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
Here is a list of all documented class members with links to the class documentation for each member:
  • example() : Test
Generated on Sun Apr 20 2014 18:53:58 for Example Command by doxygen 1.8.7


Example Command: Class Members - Functions

Example Command
  • Main Page
  • Classes
  • Examples
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • example() : Test
Generated on Sun Apr 20 2014 18:53:58 for Example Command by doxygen 1.8.7


Example Command: Main Page

Example Command
  • Main Page
  • Classes
  • Examples
Example Command Documentation
Generated on Sun Apr 20 2014 18:53:58 for Example Command by doxygen 1.8.7


File Command: file.h File Reference

File Command
  • Main Page
  • Files
  • File List
  • File Members
Variables
file.h File Reference

A brief file description. More...

Go to the source code of this file.

Variables

int globalValue
A global integer value. More...

Detailed Description

A brief file description.

A more elaborated file description.

Variable Documentation

int globalValue

A global integer value.

More details about this value.

Generated on Sun Apr 20 2014 18:53:58 for File Command by doxygen 1.8.7


File Command: file.h Source File

File Command
  • Main Page
  • Files
  • File List
  • File Members
file.h
Go to the documentation of this file.
1
10 extern int globalValue;
globalValue
int globalValue
A global integer value.
Generated on Sun Apr 20 2014 18:53:58 for File Command by doxygen 1.8.7


File Command: File List

File Command
  • Main Page
  • Files
  • File List
  • File Members
File List
Here is a list of all documented files with brief descriptions:
file.h A brief file description
Generated on Sun Apr 20 2014 18:53:58 for File Command by doxygen 1.8.7


File Command: File Members

File Command
  • Main Page
  • Files
  • File List
  • File Members
  • All
  • Variables
Here is a list of all documented file members with links to the documentation:
  • globalValue : file.h
Generated on Sun Apr 20 2014 18:53:58 for File Command by doxygen 1.8.7


File Command: File Members

File Command
  • Main Page
  • Files
  • File List
  • File Members
  • All
  • Variables
  • globalValue : file.h
Generated on Sun Apr 20 2014 18:53:58 for File Command by doxygen 1.8.7


File Command: Main Page

File Command
  • Main Page
  • Files
File Command Documentation
Generated on Sun Apr 20 2014 18:53:58 for File Command by doxygen 1.8.7


Fn Command: Class List

Fn Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test Test class
Generated on Sun Apr 20 2014 18:53:58 for Fn Command by doxygen 1.8.7


Fn Command: Test Class Reference

Fn Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Public Member Functions | List of all members
Test Class Reference

Test class. More...

#include <func.h>

Public Member Functions

const char * member (char, int) throw (std::out_of_range)
A member function. More...

Detailed Description

Test class.

Details about Test.

Member Function Documentation

const char * Test::member | ( | char | c,
 |  | int | n
 | ) |  |
throw | ( | std::out_of_range
 | ) |  |

A member function.

Parameters
c | a character.
n | an integer.
Exceptions
std::out_of_range parameter is out of range.
Returns
a character pointer.
The documentation for this class was generated from the following file:
  • func.h
Generated on Sun Apr 20 2014 18:53:58 for Fn Command by doxygen 1.8.7


Fn Command: Member List

Fn Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Test Member List

This is the complete list of members for Test, including all inherited members.

member(char, int) Test
Generated on Sun Apr 20 2014 18:53:58 for Fn Command by doxygen 1.8.7


Fn Command: Class Index

Fn Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:58 for Fn Command by doxygen 1.8.7


Fn Command: File List

Fn Command
  • Main Page
  • Classes
  • Files
  • File List
File List
Here is a list of all documented files with brief descriptions:
func.h
Generated on Sun Apr 20 2014 18:53:58 for Fn Command by doxygen 1.8.7


Fn Command: func.h Source File

Fn Command
  • Main Page
  • Classes
  • Files
  • File List
func.h
1 class Test
2 {
3 public:
4 const char *member(char,int) throw(std::out_of_range);
5 };
6
7 const char *Test::member(char c,int n) throw(std::out_of_range) {}
8
Test
Test class.
Definition: func.h:1
Test::member
const char * member(char, int)
A member function.
Definition: func.h:7
Generated on Sun Apr 20 2014 18:53:58 for Fn Command by doxygen 1.8.7


Fn Command: Class Members

Fn Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
Here is a list of all documented class members with links to the class documentation for each member:
  • member() : Test
Generated on Sun Apr 20 2014 18:53:58 for Fn Command by doxygen 1.8.7


Fn Command: Class Members - Functions

Fn Command
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • member() : Test
Generated on Sun Apr 20 2014 18:53:58 for Fn Command by doxygen 1.8.7


Fn Command: Main Page

Fn Command
  • Main Page
  • Classes
  • Files
Fn Command Documentation
Generated on Sun Apr 20 2014 18:53:58 for Fn Command by doxygen 1.8.7


Grouping: Class List

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C C1 | Class C1 in group 1
C C2 | Class C2 in group 1
C C3 | Class C3 in group 2
C C4 | Class C4 in group 2
C C5 | Class C5 in the third group
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: C1 Class Reference

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
C1 Class Reference
The First Group

class C1 in group 1 More...

Detailed Description

class C1 in group 1

The documentation for this class was generated from the following file:
  • group.cpp
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: C2 Class Reference

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
C2 Class Reference
The First Group

class C2 in group 1 More...

Detailed Description

class C2 in group 1

The documentation for this class was generated from the following file:
  • group.cpp
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: C3 Class Reference

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
C3 Class Reference
The Second Group

class C3 in group 2 More...

Detailed Description

class C3 in group 2

The documentation for this class was generated from the following file:
  • group.cpp
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: C4 Class Reference

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
C4 Class Reference
The Second Group

class C4 in group 2 More...

Detailed Description

class C4 in group 2

The documentation for this class was generated from the following file:
  • group.cpp
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: C5 Class Reference

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
C5 Class Reference
The Third Group

class C5 in the third group. More...

Detailed Description

class C5 in the third group.

The documentation for this class was generated from the following file:
  • group.cpp
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: Class Index

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
Class Index
C
C
C2 C4
C3 C5
C1
C
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: File List

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members
File List
Here is a list of all documented files with brief descriptions:
group.cpp This file in group 3
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: File Members

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
Here is a list of all documented file members with links to the documentation:
  • func() : group.cpp
  • func2() : group.cpp
  • func3() : group.cpp
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: File Members

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
  • func() : group.cpp
  • func2() : group.cpp
  • func3() : group.cpp
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: group.cpp File Reference

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members
Classes | Namespaces | Functions
group.cpp File Reference
The Third Group

this file in group 3 More...

Classes

class | C1
class C1 in group 1 More...
class | C2
class C2 in group 1 More...
class | C3
class C3 in group 2 More...
class | C4
class C4 in group 2 More...
class | C5
class C5 in the third group. More...

Namespaces

N1
namespace N1 is in four groups

Functions

void | func ()
function in group 1
void | func2 ()
another function in group 1
void | func3 ()
yet another function in group 1

Detailed Description

this file in group 3

Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: The First Group

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
Namespaces | Classes | Functions
The First Group

This is the first group. More...

Namespaces

N1
namespace N1 is in four groups

Classes

class | C1
class C1 in group 1 More...
class | C2
class C2 in group 1 More...

Functions

void | func ()
function in group 1
void | func2 ()
another function in group 1
void | func3 ()
yet another function in group 1

Detailed Description

This is the first group.

More documentation for the first group.

Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: The Second Group

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
Namespaces | Classes
The Second Group

This is the second group. More...

Namespaces

N1
namespace N1 is in four groups

Classes

class | C3
class C3 in group 2 More...
class | C4
class C4 in group 2 More...

Detailed Description

This is the second group.

Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: The Third Group

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
Modules | Files | Namespaces | Classes
The Third Group

This is the third group. More...

Modules

The Fourth Group
Group 4 is a subgroup of group 3.

Files

file group.cpp
this file in group 3

Namespaces

N1
namespace N1 is in four groups

Classes

class C5
class C5 in the third group. More...

Detailed Description

This is the third group.

Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: The Fourth Group

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
Namespaces
The Fourth Group
The Third Group

Group 4 is a subgroup of group 3. More...

Namespaces

N1
namespace N1 is in four groups

Detailed Description

Group 4 is a subgroup of group 3.

Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: The Fifth Group

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
The Fifth Group

This is the fifth group. More...

This is the fifth group.

This is a section in group 5

Text of the first section

This is another section in group 5

Text of the second section
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: Main Page

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
Grouping Documentation
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: Modules

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
Modules
Here is a list of all modules:
[detail level 12]
The First Group | This is the first group
The Second Group | This is the second group
▼ The Third Group | This is the third group
The Fourth Group | Group 4 is a subgroup of group 3
The Fifth Group | This is the fifth group
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: N1 Namespace Reference

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • Namespace List
N1 Namespace Reference
The First Group | The Second Group | The Third Group | The Fourth Group

namespace N1 is in four groups More...

Detailed Description

namespace N1 is in four groups

See also
The first group, The Second Group, The Third Group, The Fourth Group

Also see This is another section in group 5

Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Grouping: Namespace List

Grouping
  • Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • Namespace List
Namespace List
Here is a list of all documented namespaces with brief descriptions:
N N1 Namespace N1 is in four groups
Generated on Sun Apr 20 2014 18:53:59 for Grouping by doxygen 1.8.7


Include Command: Class List

Include Command
  • Main Page
  • Related Pages
  • Classes
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test
Generated on Sun Apr 20 2014 18:53:58 for Include Command by doxygen 1.8.7


Include Command: Test Class Reference

Include Command
  • Main Page
  • Related Pages
  • Classes
  • Class List
  • Class Index
  • Class Members
Public Member Functions | List of all members
Test Class Reference

Public Member Functions

void example ()
a member function

Detailed Description

A test class.

The documentation for this class was generated from the following file:
  • include.cpp
Generated on Sun Apr 20 2014 18:53:58 for Include Command by doxygen 1.8.7


Include Command: Member List

Include Command
  • Main Page
  • Related Pages
  • Classes
  • Class List
  • Class Index
  • Class Members
Test Member List

This is the complete list of members for Test, including all inherited members.

example() Test
Generated on Sun Apr 20 2014 18:53:58 for Include Command by doxygen 1.8.7


Include Command: Class Index

Include Command
  • Main Page
  • Related Pages
  • Classes
  • Class List
  • Class Index
  • Class Members
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:58 for Include Command by doxygen 1.8.7


Include Command: $title

Include Command
  • Main Page
  • Related Pages
  • Classes
Our main function starts like this:
void main()
{
First we create an object t of the Test class.
Test t;
Then we call the example member function
t.example();
After that our little test routine ends.
}

Generated on Sun Apr 20 2014 18:53:58 for Include Command by doxygen 1.8.7


Include Command: Class Members

Include Command
  • Main Page
  • Related Pages
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
Here is a list of all documented class members with links to the class documentation for each member:
  • example() : Test
Generated on Sun Apr 20 2014 18:53:58 for Include Command by doxygen 1.8.7


Include Command: Class Members - Functions

Include Command
  • Main Page
  • Related Pages
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • example() : Test
Generated on Sun Apr 20 2014 18:53:58 for Include Command by doxygen 1.8.7


Include Command: Main Page

Include Command
  • Main Page
  • Related Pages
  • Classes
Include Command Documentation
Generated on Sun Apr 20 2014 18:53:58 for Include Command by doxygen 1.8.7


Include Command: Related Pages

Include Command
  • Main Page
  • Related Pages
  • Classes
Related Pages
Here is a list of all related documentation pages:
example
Generated on Sun Apr 20 2014 18:53:58 for Include Command by doxygen 1.8.7


JavaDoc Style: Class List

JavaDoc Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test A test class
Generated on Sun Apr 20 2014 18:53:58 for JavaDoc Style by doxygen 1.8.7


JavaDoc Style: Test Class Reference

JavaDoc Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Public Types | Public Member Functions | Public Attributes | List of all members
Test Class Referenceabstract

A test class. More...

Public Types

enum TEnum { TVal1, TVal2, TVal3 }
An enum. More...

Public Member Functions

Test ()
A constructor. More...
~Test ()
A destructor. More...
int | testMe (int a, const char *s)
a normal member taking two arguments and returning an integer value. More...
virtual void | testMeToo (char c1, char c2)=0
A pure virtual member. More...

Public Attributes

enum Test::TEnum * | enumPtr
enum pointer. More...
enum Test::TEnum | enumVar
enum variable. More...
int | publicVar
a public variable. More...
int(* | handler )(int a, int b)
a function variable. More...

Detailed Description

A test class.

A more elaborate class description.

Member Enumeration Documentation

enum Test::TEnum

An enum.

More detailed enum description.

Enumerator
TVal1 | enum value TVal1.
TVal2 | enum value TVal2.
TVal3 | enum value TVal3.

Constructor & Destructor Documentation

Test::Test ( )

A constructor.

A more elaborate description of the constructor.

Test::~Test ( )

A destructor.

A more elaborate description of the destructor.

Member Function Documentation

int Test::testMe | ( | int | a,
 |  | const char * | s
 | ) |  |

a normal member taking two arguments and returning an integer value.

Parameters
a | an integer argument.
s | a constant character pointer.
See also
Test()
~Test()
testMeToo()
publicVar()
Returns
The test results
virtual void Test::testMeToo | ( | char | c1,
 |  | char | c2
 | ) |  |
pure virtual

A pure virtual member.

See also
testMe()
Parameters
c1 | the first argument.
c2 | the second argument.

Member Data Documentation

enum Test::TEnum * Test::enumPtr

enum pointer.

Details.

enum Test::TEnum Test::enumVar

enum variable.

Details.

int(* Test::handler)(int a, int b)

a function variable.

Details.

int Test::publicVar

a public variable.

Details.

The documentation for this class was generated from the following file:
  • jdstyle.cpp
Generated on Sun Apr 20 2014 18:53:58 for JavaDoc Style by doxygen 1.8.7


JavaDoc Style: Member List

JavaDoc Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Test Member List

This is the complete list of members for Test, including all inherited members.

enumPtr | Test |
enumVar | Test |
handler | Test |
publicVar | Test |
TEnum enum name | Test |
Test() | Test |
testMe(int a, const char *s) | Test |
testMeToo(char c1, char c2)=0 | Test | pure virtual
TVal1 enum value | Test |
TVal2 enum value | Test |
TVal3 enum value | Test |
~Test() | Test |
Generated on Sun Apr 20 2014 18:53:58 for JavaDoc Style by doxygen 1.8.7


JavaDoc Style: Class Index

JavaDoc Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:58 for JavaDoc Style by doxygen 1.8.7


JavaDoc Style: Class Members

JavaDoc Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
Here is a list of all documented class members with links to the class documentation for each member:
  • enumPtr : Test
  • enumVar : Test
  • handler : Test
  • publicVar : Test
  • TEnum : Test
  • Test() : Test
  • testMe() : Test
  • testMeToo() : Test
  • TVal1 : Test
  • TVal2 : Test
  • TVal3 : Test
  • ~Test() : Test
Generated on Sun Apr 20 2014 18:53:58 for JavaDoc Style by doxygen 1.8.7


JavaDoc Style: Class Members - Enumerations

JavaDoc Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • TEnum : Test
Generated on Sun Apr 20 2014 18:53:58 for JavaDoc Style by doxygen 1.8.7


JavaDoc Style: Class Members - Enumerator

JavaDoc Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • TVal1 : Test
  • TVal2 : Test
  • TVal3 : Test
Generated on Sun Apr 20 2014 18:53:58 for JavaDoc Style by doxygen 1.8.7


JavaDoc Style: Class Members - Functions

JavaDoc Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • Test() : Test
  • testMe() : Test
  • testMeToo() : Test
  • ~Test() : Test
Generated on Sun Apr 20 2014 18:53:58 for JavaDoc Style by doxygen 1.8.7


JavaDoc Style: Class Members - Variables

JavaDoc Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • enumPtr : Test
  • enumVar : Test
  • handler : Test
  • publicVar : Test
Generated on Sun Apr 20 2014 18:53:58 for JavaDoc Style by doxygen 1.8.7


JavaDoc Style: Main Page

JavaDoc Style
  • Main Page
  • Classes
JavaDoc Style Documentation
Generated on Sun Apr 20 2014 18:53:58 for JavaDoc Style by doxygen 1.8.7


Manual inheritance and membership: Class List

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Car | Car type
C Object | Object type
C Truck | Truck type
C Vehicle | Vehicle type
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Class Index

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Class Index
C | O | T | V
C
O
T
V
Car Object Truck Vehicle
C | O | T | V
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: File List

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
File List
Here is a list of all documented files with brief descriptions:
manual.c
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Class Members

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
  • All
  • Functions
  • Variables
Here is a list of all documented class members with links to the class documentation for each member:
  • base : Car , Truck , Vehicle
  • objRef() : Object
  • objUnref() : Object
  • ref : Object
  • vehicleStart() : Vehicle
  • vehicleStop() : Vehicle
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Class Members - Functions

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
  • All
  • Functions
  • Variables
  • objRef() : Object
  • objUnref() : Object
  • vehicleStart() : Vehicle
  • vehicleStop() : Vehicle
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Class Members - Variables

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
  • All
  • Functions
  • Variables
  • base : Car , Truck , Vehicle
  • ref : Object
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: File Members

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
Here is a list of all documented file members with links to the documentation:
  • main() : manual.c
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: File Members

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
  • main() : manual.c
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Class Hierarchy

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 123]
▼C Object | Object type
▼C Vehicle | Vehicle type
C Car | Car type
C Truck | Truck type
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Main Page

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
Manual inheritance and membership Documentation
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: manual.c File Reference

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
Classes | Functions
manual.c File Reference

Classes

struct | Object
Object type. More...
struct | Vehicle
Vehicle type. More...
struct | Car
Car type. More...
struct | Truck
Truck type. More...

Functions

int main (void)

Function Documentation

int main ( void )

Main function.

Ref vehicleStart(), objRef(), objUnref().

References Vehicle::vehicleStart().

83 {
84 Car c;
85 vehicleStart((Vehicle*) &c);
86 }
Vehicle
Vehicle type.
Definition: manual.c:37
Car
Car type.
Definition: manual.c:61
Vehicle::vehicleStart
void vehicleStart(Vehicle *obj)
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Car Struct Reference

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Protected Attributes | List of all members
Car Struct Reference

Car type. More...

Inheritance diagram for Car:
Vehicle Object

Protected Attributes

Vehicle base
Base class.
- Protected Attributes inherited from Vehicle
Object base
Base class.

Additional Inherited Members

- Public Member Functions inherited from Vehicle
void | vehicleStart (Vehicle *obj)
void | vehicleStop (Vehicle *obj)
- Public Member Functions inherited from Object
static Object * | objRef (Object *obj)
static Object * | objUnref (Object *obj)

Detailed Description

Car type.

Car class.

The documentation for this struct was generated from the following file:
  • manual.c
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Member List

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Car Member List

This is the complete list of members for Car, including all inherited members.

base | Car | protected
objRef(Object *obj) | Object |
objUnref(Object *obj) | Object |
vehicleStart(Vehicle *obj) | Vehicle |
vehicleStop(Vehicle *obj) | Vehicle |
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Object Struct Reference

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Public Member Functions | Private Attributes | List of all members
Object Struct Reference

Object type. More...

Inheritance diagram for Object:
Vehicle Car Truck

Public Member Functions

static Object * | objRef (Object *obj)
static Object * | objUnref (Object *obj)

Private Attributes

int ref
Reference count.

Detailed Description

Object type.

Base object class.

Member Function Documentation

static Object * objRef ( Object * obj )

Increments object reference count by one.

static Object * objUnref ( Object * obj )

Decrements object reference count by one.

The documentation for this struct was generated from the following file:
  • manual.c
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Member List

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Object Member List

This is the complete list of members for Object, including all inherited members.

objRef(Object *obj) | Object |
objUnref(Object *obj) | Object |
ref | Object | private
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Truck Struct Reference

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Protected Attributes | List of all members
Truck Struct Reference

Truck type. More...

Inheritance diagram for Truck:
Vehicle Object

Protected Attributes

Vehicle base
Base class.
- Protected Attributes inherited from Vehicle
Object base
Base class.

Additional Inherited Members

- Public Member Functions inherited from Vehicle
void | vehicleStart (Vehicle *obj)
void | vehicleStop (Vehicle *obj)
- Public Member Functions inherited from Object
static Object * | objRef (Object *obj)
static Object * | objUnref (Object *obj)

Detailed Description

Truck type.

Truck class.

The documentation for this struct was generated from the following file:
  • manual.c
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Member List

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Truck Member List

This is the complete list of members for Truck, including all inherited members.

base | Truck | protected
objRef(Object *obj) | Object |
objUnref(Object *obj) | Object |
vehicleStart(Vehicle *obj) | Vehicle |
vehicleStop(Vehicle *obj) | Vehicle |
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Vehicle Struct Reference

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Public Member Functions | Protected Attributes | List of all members
Vehicle Struct Reference

Vehicle type. More...

Inheritance diagram for Vehicle:
Object Car Truck

Public Member Functions

void | vehicleStart (Vehicle *obj)
void | vehicleStop (Vehicle *obj)
- Public Member Functions inherited from Object
static Object * | objRef (Object *obj)
static Object * | objUnref (Object *obj)

Protected Attributes

Object base
Base class.

Detailed Description

Vehicle type.

Vehicle class.

Member Function Documentation

void vehicleStart ( Vehicle * obj )

Starts the vehicle.

Referenced by main().

void vehicleStop ( Vehicle * obj )

Stops the vehicle.

The documentation for this struct was generated from the following file:
  • manual.c
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Manual inheritance and membership: Member List

Manual inheritance and membership
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
Vehicle Member List

This is the complete list of members for Vehicle, including all inherited members.

base | Vehicle | protected
objRef(Object *obj) | Object |
objUnref(Object *obj) | Object |
vehicleStart(Vehicle *obj) | Vehicle |
vehicleStop(Vehicle *obj) | Vehicle |
Generated on Sun Apr 20 2014 18:54:04 for Manual inheritance and membership by doxygen 1.8.7


Member Grouping: Class List

Member Grouping
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test A class
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: Test Class Reference

Member Grouping
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Public Member Functions | List of all members
Test Class Reference

A class. More...

Public Member Functions

void | ungroupedFunction ()
Function without group. More...
void | func1InGroup1 ()
Same documentation for both members. More...
void | func2InGroup1 ()
Same documentation for both members. More...

Group2

Description of group 2.

void | func1InGroup2 ()
Function 1 in group 2. More...
void | func2InGroup2 ()
Function 2 in group 2. More...

Detailed Description

A class.

Details

Member Function Documentation

void Test::func1InGroup1 ( )

Same documentation for both members.

Details

void Test::func1InGroup2 ( )

Function 1 in group 2.

Details.

void Test::func2InGroup1 ( )

Same documentation for both members.

Details

void Test::func2InGroup2 ( )
protected

Function 2 in group 2.

Details.

void Test::ungroupedFunction ( )

Function without group.

Details.

The documentation for this class was generated from the following file:
  • memgrp.cpp
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: Member List

Member Grouping
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Test Member List

This is the complete list of members for Test, including all inherited members.

func1InGroup1() | Test |
func1InGroup2() | Test |
func2InGroup1() | Test |
func2InGroup2() | Test | protected
ungroupedFunction() | Test |
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: Class Index

Member Grouping
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: File List

Member Grouping
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
File List
Here is a list of all documented files with brief descriptions:
memgrp.cpp
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: Class Members

Member Grouping
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
Here is a list of all documented class members with links to the class documentation for each member:
  • func1InGroup1() : Test
  • func1InGroup2() : Test
  • func2InGroup1() : Test
  • func2InGroup2() : Test
  • ungroupedFunction() : Test
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: Class Members - Functions

Member Grouping
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • func1InGroup1() : Test
  • func1InGroup2() : Test
  • func2InGroup1() : Test
  • func2InGroup2() : Test
  • ungroupedFunction() : Test
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: File Members

Member Grouping
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Macros
Here is a list of all documented file members with links to the documentation:
  • A : memgrp.cpp
  • B : memgrp.cpp
  • glob_func() : memgrp.cpp
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: File Members

Member Grouping
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Macros
  • A : memgrp.cpp
  • B : memgrp.cpp
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: File Members

Member Grouping
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Macros
  • glob_func() : memgrp.cpp
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: Main Page

Member Grouping
  • Main Page
  • Classes
  • Files
Member Grouping Documentation
Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Member Grouping: memgrp.cpp File Reference

Member Grouping
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
Classes
memgrp.cpp File Reference

Classes

class | Test
A class. More...
#define | A 1
#define | B 2
void | glob_func ()

Detailed Description

docs for this file

Macro Definition Documentation

#define A 1

one description for all members of this group (because DISTRIBUTE_GROUP_DOC is YES in the config file)

#define B 2

one description for all members of this group (because DISTRIBUTE_GROUP_DOC is YES in the config file)

Function Documentation

void glob_func ( )

one description for all members of this group (because DISTRIBUTE_GROUP_DOC is YES in the config file)

Generated on Sun Apr 20 2014 18:54:02 for Member Grouping by doxygen 1.8.7


Mux: Design Unit List

Mux
  • Main Page
  • Design Unit List
  • Files
  • Design Unit List
  • Design Units
  • Design Unit Members
Design Unit List
Here is a list of all design unit members with links to the Entities they belong to:
[detail level 12]
▼C mux_using_with | Mux entity brief description
C mux_using_with.behavior | Architecture definition of the MUX
Generated on Sun Apr 20 2014 18:54:04 for Mux by doxygen 1.8.7


Mux: Design Units

Mux
  • Main Page
  • Design Unit List
  • Files
  • Design Unit List
  • Design Units
  • Design Unit Members
Design Units
M
m
mux_using_with
M
Generated on Sun Apr 20 2014 18:54:04 for Mux by doxygen 1.8.7


Mux: mux_using_with Entity Reference

Mux
  • Main Page
  • Design Unit List
  • Files
  • Design Unit List
  • Design Units
  • Design Unit Members
Ports | Libraries | Use Clauses
mux_using_with Entity Reference

Mux entity brief description. More...

Entities

behavior architecture
Architecture definition of the MUX. More...

Libraries

ieee
Use standard library.

Use Clauses

ieee.std_logic_1164.all
Use logic elements.

Ports

din_0 | in std_logic
Mux first input.
din_1 | in std_logic
Mux Second input.
sel | in std_logic
Select input.
mux_out | out std_logic
Mux output.

Detailed Description

Mux entity brief description.

Member Data Documentation

din_0 in std_logic
Port

Mux first input.

Detailed description of this mux design element.

The documentation for this class was generated from the following file:
  • mux.vhdl
Generated on Sun Apr 20 2014 18:54:04 for Mux by doxygen 1.8.7


Mux: behavior Architecture Reference

Mux
  • Main Page
  • Design Unit List
  • Files
  • Design Unit List
  • Design Units
  • Design Unit Members
  • mux_using_with
  • behavior
behavior Architecture Reference

Architecture definition of the MUX. More...

Detailed Description

Architecture definition of the MUX.

More details about this mux element.

The documentation for this class was generated from the following file:
  • mux.vhdl
Generated on Sun Apr 20 2014 18:54:04 for Mux by doxygen 1.8.7


Mux: File List

Mux
  • Main Page
  • Design Unit List
  • Files
  • File List
File List
Here is a list of all documented files with brief descriptions:
mux.vhdl 2:1 Mux using with-select
Generated on Sun Apr 20 2014 18:54:04 for Mux by doxygen 1.8.7


Mux: Design Unit Members

Mux
  • Main Page
  • Design Unit List
  • Files
  • Design Unit List
  • Design Units
  • Design Unit Members
  • All
  • Variables
Here is a list of all documented class members with links to the class documentation for each member:
  • din_0 : mux_using_with
  • din_1 : mux_using_with
  • ieee : mux_using_with
  • ieee.std_logic_1164.all : mux_using_with
  • mux_out : mux_using_with
  • sel : mux_using_with
Generated on Sun Apr 20 2014 18:54:04 for Mux by doxygen 1.8.7


Mux: Design Unit Members - Variables

Mux
  • Main Page
  • Design Unit List
  • Files
  • Design Unit List
  • Design Units
  • Design Unit Members
  • All
  • Variables
  • din_0 : mux_using_with
  • din_1 : mux_using_with
  • ieee : mux_using_with
  • ieee.std_logic_1164.all : mux_using_with
  • mux_out : mux_using_with
  • sel : mux_using_with
Generated on Sun Apr 20 2014 18:54:04 for Mux by doxygen 1.8.7


Mux: Main Page

Mux
  • Main Page
  • Design Unit List
  • Files
Mux Documentation
Generated on Sun Apr 20 2014 18:54:04 for Mux by doxygen 1.8.7


Mux: mux.vhdl File Reference

Mux
  • Main Page
  • Design Unit List
  • Files
  • File List
Entities
mux.vhdl File Reference

2:1 Mux using with-select More...

Entities

mux_using_with | entity
Mux entity brief description. More...
behavior | architecture
Architecture definition of the MUX. More...

Detailed Description

2:1 Mux using with-select

Generated on Sun Apr 20 2014 18:54:04 for Mux by doxygen 1.8.7


Overloaded Command: Class List

Overloaded Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test A short description
Generated on Sun Apr 20 2014 18:53:58 for Overloaded Command by doxygen 1.8.7


Overloaded Command: Test Class Reference

Overloaded Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Public Member Functions | List of all members
Test Class Reference

A short description. More...

Public Member Functions

void | drawRect (int, int, int, int)
void | drawRect (const Rect &r)

Detailed Description

A short description.

More text.

Member Function Documentation

void Test::drawRect | ( | int | x,
 |  | int | y,
 |  | int | w,
 |  | int | h
 | ) |  |

This command draws a rectangle with a left upper corner at ( x , y ), width w and height h.

void Test::drawRect ( const Rect & r )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

The documentation for this class was generated from the following file:
  • overload.cpp
Generated on Sun Apr 20 2014 18:53:58 for Overloaded Command by doxygen 1.8.7


Overloaded Command: Member List

Overloaded Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Test Member List

This is the complete list of members for Test, including all inherited members.

drawRect(int, int, int, int) | Test
drawRect(const Rect &r) | Test
Generated on Sun Apr 20 2014 18:53:58 for Overloaded Command by doxygen 1.8.7


Overloaded Command: Class Index

Overloaded Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:58 for Overloaded Command by doxygen 1.8.7


Overloaded Command: Class Members

Overloaded Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
Here is a list of all documented class members with links to the class documentation for each member:
  • drawRect() : Test
Generated on Sun Apr 20 2014 18:53:58 for Overloaded Command by doxygen 1.8.7


Overloaded Command: Class Members - Functions

Overloaded Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • drawRect() : Test
Generated on Sun Apr 20 2014 18:53:58 for Overloaded Command by doxygen 1.8.7


Overloaded Command: Main Page

Overloaded Command
  • Main Page
  • Classes
Overloaded Command Documentation
Generated on Sun Apr 20 2014 18:53:58 for Overloaded Command by doxygen 1.8.7


Page Command: Main Page

Page Command
  • Main Page
  • Related Pages
Page Command Documentation
Generated on Sun Apr 20 2014 18:53:58 for Page Command by doxygen 1.8.7


Page Command: A documentation page

Page Command
  • Main Page
  • Related Pages
A documentation page

Table of Contents

  • An example section
    • The first subsection
    • The second subsection

Leading text.

An example section

This page contains the subsections The first subsection and The second subsection. For more info see page Another page.

The first subsection

Text.

The second subsection

More text.

Generated on Sun Apr 20 2014 18:53:58 for Page Command by doxygen 1.8.7


Page Command: Another page

Page Command
  • Main Page
  • Related Pages
Another page

Even more info.

Generated on Sun Apr 20 2014 18:53:58 for Page Command by doxygen 1.8.7


Page Command: Related Pages

Page Command
  • Main Page
  • Related Pages
Related Pages
Here is a list of all related documentation pages:
A documentation page
Another page
Generated on Sun Apr 20 2014 18:53:58 for Page Command by doxygen 1.8.7


Par Command: Class List

Par Command
  • Main Page
  • Classes
  • Class List
  • Class Index
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test
Generated on Sun Apr 20 2014 18:53:58 for Par Command by doxygen 1.8.7


Par Command: Test Class Reference

Par Command
  • Main Page
  • Classes
  • Class List
  • Class Index
Test Class Reference

Detailed Description

Normal text.

User defined paragraph:
Contents of the paragraph.
New paragraph under the same heading.
Note
This note consists of two paragraphs. This is the first paragraph.
And this is the second paragraph.

More normal text.

The documentation for this class was generated from the following file:
  • par.cpp
Generated on Sun Apr 20 2014 18:53:58 for Par Command by doxygen 1.8.7


Par Command: Class Index

Par Command
  • Main Page
  • Classes
  • Class List
  • Class Index
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:58 for Par Command by doxygen 1.8.7


Par Command: Main Page

Par Command
  • Main Page
  • Classes
Par Command Documentation
Generated on Sun Apr 20 2014 18:53:58 for Par Command by doxygen 1.8.7


Python: Class List

Python
  • Main Page
  • Packages
  • Classes
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12]
▼N pyexample | Documentation for this module
C PyClass | Documentation for a class
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Class Index

Python
  • Main Page
  • Packages
  • Classes
  • Class List
  • Class Index
  • Class Members
Class Index
P
P
PyClass (pyexample)
P
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: pyexample.PyClass Class Reference

Python
  • Main Page
  • Packages
  • Classes
  • Class List
  • Class Index
  • Class Members
  • pyexample
  • PyClass
Public Member Functions | Static Public Attributes | List of all members
pyexample.PyClass Class Reference

Documentation for a class. More...

Public Member Functions

def | __init__
The constructor. More...
def | PyMethod
Documentation for a method. More...

Static Public Attributes

int classVar = 0
A class variable. More...

Detailed Description

Documentation for a class.

More details.

Constructor & Destructor Documentation

def pyexample.PyClass.__init__ ( self )

The constructor.

Member Function Documentation

def pyexample.PyClass.PyMethod ( self )

Documentation for a method.

Parameters
self The object pointer.

Member Data Documentation

int pyexample.PyClass.classVar = 0
static

A class variable.

The documentation for this class was generated from the following file:
  • pyexample.py
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Member List

Python
  • Main Page
  • Packages
  • Classes
  • Class List
  • Class Index
  • Class Members
  • pyexample
  • PyClass
pyexample.PyClass Member List

This is the complete list of members for pyexample.PyClass, including all inherited members.

__init__ | pyexample.PyClass |
classVar | pyexample.PyClass | static
PyMethod | pyexample.PyClass |
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Class Members

Python
  • Main Page
  • Packages
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
Here is a list of all documented class members with links to the class documentation for each member:
  • __init__() : pyexample.PyClass
  • classVar : pyexample.PyClass
  • PyMethod() : pyexample.PyClass
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Class Members - Functions

Python
  • Main Page
  • Packages
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • __init__() : pyexample.PyClass
  • PyMethod() : pyexample.PyClass
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Class Members - Variables

Python
  • Main Page
  • Packages
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • classVar : pyexample.PyClass
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Main Page

Python
  • Main Page
  • Packages
  • Classes
Python Documentation
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Package Functions

Python
  • Main Page
  • Packages
  • Classes
  • Packages
  • Package Functions
  • All
  • Functions
Here is a list of all documented namespace members with links to the namespaces they belong to:
  • func() : pyexample
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Package Functions

Python
  • Main Page
  • Packages
  • Classes
  • Packages
  • Package Functions
  • All
  • Functions
  • func() : pyexample
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: pyexample Namespace Reference

Python
  • Main Page
  • Packages
  • Classes
  • Packages
  • Package Functions
Classes | Functions
pyexample Namespace Reference

Documentation for this module. More...

Classes

class PyClass
Documentation for a class. More...

Functions

def func
Documentation for a function. More...

Detailed Description

Documentation for this module.

More details.

Function Documentation

def pyexample.func ( )

Documentation for a function.

More details.

Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Python: Packages

Python
  • Main Page
  • Packages
  • Classes
  • Packages
  • Package Functions
Packages
Here are the packages with brief descriptions (if available):
N pyexample Documentation for this module
Generated on Sun Apr 20 2014 18:54:02 for Python by doxygen 1.8.7


Qt Style: Class List

Qt Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C Test A test class
Generated on Sun Apr 20 2014 18:53:58 for Qt Style by doxygen 1.8.7


Qt Style: Test Class Reference

Qt Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Public Types | Public Member Functions | Public Attributes | List of all members
Test Class Referenceabstract

A test class. More...

Public Types

enum TEnum { TVal1, TVal2, TVal3 }
An enum. More...

Public Member Functions

Test ()
A constructor. More...
~Test ()
A destructor. More...
int | testMe (int a, const char *s)
A normal member taking two arguments and returning an integer value. More...
virtual void | testMeToo (char c1, char c2)=0
A pure virtual member. More...

Public Attributes

enum Test::TEnum * | enumPtr
Enum pointer. More...
enum Test::TEnum | enumVar
Enum variable. More...
int | publicVar
A public variable. More...
int(* | handler )(int a, int b)
A function variable. More...

Detailed Description

A test class.

A more elaborate class description.

Member Enumeration Documentation

enum Test::TEnum

An enum.

More detailed enum description.

Enumerator
TVal1 | Enum value TVal1.
TVal2 | Enum value TVal2.
TVal3 | Enum value TVal3.

Constructor & Destructor Documentation

Test::Test ( )

A constructor.

A more elaborate description of the constructor.

Test::~Test ( )

A destructor.

A more elaborate description of the destructor.

Member Function Documentation

int Test::testMe | ( | int | a,
 |  | const char * | s
 | ) |  |

A normal member taking two arguments and returning an integer value.

Parameters
a | an integer argument.
s | a constant character pointer.
Returns
The test results
See also
Test(), ~Test(), testMeToo() and publicVar()
virtual void Test::testMeToo | ( | char | c1,
 |  | char | c2
 | ) |  |
pure virtual

A pure virtual member.

See also
testMe()
Parameters
c1 | the first argument.
c2 | the second argument.

Member Data Documentation

enum Test::TEnum * Test::enumPtr

Enum pointer.

Details.

enum Test::TEnum Test::enumVar

Enum variable.

Details.

int(* Test::handler)(int a, int b)

A function variable.

Details.

int Test::publicVar

A public variable.

Details.

The documentation for this class was generated from the following file:
  • qtstyle.cpp
Generated on Sun Apr 20 2014 18:53:58 for Qt Style by doxygen 1.8.7


Qt Style: Member List

Qt Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Test Member List

This is the complete list of members for Test, including all inherited members.

enumPtr | Test |
enumVar | Test |
handler | Test |
publicVar | Test |
TEnum enum name | Test |
Test() | Test |
testMe(int a, const char *s) | Test |
testMeToo(char c1, char c2)=0 | Test | pure virtual
TVal1 enum value | Test |
TVal2 enum value | Test |
TVal3 enum value | Test |
~Test() | Test |
Generated on Sun Apr 20 2014 18:53:58 for Qt Style by doxygen 1.8.7


Qt Style: Class Index

Qt Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Class Index
T
T
Test
T
Generated on Sun Apr 20 2014 18:53:58 for Qt Style by doxygen 1.8.7


Qt Style: Class Members

Qt Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
Here is a list of all documented class members with links to the class documentation for each member:
  • enumPtr : Test
  • enumVar : Test
  • handler : Test
  • publicVar : Test
  • TEnum : Test
  • Test() : Test
  • testMe() : Test
  • testMeToo() : Test
  • TVal1 : Test
  • TVal2 : Test
  • TVal3 : Test
  • ~Test() : Test
Generated on Sun Apr 20 2014 18:53:58 for Qt Style by doxygen 1.8.7


Qt Style: Class Members - Enumerations

Qt Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • TEnum : Test
Generated on Sun Apr 20 2014 18:53:58 for Qt Style by doxygen 1.8.7


Qt Style: Class Members - Enumerator

Qt Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • TVal1 : Test
  • TVal2 : Test
  • TVal3 : Test
Generated on Sun Apr 20 2014 18:53:58 for Qt Style by doxygen 1.8.7


Qt Style: Class Members - Functions

Qt Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • Test() : Test
  • testMe() : Test
  • testMeToo() : Test
  • ~Test() : Test
Generated on Sun Apr 20 2014 18:53:58 for Qt Style by doxygen 1.8.7


Qt Style: Class Members - Variables

Qt Style
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • Enumerations
  • Enumerator
  • enumPtr : Test
  • enumVar : Test
  • handler : Test
  • publicVar : Test
Generated on Sun Apr 20 2014 18:53:58 for Qt Style by doxygen 1.8.7


Qt Style: Main Page

Qt Style
  • Main Page
  • Classes
Qt Style Documentation
Generated on Sun Apr 20 2014 18:53:58 for Qt Style by doxygen 1.8.7


Relates Command: Class List

Relates Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C String
Generated on Sun Apr 20 2014 18:53:58 for Relates Command by doxygen 1.8.7


Relates Command: String Class Reference

Relates Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Friends | Related Functions | List of all members
String Class Reference

Friends

int strcmp (const String &, const String &)

Related Functions

(Note that these are not member functions.)

void stringDebug ()

Detailed Description

A String class.

Friends And Related Function Documentation

int strcmp | ( | const String & | s1,
 |  | const String & | s2
 | ) |  |
friend

Compares two strings.

void stringDebug ( )
related

A string debug function.

The documentation for this class was generated from the following file:
  • relates.cpp
Generated on Sun Apr 20 2014 18:53:58 for Relates Command by doxygen 1.8.7


Relates Command: Member List

Relates Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
String Member List

This is the complete list of members for String, including all inherited members.

strcmp(const String &, const String &) | String | friend
stringDebug() | String | related
Generated on Sun Apr 20 2014 18:53:58 for Relates Command by doxygen 1.8.7


Relates Command: Class Index

Relates Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
Class Index
S
S
String
S
Generated on Sun Apr 20 2014 18:53:58 for Relates Command by doxygen 1.8.7


Relates Command: Class Members

Relates Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Related Functions
Here is a list of all documented class members with links to the class documentation for each member:
  • strcmp : String
  • stringDebug() : String
Generated on Sun Apr 20 2014 18:53:58 for Relates Command by doxygen 1.8.7


Relates Command: Class Members - Functions

Relates Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Related Functions
  • stringDebug() : String
Generated on Sun Apr 20 2014 18:53:58 for Relates Command by doxygen 1.8.7


Relates Command: Class Members - Related Functions

Relates Command
  • Main Page
  • Classes
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Related Functions
  • strcmp : String
Generated on Sun Apr 20 2014 18:53:58 for Relates Command by doxygen 1.8.7


Relates Command: Main Page

Relates Command
  • Main Page
  • Classes
Relates Command Documentation
Generated on Sun Apr 20 2014 18:53:58 for Relates Command by doxygen 1.8.7


Resolving Typedefs: Class List

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
C CoordStruct
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: Class Index

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class Index
C
C
CoordStruct
C
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: File List

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
File List
Here is a list of all documented files with brief descriptions:
restypedef.cpp
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: Class Members

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Variables
Here is a list of all documented class members with links to the class documentation for each member:
  • x : CoordStruct
  • y : CoordStruct
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: Class Members - Variables

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Variables
  • x : CoordStruct
  • y : CoordStruct
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: File Members

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Typedefs
Here is a list of all documented file members with links to the documentation:
  • add() : restypedef.cpp
  • Coord : restypedef.cpp
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: File Members

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Typedefs
  • add() : restypedef.cpp
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: File Members

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Typedefs
  • Coord : restypedef.cpp
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: Main Page

Resolving Typedefs
  • Main Page
  • Classes
  • Files
Resolving Typedefs Documentation
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: restypedef.cpp File Reference

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • File List
  • File Members
Classes | Typedefs | Functions
restypedef.cpp File Reference

Classes

struct CoordStruct

Typedefs

typedef CoordStruct Coord

Functions

Coord add (Coord c1, Coord c2)

Detailed Description

An example of resolving typedefs.

Typedef Documentation

typedef CoordStruct Coord

Creates a type name for CoordStruct

Function Documentation

Coord add | ( | Coord | c1,
 |  | Coord | c2
 | ) |  |

This function returns the addition of c1 and c2, i.e: (c1.x+c2.x,c1.y+c2.y)

Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: CoordStruct Struct Reference

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Public Attributes | List of all members
CoordStruct Struct Reference

Public Attributes

float | x
float | y

Detailed Description

A coordinate pair.

Member Data Documentation

float CoordStruct::x

The x coordinate

float CoordStruct::y

The y coordinate

The documentation for this struct was generated from the following file:
  • restypedef.cpp
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Resolving Typedefs: Member List

Resolving Typedefs
  • Main Page
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
CoordStruct Member List

This is the complete list of members for CoordStruct, including all inherited members.

x | CoordStruct
y | CoordStruct
Generated on Sun Apr 20 2014 18:53:59 for Resolving Typedefs by doxygen 1.8.7


Structural commands: File List

Structural commands
  • Main Page
  • Files
  • File List
  • File Members
File List
Here is a list of all documented files with brief descriptions:
structcmd.h A Documented file
Generated on Sun Apr 20 2014 18:53:59 for Structural commands by doxygen 1.8.7


Structural commands: File Members

Structural commands
  • Main Page
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Variables
  • Typedefs
  • Macros
Here is a list of all documented file members with links to the documentation:
  • close() : structcmd.h
  • errno : structcmd.h
  • MAX : structcmd.h
  • open() : structcmd.h
  • read() : structcmd.h
  • UINT32 : structcmd.h
  • write() : structcmd.h
Generated on Sun Apr 20 2014 18:53:59 for Structural commands by doxygen 1.8.7


Structural commands: File Members

Structural commands
  • Main Page
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Variables
  • Typedefs
  • Macros
  • MAX : structcmd.h
Generated on Sun Apr 20 2014 18:53:59 for Structural commands by doxygen 1.8.7


Structural commands: File Members

Structural commands
  • Main Page
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Variables
  • Typedefs
  • Macros
  • close() : structcmd.h
  • open() : structcmd.h
  • read() : structcmd.h
  • write() : structcmd.h
Generated on Sun Apr 20 2014 18:53:59 for Structural commands by doxygen 1.8.7


Structural commands: File Members

Structural commands
  • Main Page
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Variables
  • Typedefs
  • Macros
  • UINT32 : structcmd.h
Generated on Sun Apr 20 2014 18:53:59 for Structural commands by doxygen 1.8.7


Structural commands: File Members

Structural commands
  • Main Page
  • Files
  • File List
  • File Members
  • All
  • Functions
  • Variables
  • Typedefs
  • Macros
  • errno : structcmd.h
Generated on Sun Apr 20 2014 18:53:59 for Structural commands by doxygen 1.8.7


Structural commands: Main Page

Structural commands
  • Main Page
  • Files
Structural commands Documentation
Generated on Sun Apr 20 2014 18:53:59 for Structural commands by doxygen 1.8.7


Structural commands: structcmd.h File Reference

Structural commands
  • Main Page
  • Files
  • File List
  • File Members
Macros | Typedefs | Functions | Variables
structcmd.h File Reference

A Documented file. More...

Go to the source code of this file.

Macros

#define MAX(a, b) (((a)>(b))?(a):(b))
A macro that returns the maximum of a and b. More...

Typedefs

typedef unsigned int UINT32
A type definition for a . More...

Functions

int | open (const char *, int)
Opens a file descriptor. More...
int | close (int)
Closes the file descriptor fd. More...
size_t | write (int, const char *, size_t)
Writes count bytes from buf to the filedescriptor fd. More...
int | read (int, char *, size_t)
Read bytes from a file descriptor. More...

Variables

int errno
Contains the last error code. More...

Detailed Description

A Documented file.

Details.

Macro Definition Documentation

#define MAX | ( | a,
 |  | b
 | ) | (((a)>(b))?(a):(b))

A macro that returns the maximum of a and b.

Details.

Typedef Documentation

typedef unsigned int UINT32

A type definition for a .

Details.

Function Documentation

int close ( int fd )

Closes the file descriptor fd.

Parameters
fd The descriptor to close.
int open | ( | const char * | pathname,
 |  | int | flags
 | ) |  |

Opens a file descriptor.

Parameters
pathname | The name of the descriptor.
flags | Opening flags.
int read | ( | int | fd,
 |  | char * | buf,
 |  | size_t | count
 | ) |  |

Read bytes from a file descriptor.

Parameters
fd | The descriptor to read from.
buf | The buffer to read into.
count | The number of bytes to read.
size_t write | ( | int | fd,
 |  | const char * | buf,
 |  | size_t | count
 | ) |  |

Writes count bytes from buf to the filedescriptor fd.

Parameters
fd | The descriptor to write to.
buf | The data buffer to write.
count | The number of bytes to write.

Variable Documentation

int errno

Contains the last error code.

Warning
Not thread safe!
Generated on Sun Apr 20 2014 18:53:59 for Structural commands by doxygen 1.8.7


Structural commands: structcmd.h Source File

Structural commands
  • Main Page
  • Files
  • File List
  • File Members
structcmd.h
Go to the documentation of this file.
1
51 #define MAX(a,b) (((a)>(b))?(a):(b))
52 typedef unsigned int UINT32;
53 int errno;
54 int open(const char *,int);
55 int close(int);
56 size_t write(int,const char *, size_t);
57 int read(int,char *,size_t);
open
int open(const char *, int)
Opens a file descriptor.
write
size_t write(int, const char *, size_t)
Writes count bytes from buf to the filedescriptor fd.
errno
int errno
Contains the last error code.
Definition: structcmd.h:53
close
int close(int)
Closes the file descriptor fd.
read
int read(int, char *, size_t)
Read bytes from a file descriptor.
UINT32
unsigned int UINT32
A type definition for a .
Definition: structcmd.h:52
Generated on Sun Apr 20 2014 18:53:59 for Structural commands by doxygen 1.8.7


Tcl: Class List

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12]
▼N ns | Documented namespace ns
C itcl_class | Documented itcl class itcl_class
C oo_class | Documented oo class oo_class
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: Class Index

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
Class Index
I | O
i
o
itcl_class (ns) oo_class (ns)
I | O
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: ns::itcl_class Class Reference

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • ns
  • itcl_class
Public Member Functions | Static Public Attributes | Static Protected Attributes | List of all members
ns::itcl_class Class Reference

Documented itcl class itcl_class . More...

Public Member Functions

constructor args
Create object.
destructor
Destroy object.
itcl_method_x arg
Documented itcl method itcl_method_x . More...
itcl_method_y arg
Documented itcl method itcl_method_y . More...
itcl_method_z arg
Documented itcl method itcl_method_z . More...

Static Public Attributes

itcl_Var
Documented common itcl var itcl_Var .

Static Protected Attributes

itcl_var1
Documented itcl var itcl_var1 .

Detailed Description

Documented itcl class itcl_class .

Member Function Documentation

ns::itcl_class::itcl_method_x | arg

Documented itcl method itcl_method_x .

param[in] arg Argument

26
27 private method itcl_method_x {arg}{}
ns::itcl_class::itcl_method_y | arg

Documented itcl method itcl_method_y .

param[in] arg Argument

29
30 protected method itcl_method_y {arg} {}
ns::itcl_class::itcl_method_z | arg

Documented itcl method itcl_method_z .

param[in] arg Argument

32
33 public method itcl_method_z {arg} {}
The documentation for this class was generated from the following file:
  • tclexample.tcl
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: Member List

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • ns
  • itcl_class
ns::itcl_class Member List

This is the complete list of members for ns::itcl_class, including all inherited members.

constructorargs | ns::itcl_class |
destructor | ns::itcl_class |
itcl_method_xarg | ns::itcl_class |
itcl_method_yarg | ns::itcl_class |
itcl_method_zarg | ns::itcl_class |
itcl_Var | ns::itcl_class | static
itcl_var1 | ns::itcl_class | protectedstatic
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: ns::oo_class Class Reference

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • ns
  • oo_class
Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
ns::oo_class Class Reference

Documented oo class oo_class . More...

Public Member Functions

constructor args
Create object. More...
destructor
Destroy object. More...
oo_method_z arg
Documented oo method oo_method_z . More...

Static Public Attributes

oo_var
Documented oo var oo_var . More...
oo_var_out
Outside defined variable oo_var_out . More...

Protected Member Functions

oo_method_y arg
Documented oo method oo_method_y . More...

Detailed Description

Documented oo class oo_class .

Constructor & Destructor Documentation

ns::oo_class::constructor | args

Create object.

Configure with args

44
45 constructor {args} {eval $args}
ns::oo_class::destructor

Destroy object.

Exit.

47
48 destructor {exit}

Member Function Documentation

ns::oo_class::oo_method_y | arg
 protected

Documented oo method oo_method_y .

param[in] arg Argument

56
57 method oo_method_y {arg} {}
ns::oo_class::oo_method_z | arg

Documented oo method oo_method_z .

param[in] arg Argument

59
60 method oo_method_z {arg} {}

Member Data Documentation

ns::oo_class::oo_var
static

Documented oo var oo_var .

Defined inside class

50
51 variable oo_var
ns::oo_class::oo_var_out
static

Outside defined variable oo_var_out .

Inside oo_class

71
72 variable oo_var_out
The documentation for this class was generated from the following file:
  • tclexample.tcl
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: Member List

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • ns
  • oo_class
ns::oo_class Member List

This is the complete list of members for ns::oo_class, including all inherited members.

constructorargs | ns::oo_class |
destructor | ns::oo_class |
oo_method_yarg | ns::oo_class | protected
oo_method_zarg | ns::oo_class |
oo_var | ns::oo_class | static
oo_var_out | ns::oo_class | static
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: File List

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members
File List
Here is a list of all documented files with brief descriptions:
tclexample.tcl File documentation
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: Class Members

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
Here is a list of all documented class members with links to the class documentation for each member:
  • constructor()
: ns::itcl_class
, ns::oo_class
  • destructor()
: ns::itcl_class
, ns::oo_class
  • itcl_method_x() : ns::itcl_class
  • itcl_method_y() : ns::itcl_class
  • itcl_method_z() : ns::itcl_class
  • itcl_Var : ns::itcl_class
  • itcl_var1 : ns::itcl_class
  • oo_method_y() : ns::oo_class
  • oo_method_z() : ns::oo_class
  • oo_var : ns::oo_class
  • oo_var_out : ns::oo_class
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: Class Members - Functions

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • constructor()
: ns::itcl_class
, ns::oo_class
  • destructor()
: ns::itcl_class
, ns::oo_class
  • itcl_method_x() : ns::itcl_class
  • itcl_method_y() : ns::itcl_class
  • itcl_method_z() : ns::itcl_class
  • oo_method_y() : ns::oo_class
  • oo_method_z() : ns::oo_class
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: Class Members - Variables

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Class List
  • Class Index
  • Class Members
  • All
  • Functions
  • Variables
  • itcl_Var : ns::itcl_class
  • itcl_var1 : ns::itcl_class
  • oo_var : ns::oo_class
  • oo_var_out : ns::oo_class
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: File Members

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
Here is a list of all documented file members with links to the documentation:
  • glob_proc() : tclexample.tcl
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: File Members

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members
  • All
  • Functions
  • glob_proc() : tclexample.tcl
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: Main Page

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
Tcl Documentation
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: Namespace Members

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Namespace List
  • Namespace Members
  • All
  • Functions
Here is a list of all documented namespace members with links to the namespaces they belong to:
  • ns_proc() : ns
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: Namespace Members

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Namespace List
  • Namespace Members
  • All
  • Functions
  • ns_proc() : ns
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: ns Namespace Reference

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Namespace List
  • Namespace Members
Classes | Functions
ns Namespace Reference

Documented namespace ns . More...

Classes

class | itcl_class
Documented itcl class itcl_class . More...
class | oo_class
Documented oo class oo_class . More...

Functions

ns_proc arg
Documented proc ns_proc . More...

Detailed Description

Documented namespace ns .

The code is inserted here:

1 namespace eval ns {
2 ## Documented proc \c ns_proc .
3 # param[in] arg some argument
4 proc ns_proc {arg} {}
5 ## Documented var \c ns_var .
6 # Some documentation.
7 variable ns_var
8 ## Documented itcl class \c itcl_class .
9 itcl::class itcl_class {
10 ## Create object.
11 constructor {args} {eval $args}
12 ## Destroy object.
13 destructor {exit}
14 ## Documented itcl method \c itcl_method_x .
15 # param[in] arg Argument
16 private method itcl_method_x {arg}{}
17 ## Documented itcl method \c itcl_method_y .
18 # param[in] arg Argument
19 protected method itcl_method_y {arg} {}
20 ## Documented itcl method \c itcl_method_z .
21 # param[in] arg Argument
22 public method itcl_method_z {arg} {}
23 ## Documented common itcl var \c itcl_Var .
24 common itcl_Var
25 ## \protectedsection
26
27 variable itcl_var1;#< Documented itcl var \c itcl_var1 .
28 variable itcl_var2}
29 ## Documented oo class \c oo_class .
30 oo::class create oo_class {
31 ## Create object.
32 # Configure with args
33 constructor {args} {eval $args}
34 ## Destroy object.
35 # Exit.
36 destructor {exit}
37 ## Documented oo var \c oo_var .
38 # Defined inside class
39 variable oo_var
40 ## \private Documented oo method \c oo_method_x .
41 # param[in] arg Argument
42 method oo_method_x {arg} {}
43 ## \protected Documented oo method \c oo_method_y .
44 # param[in] arg Argument
45 method oo_method_y {arg} {}
46 ## \public Documented oo method \c oo_method_z .
47 # param[in] arg Argument
48 method oo_method_z {arg} {}
49 }
50 }

Function Documentation

ns::ns_proc | arg

Documented proc ns_proc .

param[in] arg some argument

14
15 proc ns_proc {arg} {}
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: Namespace List

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • Namespace List
  • Namespace Members
Namespace List
Here is a list of all documented namespaces with brief descriptions:
N ns Documented namespace ns
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7


Tcl: tclexample.tcl File Reference

Tcl
  • Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members
Classes | Namespaces | Functions
tclexample.tcl File Reference

File documentation. More...

Classes

class | ns::itcl_class
Documented itcl class itcl_class . More...
class | ns::oo_class
Documented oo class oo_class . More...

Namespaces

ns
Documented namespace ns .

Functions

glob_proc arg
Documented global proc glob_proc . More...
ns::ns_proc arg
Documented proc ns_proc . More...

Detailed Description

File documentation.

# Startup code:\
exec tclsh "$0" "$@"

Function Documentation

glob_proc | arg

Documented global proc glob_proc .

param[in] arg Argument

76
77 proc glob_proc {arg} {puts $arg}
Generated on Sun Apr 20 2014 18:54:04 for Tcl by doxygen 1.8.7