Doxygen: Installation

Doxygen
Installation

Table of Contents

  • Compiling from source on UNIX
  • Installing the binaries on UNIX
  • Compiling from source on Windows
  • Installing the binaries on Windows

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
  • You need python (version 2.6 or higher, see https://www.python.org).
  • In order to generate a Makefile for your platform, you need cmake version 2.8.12 or later.

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 (including Qt 5). 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 in the HTML output (when MathJax is not used) or in case you do not wish to use pdflatex, the ghostscript interpreter is needed. You can find it at www.ghostscript.com.

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. Create a build directory (for instance inside the source tree)

    cd doxygen-$VERSION
mkdir build
cd build

  3. Run cmake with the makefile generator

    cmake -G "Unix Makefiles" ..

    cmake tries to determine the platform you use, and will look for the requires tools. It will report if something is missing.

    If you have Qt-4.3 or higher installed and want to build the GUI front-end, you should enable it as follows:

    cmake -Dbuild_wizard=YES ..

    For an overview of other configuration options use

    cmake -L ..

  4. 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 within the build directory.

  5. Optional: Generate the user manual.

    cmake -Dbuild_doc=YES ..
make docs

    To let doxygen generate the HTML and PDF documentation.

    The HTML directory within the build directory will now contain the html documentation (just point a HTML browser to the file index.html in the html directory).

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.

Compiling from source on Windows

From version 1.8.10 onwards, build files need to be generated by cmake. cmake can be downloaded from https://cmake.org/download/

At the moment only the express version of Visual Studio 2013 is tested, but other version might also work.

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 https://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.6 or higher, see https://www.python.org). These packages are needed during the compilation process.

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

Now start a visual studio native command shell (for either x86 or x64) 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 https://www.7-zip.org/) or use the build in unpack feature of modern Windows systems).

Now your environment is setup to generate the required project files for doxygen.

cd into the doxygen-x.y.z directory, create and cd to a build directory

mkdir build
cd build
cmake -G "Visual Studio 12 2013" ..

Note that compiling Doxywizard requires Qt 4.3 or newer (see https://www.qt.io/developers/).

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 configuration 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 configuration 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.

Go to the next section or return to the index.

Generated by doxygen 1.8.15


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 configuration 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 | Extension | Language | Extension | Language
.dox | C / C++ | .idl | IDL | .f | Fortran
.doc | C / C++ | .ddl | IDL | .for | Fortran
.c | C / C++ | .odl | IDL | .f90 | Fortran
.cc | C / C++ | .java | Java | .f95 | Fortran
.cxx | C / C++ | .cs | C# | .f03 | Fortran
.cpp | C / C++ | .d | D | .f08 | Fortran
.c++ | C / C++ | .php | PHP | .vhd | VHDL
.ii | C / C++ | .php4 | PHP | .vhdl | VHDL
.ixx | C / C++ | .php5 | PHP | .ucf | VHDL
.ipp | C / C++ | .inc | PHP | .qsf | VHDL
.i++ | C / C++ | .phtml | PHP | .tcl | TCL
.inl | C / C++ | .m | Objective-C | .md | Markdown
.h | C / C++ | .M | Objective-C | .markdown | Markdown
.H | C / C++ | .py | Python | .ice | Slice
.hh | C / C++ | .pyw | Python |  |
.HH | C / C++ |  |  |  |
.hxx | C / C++ |  |  |  |
.hpp | C / C++ |  |  |  |
.h++ | C / C++ |  |  |  |
.mm | C / C++ |  |  |  |

Any other extension is not parsed unless it is added to FILE_PATTERNS and the appropriate EXTENSION_MAPPING is set.

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.


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 Afterdoc_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 QTstyle_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.
*/
QTstyle_Test();
//! A destructor.
/*!
A more elaborate description of the destructor.
*/
~QTstyle_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 QTstyle_Test(), ~QTstyle_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 configuration 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 Javadoc_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.
*/
Javadoc_Test();
/**
* A destructor.
* A more elaborate description of the destructor.
*/
~Javadoc_Test();
/**
* a normal member taking two arguments and returning an integer value.
* @param a an integer argument.
* @param s a constant character pointer.
* @see Javadoc_Test()
* @see ~Javadoc_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).

Attention
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.

When you place a comment block in a file with one of the following extensions .dox, .txt, or .doc then doxygen will hide this file from the file list.

If you have a file that doxygen cannot parse but still would like to document it, you can show it as-is using \verbinclude, e.g.

/*! \file myscript.sh
 *  Look at this nice script:
 *  \verbinclude myscript.sh
 */

Make sure that the script is explicitly listed in the INPUT or that FILE_PATTERNS includes the .sh extension and the the script can be found in the path set via EXAMPLE_PATH.

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.

"""@package docstring
Documentation for this module.
More details.
"""
def func():
"""Documentation for a function.
More details.
"""
pass
class PyClass:
"""Documentation for a class.
More details.
"""
def __init__(self):
"""The constructor."""
self._memVar = 0;
def PyMethod(self):
"""Documentation for a method."""
pass

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:

## @package pyexample
# Documentation for this module.
#
# More details.
## Documentation for a function.
#
# More details.
def func():
pass
## Documentation for a class.
#
# More details.
class PyClass:
## The constructor.
def __init__(self):
self._memVar = 0;
## Documentation for a method.
# @param self The object pointer.
def PyMethod(self):
pass
## A class variable.
classVar = 0;
## @var _memVar
# 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 configuration 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:

-------------------------------------------------------
--! @file
--! @brief 2:1 Mux using with-select
-------------------------------------------------------
--! Use standard library
library ieee;
--! Use logic elements
use ieee.std_logic_1164.all;
--! Mux entity brief description
--! Detailed description of this
--! mux design element.
entity mux_using_with is
port (
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
);
end entity;
--! @brief Architecture definition of the MUX
--! @details More details about this mux element.
architecture behavior of mux_using_with is
begin
with (sel) select
mux_out <= din_0 when '0',
din_1 when others;
end architecture;

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 configuration 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 f are interpreted as fixed format Fortran code and files with extension f90 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 less-than 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. For more details see chapter Markdown support.

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

  1. Javadoc like markup. See Special Commands for a complete overview of all commands supported by doxygen.
  2. XML markup as specified in the C# standard. See XML Commands 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.


Doxygen: Markdown support

Doxygen
Markdown support

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 and strikethrough limits for more info how doxygen handles emphasis / strikethrough spans slightly different than standard / Markdown GitHub Flavored Markdown.

Strikethrough

To strikethrough a text fragment you start and end the fragment with two tildes.

Examples:

 ~~double tilde~~

See section Emphasis and strikethrough limits for more info how doxygen handles emphasis / strikethrough spans slightly different than standard Markdown / GitHub Flavored 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.

Note that the TOC_INCLUDE_HEADINGS has to be set to a value > 0 otherwise no table of contents is shown when using Markdown Headers.

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

Additionally, column and row spans are supported. Using a caret ("^") in a cell indicates that the cell above should span rows. Sequences of carets may be used for any number of row spans. For example:

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

which will look as follows:

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

Column spans are supported by means of directly adjacent vertical bars ("|"). Each additional vertical bar indicates an additional column to be spanned. To put it another way, a single vertical bar indicates a single column span, two vertical bars indicates a 2 columns span, and so on. For example:

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

which will look as follows:

Right | Center | Left
10 | 10 | 10
1000

For more complex tables in doxygen please have a look at: Including tables

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:

# A class
class Dummy:
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.

Another way to denote fenced code blocks is to use 3 or more backticks (```):

```
also a fenced code block
```

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 in Header Id Attributes) 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 configuration 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 and strikethrough limits

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

a_nice_identifier

Furthermore, a * or _ only starts an emphasis and a ~ only starts a strikethrough if

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

An emphasis or a strikethrough 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 or strikethrough 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.


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.


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 \weakgroup 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 Memgrp_Test
{
public:
//@{
/** Same documentation for both members. Details */
void func1InGroup1();
void func2InGroup1();
//@}
/** Function without group. Details. */
void ungroupedFunction();
void func1InGroup2();
protected:
void func2InGroup2();
};
void Memgrp_Test::func1InGroup1() {}
void Memgrp_Test::func2InGroup1() {}
/** @name Group2
* Description of group 2.
*/
///@{
/** Function 2 in group 2. Details. */
void Memgrp_Test::func2InGroup2() {}
/** Function 1 in group 2. Details. */
void Memgrp_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.


Doxygen: Including formulas

Doxygen
Including formulas

Doxygen allows you to put [image] formulas in the output (this works only for the HTML, [image] and RTF output. To be able to include formulas (as images) in the HTML and RTF 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 configuration 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 files formula.repository that are written to the html and rtf directories to get rid of an incorrect formula as well as the form_* files.

Go to the next section or return to the index.


Doxygen: Including tables

Doxygen
Including tables

Doxygen supports two ways to put tables in the documentation.

The easiest is to use the Markdown format as shown in Markdown Extensions section Tables.

Although this format is easy to use and read, it is also rather limited. It supports only a simple grid of cells, while each cell is a single line of plain text.

For more complex tables the HTML syntax can be used. Doxygen will process such tables and translate them to the various output formats (at least for the formats that do support tables such as HTML and [image]).

Here is an example of a complex table:

<table>
<caption id="multi_row">Complex table</caption>
<tr><th>Column 1                      <th>Column 2        <th>Column 3
<tr><td rowspan="2">cell row=1+2,col=1<td>cell row=1,col=2<td>cell row=1,col=3
<tr><td rowspan="2">cell row=2+3,col=2                    <td>cell row=2,col=3
<tr><td>cell row=3,col=1                                  <td rowspan="2">cell row=3+4,col=3
<tr><td colspan="2">cell row=4,col=1+2
<tr><td>cell row=5,col=1              <td colspan="2">cell row=5,col=2+3
<tr><td colspan="2" rowspan="2">cell row=6+7,col=1+2      <td>cell row=6,col=3
<tr>                                                      <td>cell row=7,col=3
<tr><td>cell row=8,col=1              <td>cell row=8,col=2\n
  <table>
    <tr><td>Inner cell row=1,col=1<td>Inner cell row=1,col=2
    <tr><td>Inner cell row=2,col=1<td>Inner cell row=2,col=2
  </table>
  <td>cell row=8,col=3
  <ul>
    <li>Item 1
    <li>Item 2
  </ul>
</table>

It has a caption, table heading, various row and column spans, a nested table as one of the cells, and a item list in another cell.

Note that the end tags (like </td>) are left out in the example above. This is allowed, and in the HTML output doxygen will add the end tags again.

The output will look as follows:

Complex table
Column 1 | Column 2 | Column 3
cell row=1+2,col=1 | cell row=1,col=2 | cell row=1,col=3
cell row=2+3,col=2 | cell row=2,col=3
cell row=3,col=1 | cell row=3+4,col=3
cell row=4,col=1+2
cell row=5,col=1 | cell row=5,col=2+3
cell row=6+7,col=1+2 | cell row=6,col=3
cell row=7,col=3
cell row=8,col=1 cell row=8,col=2
Inner cell row=1,col=1 | Inner cell row=1,col=2
Inner cell row=2,col=1 | Inner cell row=2,col=2
cell row=8,col=3
  • Item 1
  • Item 2

One can refer to the caption of the table using \ref using the caption's id as the label.

Go to the next section or return to the index.


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 (see also section \callgraph and section \hidecallgraph).
  • 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 (see also section \callergraph and section \hidecallergraph).

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.


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 configuration file to YES. Then the result after preprocessing becomes:

#define VERSION
#define CONST_STRING

  static const char * version = "2.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 configuration 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.


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 'func(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 Autolink_Test class: Autolink_Test::member,
More specific links to the each of the overloaded members:
Autolink_Test::member(int) and Autolink_Test#member(int,int)
A link to a protected member variable of Autolink_Test: Autolink_Test#var,
A link to the global enumeration type #GlobEnum.
A link to the define #ABS(x).
A link to the destructor of the Autolink_Test class: Autolink_Test::~Autolink_Test,
A link to the typedef ::B.
A link to the enumeration type Autolink_Test::EType
A link to some enumeration values Autolink_Test::Val1 and ::GVal2
*/
/*!
Since this documentation block belongs to the class Autolink_Test no link to
Autolink_Test is generated.
Two ways to link to a constructor are: #Autolink_Test and Autolink_Test().
Links to the destructor are: #~Autolink_Test and ~Autolink_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 Autolink_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, ~Autolink_Test and member will be replaced by links in HTML.
*/
class Autolink_Test
{
public:
Autolink_Test(); //!< constructor
~Autolink_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. */
Autolink_Test::Autolink_Test() { }
/*! details. */
Autolink_Test::~Autolink_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 Autolink_Test B;
/*! \fn typedef Autolink_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.


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.


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 configuration 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 configuration 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 configuration 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 configuration 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 configuration 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.


Doxygen: External Indexing and Searching

Doxygen
External Indexing and Searching

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 directory to the cgi-bin directory 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 able 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.


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 stylesheets and referencing those extra files via HTML_EXTRA_STYLESHEET.

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

  • HTML_HEADER = header.html
  • HTML_FOOTER = footer.html
  • HTML_EXTRA_STYLESHEET = my_customdoxygen.css
Note
it is not longer recommended to use HTML_STYLESHEET, 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 configuration 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). This is a separate section for man pages with a text like: Generated automatically by Doxygen for My Project from the source code. This should not be misinterpreted with the doxygen commands \author or \authors that generate an author paragraph inside a detailed description.
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.


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 (in the resulting output). You can put ^^ in the value part of an alias to insert a newline as if a physical newline was in the original file.

Note when you need a literal { or } or , in the value part of an alias you have to escape them by means of a backslash (\), this can lead to conflicts with the commands \{ and \} for these it is advised to use the version @{ and @} or use a double escape (\\{ and \\})

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.


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.


Doxygen: Frequently Asked Questions

Doxygen
Frequently Asked Questions

Table of Contents

  • How to get information on the index page in HTML?
  • Help, some/all of the members of my class / file / namespace are not documented?
  • When I set EXTRACT_ALL to NO none of my functions are shown in the documentation.
  • My file with a custom extension is not parsed (properly) (anymore).
  • How can I make doxygen ignore some code fragment?
  • How can I change what is after the #include in the class documentation?
  • How can I use tag files in combination with compressed HTML?
  • I don't like the quick index that is put above each HTML page, what do I do?
  • The overall HTML output looks different, while I only wanted to use my own html header file
  • Why does doxygen use Qt?
  • How can I exclude all test directories from my directory tree?
  • Doxygen automatically generates a link to the class MyClass somewhere in the running text. How do I prevent that at a certain place?
  • My favorite programming language is X. Can I still use doxygen?
  • Help! I get the cryptic message "input buffer overflow, can't enlarge buffer because scanner uses REJECT"
  • When running make in the latex directory I get "TeX capacity exceeded". Now what?
  • Why are dependencies via STL classes not shown in the dot graphs?
  • I have problems getting the search engine to work with PHP5 and/or windows
  • Can I configure doxygen from the command line?
  • How did doxygen get its name?
  • What was the reason to develop doxygen?

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...
 */

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 configuration 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 configuration 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.

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.

My file with a custom extension is not parsed (properly) (anymore).

Doxygen only parses files that are specified as input (via the INPUT tag) and that match a specified extension (mentioned in FILE_PATTERNS) The list of files is then reduced by excluding files listed as EXCLUDE or files that match the patterns set by EXCLUDE_PATTERNS.

In the past doxygen parsed all files with an unknown extension as C files which could lead to undesired results. Since version 1.8.8, doxygen requires that you specify a mapping that tells for a certain file extension, which parser to use. This mapping is specified using the EXTENSION_MAPPING tag. If no mapping is specified the file's contents will be ignored.

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 configuration file then all blocks should be skipped by doxygen as long as ENABLE_PREPROCESSING is set to YES.

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
 */

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::

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.

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.

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!

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/*

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.

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.doxygen.org/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).

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.

When running make in the latex directory 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".

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.

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

Please read this for hints on where to look.

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.

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").

What was the reason to develop doxygen?

I once wrote a GUI widget based on the Qt library (it is still available at https://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.


Doxygen: Troubleshooting

Doxygen
Troubleshooting

Known Problems

  • 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 GitHub's issue tracker. Before submitting a new bug, first search through the database if the same bug has already been submitted by others. 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 Ubuntu Linux 18.04 LTS)
  • 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 configuration 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 doxyg.nosp@m.en@g.nosp@m.mail..nosp@m.com 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.


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.


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 configuration file with those options set correctly and then specify that configuration 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.


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.


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 they are in front of. Comments beginning with two hash characters (##) at the beginning of the configuration file are also kept and placed at the beginning of the file. 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_DATABASE_PATH
  • 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
  • DOCBOOK_PROGRAMLISTING
  • 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
  • GROUP_NESTED_COMPOUNDS
  • HAVE_DOT
  • HHC_LOCATION
  • HIDE_COMPOUND_REFERENCE
  • 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_MENUS
  • 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_EMOJI_DIRECTORY
  • LATEX_EXTRA_FILES
  • LATEX_EXTRA_STYLESHEET
  • LATEX_FOOTER
  • LATEX_HEADER
  • LATEX_HIDE_INDICES
  • LATEX_MAKEINDEX_CMD
  • LATEX_OUTPUT
  • LATEX_SOURCE_CODE
  • LATEX_TIMESTAMP
  • 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_SLICE
  • OPTIMIZE_OUTPUT_VHDL
  • OUTPUT_DIRECTORY
  • OUTPUT_LANGUAGE
  • OUTPUT_TEXT_DIRECTION
  • PAPER_TYPE
  • PDF_HYPERLINKS
  • PERLMOD_LATEX
  • PERLMOD_MAKEVAR_PREFIX
  • PERLMOD_PRETTY
  • PERL_PATH
  • PLANTUML_CFG_FILE
  • PLANTUML_INCLUDE_PATH
  • PLANTUML_JAR_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_SOURCE_CODE
  • 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
  • TOC_INCLUDE_HEADINGS
  • 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_AS_ERROR
  • WARN_FORMAT
  • WARN_IF_DOC_ERROR
  • WARN_IF_UNDOCUMENTED
  • WARN_LOGFILE
  • WARN_NO_PARAMDOC
  • XML_NS_MEMB_FILE_SCOPE
  • XML_OUTPUT
  • XML_PROGRAMLISTING

Project related configuration options

DOXYFILE_ENCODING

This tag specifies the encoding used for all characters in the configuration 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 https://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 a logo or an 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.

OUTPUT_TEXT_DIRECTION

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

Possible values are: None, LTR, RTL and Context.

The default value is: None.

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 (in the resulting output). You can put ^^ in the value part of an alias to insert a newline as if a physical newline was in the original file. When you need a literal { or } or , in the value part of an alias you have to escape them by means of a backslash (\), this can lead to conflicts with the commands \{ and \} for these it is advised to use the version @{ and @} or use a double escape (\\{ and \\})

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.

OPTIMIZE_OUTPUT_SLICE

Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice sources only. Doxygen will then generate output that is more tailored for that language. For instance, namespaces will be presented as modules, types will be separated into more groups, etc.

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, Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, 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, tcl.

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 https://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.

TOC_INCLUDE_HEADINGS

When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up to that level are automatically included in the table of contents, even if they do not have an id attribute.

Note
This feature currently applies only to Markdown headings.

Minimum value: 0, maximum value: 99, default value: 0.

This tag requires that the tag MARKDOWN_SUPPORT is set to 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 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.

GROUP_NESTED_COMPOUNDS

If one adds a struct or class to a group and this option is enabled, then also any nested class or struct is added to the same group. By default this option is disabled and one has to add nested compounds explicitly via \ingroup.

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. If 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.

HIDE_COMPOUND_REFERENCE

If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will append additional text to a page's title, such as Class Reference. If set to YES the compound reference 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_FILTER = "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 https://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. 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. If EXTRACT_ALL is set to YES then this flag will automatically be disabled.

The default value is: NO.

WARN_AS_ERROR

If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when a warning is encountered.

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. See also FILE_PATTERNS and EXTENSION_MAPPING

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.
Note that for custom extensions or not directly supported extensions you also need to set EXTENSION_MAPPING for the extension otherwise the files are not read by doxygen.
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, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.

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.
Note that for custom extensions or not directly supported extensions you also need to set EXTENSION_MAPPING for the extension otherwise the files are not properly processed by doxygen.

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.
Note that for custom extensions or not directly supported extensions you also need to set EXTENSION_MAPPING for the extension otherwise the files are not properly processed by doxygen.

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 entity 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 https://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 configuration 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 generated with the -Duse_libclang=ON option for CMake.

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.

CLANG_DATABASE_PATH

If clang assisted parsing is enabled you can provide the clang parser with the path to the compilation database used when the files were built. This is equivalent to specifying the "-p" option to a clang tool, such as clang-check. These options will then be passed to the parser.

Note
The availability of this option depends on whether or not doxygen was generated with the -Duse_libclang=ON option for CMake.

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 additional user-defined cascading style sheets that are 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 therefore more robust against future updates. Doxygen will copy the style sheet files to the output directory.
Note
The order of the extra style sheet files is of importance (e.g. the last style sheet in the list overrules the setting of the previous ones in the list). Here is an example style sheet 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 style sheet and background images according to this color. Hue is specified as an angle on a colorwheel, see https://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 YES can help to show when doxygen was last run and thus if the documentation is up to date.

The default value is: NO.

This tag requires that the tag GENERATE_HTML is set to YES.

HTML_DYNAMIC_MENUS

If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML documentation will contain a main index with vertical navigation menus that are dynamically created via Javascript. If disabled, the navigation index will consists of multiple levels of tabs that are statically embedded in every HTML page. Disable this option to support browsers that do not have Javascript, like the Qt help browser.

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 https://developer.apple.com/library/archive/featuredarticles/DoxygenXcode/_index.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 style sheets (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

If 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_TRANSPARENT 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 https://www.mathjax.org) which uses client side Javascript for the rendering instead of using pre-rendered 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 https://www.mathjax.org before deployment.

The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/.

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 not enabling USE_PDFLATEX the default is latex when enabling USE_PDFLATEX the default is pdflatex and when in the later case latex is chosen this is overwritten by pdflatex. For specific output languages the default can have been set differently, this depends on the implementation of the output language.

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].

Note
This tag is used in the Makefile / make.bat.
See also
LATEX_MAKEINDEX_CMD for the part in the generated output file (.tex).

The default file is: makeindex.

This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_MAKEINDEX_CMD

The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to generate index for [image].

Note
This tag is used in the generated output file (.tex).
See also
MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.

The default value 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. The package can be specified just by its name or with the correct syntax as to be used with the [image] \usepackage command.

To get the times font for instance you can specify :

  EXTRA_PACKAGES=times
or
  EXTRA_PACKAGES={times}

To use the option intlimits with the amsmath package you can specify:

   EXTRA_PACKAGES=[intlimits]{amsmath}

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, $projectbrief, $projectlogo. Doxygen will replace $title with the empty string, for the replacement values of the other commands the user is referred to HTML_HEADER.

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. See LATEX_HEADER for more information on how to generate a default footer and what special commands can be used inside the 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_STYLESHEET
The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined [image] style sheets that are included after the standard style sheets created by doxygen. Using this option one can overrule certain style aspects. Doxygen will copy the style sheet files to the output directory.
Note
The order of the extra style sheet files is of importance (e.g. the last style sheet in the list overrules the setting of the previous ones in the list).
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 USE_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 https://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.

LATEX_TIMESTAMP

If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated 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: NO.

This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_EMOJI_DIRECTORY

The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) path from which the emoji images will be read. If a relative path is entered, it will be relative to the LATEX_OUTPUT directory. If left blank the LATEX_OUTPUT directory will be used.

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 configuration 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 configuration 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.

RTF_SOURCE_CODE

If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code with syntax highlighting in the RTF 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_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.

XML_NS_MEMB_FILE_SCOPE

If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include namespace members in file scope as well, matching the HTML output.

The default value is: NO.

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.

DOCBOOK_PROGRAMLISTING

If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the program listings (including syntax highlighting and cross-referencing information) to the DOCBOOK output. Note that enabling this will significantly increase the size of the DOCBOOK output.

The default value is: NO.

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.sourceforge.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 include 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 in 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. Disabling a call graph can be accomplished by means of the command \hidecallgraph.

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. Disabling a caller graph can be accomplished by means of the command \hidecallergraph.

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. For an explanation of the image formats see the section output formats in the documentation of the dot tool (Graphviz).

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, svg, png:gd, png:gd:gd, png:cairo, png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and png:gdiplus:gdiplus.

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).

PLANTUML_JAR_PATH

When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the path where java can find the plantuml.jar file. If left blank, it is assumed PlantUML is not used or called during a preprocessing step. Doxygen will generate a warning when it encounters a \startuml command in this case and will not generate output for the diagram.

PLANTUML_CFG_FILE

When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a configuration file for plantuml.

PLANTUML_INCLUDE_PATH

When using plantuml, the specified paths are searched for files specified by the !include statement in a plantuml block.

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 to 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 configuration 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.


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
  • \callergraph
  • \callgraph
  • \category
  • \cite
  • \class
  • \code
  • \cond
  • \copybrief
  • \copydetails
  • \copydoc
  • \copyright
  • \date
  • \def
  • \defgroup
  • \deprecated
  • \details
  • \diafile
  • \dir
  • \docbookonly
  • \dontinclude
  • \dot
  • \dotfile
  • \e
  • \else
  • \elseif
  • \em
  • \emoji
  • \endcode
  • \endcond
  • \enddocbookonly
  • \enddot
  • \endhtmlonly
  • \endif
  • \endinternal
  • \endlatexonly
  • \endlink
  • \endmanonly
  • \endmsc
  • \endparblock
  • \endrtfonly
  • \endsecreflist
  • \endverbatim
  • \enduml
  • \endxmlonly
  • \enum
  • \example
  • \exception
  • \extends
  • \f$
  • \f[
  • \f]
  • \f{
  • \f}
  • \file
  • \fn
  • \headerfile
  • \hidecallergraph
  • \hidecallgraph
  • \hiderefby
  • \hiderefs
  • \hideinitializer
  • \htmlinclude
  • \htmlonly
  • \idlexcept
  • \if
  • \ifnot
  • \image
  • \implements
  • \include
  • \includedoc
  • \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
  • \showrefby
  • \showrefs
  • \since
  • \skip
  • \skipline
  • \snippet
  • \snippetdoc
  • \snippetlineno
  • \startuml
  • \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, section \hidecallgraph, section \hidecallergraph and option CALL_GRAPH

\hidecallgraph

When this command is put in a comment block of a function or method and then doxygen will not generate a call graph for that function. The call graph will not 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, section \callgraph, section \hidecallergraph and option CALL_GRAPH

\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 is called by 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, section \hidecallgraph, section \hidecallergraph and option CALLER_GRAPH

\hidecallergraph

When this command is put in a comment block of a function or method and then doxygen will not generate a caller graph for that function. The caller graph will not 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 \callergraph, section \callgraph, section \hidecallgraph and option CALLER_GRAPH

\showrefby

When this command is put in a comment block of a function, method or variable, then doxygen will generate an overview for that function, method, variable of the, documented, funcions and methods that call / use it. The overview will be generated regardless of the value of REFERENCED_BY_RELATION.

Note
The completeness (and correctness) of the overview depends on the doxygen code parser which is not perfect.
See also
section \showrefs, section \hiderefby, section \hiderefs and option REFERENCED_BY_RELATION

\hiderefby

When this command is put in a comment block of a function, method or variable then doxygen will not generate an overview for that function, method or variable of the functions and methods that call / use it. The overview will not be generated regardless of the value of REFERENCED_BY_RELATION.

Note
The completeness (and correctness) of the overview depends on the doxygen code parser which is not perfect.
See also
section \showrefs, section \showrefby, section \hiderefs and option REFERENCED_BY_RELATION

\showrefs

When this command is put in a comment block of a function or method, then doxygen will generate an overview for that function or method of the functions and methods that call it. The overview will be generated regardless of the value of REFERENCES_RELATION.

Note
The completeness (and correctness) of the overview depends on the doxygen code parser which is not perfect.
See also
section \showrefby, section \hiderefby, section \hiderefs and option REFERENCES_RELATION

\hiderefs

When this command is put in a comment block of a function or method and then doxygen will not generate an overview for that function or method of the functions and methods that call it. The overview will not be generated regardless of the value of REFERENCES_RELATION.

Note
The completeness (and correctness) of the overview depends on the doxygen code parser which is not perfect.
See also
section \showrefs, section \showrefby, section \hiderefby and option REFERENCES_RELATION

\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.
*/
/*!
\brief Computes the absolute value of its argument \a x.
\param x input value.
\returns absolute value of \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 Enum_Test
{
public:
enum TEnum { Val1, Val2 };
/*! Another enum, with inline docs */
enum AnotherEnum
{
V1, /*!< value 1 */
V2 /*!< value 2 */
};
};
/*! \class Enum_Test
* The class description.
*/
/*! \enum Enum_Test::TEnum
* A description of the enum type.
*/
/*! \var Enum_Test::TEnum Enum_Test::Val1
* The description of the first enum value.
*/
Click here for the corresponding HTML documentation that is generated by doxygen.

\example[{lineno}] <file-name>

Indicates that a comment block contains documentation for a source code example. The name of the source file is <file-name>. The contents of this file will be included in the documentation, just after the documentation contained in the comment block. You can add option {lineno} to enable line numbers for the example if desired. 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 Example_Test class.
* More details about this class.
*/
class Example_Test
{
public:
/** An example member function.
* More details about this function.
*/
void example();
};
void Example_Test::example() {}
/** \example example_test.cpp
* This is an example of how to use the Example_Test class.
* More details about this example.
*/
Where the example file example_test.cpp looks as follows:
void main()
{
Example_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 Fn_Test
{
public:
const char *member(char,int) throw(std::out_of_range);
};
const char *Fn_Test::member(char c,int n) throw(std::out_of_range) {}
/*! \class Fn_Test
* \brief Fn_Test class.
*
* Details about Fn_Test.
*/
/*! \fn const char *Fn_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 configuration 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 Overload_Test
{
public:
void drawRect(int,int,int,int);
void drawRect(const Rect &r);
};
void Overload_Test::drawRect(int x,int y,int w,int h) {}
void Overload_Test::drawRect(const Rect &r) {}
/*! \class Overload_Test
* \brief A short description.
*
* More text.
*/
/*! \fn void Overload_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 Overload_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.

Note that for PHP one can also specify the type of the variable. The syntax is similar as for the phpDocumentor but the description has to start at the next line, i.e.

@var  datatype $varname
Description
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.
Note
Due to the moment of parsing the \cond and \endcond commands cannot be used in ALIASES.

\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.
Note
Due to the moment of parsing the \endcond and \cond commands cannot be used in ALIASES.

\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 Par_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 Par_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 the 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] , DocBook and RTF 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['{'[option[:level]][,option[:level]]*'}']

Creates a table of contents at the top of a page, listing all sections and subsections in the page. The option can be HTML or LaTeX or XML or DocBook. When a level is specified this means the maximum nesting level that is shown. The value of level should be in the range 1..5, values outside this range are considered to be 5. In case no level is specified level is set to 5 (show all) In case no option. is specified \tableofcontents acts as if just the option HTML and XML was specified. In case of multiple \tableofcontents commands in a page the option(s) will be used additional to the already specified option(s), but only the last level of an option is valid.

Warning
This command only works inside related page documentation and not in other documentation blocks and only has effect in the the specified 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 Include_Test
{
public:
/// a member function
void example();
};
/*! \page pag_example
* \dontinclude include_test.cpp
* Our main function starts like this:
* \skip main
* \until {
* First we create an object \c t of the Include_Test class.
* \skipline Include_Test
* Then we call the example member function
* \line example
* After that our little test routine ends.
* \line }
*/
Where the example file include_test.cpp looks as follows:
void main()
{
Include_Test t;
t.example();
}
Click here for the corresponding HTML documentation that is generated by doxygen.
See also
sections \line, \skip, \skipline, \until, and \include.

\include[{lineno|doc}] <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.

You can add option {lineno} to enable line numbers for the included code if desired.

You can add option {doc} to treat the file as documentation rather than code.

Note
Some that when using the {doc} option, commands like \cond and \if don't work with this command due to the moment of parsing.
The included documentation should not have comment signs in it as they will appear in the documentation as well.
See also
sections \example, \dontinclude, \verbatim, \includedoc, and \snippet.

\includelineno <file-name>

This command is obsolete and is still supported for backward compatibility reasons, it works the same way as \include{lineno}

See also
sections \include{lineno}.

\includedoc <file-name>

This command is obsolete and is still supported for backward compatibility reasons, it works the same way as \include{doc}

See also
section \include{doc}.

\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[{lineno|doc}] <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. In case this is used as <file-name> the current file is taken as file to take the snippet from.

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.

You can add option {lineno} to enable line numbers for the snippet if desired.

You can add option {doc} to treat the file as documentation rather than code.

Note
Some that when using the {doc} option, commands like \cond and \if don't work with this command due to the moment of parsing.
The included documentation should not have comment signs in it as they will appear in the documentation as well.

see section \dontinclude for an alternative way to include fragments of a source file that does not require markers.

\snippetlineno <file-name> ( block_id )

This command is obsolete and is still supported for backward compatibility reasons, it works the same way as \snippet{lineno}

See also
sections \snippet{lineno}

\snippetdoc <file-name> ( block_id )

This command is obsolete and is still supported for backward compatibility reasons, it works the same way as \snippet{doc}

See also
section \snippet{doc} and \include{doc}.

\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 ["[block]"] <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.

Normally the contents of the file indicated by \htmlinclude 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 \htmlinclude[block] to make doxygen end the current paragraph and restart after the file is included.

Files or directories that doxygen should look for can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

See also
section \htmlonly.

\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

If the contents of the code block are in a language that doxygen cannot parse, doxygen will just show the output as-is. You can make this explicit using .unparsed, or by giving some other extension that doxygen doesn't support, e.g.

  \code{.unparsed}
  Show this as-is please
  \endcode

  \code{.sh}
  echo "This is a shell script"
  \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 \copybrief foo()
  \details \copydetails foo()

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 ["caption"] [<sizeindication>=<size>]

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 first 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.

The second argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

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).
*/

\emoji "name"

This command will produce an emoji character given its name.

The supported names are the ones also supported by GitHub and listed here https://gist.github.com/rxaviers/7360908

You can use the name with or without colons, i.e. \emoji smile is the same as writing \emoji :smile:. When an emoji is not supported the name with by places in the text with in between colons, i.e. \emoji unsupported will produce :unsupported: in the output. Doxygen will also give a warning message.

See also the emoji support page for details.

\msc ["caption"] [<sizeindication>=<size>]

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.

The first 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.

The second argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

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.

\startuml [{file}] ["caption"] [<sizeindication>=<size>]

Starts a text fragment which should contain a valid description of a PlantUML diagram. See http://plantuml.com/ for examples. The text fragment ends with \enduml.

Note
You need to install Java and the PlantUML's jar file, if you want to use this command. The location of the jar file should be specified using PLANTUML_JAR_PATH.

The first argument is optional and is for compatibility with running PlantUML as a preprocessing step before running doxygen, you can also add the name of the image file after \startuml and inside curly brackets, i.e.

  @startuml{myimage.png} "Image Caption" width=5cm
  Alice -> Bob : Hello
  @enduml

When the name of the image is specified, doxygen will generate an image with that name. Without the name doxygen will choose a name automatically.

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.

The third argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

Here is an example of the use of the \startuml command.

/** Sender class. Can be used to send a command to the server.
* The receiver will acknowledge the command by calling Ack().
* \startuml
* Sender->Receiver : Command()
* Sender<--Receiver : Ack()
* \enduml
*/
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
* \startuml
* Receiver<-Sender : Command()
* Receiver-->Sender : Ack()
* \enduml
*/
class Receiver
{
public:
/** Executable a command on the server */
void Command(int commandId);
};

\dotfile <file> ["caption"] [<sizeindication>=<size>]

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.

The third argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

See also
section \dot.

\mscfile <file> ["caption"] [<sizeindication>=<size>]

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.

The third argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

See also
section \msc.

\diafile <file> ["caption"] [<sizeindication>=<size>]

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.

The third argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

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

\enduml

Ends a block that was started with \startuml.

\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, \docbookonly, and \htmlinclude.

\image['{'[option]'}'] <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 in which the image should be embedded. Currently, the following values are supported: html, latex, docbook 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 the name. 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 can be useful for [image] or DocBook output (i.e. format=latex or format=docbook).

Size indication
The sizeindication can specify the width or height to be used (or a combination). The size specifier in [image] (for example 10cm or 4in or a symbolic width like \\textwidth).

Currently only the option inline is supported. In case the option inline is specified the image is placed "in the line", when a caption s present it is shown in HTML as tooltip (ignored for the other formats).

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 a 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 an equal sign (=) to the output. This character sequence has to be escaped in some cases, because it is used in Markdown header processing.

\::

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 consecutive 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.


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.
  • <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.
  • <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.
  • <H4> Starts an unnumbered subsubsection.
  • </H4> Ends an unnumbered subsubsection.
  • <H5> Starts an unnumbered subsubsection.
  • </H5> Ends an unnumbered subsubsection.
  • <H6> Starts an unnumbered subsubsection.
  • </H6> Ends an unnumbered subsubsection.
  • <I> Starts a piece of text displayed in an italic font.
  • </I> Ends a <I> section.
  • <IMG SRC="..." ...> This command is written with its attributes to the HTML output only. The SRC attribute is mandatory.
  • <LI> Starts a new list item.
  • </LI> Ends a list item.
  • <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)
  • <STRIKE> Starts a section of strike through text.
  • </STRIKE> Ends a section of strike through text.
  • <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.
  • <U> Starts a section of underlined text.
  • </U> Ends a section of underlined text.
  • <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.


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.
  • <![CDATA[...]]> The text inside this tag (on the ...) is handled as normal doxygen comment except for the XML special characters <, > and & that are used as if they were escaped.

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.


Doxygen: Emoji support

Doxygen
Emoji support

The Unicode consortium has defined a set of emoji with the corresponding unicode sequences. Doxygen supports the subset of emoji characters as used by GitHub (based on the list https://api.github.com/emojis). An emoji is created using the \emoji command. For example \emoji smile (or \emoji :smile:) both produce 😄.

Representation

For the different doxygen output types there is an output defined:

  • Unicode code sequence, the actual representation is depending on the possibilities of the fonts loaded:
    • HTML
    • DocBook
    • RTF, converted to UTF-16 representation.
  • Image
    • , in case the image can be found (see Emoji image retrieval) otherwise the plain emoji text (i.e. :<text>:) is displayed
  • plain emoji text (i.e. :<text>:)
    • man
    • perl
  • For XML there is a dedicated <emoji> tag with name and unicode attributes.

Emoji image retrieval

In the list of images can be downloaded via the following Python script:

# script to download the emoticons from GitHub and to produce a table for
# inclusion in doxygen. Works with python 2.7+ and python 3.x
import json
import os
import argparse
import re
try:
import urllib.request as urlrequest
except ImportError:
import urllib as urlrequest
unicode_re = re.compile(r'.*?/unicode/(.*?).png\?.*')
def get_emojis():
response = urlrequest.urlopen('https://api.github.com/emojis')
raw_data = response.read()
return json.loads(raw_data)
def download_images(dir_name):
json_data = get_emojis()
num_items = len(json_data)
cur_item=0
for image,url in sorted(json_data.items()):
image_name = image+'.png'
cur_item=cur_item+1
if url.find('/unicode/')==-1 or not os.path.isfile(dir_name+'/'+image_name):
with open(dir_name+'/'+image_name,'wb') as file:
print('%s/%s: fetching %s' % (cur_item,num_items,image_name))
file.write(urlrequest.urlopen(url).read())
else:
print('%s/%s: skipping %s' % (cur_item,num_items,image_name))
def produce_table():
json_data = get_emojis()
lines = []
for image,url in sorted(json_data.items()):
match = unicode_re.match(url)
if match:
unicodes = match.group(1).split('-')
unicodes_html = ''.join(["&#x"+x+";" for x in unicodes])
image_str = "\":"+image+":\","
unicode_str = "\""+unicodes_html+"\""
lines.append(' { %-42s %-38s }' % (image_str,unicode_str))
out_str = ',\n'.join(lines)
print("{")
print(out_str)
print("};")
if __name__=="__main__":
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-d','--dir',help='directory to place images in')
group.add_argument('-t','--table',help='generate code fragment',action='store_true')
args = parser.parse_args()
if args.table:
produce_table()
else:
download_images(args.dir)

When invoking it with the -d image_dir option the images will by downloaded in the image_dir directory. By means of the doxygen configuration parameter LATEX_EMOJI_DIRECTORY the requested directory can be selected.

For convenience a zip with the result of running the script can also be downloaded from http://www.doxygen.nl/dl/github_emojis.zip

For a overview of the supported emoji one can issue the comand:
doxygen -f emoji <outputFileName>

Go to the next section or return to the index.


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). To switch between languages inside a comment block the \~ command can be used.

Currently (version 1.8.15), 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.15
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.15
Chinese Traditional Daniel YC Lin
Gary Lee 		dlin dot tw at gmail dot com
garywlee at gmail dot com 		1.8.15
Croatian | Boris Bralo | boris dot bralo at gmail dot com | 1.8.2
Czech | Petr Přikryl | prikryl at atlas dot cz | 1.8.15
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 | doxygen at gmail dot com | up-to-date
English | Dimitri van Heesch | doxygen at gmail dot com | 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 		almost 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.15
Greek | Paul Gessos | gessos dot paul at yahoo dot gr | 1.8.15
Hungarian Ákos Kiss
Földvári György 		akiss at users dot sourceforge dot net
[unreachable] 		1.8.15
Indonesian | Hendy Irawan | ceefour at gauldong dot net | 1.8.0
Italian Alessandro Falappa
Ahmed Aldo Faisal 		alex dot falappa at gmail dot com
aaf23 at cam dot ac dot uk 		1.8.15
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] 		1.8.15
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] 		1.8.15
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.15
Romanian Ionut Dumitrascu
Alexandru Iosup 		reddumy at yahoo dot com
aiosup at yahoo dot com 		1.8.15
Russian Brilliantov Kirill Vladimirovich
Alexandr Chelpanov 		brilliantov at byterg dot ru
cav at cryptopro dot ru 		1.8.15
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 		1.8.15
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 		almost up-to-date
Swedish | Björn Palmqvist | bjorn.palmqvist at aidium.se | 1.8.15
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.


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.

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.


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.


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 configuration 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 configuration 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";
if (!-e "../src/${file}.l")
{
  print STDERR "Error: file ../src/${file}.l does not exist!\n";
  exit 1;
}
system("touch ../src/${file}.l");
unless (rename "src/CMakeFiles/_doxygen.dir/build.make","src/CMakeFiles/_doxygen.dir/build.make.old") {
  print STDERR "Error: cannot rename src/CMakeFiles/_doxygen.dir/build.make!\n";
  exit 1;
}
if (open(F,"<src/CMakeFiles/_doxygen.dir/build.make.old")) {
  unless (open(G,">src/CMakeFiles/_doxygen.dir/build.make")) {
    print STDERR "Error: opening file build.make for writing\n";
    exit 1;
  }
  print "Processing build.make...\n";
  while (<F>) {
    if ( s/flex \$\(LEX_FLAGS\) -d(.*) ${file}.l/flex \$(LEX_FLAGS)$1 ${file}.l/ ) {
      print "Disabling debug info for $file\n";
    }
    elsif ( s/flex \$\(LEX_FLAGS\)(.*) ${file}.l$/flex \$(LEX_FLAGS) -d$1 ${file}.l/ ) {
      print "Enabling debug info for $file.l\n";
    }
    print G "$_";
  }
  close F;
  unlink "src/CMakeFiles/_doxygen.dir/build.make.old";
}
else {
  print STDERR "Warning file src/CMakeFiles/_doxygen.dir/build.make 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 setting LEX_FLAGS with make (make LEX_FLAGS=-d).

Note that by running doxygen with -d lex you get information about which flex codefile is used.

Testing

Doxygen has a small set of tests available to test, some, code integrity. The tests can be run by means of the command make tests. When only one or a few tests are required one can set the variable TEST_FLAGS when running the test e.g. make TEST_FLAGS="--id 5" tests or for multiple tests make TEST_FLAGS="--id 5 --id 7" tests. For a full set of possibilities give the command make TEST_FLAGS="--help" tests. It is also possible to specify the TEST_FLAGS as an environment variable (works also for testing through Visual Studio projects), e.g. setenv TEST_FLAGS "--id 5 --id 7" and make tests.

Doxyfile differences

In case one has to communicate through e.g. a forum the configuration settings that are different from the standard doxygen configuration file settings one can run the doxygen command: with the -x option and the name of the configuration file (default is Doxyfile). The output will be a list of the not default settings (in Doxyfile format).

Return to the index.


Doxygen: Changelog

Doxygen
Changelog

Table of Contents

  • 1.8 Series
    • Release 1.8.15
    • Release 1.8.14
    • Release 1.8.13
    • Release 1.8.12
    • Release 1.8.11
    • Release 1.8.10
    • Release 1.8.9.1
    • Release 1.8.9
    • Release 1.8.8
    • 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.5 Series
  • 1.4 Series
  • 1.3 Series
  • 1.2 Series
  • 1.1 Series

1.8 Series

Release 1.8.15

(release date 27-12-2017)

  • Bug 851 - A function cannot be documented as related to two classes. [view]
  • Bug 1041 - <a href> doesn't allow <img> as visible part? [view]
  • Bug 1601 - Missing warning of undocumented member in member group [view]
  • Bug 2274 - Tooltips are not shown in dot-generated graphs [view] and [view] , [view]
  • Bug 2354 - caller graph can be improved by having caller on left & callee on right [view]
  • Bug 2478 - Handling of unnamed parameters (C/C++) unclear [view]
  • Bug 2655 - cond/endcond cannot be used in aliases [view]
  • Bug 2859 - Unnamed parameters parsed incorrectly [view]
  • Bug 3206 - Fortran: Does not recognize backslash at end of documentation line [view]
  • Bug 3361 - Merging of consecutive repeated commands creates poorly-structured HTML [view]
  • Bug 3677 - <![CDATA[ is not handled inside C# comments [view]
  • Bug 3691 - C# keywords 'get' and 'set' are highlighted as reserved words in C++ documentation source browser. [view]
  • Bug 3892 - @var in php is not documented [view]
  • Bug 3958 - \cond after @string literal containing backslash fails in C# [view]
  • Bug 4013 - Automatic links don't work correctly with operator< and operator<= [view]
  • Bug 4064 - Support for C# nullable type [view]
  • Bug 4244 - Fortran: tagfile.tag:789: warning: Unknown compound attribute `type' found! [view]
  • Bug 4316 - Can't use pound sign in alias command, escaped or unescaped [view]
  • Bug 4458 - @todo in @param leads to strange confusing message [view]
  • Bug 4529 - HTML tags <u> and </u> not supported [view] , [view]
  • Bug 4725 - single quote in HTML section of PHP breaks doxygen [view]
  • Bug 4771 - Not warning of undocumented function parameters [view]
  • Bug 4878 - Value from enumeration followed with semicolon is not present in java docs [view]
  • Bug 4954 - JavaDoc @linkplain is not recognized [view]
  • Bug 5032 - Line numbers for examples [view]
  • Bug 5068 - The 'Examples:' section; bad/missing style and incorrect spelling [view]
  • Bug 5213 - Generated Doxyfile differs from result of doxygen -u [view] , [view]
  • Bug 5327 - <img> on a \page does not copy the image to the html output folder [view]
  • Bug 5366 - Error with inserting images to PDF with Markdown [view]
  • Bug 5442 - Misparsed comments leading to missing call graph [view]
  • Bug 5539 - Error message when using memberof in a C macro [view]
  • Bug 5547 - "remove" is treated as a keyword (green) in the source browser for C++ [view]
  • Bug 5677 - Negative sign in -Foo::Bar ruins hyperlink in generated output [view]
  • Bug 5725 - Field with name "internal" confuses documentation builder. [view]
  • Bug 5765 - \todo at end of C# XML comment breaks following todo's [view]
  • Bug 5783 - Navigation incorrect with escaped symbols [view]
  • Bug 5784 - Doxygen not creating call graphs for C# methods if namespace contains the classname [view]
  • Bug 5818 - Main page absent in TOC of CHM, if PROJECT_NAME is empty [view]
  • Bug 5853 - Can't suppress @author, @date and @copyright information in the detailed file description [view]
  • Bug 5901 - Macros (@test, @todo, etc) used with PHP namespaces causes illegal command warning [view]
  • Bug 5929 - \internal stops all parsing if used inside a section [view]
  • Bug 6025 - Make maxLineLen of latex output configurable [view]
  • Bug 6041 - PHP: New array syntax not supported when parsing initial value [view]
  • Bug 6104 - EXTERNAL_GROUPS lose hierarchy [view]
  • Bug 6118 - Title in rtf file is incorrect when overridden by user in extension file [view]
  • Bug 6153 - Build of PDF with LaTEX breaks [view]
  • Bug 6160 - Python List as Default Parameter not parsed correctly [view]
  • Bug 6172 - CREATE_SUBDIRS breaks SERVER_BASED_SEARCH [view]
  • Bug 6175 - plantuml:an unwanted newline is generated after @startuml [view]
  • Bug 6197 - Czech/Slovak language documentation with tables from LaTeX to PDF is not possible [view]
  • Bug 6208 - Annotated function parameter generates <dt> warning in todo list [view]
  • Bug 6213 - rtf generation [view]
  • Bug 6214 - LaTeX output for \tparam block fails to compile when it contains a \code block [view] , [view]
  • Bug 6224 - .tex file is wrong when generating a function whose name includes an underline [view]
  • Bug 6269 - Disabled controls when `HAVE_DOT` is already set to `YES` [view]
  • Bug 6270 - Bad handling of Python class members when a class declaration line contains a comment [view]
  • Bug 6295 - doxygen has problem with operator&=() [view]
  • Bug 6305 - XHTML pages are broken several ways [view] and [view]
  • Bug 6308 - When generating xhtml, async attribute on script tags need a value [view]
  • Bug 6310 - Table markdown produces invalid xhtml code [view]
  • Bug 6311 - Blank rows on class page when using external tag file [view]
  • Bug 6312 - markdown plantuml use of graphviz fail if plantuml work i code file [view]
  • Bug 6316 - unescaped double quote in searchdata.js breaks search box functionality [view]
  • Bug 6322 - incorrect parsing of markdown table [view]
  • Bug 6323 - error: Could not open file .../doc/html/functions_ .html for writing [view]
  • Bug 6324 - C#: Incorrect parsing of property definitions containing "//" symbols in one line with "} [view]
  • Bug 6325 - Segmentation fault when generating graphical class hierarchy [view]
  • Bug 6339 - Examples of TCL files fail to display [view]
  • Bug 6340 - Missed warning opportunity: duplicated arguments [view]
  • Bug 6345 - c# see langword broken [view]
  • Bug 6346 - Doxygen crash when using \code{.markdown}...\endcode in VHDL source [view]
  • Bug 6350 - Broken extension test in FileDef::generateSourceFile() [view]
  • Bug 6352 - "unexpected token TK_EOF as the argument of ref" when target starts with a digit [view]
  • Bug 6362 - Adjacent xrefitems always added to first list present on page [view]
  • Bug 6363 - Backslashes in default values confuse the parser (and cause params to be ignored) [view]
  • Bug 6368 - LaTeX: Class scrbook Error: undefined old font command `\tt' [view]
  • Bug 6370 - Invalid 3-byte UTF8 found in input of graph [view]
  • Bug 6373 - Collapsed treeview arrow displays as emoji in Microsoft Edge [view]
  • Bug 6378 - @cond does not stop at @endcond Fortran [view]
  • Bug 6517 - Emoji support [view] , [view]
  • Bug 6524 - Markdown formats missing in doxygen outputs. [view]
  • Bug 6533 - PHP: Namespaced typehints in deprecated methods not handled correctly [view]
  • Bug 6547 - Call graph missing due to ALIASES [view] , [view]
  • Bug 6566 - INHERIT_DOCS not working for python [view]
  • Bug 6580 - xrefitems not listed if the page is referenced multiple times [view]
  • Bug 6589 - anchor after test command in a namespace produces duplicate tests [view]
  • Bug 6594 - using ingroup and anchor causes tests to disappear [view]
  • Bug 6597 - SIGSEGV presumably caused by C++ "using" declaration [view]
  • Bug 6601 - tparam HTML gobbles up lines after the tparam comment [view]
  • Bug 6612 - Issue with handling of emoji [view]
  • Bug 6632 - References to Objective C protocols by name broken in 1.8.12 [view]
  • Bug 6657 - "QGDict::hashAsciiKey: Invalid null key" when using anonymous union/struct [view]
  • Bug 6690 - Regression in handling of shorthand signed/unsigned types in function parameters (with bisect and test case) [view]
  • Bug 6691 - Multiple issues with emoji matching [view]
  • Bug 6692 - XML TOC generation is not backwards-compatible with 1.8.14 [view]
  • 'self' keyword in PHP documentation [view]
  • Added: support RTL for DocXRefItem in html - Removed: support RTL form Return section in html, for consistency with parameter sections [view]
  • Fixed: list item bullets overlap floating elements in html - Fixed: fragment lines overlap floating elements in html [view]
  • Fixed: text-align of rtl toc [view]
  • Fixed: last line underline overlap border in html fragment [view]
  • A few more language updates [view]
  • Add VHDL strings to Translator class and add german translations. [view]
  • Add commands to handle referenced by relation and references relation [view] , [view]
  • Add formula (images) to RTF output [view]
  • Add function annotations support [view]
  • Add possibility for adding doxygen configuration items to, all, tests during runtime. [view]
  • Add support for std::shared_ptr [view]
  • Add support of dict/set in annotations and default values [view]
  • Add variadic arguments support to @link and @ref, aka '...' arguments, fixes [view]
  • Add variadic function arguments '...' regression tests [view]
  • Add variadic template function regression tests [view]
  • Added *.ice files as a recognized file type. Added a Slice-optimized output mode. [view]
  • Added French translation [view]
  • Added missing #include for util.h to portable.cpp [view]
  • Added not for usage of [TOC] together with Markdown headers [view]
  • Added some VHDL code coloring [view]
  • Added some missing default types for argument matching [view]
  • Added substitution variant for character substitution [view]
  • Added support for RTL(right to left) languages like Arabic and Persian in HTML output [view]
  • Added test case for \ref, and fixed representation of operator->*() [view]
  • Adding debug options to vhdl parser generator [view]
  • Adjustment of xhtml1-transitional.dtd [view]
  • Automatic detection of UCS-2 based on BOM corrected [view]
  • Better HTML output for VHDL Ports [view]
  • Bold text terminated by plus sign [view]
  • Bug fix for plantuml [view]
  • Bump minimal deployment target for OSX to 10.9 to avoid deprecation warning while linking [view]
  • C++11 features used in Doxygen [view]
  • Cannot Generate Layout File using -l [view]
  • Cannot properly jump from brief to detailed function description [view]
  • Change german translation of trClassDocumentation() for VHDL output. [view]
  • Changed implementation, added test case [view]
  • Changed mail address and removed obsolete files [view]
  • Changed refiltering to forced use of insideTabbing [view]
  • Changed state guard instead of adding pattern check+reject [view]
  • Close last code line properly. [view]
  • Combined lrRank and rank parameters for computeMd5Signature [view]
  • Consistency between 'generate' and 'update' startup option [view]
  • Consistency between preprocessor and handling of \cond and \if [view]
  • Consistency for "group" commands [view]
  • Consistency in headings and layout for template parameters (tparam) [view]
  • Consistency of Index name in LaTeX output [view]
  • Consistency of environment variables between config and code [view] , [view]
  • Consistent warning messages [view]
  • Correct list of not used translator functions [view]
  • Correct typing error in test 5 [view]
  • Correct typing error in test 51 [view]
  • Correct typing error in warning message. [view]
  • Corrected description of XML output for emoji characters [view]
  • Corrected warning in case of a not supported output format with \image command. [view]
  • Correcting "Definition at line @0 of file @1." [view]
  • Correcting labels for citations [view] , [view]
  • Correcting tag example and uniform calling all examples [view]
  • Correcting tag in printdocvisitor [view]
  • Correcting warning messages and echoing unknown command [view]
  • Correction for `doxygen -g` [view]
  • Correction in example of FILE_VERSION_FILTER [view]
  • Correction in title of FAQ [view]
  • Correction internal documentation [view]
  • Correction of some coloring of code comments in VHDL, adding data type 'positive' [view]
  • Create command for escaped equal sign [view]
  • Create test possibilities for xhtml and pdf output [view] , [view]
  • Debug output commentcnv independent of QUIET setting [view]
  • Difference between standard and used Doxyfile [view]
  • Difference between standard and used Doxyfile (list) [view]
  • Disabled Appveyor documentation build due to unreliability of MikTeX download [view]
  • Disabled debug print [view]
  • Documentation EXTENSION_MAPPING [view]
  • Documentation correction [view]
  • Documentation correction CLANG option usage [view]
  • Documentation correction include command with options [view]
  • Documentation corrections [view]
  • Documentation internet addresses [view]
  • Documentation update regarding right font usage in architecture chapter [view]
  • Does not generate TOC for markdown [view]
  • Don't link to non existing / not accessible namespaces , in CSharp, in the source code [view]
  • Doxygen creates empty image titles for Docbook output [view]
  • Doxygen manual doesn't have lines around markdown tables / cells. [view]
  • Doxygen manual is not XHTML compliant [view]
  • Drop down lists in menu bar missing [view]
  • Enable comma as separator in configuration lists [view]
  • Enable in page table of contents for LaTeX [view]
  • Enable in page table of contents for XML and add maximum level to in page table of contents [view] , [view]
  • Enable possibility of CLANG for Cygwin [view] , [view]
  • Enable possibility to run single tests [view]
  • Ensure all language files are reset [view]
  • Expand sqlite3gen's breadth, depth, and quality [view]
  • Extending \cite command with '-' and '?' characters. [view]
  • Extending tests with extra possibilities [view]
  • Fix French lang build [view]
  • Fix HTTPS links [view]
  • Fix VHDL Latex documentation having two chapters with the same name. [view]
  • Fix Windows build failure [view]
  • Fix annotation with default value parsing [view]
  • Fix building with Visual Studio 2013 [view]
  • Fix for 'Definition at line' points to end of multiple-lined definition for Python #6706 [view]
  • Fix for module quicklinks [view]
  • Fix for unbounded memory usage due to a bug in \ref const matching #6689 [view]
  • Fix potential hangup when merging scopes [view]
  • Fix regression due to move of markdown processing [view]
  • Fix scanner.l for Slice [view] , [view] , [view]
  • Fix/New: add variadic function args '...' support to @link [view]
  • Fix/New: add variadic function args '...' support to @ref [view]
  • Fixed bug in URL [view]
  • Fixed compile errors in clang and gcc [view]
  • Fixed compiler warning for nested /* in scanner.l [view]
  • Fixed differently by changing root cause for introducing the space [view]
  • Fixed documentation to point to GitHub issue tracker [view]
  • Fixed incorrect XHTML output for test 021 [view]
  • Fixed logic error [view]
  • Fixed merge problem [view]
  • Fixed one remained compile error in clang [view]
  • Fixed problems with emoji handling and added a test case for it [view]
  • Fixed some more small memory leaks [view]
  • Fixed two small memory leaks [view]
  • Fixing coverity messages [view]
  • Fixing coverity messages (Namespace tag) [view]
  • Fixing problem with possible not initialized variable (endless loop in VS 2017 debug) [view]
  • Fortran code coloring improvements (REAL and comment lines) [view]
  • Fortran improvements [view]
  • Fortran improvements (2) [view]
  • Fortran scanner abort message [view]
  • French translation for VHDL additions [view]
  • Further simplified the fix [view]
  • Generating doxygen documentation on Windows (with MikTex) [view]
  • Handling Fortran functions in call graphs [view]
  • Heading in rtf. #6522 https://github.com/doxygen/doxygen/issues/6522 [view]
  • Ignore build* directories and not just build [view]
  • Implementation Fortran ENUM / ENUMERATION [view]
  • Implementation of standard generator for docbook output [view] , [view]
  • Improved robustness of the emoji feature [view]
  • Improvement LaTeX output [view] and [view] and [view]
  • Improvement regarding width and title for docbook [view]
  • Improvements in handling special characters in Latex [view]
  • Include "empty" directories in the documentation if they contain a `.dox` file (or similar) documenting the directory itself. [view]
  • Include header for CompilationDatabase [view]
  • Include height item in XML output [view]
  • Inconsistency in respect to tgroup in docbook [view]
  • Incorrect tag sequence for xhtml with class diagram possible [view]
  • Incorrect closing tags for in page table of contents (XHTML) [view]
  • Incorrect closing tags for in page table of contents (docbook) [view]
  • Incorrect number of start / end paragraph tags for xhtml with htmlonly [view]
  • Incorrect number of start / end paragraph tags for xhtml with image command [view]
  • Incorrect number tag sequence for xhtml with htmlinclude command possible [view]
  • Incorrect tag sequence for xhtml with latexinclude command possible [view]
  • Incorrect tag sequence possible for images possible in case of xhtml [view]
  • Index bugfix [view]
  • Index list cannot contain special characters in ids for XHTML [view]
  • Inline images [view]
  • Invalid warnings regarding todos when source file name contains a '-' [view]
  • Issue #6631 Code blocks incorrectly formatted in Latex [view]
  • Issue 6411: CSS for Markdown tables do not use HTML_COLORSTYLE_HUE, HTML_COLORSTYLE_SAT config variables [view]
  • Issue 6469: Java method calls are ignored in generating call/caller graph with Graphviz [view]
  • Issue 6494: asterisks before args and kwargs are ignored in python [view]
  • Issue_6456 Using # in links causes errors in PDF generation [view]
  • Issue_6585: Unexpected anchor tags in tag-files [view]
  • Keyword register (in code) is deprecated since C++11 [view] , [view]
  • LaTeX with verbatim part inside a table [view]
  • Large CALL / CALLER graphs cannot be processed in LaTeX [view]
  • Make conanfile creation more readable [view]
  • Make it possible to list namespace members in file scope for XML output. [view]
  • Making VHDL error messages more doxygen like [view]
  • Making the 'tex' part of \makeindex available to the user [view]
  • Markdown list wrong displayed [view]
  • Minor documentation fix [view]
  • Minor fixes to local toc logic after feedback [view]
  • Minor restructuring [view]
  • Misc. typos [view] , [view]
  • Missing opening round bracket in case of an exception [view]
  • More typos [view]
  • Moved #include "config.h" back to the original place [view]
  • Moved duplicated code into dedicated function skipLanguageSpecificKeyword [view]
  • Moved local toc data into a separate type for better encapsulation [view]
  • Multiple `\xreflist` in one page with same key [view] , [view]
  • Multiple addindex commands in HTML with same name [view]
  • Namespace with name docstrings_linebreak [view]
  • Not showing external project in HTML hierarchy class pages [view]
  • Numbers in comment disappear [view]
  • Numbers overlap the titles in TOC of PDF [view]
  • Order resources not only on filename but also dirname [view]
  • PATCH -- updates reference link with no closing [view]
  • Path for external commands on windows [view]
  • Possibility to have a \image command inside a <A> tag [view]
  • Possible fix for the build [view]
  • Prevent <center> and <div> inside brief descriptions to avoid broken XHTML output [view]
  • Prevent empty list [view]
  • Prevent empty member list table (XHTML) [view]
  • Prevent empty page list table (XHTML) [view]
  • Prevent possible 'QGDict::hashAsciiKey: Invalid null key' warning [view]
  • Prevent potential race condition [view]
  • Print emoji text in case of unknown emoji [view]
  • Problem with TEST_FLAGS when using CMake for Visual Studio [view]
  • Problem with \cond in normal comment of test 015 [view]
  • Problem with code inside a Doxy table in LaTeX [view]
  • Problems and some enhancements for LaTeX tables [view]
  • RTF layout regarding References and Referenced by [view]
  • RTF lists more levels and removing extra paragraphs [view]
  • Readded missing "Span" case to DocStyleChange::styleString [view]
  • Redundant whitespace removal breaks some C++ links [with test case and Git bisect] (Origin: bugzilla #791942) [view]
  • Refactored code a bit [view]
  • Refactored code a bit (use const references and made global functions members) [view]
  • Reference text in reference list seen as emoji [view]
  • Remove debug statement [view]
  • Remove debug statements [view]
  • Remove default assignment from Translator::trVhdlType() declaration [view]
  • Remove double line with documented argument from addContentsItem in ftvhelp.cpp [view]
  • Remove non-english translations [view]
  • Remove obsolete definitions from scanner [view]
  • Remove obsolete line from README.md [view]
  • Remove old obsolete docbook generator [view]
  • Remove some dead code [view]
  • Renamed (start/end)SimpleSect to (start/end)Examples. [view]
  • Renamed command and moved duplicated code into a macro [view]
  • Renamed option and test case numbers [view]
  • Replace ''printf' with appropriate warn 'message' [view]
  • Replace calls to trTypeString with trVhdlType in single mode, which is the default. [view]
  • Replaced replace(QRegExp(..)) by substitute [view]
  • Replaced replace(QRegExp..) by substitute [view]
  • Resolve inconsistency in formula repositories. [view]
  • Restructured code to avoid the need for global state [view]
  • Return VHDL specific text in trClassHierarchyDescription() [view]
  • Section label with minus sign not recognized properly. [view]
  • Small clarification for REFERENCED_BY_RELATION [view]
  • Small correction installation / build procedure [view]
  • Small corrections in distributed man pages [view]
  • Small documentation corrections [view]
  • Small problems when displaying python code [view]
  • Small problems when having code in LaTeX output [view] , [view]
  • Sorting of index in case of LaTex [view]
  • Spanish translation for VHDL additions [view]
  • Spelling of the word Javadoc [view]
  • Synchronize chapter names of doxygen's own documentation. [view]
  • Syntax highlighting / code coloring in RTF [view]
  • Tag sequence incorrect for svg image (XHTML) [view]
  • Test renumbering [view] , [view]
  • Tooltip was twice 'HTML escaped' [view] , [view]
  • Translators updated to version 1.8.15. [view]
  • Truncated split bar in HTML output between treeview and normal text area [view]
  • Typos [view], [view] , [view]
  • Unbalanced start of lists resulting in not creatable pdf of rtf document [view]
  • Update Dutch translation for new Slice implementation [view]
  • Update Dutch translation in respect to new VHDL entries. [view]
  • Updated Hungarian translation [view]
  • Upgrade to jQuery 1.7.2 to get rid of security scan violations. [view]
  • Usage of '{', '}' and ',' in ALIAS [view]
  • Use QCStringList::split i.s.o. QStringList::split [view]
  • Version bump for next release [view]
  • Warning running xmllint for xhtml [view]
  • Wrong counting of lines during VHDL code output [view]
  • Wrong determination of begin / end tag of formula in markdown. [view]
  • Wrong link generated for inherited members when tag files are used. [view]
  • Wrong separator in index for a.o. Python, C# [view]
  • Wrong spelling of word doxygen [view]
  • XHTML image tag mandatory alt attribute [view]
  • XHTML incorrect attribute values for align and valign [view]
  • XHTML problem with class index table [view]
  • XHTML problem with multiple use of node numbers in id attribute [view]
  • XHTML problem with name attribute with VHDL name attribute [view]
  • XML output: avoid warnings with scoped enum values in anonymous namespaces. [view]
  • [ImgBot] Optimize images [view]
  • added PHP7 support for the search engine on HTML output. See: http://php.net/manual/en/language.basic-syntax.phptags.php [view]
  • addindex supports also DocBook and RTF [view]
  • correct typo in comment [view]
  • declares XMLCodeGenerator in xmlgen.h [view]
  • doxyparse bugfixes and minor improvements [view]
  • fix build with qt 5.11, deprecated qt5_use_modules macro was removed, patch by Christophe Giboudeaux [view]
  • perlmod syntax correction [view]
  • redundant input_filter runs significantly reduce performance when FILTER_SOURCE_FILES and INLINE_SOURCES are both enabled #6395 [view]
  • sqlite3: fix missing external_file view schema col [view]
  • sqlite3: require sqlite >= 3.9.0 [view]

Release 1.8.14

(release date 25-12-2017)

  • Add language type attribute to programlisting tag [view]
  • Add links behind nav entries "Namespaces" and "Files" (matching "Classes") [view]
  • Allow case insensitive file pattern matching based on CASE_SENSE_NAMES [view]
  • Async load of mathjax javascript [view]
  • Avoid generating unused dir_* output files for non HTML output formats [view]
  • Bug 3138 - Wrong spacing in function names with french language (latex output) [view]
  • Bug 4289 - does ALIAS work for VHDL code? [view]
  • Bug 5468 - (UnFriendlyTemplate) Spurious warning when documenting friend template [view]
  • Bug 5525 - parser misinterpreting fortran [view]
  • Bug 5724 - Duplicate attribute (target="_top" target="_top") generated in .SVG files [view]
  • Bug 6128 - Usage of underscore's in parameter names [view]
  • Bug 6135 - [1.8.13 Regression] Segfault building the breathe docs [view]
  • Bug 6137 - XML Parsing Error for operator<< methods when outputting to XHTML [view]
  • Bug 6139 - Menu does not work without Javascript [view]
  • Bug 6141 - Too greedy behavior of @ref const matching [view]
  • Bug 6169 - doxygen build fails [view]
  • Bug 6170 - Add "\~" command to internatioalization article [view]
  • Bug 6223 - Problem RTF output: The class list "classes" within the namespace report is wrong indicated. [view]
  • Bug 6238 - parsing error in Fortran file with preprocessing [view] , [view]
  • Bug 6259 - Problem parsing c++ gnu::visibility [view]
  • Bug 6262 - C++: False warning message when inheriting class from tag file [view]
  • Bug 6273 - Error in markdown emphasis examples [view]
  • Bug 6277 - Increasing access of inherited C++ members with 'using...' is not recognized by Doxygen [view]
  • Bug 6286 - C++ parameter from lambda not recognized [view]
  • Bug 6290 - Doxygen not showing the public, non-static member function [view]
  • CMake: avoid if() around the whole contents of documentation CMakeLists.txt [view]
  • CMake: avoid if() around the whole contents of plugin CMakeLists.txt [view]
  • CMake: let CMake handle the C++ standard setting if target_compile_features() is used [view]
  • CMake: let file(MAKE_DIRECTORY) create all directories at once [view]
  • CMake: remove CUSTOM_(LINK|INCLUDE)_DIR [view]
  • CMake: remove needless variable expansions [view]
  • CMake: remove unused program searching [view]
  • CMake: search for Qt5 only in config file mode [view]
  • CMake: use GNUInstallDirs module for man pages directory [view]
  • CMake: use add_test to create a test [view]
  • CMakeLists: Avoid MSVC iconv changes for MinGW builds [view]
  • Call endMemberItem consistently. [view]
  • Change navtree collapsed list icon [view]
  • Code color of , (comma) together with only in use statement [view]
  • Corrected small type [view]
  • Correction display of backtick in LaTeX [view]
  • Correction of non reachable links and redirected links in documentation. [view]
  • Documentation, correct referenced file [view]
  • Doxygen/VHDLdocgen: [view]
  • Encode invalid XML characters instead of skipping them. [view]
  • Expose TOC placeholder in XML output. [view]
  • Expose underlying enum type in the XML output. [view]
  • Fetch filename property from object instead of hardcoded duplicated string [view]
  • Fix C# property initializer parsing [view]
  • Fix for regression in XML output generation after fixing bug 789168 [view]
  • Fix 6210. [view]
  • Fix minor markup issue in the documentation. [view]
  • Fix not initialized pointer when parser is starting on a new file. [view]
  • Fix typo [view]
  • Fix: add missing newline char '\n' [view]
  • Fix: add missing semicolon ';' at end of line [view]
  • Fix: change 'CMakefiles' to 'CMakeFiles' (the 'F' is uppercase) [view]
  • Fix: perl script regexp to toggle flex debug information [view]
  • Fixed problem where automatic line breaking caused missing vertical bars in the parameter table for Latex output. [view]
  • Fixes for cross platform build with new LLVM/CLANG version [view]
  • Fixup man page NAME section when page has title [view]
  • Function declaration following a function definition incorrectly listed as calling dependencing [view]
  • Further cleanup of lodepng code [view]
  • Implement "double-space line breaks" syntax in Markdown [view]
  • Improve Chinese translation [view]
  • Inline attribute got reset for functions returning an explicit struct type [view]
  • Isolated none-existing posix threading functions on Android [view]
  • Marks JS as freely licensed [view]
  • Misc. doxy and comment typos [view]
  • Misc. typos [view]
  • New table features mentioned in the documentation were not enabled. [view]
  • Pass strings as const references. [view]
  • Physical newlines in ALIASES configuration tags. [view]
  • Propagate language information to all <programlisting> XML elements. [view]
  • Properly copy images for the XML output. [view]
  • Provide dot path to plantuml [view]
  • Provide information about enum type "strongness" in the XML output. [view]
  • Provide page brief in <briefdescription> of XML output. [view]
  • Provide template parameters also for type aliases in the XML output. [view]
  • Removed -Wno-deprecated flag from bison as it is not support on the bison 2.3 that ships with XCode [view]
  • Restore 'make tests' rule [view]
  • Restore Makefile in vhdlparser dir [view]
  • Spelling correction [view]
  • Stripped unused LodePNG code to prevent false positives for coverity [view]
  • Suppresses warning for XML <see langword="..."/> [view]
  • Suppression warnings about deprecated directive [view]
  • Update .travis.yml [view] , [view]
  • Update mathjax path [view]
  • Updated translator_de.h to doxygen 1.8.13 [view]
  • Use hidden symbol visibility by default [view]
  • Use language identifier instead of file extension for language attribute [view]
  • Use language in stead of lang for language name attribute [view]
  • Update of the Brazillian translation [view]
  • [preprocessing.doc] typo amended [view]
  • add decimal to base identifier [view]
  • add the number of conditionals path and bugfix [view]
  • build: fix the way lang_cfg.h is generated [view and view]
  • bump version number for the development version/next release [view]
  • const-ify [view]
  • dot.cpp: Fix DotGfxHierarchyTable first class node loop [view]
  • fix spelling [view]
  • fix test to support new programlisting attribute [view]
  • fix typo [view]
  • fixes vhdl literal bug [view]
  • line continuation characters inside comments embedded in a macro definition appeared in the output [view]
  • make use of clang compilation database [view]
  • new addon doxyparse, a source parsing engine [view]
  • sqlite3gen: add index on params [view]
  • sqlite3gen: add missing protectedsettable column [view]
  • sqlite3gen: add openDbConnection [view]
  • sqlite3gen: start checking operations status [view]
  • sqlite3gen: use sqlite3_exec for schema setup [view]
  • typos [view]
  • update compound.xsd to add language attribute [view]
  • using YAML in the output of "doxyparse" [view]

Release 1.8.13

(release date 29-12-2016)

  • Bug 5279 - C++/CLI indexed property not documented [view]
  • Bug 5280 - Grouping of results fail when using built-in javascript search [view]
  • Bug 5400 - 'static' and 'throw' C++ keywords not colored [view]
  • Bug 5476 - wrong collaboration diagram when in template used scoped argument type [view]
  • Bug 5882 - Multiline //!< behavior changed [view]
  • Bug 5917 - C++11 "using" type alias for function pointer with no arguments is formatted incorrectly [view]
  • Bug 5930 - fails to build with an unreleased python version [view]
  • Bug 6044 - doxygen warning parsing C++11 "using" declaration [view]
  • Bug 6060 - Tag file size double between each run [view]
  • Bug 6062 - C++11 ref-qualifiers do not appear in Member Function Documentation section [view]
  • Bug 6063 - Web-page bug: Comment blocks in VHDL [view]
  • Bug 6067 - French description for "Namespace Members" is wrong and causes fatal javascript error [view]
  • Bug 6068 - Class name 'internal' breaks class hierarchy in C++ [view]
  • Bug 6084 - __xxx__ not interpreted as markdown when xxx begins with a non-word character (e.g. __-1__) [view]
  • Bug 6093 - Underscores in type or member name cause unwanted hyphenation in PDF output Data Fields [view]
  • Bug 6094 - "name" attribute of image map not urlencoded, not working in Chrome [view]
  • Bug 6105 - Please add HTML classes to "Definition at..." & "Referenced by..." for CSS [view]
  • Bug 6109 - INLINE_SIMPLE_STRUCTS with enums in classes does not work [view]
  • Bug 6115 - Modify in some pronunciation expression in Korean [view]
  • Bug 6123 - Unknown reference in manual [view]
  • Bug 6125 - referencing Python files via tagfile broken [view]
  • Add NVARCHAR as a SQL type [view]
  • Add mscgen images to index.qhp [view]
  • Add sql syntax highlighting to code blocks [view]
  • Add support for more CSS formatting and column/row spanning in markdown tables [view]
  • Added missing language value for SQL to XML output [view]
  • Adds plantuml support Qt compressed help file [view]
  • Check for undocumented params warnings if members detailed documentation is not written [view]
  • Cleanup: removed redundant =NULL from interfaces, or replaced by =0 where it was needed. [view]
  • Clear header/footer information in ConfigImpl for postProcess [view]
  • Documentation small corrections [view]
  • Doxygen error: Found ';' while parsing initializer list [view]
  • Fix for PlantUML configuration [view]
  • Fix plantuml generation issue [view]
  • Fix: Add missing jquery.js, dynsections.js & optional svgpan.js to QCH file [view]
  • Fix: replace deprecated {\bf with \textbf{ in LaTeX generator [view]
  • Fixed constexp.y bison issue [view]
  • Fixed cross referencing issue when using bitfields. [view]
  • Fixed jump to anchor issue when navigating to source file [view]
  • Fixed problem generating per letter namespace member index pages. [view]
  • Fixed svgpan.js issue with Chrome causing empty SVG graphs [view]
  • Fixed typedef and define strings for Spanish translation [view]
  • Fixup man only output to use generator state push pop [view]
  • For manpages remove trailing dash when no brief description [view]
  • Made the RTF output honor the PAPER_TYPE option. [view]
  • New classes for generated HTML div elements. [view]
  • Option for PlantUML configuration file [view]
  • Removed x flag from util* source files [view]
  • Replaced section marker before members by diamond shaped bullet [view]
  • Reverting pull request #537 until it will be fixed [view]
  • Update Swedish translation [view]
  • Updated the Polish translation [view]
  • bison: use %declarations instead of command line options. [view]
  • flex: use %option instead of command line options. [view]

Release 1.8.12

(release date 05-09-2016)

  • Bug 1662 - Fix missing title in non-page docanchors from tag files [view]
  • Bug 2763 - FILTER_PATTERNS won't take command with arguments [view]
  • Bug 4691 - Uses <img> instead of <object> html tag for SVG images [view]
  • Bug 5174 - error state 21 with fortran code (fixed format) [view]
  • Bug 5323 - Missing Page References in the Index Chapters of the LaTex/PDF output [view]
  • Bug 5411 - Inherited member of template class issues warning and is not documented [view]
  • Bug 5711 - Fortran: attributes after a blank line are ignored / Bug 3880 - FORTRAN: comment in subroutine argument list [view]
  • Bug 5791 - Doxygen handles comments in Objective-C code blocks incorrectly. [view]
  • Bug 5804 - Representation of arrows [view]
  • Bug 5811 - Markdown: > escaped within backticks [view]
  • Bug 5826 - Use UTC timezone when displaying QDateTimes parsed from SOURCE_DATE_EPOCH [view]
  • Bug 5832 - last entry missing in a @name group of typedefs [view]
  • Bug 5843 - Link of typedef within namespace on group pages missing [view]
  • Bug 5891 - __init__.py causes to ignore some inheritance [view]
  • Bug 5923 - Figure title needs to be on separate line in order for it to work [view]
  • Bug 5933 - Phantom variables/functions in XML, created from non-code files [view]
  • Bug 5937 - CASE_SENSE_NAMES ignored [view]
  • Bug 5938 - Spaces between the closing bracket of the typename and the opening bracket of the parameter list cause detection issues. [view]
  • Bug 5941 - python unicode docstrings are ignored [view] , [view]
  • Bug 5945 - Do not allow ligatures in log output [view]
  • Bug 5958 - References for one function can inherit References from subsequent non documented function [view]
  • Bug 5961 - External search does not properly escape user supplied data, resulting in vulnerability [view]
  • Bug 5962 - regression, Unescaped percent sign in doxygen output [view]
  • Bug 5964 - hyperref link label drop underscores [view]
  • Bug 5965 - Directory list is not generated in HTML output [view]
  • Bug 5967 - imported section anchors are copied in project tagfile [view]
  • Bug 5970 - Exclusion of a new line at the end of source code file causing nesting of HTML code for function documentation [view] , [view]
  • Bug 5975 - Recent File list allows only 2 entries [view] , [view]
  • Bug 5978 - doxygen crashes no resolved [view]
  • Bug 5980 - generated xml has errors [view]
  • Bug 5981 - quick link index in alphabetical class list in classes.html doesn't work [view]
  • Bug 5982 - Bad character escaping scheme in HTML anchor generation. [view]
  • Bug 5983 - `@addindex`entries fail to link to the exact location in Compiled HTML Help. [view]
  • Bug 5985 - Java: final keyword on a parameter brakes docs inherinance [view]
  • Bug 5991 - Using `@page` to add title to Markdown file generates surplus empty page. [view]
  • Bug 5998 - DOT_PATH not expanded [view]
  • Bug 5999 - Files with incorrect extensions (.doc) are picked up by doxygen [view]
  • Bug 6002 - python: missing cross-links in sources (option SOURCE_BROWSER = YES) [view]
  • Bug 6007 - VHDL: missing last sign in html documentation of constant declaration [view]
  • Bug 6009 - HTML Tables with 10+ columns are broken for LaTeX based output [view]
  • Bug 6010 - Enumerations heading present but none listed [view]
  • Bug 6020 - ALIASES stop working after verbatim with formula and /** */ [view]
  • Bug 6031 - Doxygen segfault (return code 134) when parsing a c++ enum class contained in a class [view]
  • Bug 6032 - Segmentation fault when processing md containing only header [view]
  • Bug 6033 - Invalid XHTML if the directives brief and exception are following immediately [view]
  • Bug 6035 - Can't scroll using finger documentation in Chrome browser on Android OS [view]
  • Bug 6048 - doxygen generates incorrect documentation for C enum in latex [view]
  • Bug 6055 - Code snippet always shows line numbers from 1 [view]
  • Bug 6056 - Broken links in HTML output with SHOW_FILES=NO [view]
  • Add caption in verbatim blocks. [view]
  • Add parameter in/out specifiers to output. [view]
  • Add section title to output. [view]
  • Added .codedocs file [view]
  • Added an option to add "anonymous" headings to the table of contents (currently Markdown only). [view]
  • Added generating template files and reading templates from disk if present [view]
  • Added missing free [view]
  • Added support for encoding tag to the template engine used for HTML help indices [view]
  • Adding compilation options for flex/lex and bison/yacc [view]
  • Adding partial htmlhelp support to template system [view]
  • Adjusted Doxygen to doxygen in running text in the manual [view]
  • Allow verbatim code block to be placed on the output. [view]
  • Also map .f95, .f03 and .f08 file types to Fortran [view]
  • Another possible fix [view]
  • Applied responsive design to menu bar using smartmenus [view]
  • Assertion failure generation documentation [view]
  • Bug fix for rendering the VHDL Hierarchy (thanks to a patch by Martin Kreis) [view]
  • Building doxyapp fails after update of config methodology to improve performance [view]
  • Bump version for GIT repo [view]
  • CMAKE: Fix building on Windows with VS 2015 [view]
  • Changed configuration mechanism to directly access options in order to improve performance [view]
  • Code with "extension" unparsed shows line numbers [view]
  • Color code word OPERATOR and ASSIGNMENT as keyword in FORTRAN code [view]
  • Color code word RESULT as keyword in FORTRAN code [view]
  • Determination of end of parameter list [view]
  • Disable selecting line number [view]
  • Disabled debug prints [view]
  • Documentation for extensions .f95, .f03 and .f08 [view]
  • Doxygen fails to copy logo image to LaTex output dir [view]
  • FORTRAN determination string in preprocessing [view]
  • Feature: Translations for german language (changes since 1.8.4) [view]
  • Fix STRIP_FROM_PATH when running from drive root [view]
  • Fix Windows build instructions. [view]
  • Fix documentation typos [view]
  • Fix for HTML output when using server side search and the new menu bar [view]
  • Fix for changed references due to different removeRedudantWhiteSpace() implementation [view]
  • Fix for empty file name [view]
  • Fix for error in travis.yml [view]
  • Fix issue escaping backslash inside markdown style code span [view]
  • Fix linker flags for building with clang on Windows [view]
  • Fix order of member initilaization [view]
  • Fix return-type warnings with -DNDEBUG [view]
  • Fix search box rendering in HTML when menu bar is disabled [view]
  • Fix uppercase letters B-Z being unnecessarily escaped in index HTML anchors. [view]
  • Fixed for index.hhp output when using template engine [view]
  • Fixed issue escaping ndashes (\--) and mdashes (\---) [view]
  • Fixed problem with -w command when no Doxyfile was present and specified [view]
  • Fixed two regressions found during extensive testing [view]
  • Fixed typos. [view]
  • Fixed wrong <p> nesting issue for call/caller graphs [view]
  • Fortran inline source code and crash on Linux [view]
  • Improve output on mobile devices [view]
  • Improved list of files in htmlhelp.hhp [view]
  • Improved sorting performance for directories and files [view]
  • Include command show line number (e.g. LaTeX) [view]
  • Initialization of python variables and type determination [view]
  • Introducing commands includedoc and snippetdoc [view]
  • Latex page numbering [view]
  • Minor build fixes [view]
  • Minor correction for BUILD.txt [view]
  • Minor performance improvement sorting directories [view]
  • Minor update to the installation instructions [view]
  • Missing semicolon in navtree.css [view]
  • Modified (readability) layout for member title in HTML and LaTex [view]
  • Optimized use of convertNameToFile to improve performance [view]
  • PDF generation stops when image with caption is included in a table. [view] , [view]
  • Parse more than 1 size indiction in defaultHandleTitleAndSize [view]
  • Problem jumping to line number in source code due to wrong hypertarget name [view]
  • Python strip code comments [view]
  • Reimplemented node renumbering for dot graph to improve performance [view]
  • Remove unused variables [view] , [view]
  • Removed ambiguity in the XML schema definition [view]
  • Revert #291 [view]
  • Simplified code of fix for Bug 5982 [view]
  • Sorting in latex index and missing \@ in index [view]
  • Split apt-get install commands in travis config in an attempt to reduce timeouts [view]
  • Style fixes and added numbering to overloaded members [view]
  • Table of contents breaks when documentation spans multiple comment blocks with same @page [view]
  • Unified display of enum values across output formats and languages [view]
  • Unify handling of extra packages in formula.cpp and latexgen.cpp so formula.cpp handles package arguments correctly [view]
  • Update LICENSE file to latest from FSF [view]
  • Update copyright year in docs [view]
  • Updated README.md to include code docs [view]
  • Updated stylesheet for the manual to fix layout issue in the navigation tree [view]
  • Warnings from CLANG compiler [view]
  • fix ninja build error [view]
  • fixed rtf subsection [view]
  • mangen.h: remove italic in brief member descriptions [view]
  • reimplemented removeRedundantWhiteSpace() to improve performance [view]
  • sqlite3gen: defnname -> defname [view]
  • sqlite3gen: export proper memberdef refid [view]
  • sqlite3gen: insert xrefs using integer refids [view]
  • sqlite3gen: stripFromPath on all calls to insertFile [view]
  • sqlite3gen: stripWhitespace on bitfield's text [view]
  • sqlite3gen: sync with xmlgen [view]
  • sqlite3gen: use the refid stored in the refids table [view]

Release 1.8.11

(release date 30-12-2015)

  • Bug 1204 - Mainpage title has wrong style in RTF [view and [view]
  • Bug 2059 - $line param [view]
  • Bug 2258 - python: tuple assignment not recognized as variable initialization [view]
  • Bug 2653 - Fixes angle brackets (< and >) not escaped in HTML formula alt text [view]
  • Bug 3354 - [Python] Add pyw as a valid extension [view]
  • Bug 3499 - Python: STRIP_CODE_COMMENTS Doesn't work within the source code [view]
  • Bug 3515 - Python ignores \private tag [view]
  • Bug 3621 - Deprecated list: Wrong prefix '<globalScope>::' for global functions [view]
  • Bug 3935 - Incorrect "References" and "Referenced by" [view]
  • Bug 4129 - python script with #!/usr/bin/python are not documented correctly [view]
  • Bug 4214 - htmlonly content appears in generated XML output [view] and [view]
  • Bug 4249 - PYTHON: stops processing the file after encountering \"""" [view]
  • Bug 4433 - writeMemberNavIndex template calls static fixSpaces [view]
  • Bug 4856 - Math does not work in LaTeX with custom header and footer. [view]
  • Bug 5503 - Markdown backticks not processed within Markdown links. [view]
  • Bug 5510 - doxygen's \param command is confused by some python default values [view]
  • Bug 5556 - Python: Allow undocumented "cls" parameter for class methods [view]
  • Bug 5715 - Unnamed structs gives: QGDict::hashAsciiKey: Invalid null key [view]
  • Bug 5747 - PATCH: add option to build latex without timestamps [view]
  • Bug 5755 - The table in classes.html has no class attribute [view]
  • Bug 5760 - formulas creating invalid HTML code [view]
  • Bug 5763 - Doxygen thinks C++ class is Objective-C [view]
  • Bug 5808 - Doxygen don't support longer key in bibtex [view]
  • Bug 5809 - \cite still rejects valid BibTeX keys [view]
  • Bug 5821 - using plantuml cause a popup "openwith" windows when calling java.exe [view]
  • Bug 5826 - PATCH: Honour SOURCE_DATE_EPOCH environment variable for reproducible output [view]
  • Bug 5830 - XML not documenting a class in python [view]
  • Bug 5831 - XML empty <argsstring/> in python [view]
  • Bug 5832 - last entry missing in a @name group of typedefs [view]
  • Bug 5833 - Non-alphanumeric characters in Markdown links don't work properly [view]
  • Bug 5839 - $file when using @name is wrong [view]
  • Bug 5845 - Copy and paste of code fragment from CHM merges all pasted text into single line [view]
  • Bug 5847 - class="current" not applied to <li> for module tab within 'group__*.html' module html files [view]
  • Bug 5848 - \bug paragraph doesn't end with a new sectioning command [view]
  • Bug 5859 - Double anchors when using groups [view]
  • Bug 5869 - xrefitem link to list incorrect when using SHORT_NAMES [view]
  • Bug 5873 - Tree view pane overlaps with content tabs [view]
  • Bug 5877 - RTF output has incomplete "References" and "Referenced by" sections [view]
  • Bug 5878 - fatal: Cannot open 'graph_legend': No such file or directory [view]
  • Bug 5879 - Warning refers to incorrect line for undocumented member function (C++) [view]
  • Bug 5883 - Race condition in parallel DOT runs [view]
  • Bug 5885 - Unable to prevent a numbered list [view] and [view]
  • Bug 5888 - Inline markdown links don't support reference targets that contain ) [view]
  • Bug 5890 - Failed to document nested classes with "reference to array" parameters [view]
  • Bug 5893 - unclosed tag, c# generics method with where [view]
  • Bug 5894 - Doxygen do not support comparison angle bracket in template [view]
  • Bug 5897 - Brief description of non documented functions [view] and [view]
  • Bug 5898 - Bug in VHDL parser + other fixes [view]
  • Bug 5900 - C++ templated member-function appears both as public and private [view]
  • Bug 5904 - Markdown fenced code blocks not parsed properly in comment [view]
  • Bug 5910 - C++11 unified initializer for array with templates treated as function [view]
  • Bug 5913 - Doxygen parser confused by C++11 attributes [view]
  • Bug 5916 - unable to @ref or @link C++ templated operator overloads [view]
  • Bug 5919 - problems with charset using plantuml [view]
  • Actually using value of GROUP_NESTED_COMPOUNDS option [view]
  • Add RPM build for Red Hat [view]
  • Add WARN_AS_ERROR option to stop execution at first warning (equivalent of compilers' -Werror option) [view]
  • Add examples to LaTeX / PDF doxygen manual [view and [view]
  • Add mathjax support to template & context. [view]
  • Add support for "value" attribute in FORTRAN scanner [view]
  • Added documentation for creating tables [view]
  • Added javascript search engine data to the template context [view]
  • Added missing html resources to the html template file [view]
  • Added missing information to template version of the all members list [view]
  • Added support for directory dependency graphs to template engine [view]
  • Adding compilation options for flex/lex and bison/yacc [view]
  • Adjusted used option for CLANG usage with CMake in documentation [view]
  • Alignment in LaTeX parameter table [view]
  • Avoid using Resource::data as string, as it is not null terminated. [view]
  • Better handling of implicit statement in source code browser [view]
  • BugÂ 149792 - Mainpage title has wrong style in RTF [view]
  • Bump version so that the GIT repo represents the version for the "next" release [view]
  • Cmake tries to remove directory refman.tex instead of file refman.tex [view]
  • Copy user EXTRA_FILES at the end to overrule files generated by default by doxygen [view]
  • Correct / set types for python variables [view]
  • Correcting print format error in config.l [view]
  • DO NOT hardcode x86-64 architecture. [view]
  • Don't show a console when launching doxywizard on Windows. [view]
  • Fix computeCommonDirPrefix sometimes not finding the correct prefix [view]
  • Fix error documentation of in flex debug script [view]
  • Fix for broken link in the manual [view]
  • Fix hexChar for inputs 0 <= i < 10 [view and [view]
  • Fix spelling in doc/commands.doc (descriptionm) [view]
  • Fix typo in function name [view and [view]
  • Fixed a couple of small memory leaks [view]
  • Fixed a number of memory leaks in the template engine [view]
  • Fixed compiler warning for MacOSX [view]
  • Fixed link issue for MacOSX 10.11 [view]
  • Fixed minor typos in comments [view]
  • Fixed preprocessor macros for flex version check [view]
  • Fixed problem with latex and PDF bookmarks [view]
  • Fixed various issues found by PVS-Studio. [view]
  • Fixes bug 485701: Angle brackets (< and >) not escaped in HTML formula alt text [view]
  • Fixes to support nested tables again [view]
  • Fortran module private variables and EXTRACT_PRIVATE = NO [view and view]
  • Improved handling of <caption> in tables for LaTeX output. [view]
  • IncludeInfo class had uninitialized member variable [view]
  • Made paragraph spacing more flexible in the LaTeX output to prevent page overflows [view]
  • Made several improvements to the performance of template engine [view]
  • Make doxywizard compatible with Qt5 [view]
  • Make list of default extensions consistent with language mapping list [view]
  • Markdown with @cond and @endcond [view]
  • Markdown with @cond and @endcond [view]
  • Merge remote-tracking branch 'upstream/master' [view]
  • Minor change to pycode.l:codifyLines [view]
  • Moved creation of inline class documentation to separate template file [view]
  • RTF improvement: Example section was merged with next function title [view]
  • Remove obsolete py files [view]
  • Removed BOM marker from greek translator to avoid Visual C warnings [view]
  • Repaired breaking @include for LaTeX output [view]
  • Revert "Spelling correction for error message with USE_HTAGS usage" [view]
  • Revert using container-based infra as sudo is needed :-( [view]
  • Reverted change that caused doxygen to return error code 2 when it produced a warning [view]
  • Rework the generation of packages DEB/RPM/... (CPack) [view]
  • Right alignment of in page table of contents [view]
  • Small correction of errors in case of CSharp XML tags [view]
  • Small documentation corrections [view]
  • Spelling correction for error message with USE_HTAGS usage [view] and [view]
  • Started with generating LaTeX output via the template engine [view]
  • Stop when doxygen configuration file ("Doxyfile") cannot be read [view]
  • Support flex-2.6.0 [view] and [view]
  • Support set in code highlighting [view]
  • Template enhancements and various other small fixes [view]
  • Title in case of USE_MDFILE_AS_MAINPAGE [view]
  • Tooltip can still contain < and > signs [view]
  • Tweaked the htmlonly sections in the manual so it produces valid HTML output [view]
  • Undo _doxygen to libdoxygen target change [view]
  • Updated instructions to toggle debugging flex code [view]
  • Updated Italian translation and translator email address [view]
  • Updated the Greek translation [view]
  • Use CPack to generate rpm/deb packages [view]
  • Use STATIC libraries to prevent them being shared [view]
  • Using tabu package for LaTeX tables [view]
  • [Bug 5872] On Windows, generated layout is with UNIX EOL [view]
  • [Doxygen-users] plugin / filter not behaving as expected [view]
  • add spaces like "Doyxgen"CN_SPC->"Doyxgen" CN_SPC [view]
  • allow building with custom iconv on Windows [view]
  • doc: generate doxygen's documentation. [view]
  • doc: put man pages under share/man/man1 [view]
  • docparser: warn when finding a documented empty return type [view]
  • docs: add examples as a dependency of docs [view]
  • doxyapp and CLANG linking [view]
  • fixed for travis ci config file [view]
  • libpng warning: iCCP: known incorrect sRGB profile [view]
  • rename build target _doxygen to libdoxygen [view]
  • run_translator.cmake is no longer used [view]
  • runtests: Simplify dictionary usage [view]

Release 1.8.10

(release date 27-06-2015)

  • change the build system to use cmake [view], [view], [view], [view], [view], [view], [view], [view]
  • Add support for basic XML syntax highlighting. [view]
  • Added documentation for ``` style fenced code block and more robust parsing [view]
  • Added function arguments to the LaTeX toc [view]
  • Added missing files and build instructions [view]
  • Added missing libraries for building doxysearch on Windows [view]
  • Added support for language codes [view]
  • Added type constraint relations for Java generics to dot graphs and XML output [view]
  • Adding commands \hidecallgraph and \hidecallergraph [view]
  • Adjust test script for longer version number [view]
  • Adjusted version in configure script [view]
  • Alignment of project name [view]
  • Allow selection of specific translators to compile in at build time [view]
  • Based on the report of Peter D. Barnes in the doxygen forum (http://doxygen.10944.n7.nabble.com/doxygen-1-8-9-1-upgrade-errors-td6990.html) [view]
  • Better error message in case of IDL inconsistency [view]
  • Bug 4415 - EXTRA_PACKAGES can't handle package options [view], [view]
  • Bug 5673 - Using HTML entities in PROJECT_NAME [view]
  • Bug 5697 - Missing documentation after nested C++11 unified initializer [view]
  • Bug 5698 - Bogus warning: citelist: Unexpected new line character [view]
  • Bug 5704 - @todo paragraphs incorrectly placed in rtf output [view]
  • Bug 5705 - Bogus message with addtogroup [view]
  • Bug 5707 - Configuring doxyfile to only output docbook produces erroneous warning [view]
  • Bug 5709 - latex compilation: \backmatter incompatible with COMPACT_LATEX=YES [view]
  • Bug 5710 - Wrong icons in TOC of CHM help [view]
  • Bug 5720 - <CAPTION> inside <TABLE> no longer works for LaTex output [view]
  • Bug 5726 - Duplicate anchors from tagfiles [view]
  • Bug 5727 - Tagfile anchors not generated for enumeration values [view]
  • Bug 5728 - Non-ascii characters are not emphasised [view]
  • Bug 5744 - Using TAGFILES prevents symbol extraction [view]
  • Bug 5753 - PATCH: please consider making doxygen output byte for byte identical between individual runs by default [view]
  • Bug 5754 - Doxygen generates bad "More..." file links for functions within a namespace [view]
  • Bug 5756 - [PATCH] QT4's qmake is titled differently on Fedora 21 [view], [view]
  • Bug 5761 - last enum member not documented [view]
  • Bug 5764 - Nested list in C# XML comments closes outer list prematurely [view], [view]
  • Bug 5768 - Bogus warning regarding nested comments [view]
  • Bug 5769 - Bogus warnings in case of anonymous namespace and @todo [view]
  • Bug 5772 - Don't warn about missing documentation for deleted functions. [view], [view]
  • Bug 5774 - Table of content incorrect with escaped symbols [view]
  • Bug 5777 - man output should escape minus signs [view]
  • Bug 5779 - Bug #313527 regression - Enum in bitfield is not parsed properly. [view], [view]
  • Bug 5793 - FILE_PATTERNS ignores arbitrary extensions [view]
  • Bug 5814 - class scoped enum documentation appearing at group level instead of class level [view]
  • Build fixes for windows build [view]
  • Bump copyright year [view]
  • Bump version in configure script [view]
  • Cleanup & adapt travis config [view]
  • Consistency in handling HTML and LaTeX in respect to header and footer [view]
  • Correct string buffer sizes for RTF output, such that the string is always correctly sized. [view]
  • Crash in case of non generic interface in Fortran [view]
  • Documentation HTML Header, Footer, and Stylesheet changes [view], [view]
  • Documenting RESULT variable of Fortran FUNCTION [view], [view]
  • Doxygen LaTeX / PDF links point to page 1 [view]
  • Enable relative paths referenced source files [view]
  • Escape "@" in names as it is not allowed in XML / Docbook names (coming from anon namespaces) [view]
  • Fix for bug 746673. [view]
  • Fix for building diagram example conditionally [view]
  • Fix for issue 744670 [view]
  • Fix for issue 744671 [view]
  • Fix for rendering the template parameters of members of variadic template classes. [view]
  • Fix missing brief documentation for overload and specialization functions [view]
  • Fix nesting of XML tag "literallayout" for docbook output of enums. [view]
  • Fix parsing of ODL-style properties [view]
  • Fix potential null pointer dereference in src/classdef.cpp [view]
  • Fix potential null pointer dereference in src/context.cpp [view]
  • Fixed a couple of cases where sharing string data could lead to corruption [view]
  • Fixed code reachability bug found by coverity in translator_fi.h [view]
  • Fixed compilation issue on Windows [view]
  • Fixed issue accessing uninitialized buffer under certain conditions. [view]
  • Fixed potential crash while generating dot graphs [view]
  • Fixed potential string buffer issue for dot graphs [view]
  • Fixed regression due to buffer resizing while generating RTF. [view]
  • Fixed regression in argument processing [view]
  • Fixed type in printdocvisitor.h [view]
  • Fixed typos in comments. [view]
  • Fixes for showing type constraint relations [view]
  • Fortran FUNCTION source code [view], [view]
  • Fortran: code color GOTO as flow keyword. [view]
  • Fortran: fixed format position 73 and further is comment [view], [view]
  • Fortran: warning message about not documented module member [view]
  • Guarded debug prints against printing a NULL pointer. [view]
  • HTML entity &deg; gives problems in LaTeX [view]
  • Help message regarding layout file [view],[view]
  • Internal debug option -d lex is not described [view], [view]
  • Internal doxygen docs gives: warning: Unsupported xml/html tag <...> found [view]
  • Missing cross reference link [view]
  • Patch fixing a typo in Pull Request 307 [view], [view]
  • Prevent example.tag from being regenerated [view]
  • Problem running tests under Windows [view]
  • Remove the new line after @startuml in generated pu file [view]
  • Remove unreachable code [view]
  • Remove unused local and static global variables [view]
  • Remove wrong </File> [view], [view]
  • Removed OS version check for MACOSX (was not used anywhere) [view]
  • Removed dbus XML parser, various refinements [view], [view]
  • Removed old build files, added install targets and other options [view]
  • Repair doxygen generate invalid styleSheetFile and extensionsFile of RTF [view]
  • Replace to_c_cmd by resource compiler [view]
  • Restore deleted file [view]
  • Showing grey/gray in documentation [view]
  • Suggestion to use stripPrefix has been implemented for RESULT. For consistency also implemented for arguments. [view], [view]
  • Support diff that returns "No differences encountered" when comparing test results [view]
  • Support generating index-color PNG files [view]
  • Switched back to version 6.2 of JavaCC for VHDL parser generation. [view]
  • Tcl: fix for extra line breaks in source browser introduced by commit 312bef5 [view]
  • TranslatorSwedish updated [view]
  • Update of search from "endless search to 'Character search: criterion. [view]
  • Update translator_cn.h [view]
  • Updated changelog for 1.8.9.1 [view]
  • Updated installation section of the manual [view]
  • Various VHDL related fixes [view], [view], [view]
  • Various minor changes [view]
  • Warning message multiple mainpages [view]
  • Warnings without filename [view]
  • add support for github flavored fenced code blocks [view]
  • added HHC.exe own output to the debug output when extcmd flag enabled [view]
  • doc/translator.py -- minor updates [view]
  • drop #include <unistd.h> [view]
  • fix *.l for three backticks [view]
  • fix enum brief description in RTF output [view]
  • fix for CHM TOC "Classes" entry to point to annotated file [view]
  • fix for src/translator_tw.h by Gary Lee (translation cleaned) [view]
  • increase the size of l when result is modified [view]
  • move layout_default.xml to templates/html/ [view]
  • runtests.pl: mmn version has dash as separator [view]
  • specify that doxygen searches files in INPUT tag [view]
  • sqlite3: add regexp searches to search.py [view]
  • sqlite3: add schema comments [view]
  • sqlite3: fix constness [view]
  • version.py pass configure file path as parameter [view]
  • xml: use STRIP_FROM_PATH on @file attributes. [view], [view]

Release 1.8.9.1

(release date 04-01-2015)

  • Fixed a couple of cases where sharing string data could lead to corruption [view]
  • Various VHDL related fixes [view]
  • Bug 5698 - Bogus warning: citelist: Unexpected new line character [view]
  • Bug 5704 - @todo paragraphs incorrectly placed in rtf output [view]
  • Bug 5705 - Bogus message with addtogroup [view]
  • Documentation HTML Header, Footer, and Stylesheet changes [view]
  • Documenting RESULT variable of Fortran FUNCTION [view]
  • Fix potential null pointer dereference in src/context.cpp [view]
  • Fixed compilation issue on Windows [view]
  • Fortran FUNCTION source code [view]
  • Fortran: code color GOTO as flow keyword. [view]
  • Help message regarding layout file [view]
  • Remove unused local and static global variables [view]
  • Suggestion to use stripPrefix has been implemented for RESULT. For consistency also implemented for arguments. [view]
  • Switched back to version 6.2 of JavaCC for VHDL parser generation. [view]

Release 1.8.9

(release date 25-12-2014)

  • Bug 4011 - Fortran: external subroutine as dummy argument not recognized [view]
  • Bug 4011 - Fortran: external subroutine as dummy argument not recognized [view]
  • Bug 4286 - Brief description misplaced in man page output [view]
  • Bug 4293 - Typedefs in manpages has too few linebreak possiblilities [view]
  • Bug 4914 - C# <code> tag in an <example> tag does not render as expected. [view]
  • Bug 4941 - Add support for LATEX_EXTRA_STYLESHEET [view]
  • Bug 5237 - Allow Class{T}.Method in cref to refer to a generic class in XML comments [view]
  • Bug 5418 - classes with same name in different namespace adding to same group [view]
  • Bug 5462 - Missing link for item inside the same namespace [view]
  • Bug 5467 - Added HIDE_COMPOUND_REFERENCE config option [view]
  • Bug 5554 - QHP toc broken if mainpage with PROJECT_NAME title has sections/subpages [view]
  • Bug 5558 - src/Makefile.libdoxycfg shouldn't be distributed [view]
  • Bug 5559 - plantUML requires epstopdf for building PDF files [view]
  • Bug 5560 - tag file: Unknown compound attribute `singleton' found! [view]
  • Bug 5562 - Fix a resource leak in src/vhdldocgen.cpp [view]
  • Bug 5563 - There's no such thing as a private Q_PROPERTY [view]
  • Bug 5564 - Same Expression in translator_kr.h [view]
  • Bug 5565 - Fix a potential null pointer dereference in src/memberdef.cpp [view]
  • Bug 5567 - Mismatch in memory allocation/de-allocation function in vhdlparser/vhdlstring.h [view]
  • Bug 5568 - Remove a not needed initialization of a local variable in src/mangen.cpp [view]
  • Bug 5569 - Fix a potential null pointer dereference in src/searchindex.cpp [view]
  • Bug 5570 - Fix wrong pointer initialization in src/definition.cpp [view]
  • Bug 5571 - Fix potential modulo by zero in src/template.cpp [view]
  • Bug 5572 - Reached end of file while still inside a (nested) comment in Markdown [view]
  • Bug 5573 - Fix a terminating null character after fread in src/filedef.cpp [view]
  • Bug 5574 - Remove not needed variable initialization in src/classdef.cpp [view]
  • Bug 5575 - Remove not needed pointer initialization in src/entry.cpp [view]
  • Bug 5576 - Provide exit code in case generatePlantUMLOutput fails [view]
  • Bug 5578 - Remove not needed variable caching in src/markdown.cpp [view]
  • Bug 5580 - Do not cache inputSize in src/doxygen.cpp [view]
  • Bug 5581 - Expression is always false because 'else if' condition matches previous condition [view]
  • Bug 5583 - Fix missing break in switch case statement [view]
  • Bug 5584 - Spurious ASSERT message [view]
  • Bug 5585 - Broken man pages due to bad use of autoBreak [view]
  • Bug 5586 - Fix potential copy and paste issue in vhdlparser/VhdlParser.cc [view]
  • Bug 5587 - [Patch] Documentation: Wrong link for \\diafile [view]
  • Bug 5588 - [Patch] DocBook: Possible name clash for generated image files [view]
  • Bug 5589 - RTF output: \\diafile and \\mscfile do not work [view]
  • Bug 5590 - Windows: Process exit code is ignored for processes launched using ShellExecuteEx() [view]
  • Bug 5593 - Fix potential allocation of huge memory amount due to type overflow in src/lodepng.cpp [view]
  • Bug 5594 - Fix missing unchecked return value in src/dot.cpp [view]
  • Bug 5595 - Fix potential null pointer dereference in src/dbusxmlscanner.cpp [view]
  • Bug 5596 - Fix identical code for different branches in src/translator_tw.h [view]
  • Bug 5597 - Fix potential null pointer dereference in src/index.cpp [view]
  • Bug 5598 - Remove not needed variable initialization in src/cite.cpp [view]
  • Bug 5599 - Remove not needed local variable in src/doxygen.cpp [view]
  • Bug 5600 - Remove redundant if/else branch in src/lodepng.cpp [view]
  • Bug 5601 - Remove redundant if/else branch in src/translator_lt.h [view]
  • Bug 5602 - Cleanup redundant if/else branch in src/translator_kr.h [view]
  • Bug 5603 - Cleanup redundant if/else branch in src/translator_sr.h [view]
  • Bug 5604 - Cleanup redundant if/else branch in src/translator_tw.h [view]
  • Bug 5605 - Cleanup redundant if/else branch in src/translator_vi.h [view]
  • Bug 5606 - Remove redundant local variable initialization in qtools/qstring.cpp [view]
  • Bug 5607 - Fix wrong member variable initialization in src/define.cpp [view]
  • Bug 5611 - Fix potential null pointer dereference in src/util.cpp [view]
  • Bug 5612 - Fix another potential null pointer dereference in src/util.cpp [view]
  • Bug 5613 - Fix a potential null pointer dereference in src/index.cpp [view]
  • Bug 5614 - Fix a potential null pointer dereference in src/vhdldocgen.cpp [view]
  • Bug 5632 - Member functions omitted from tagfile [view]
  • Bug 5643 - Java: Annotations with brackets prevent documentation [view]
  • Bug 5647 - Invalid element name in footer part when GENERATE_TREEVIEW specified [view]
  • Bug 5649 - Fortran attribute contiguous not identified [view]
  • Bug 5652 - Entity references in XML command attributes are incorrectly handled [view]
  • Bug 5653 - Entity references in XML code command are incorrectly handled [view]
  • Bug 5656 - latex: dead links to source code [view]
  • Bug 5657 - &hellip; is replaced by \cdots rather than \dots in the LaTeX output [view]
  • Bug 5664 - Python xml not outputting info of functions inside __init__.py [view]
  • Bug 5665 - Python xml - argsstring is empty, while HTML have arguments [view]
  • Bug 5667 - Invalid warning about undocumented C++ function imported from tagfile [view]
  • Bug 5668 - C++11 scoped enums with same name inside different classes are merged if using tagfile [view]
  • Bug 5669 - Cannot make explicit links to C++ const member functions [view]
  • Bug 5670 - Cannot make unscoped link to C++ conversion operator [view]
  • Bug 5671 - Using "doxygen.css" for HTML_EXTRA_STYLESHEET fails silently [view]
  • Bug 5674 - Regression: Base classes incorrect when using CRTP with default template parameter [view]
  • Bug 5678 - Full scope needed when making link inside cross-referenced section [view]
  • Bug 5678 - Full scope needed when making link inside cross-referenced section (fixed regression) [view]
  • Bug 5680 - invalid copydoc target does not result in warning [view]
  • Bug 5686 - Latex to PDF hangs when using Markdown tables [view]
  • Bug 5690 - Crash when building gtkmm documentation [view]
  • Bug 5694 - \cite confused by labels ending with a dot (improved warning message) [view]
  • fix docbook output [view]
    1. support other than english
    2. fix broken example link id
    3. fix incomplete TOC : no Classe etc.
    4. add brief description for Functions etc.
    5. Comply with REPEAT_BRIEF
    6. Do not output duplicated contents when detailed description is missing.
    7. set table colwidth for Param/RetVal
  • Add missing escape in doxysearch.cpp when result contained a double quote [view]
  • Add source code possibility for RTF output [view]
  • Added Coverity Scan Build Status to Readme [view]
  • Added clearer range checks for string class to help compiler [view]
  • Added compilation support for MacOSX 10.10 (yosemite) [view]
  • Added faster reference counted string implementation with short string optimization [view]
  • Added graphical hierarchy support to template engine [view]
  • Added guard to prevent (theoretical) out of bound access [view]
  • Added language attribute to XML output for classes, namespaces, and files [view]
  • Avoid a (theoretical) memory leak [view]
  • Better handling of inline Fortran parameter documentation [view]
  • Fixed bug for page numbers in the latex indices [view]
  • Compilation fixes for Windows for new string implementation. [view]
  • Convert FORTRAN modules to namespaces [view]
  • Create an easy possibility to take a snippet from the current file. [view]
  • Debian Bug 762272: segfault with cyclic subgroups [view]
  • Disabled enter/exit printing for doctokenizer (produced too much noise) [view]
  • Empty entry in \tableofcontents in case e.g. section without description. [view]
  • Extra empty line in source fragments [view]
  • Fix bug with C++11 static_assert [view]
  • Fix bug: language switch command "\~" failed to detect language id which contains '-' [view]
  • Fix for 4285 [view]
  • Fix for the second issue in bz 651848 [view]
  • Fix potential crash when reading tag file which contained nested java classes using generics [view]
  • Fix rules for closing FORTRAN module and typedef scopes [view]
  • Fix to ignore the contents of \verbatim and friends while looking for sections [view]
  • Fix to show relations between C#/Java generic classes [view]
  • Fixed a number of issues (resource leaks, uninitialized members, etc) found by coverity [view]
  • Fixed bug in new QCString::sprintf for long string. [view]
  • Fixed extension matching issue if path contained a dot. [view]
  • Fixed issue accessing uninitialized data when combining RTF output. [view]
  • Fixed issue parsing @end directly followed by the end of the file [view]
  • Fixed problem finding \enduml when using /// style comments. [view]
  • Fixed refcounting bug in new string implementation [view]
  • Fixed several Coverity warnings [view]
  • Fixed to small memory leaks [view]
  • Fixed typos and formatting in Doxyfile (thanks to Armin Mueller) [view]
  • Fixed typos in C/C++ comments. There are no functional changes. [view]
  • Fixed typos in comments. [view]
  • Fixed typos in comments. No functional changes. [view]
  • Fortran code color END (regression pull request 259) [view]
  • Fortran color CALL as keyword [view]
  • Fortran color code of END [view]
  • Fortran continuation character seen as begin of function call [view]
  • Generate error message in case bibtex generation fails [view]
  • Improved main page rendering via template engine [view]
  • Initialized potentially uninitialized variable in markdown part [view]
  • Introduce new optimized string implementation (attempt 2) [view]
  • Introduced template directory for template and resource files and resource compiler & manager [view]
  • LaTeX problem with 2 consecutive single quotes [view]
  • Last comment of \code{.f90} missing [view]
  • Limit images sizes and make more uniform (LaTeX) [view]
  • Package mathptmx gives discrepancy between pdf and HTML formulas [view]
  • Portuguese and Brazilian Portuguese translators updated to 1.8.5. [view]
  • Prevent overly long terms from stopping the search indexer [view]
  • Problem in case of line termination (., a dot) direct after the \cite command [view]
  • Regression class<T extends V> resulted in class<V> as the page title [view]
  • Remove bogus argument to avoid compiler warning [view]
  • Remove dependency of PlantUML on HAVE_DOT [view]
  • Remove extraneous 'README' to allow successful RPM creation [view]
  • Remove filtering rule when generating FORTRAN module links [view]
  • Remove redundant code [view]
  • Removed bash specific construct from ./configure script to make it work on Solaris [view]
  • Removed some comment statements. [view]
  • Revert "Bug 4011 - Fortran: external subroutine as dummy argument not recognized" [view]
  • Reverted back to old string implementation. New one needs more work. [view]
  • Show tag file name instead of <unknown> for warnings pointing to symbols extracted from tag files. [view]
  • Show the parent-child type specialization relation in Java/C# generics inheritance diagrams [view]
  • Support charset option for PlantUML [view]
  • Support for INLINE_SOURCES in Fortran [view]
  • Support plantuml !include statement [view]
  • Support visible=no for main page tab. [view]
  • Supporting linking for methods bound to FORTRAN classes in source definitions [view]
  • This is the patch attached to bz 651848 by Robin Gareus. [view]
  • Update README.md [view]
  • Updated configuration script and libdoxygen.pro.in to use llvm-config [view]
  • Use result of vsnprintf [view]
  • Use substitute() instead of QString conversion [view]
  • Various VHDL fixes [view]
  • various fixes and restructuring [view]
  • Various latex problems [view]

Release 1.8.8

(release date 21-08-2014)

New features

  • Bug 5505 - Support for PlantUML [view]
  • Add BREAD_CRUMB_TRAIL. [view]

Bug fixes

  • Bug 1527 $title doesn't work in LateX header [view]
  • Bug 3405 Class diagrams and class hierarchy don't work for java generic classes [view]
  • Bug 3460 Flex .rule file for Visual Studio build can't cope with spaces in filenames [view]
  • Bug 3834 Fortran: quotation after define causes error [view]
  • Bug 3879 FORTRAN: recognition free versus fixed formatted code [view]
  • Bug 5182 Bibliography duplicate filenames fails [view] and [view]
  • Bug 5215 \cite rejects valid BibTeX keys [view] and [view]
  • Bug 5259 TCL: Documentation of oo::define is not working [view]
  • Bug 5445 Nested C structures/unions does not work with groups [view]
  • Bug 5459 configuration stops with settings.h missing [view]
  • Bug 5460 XML Output: Doxygen doesn't escape & characters (included in a hyperlink) in <detaileddescription> [view]
  • Bug 5461 function object in member initializer causes documentation loss [view]
  • Bug 5472 [PATCH] Propagate configure's perl to makefiles [view]
  • Bug 5483 man page extension is incorrect [view]
  • Bug 5486 No documentation generated for method-less C++ struct [view]
  • Bug 5493 [PATCH] Fix potential copy and paste error in inputstring.cpp [view]
  • Bug 5494 [PATCH] Fix missing '&' in Boolean operation in qstring.cpp [view]
  • Bug 5497 Dead links in html documentation when using tabs for indentation in c++ [view]
  • Bug 5500 Callgraphs for C# only generated for methods inside the same class [view]
  • Bug 5506 Variadic macros failing to expand if trailing ... is empty [view]
  • Bug 5512 Two entries for a single member in doxygen XML [view]
  • Bug 5514 nested html tables cause pdflatex to hang (1.8.4 and 1.8.6) [view]
  • Bug 5521 volatile declaration on member functions is not handled as xml attribute [view]
  • Bug 5524 Incorrect LaTeX generation for private union member in C++ [view]
  • Bug 5526 XML Output invalid: XML_PROGRAMLISTING=YES copies Unicode form feed character (U+000C) to XML files [view]
  • Bug 5528 segfault in QGListIterator while parsing fortran code [view]
  • Bug 5531 Explicit links using operator()() not generated. [view]
  • Bug 5534 no uniquely matching class member found for inline function definition where parameter argument names don't match [view]
  • Bug 5535 Add support for non-parsed language [view]
  • Bug 5537 Q_PROPERTY switches the member access from private to public [view]
  • Bug 5540 Strong enum members listed in containing namespace [view]
  • Bug 5543 Sigsegv while generating XML output [view]
  • Bug 5544 GENERATE_TAGFILE no longer includes any @*section links [view] and [view]
  • Bug 5548 Request: disable building documentation if Python 2.6 or newer not available [view]
  • Bug 5550 No output for markdown pages with duplicate label title (different anchor) [view]
  • Bug 5551 QGDict::hashAsciiKey: Invalid null key [view]
  • Add FORTRAN 2003 keywords and commands [view]
  • Add type option to FORTRAN select statements [view]
  • Added build support for Python3+ and Python2.6+ [view]
  • Added class/procedure vardefs to FORTRAN code highlighting [view]
  • Added documentation for some missing HTML commands [view]
  • Added flatten, listsort and paginate filters [view]
  • Added get filter, unified index properties [view]
  • Added groupby filter and some more context info [view]
  • Added import keyword to FORTRAN code highlighting [view]
  • Added lists for indices to template context [view]
  • Added mainpage to context and improved page tree [view]
  • Added member indexes to template context [view]
  • Added missing links in changelog when multiple bug ids were on one line [view]
  • Added more missing links to the changelog [view]
  • Added namespace info to the context [view]
  • Addition of module data to context and alphaIndex filter [view]
  • Coded coloring of flow statements corrected (regression) [view]
  • Corrected copyright year [view]
  • Correction of typing error [view]
  • Disabled/fixed segments that produced doxygen warnings while running the test [view]
  • Docbook output improvements [view]
  • Documentation generator: added support for C# property accessors visibility modifiers. [view]
  • Doxywizard: make the Next button on the last page of the expert tab switch to the run tab [view]
  • Doxywizard: make the Next button on the last page of the wizard switch to the run tab [view]
  • Error linking 32-bit windows [view]
  • Fix FORTRAN code function scope test [view]
  • Fix after rebase from master [view]
  • Fix description of USE_PDFLATEX [view]
  • Fix highlighting issues [view]
  • Fix typo [view]
  • Fix unnecessary rules for FORTRAN types [view]
  • Fix warning about unused functions in qstring.cpp [view]
  • Fixed keyword type [view]
  • Fixed missing include for Linux [view]
  • Fixed test 021 [view]
  • Fixed typo [view]
  • Fixed typo and used QString for directory [view]
  • Fixed windows compile issue for is_neutral [view]
  • Fixes for ./configure script on Solaris [view]
  • Fixes regression due to PR 169 [view]
  • Language parser: added support for C# property accessors visibility modifiers. [view]
  • Made INSTALL file version and date independent [view]
  • Made bread crumb trails enabled unconditionally [view]
  • Made setName() virtual so overloading works [view]
  • Make index for faq [view]
  • Messages truncated in warnings file [view]
  • Minor fixes [view]
  • Minor fixes to the template context [view]
  • Missing word after \n command in doxygen rtf output, version 1.8.5 & up [view]
  • More robust extraction of scope information from tag files [view]
  • No warning in case cite definition is missing [view]
  • Preparations for release 1.8.8 [view]
  • Removed not implemented HTML commands from documentation [view]
  • Removed unsupported HTML commands from the docs [view]
  • Set deployment targets for MacOSX 10.5+ versions [view]
  • Support multiple extra HTML stylesheets. [view]
  • Tcl: add missing file that breaks test 057 [view]
  • Tcl: add test code for Bug 5463 [view]
  • Tcl: collect XRefs also if INLINE_SOURCES = no [view]
  • Tcl: correct namespace resolution in case of INLINE_SOURCES = YES [view]
  • Tcl: recurse for [] [view]
  • Tcl: refactor similar code into tcl_codify_token function [view]
  • Tcl: support eval/catch commands [view]
  • Tcl: support switch command [view]
  • Tcl: test 057 additionally tests mutual Xrefs for two files [view]
  • Template context support for CREATE_SUBDIRS [view]
  • Update dot.cpp [view]
  • Update latexgen.cpp [view]
  • Update test 058 because commit 9d315a9 fixes also Bug 5464 [view]
  • Replaced the VHDL parser with the VHDL scanner from 1.7.5 to avoid potential licensing issues [view]
  • New VHDL parser implementation [view]
  • Vhdl fixes [view]
  • \usepackage{fixltx2e} must come before use \usepackage{float} [view]
  • cache anonymous into ClassDefImpl::isAnonymous [view]
  • changed append filter and added index and path attributes to node [view]
  • doc/translator.py -- unification for Python 2.6+ and 3.3+ (not finished) [view]
  • doc/translator.py unified for Python 2.6+ and Python 3.0+ [view]
  • make.bat: change current directory [view] and [view]
  • removeRedundantWhiteSpace micro-optimization [view]
  • resolves the error of unbalanced tags opened/closed in docbook output: parser error : Opening and ending tag mismatch: para line 358 and tbody [view]
  • winbuild/pack_the_distribution_for_windows.py minor updates [view]

Release 1.8.7

(release date 21-04-2014)

  • Bug 2479 - c-source and h-source missing for latex [view]
  • Bug 3879 - FORTRAN: recognition free versus fixed formatted code [view]
  • Bug 3893 - Latex $projectname with "&" gets no escaped [view]
  • Bug 4179 - Fortran: variable with name "type" confuses doxygen [view]
  • Bug 4683 - Percent to prevent auto-linking in page title is not removed for navpath [view]
  • Bug 4762 - Nested \if messes up list items [view]
  • Bug 4762 - Nested \if messes up list items [view]
  • Bug 4870 - Command ignored when using umlauts in markdown and also C-comments in markdown didn't work properly [view]
  • Bug 5052 - Notes in xml output are not correctly separated [view]
  • Bug 5254 - Enables using unicode (non ASCII) to name output files [view]
  • Bug 5258 - Nested namespace causes incorrect display when referenced via .tag file [view]
  • Bug 5348 - Documentation for enumeration not generated [view]
  • Bug 5383 - Code coloring in case of file without extension [view]
  • Bug 5387 - Trouble with /cond /endcond [view]
  • Bug 5388 - Wrong call graph in simple situation [view]
  • Bug 5389 - [Latex/PDF] Merging brief and detailed description in file section [view]
  • Bug 5390 - Parsing problem with C++11 empty initializer lists [view]
  • Bug 5393 - Move constructors and move assignment operators of embedded classes of template classes cannot be matched. [view]
  • Bug 5396 - Dia diagrams not displayed by Firefox [view]
  • Bug 5404 - regression referencing namespaced type [view]
  • Bug 5408 - doxygen nested \if \endif sample not working [view]
  • Bug 5410 - doxygen 1.8.6 sorts the contents of a namespace by group within the Class List [view]
  • Bug 5414 - Link refs with no title swallow an extra newline [view]
  • Bug 5415 - 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 5416 - configure --prefix=/opt/foo not accepted [view]
  • Bug 5417 - Command \| not working when last character in markdown table line [view]
  • Bug 5421 - Last line of code block lost if it is only one character and there is no text afterward [view]
  • Bug 5422 - Doxygen crashes on incorrect end group /**< @} */ [view]
  • Bug 5424 - star is not printed in \code environment [view]
  • Bug 5425 - Internal inconsistency: namespace in IDL [view]
  • Bug 5428 - Server side (PHP) search broke in 1.8.3 [view]
  • Bug 5436 - python3 import style causes doxygen to ignore some inheritances [view]
  • Bug 5437 - Markdown Extra - fenced code block: '>' before tab width parsed as block quote [view]
  • Bug 5438 - Tilde sign in combination with <pre> and MARKDOWN_SUPPORT disabled [view]
  • Bug 5439 - Blockquote followed by text inserts an extra paragraph [view]
  • Bug 5440 - alignment of blockquotes in pdf [view]
  • Bug 5449 - Build fails when --with-libclang on Fedora [view]
  • Bug 5456 - 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]
  • Alternative 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 override the name of the directory 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]
  • Restructured 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

  • Bug 1293 - if "using namespace" used, call of a static member function in C++ is not recognized or recognized wrong
  • Bug 4237 - make install prepends a slash to the installation path Removed superfluous /
  • Bug 4547 - HTML links in RTF output are broken
  • Bug 4885 - class list not sorted?
  • Bug 5037 - show includes for free functions
  • Bug 5070 - Create possibility to keep user comments in Doxyfile
  • Bug 5207 - Latex: Hyperlinks for \secreflist / \refitem
  • Bug 5213 - Generated Doxyfile differs from result of doxygen -u (partial fix)
  • Bug 5263 - Indexing and searching cannot treat non ASCII identifiers
  • Bug 5270 - 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 5271 - Fortran: Doxygen mixes up function-attributes with the return type test string should not be equal to "function" but should contain "function"
  • Bug 5272 - RPM build via spec file fails
  • Bug 5274 - Doxygen crash if missing new-line in a snippet
  • Bug 5275 - C++ exception specifications are no longer parsed correctly
  • Bug 5278 - update the Japanese translation
  • Bug 5282 - Accept IDs using unicode(non ASCII) characters in python codes
  • Bug 5283 - GENERATE_TREEVIEW=YES disables touch scrolling with Android 3.x
  • Bug 5284 - Cannot @ref or @link C++ operator overloads
  • Bug 5285 - Wrong page number and header in pdf output
  • Bug 5286 - 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 5288 - Asterisks in comment wrongly displayed for @code
  • Bug 5289 - `FILTER_SOURCE_FILES=YES` required to build CALL_GRAPHS 5289
  • Bug 5290 - 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 5291 - Add support for dia diagrams
  • Bug 5292 - Const treatment
  • Bug 5293 - False warning for Java "warning: missing ( in exception list on member"
  • Bug 5295 - Strange output when : appended to an parameter description
  • Bug 5296 - @copydoc not working for const member overloads
  • Bug 5298 - Deprecated list breaks HTML tree with xhtml extension
  • Bug 5299 - Enabling INLINE_SIMPLE_STRUCTS messes up Data Structures in tree
  • Bug 5301 - Wrong path to graph_legend figure in graph_legend.html when CREATE_SUBDIRS = YES
  • Bug 5302 - Templated and non-templated method mixup documentation
  • Bug 5303 - Struct member fields not documented with INLINE_SIMPLE_STRUCTS
  • Bug 5305 - C++ parsing problem with operators <<, <, >, >> inside templates
  • Bug 5308 - Terminating C comments within markdown files breaks aliases
  • Bug 5310 - Copying of files via \image tag can get confused by symlinks at the destination
  • Bug 5311 - Generated hhc file contains an error for a section of a mainpage
  • Bug 5313 - Fortran: problem with types with name starting with is
  • Bug 5314 - Broken links on members HTML page when using BUILTIN_STL_SUPPORT
  • Bug 5315 - position of linebreak in template argument list affects inheritance relation
  • Bug 5329 - Segfault while parsing a C file
  • Bug 5331 - latex_count=5 is not enough
  • Bug 5332 - Vertical bars cannot be sent straight to makeindex
  • Bug 5334 - Compiler warnings because char is unsigned on ARM/PPC: "comparison is always false"
  • Bug 5340 - Nested Aliases fail when the nested alias has two or more arguments.
  • Bug 5344 - [PATCH] #include does not work with absolute paths
  • Bug 5345 - Comment /**/ confuses doxygen
  • Bug 5347 - 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 5355 - segmentation fault in memberdef.cpp
  • Bug 5358 - Some external namespaces appear in list despite having ALLEXTERNALS = NO
  • Bug 5360 - Consistently document Fortran's equivalent function bodies
  • Bug 5361 - HTML escaping incorrectly applied in source tooltips
  • Bug 5362 - private java class is mentioned in inherited by list of super class
  • Bug 5363 - Invalid null key and segmentation fault
  • Bug 5364 - Label "abstract" instead of "pure virtual" for Java language
  • Bug 5365 - Can't build because the definitions of ***YY_flex_debug are missing.
  • Bug 5367 - expand_as_defined macro does not properly work
  • Bug 5369 - @xrefitem with empty heading string
  • Bug 5372 - Document inline objective-C blocks
  • Bug 5374 - USE_MDFILE_AS_MAINPAGE doesn't work if full path is specified.
  • Bug 5381 - inline source browser shows wrong code with multi-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 aligned, 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, therefore it is better to use the winbuild directory in case of windows and 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 commands have been replaced with python scripts so that on windows only python is need (besides flex 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 option corrected Giving an error when a wrong -d option is given. Made some error messages 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 4532 - HTML commands - documentation of </dd> tag missing
  • Bug 4710 - parameter on doxywizard manual Added sentence in respect to possible argument for doxywizard Added images to the LaTex / pdf version of the manual
  • Bug 4890 - Strange behavior when placing cite within brief.
  • Bug 4963 - SHORT_NAMES break references to \page in PDF output
  • Bug 5023 - Line breaks are not copied/displayed properly when using @copydoc.
  • Bug 5035 - Logical confusion with DISABLE_INDEX and GENERATE_TREEVIEW
  • Bug 5080 - #undef is ignored by doxygen
  • Bug 5153 - vhdldocgen fails to generate proper latex for VHDL record type
  • Bug 5175 - Incorrectly parsed Q_PROPERTY with 'unsigned int' type
  • Bug 5184 - XML output does not handle HTML entities in titles
  • Bug 5185 - Duplicate entry for class template member function with no parameter
  • Bug 5186 - Template static member functions duplicated as non-static public
  • Bug 5187 - typedef warning when "using" some operator functions
  • Bug 5188 - Docbook output produces invalid XML for <programlisting> elements
  • Bug 5189 - Doxygen does not create links on C++ 11 style enum classes
  • Bug 5192 - support @cite within brief description.
  • Bug 5194 - code after \@cond is removed
  • Bug 5198 - Doxygen 1.8.4 goes into an endless loop
  • Bug 5199 - URLs are not created on C# classes in some cases
  • Bug 5200 - Error List window in Visual Studio no longer recognizes doxygen warnings
  • Bug 5201 - EXPAND_AS_DEFINED not working with some project structures
  • Bug 5205 - VHDL cross-references fail when unpaired apostrophe present
  • Bug 5209 - VHDL: Bad HTML formatting when using inline sources
  • Bug 5211 - Missing space before optional option in method argument list
  • Bug 5212 - Markdown and @image
  • Bug 5214 - UTF-16LE BOM not handled by source browser and \snippet
  • Bug 5216 - Crash with TAB_SIZE=-1
  • Bug 5217 - Closing ) of function in function documentation is in wrong color
  • Bug 5230 - Add configure options to enable static SQLite and non-standard SQLite
  • Bug 5223 - Backward documentation comments are not allowed in Fortran type-bound procedures
  • Bug 5224 - "operator--()" transformed to "operator&ndash;()" in @copydoc
  • Bug 5225 - Segmentation fault parsing a fortran file
  • Bug 5226 - Can't use @ref instead of \ref with msc
  • Bug 5228 - Misleading warning about DOT font
  • Bug 5233 - Out-of-line docs for class template specialisations failing
  • Bug 5234 - Generated XML is malformed
  • Bug 5239 - Nested Aliases fail when the nested alias has two or more arguments.
  • Bug 5242 - doxygen don't hide private Inherited Members
  • Bug 5246 - Can't build with MinGW
  • Bug 5247 - Doxywizard can't show file names using non-ASCII(Unicode)
  • Bug 5250 - Incorrectly parsed Q_PROPERTY with 'long long' or 'long int' type
  • Bug 5251 - Can't use unicode characters to execute external commands
  • Bug 5252 - QRegExp doesn't work with 80-FF
  • Bug 5253 - Accept IDs using unicode for C/C++ preprocessor
  • Bug 5260 - @code tag as the last line of a comment block causes the parser to hang
  • Bug 5261 - Post-comment blocks on C++11 using definitions attach to following entity
  • Bug 5268 - Confusing use of GENERATE_TAGFILE
  • Bug 5270 - Fortran: in body documentation lands on wrong place
  • Small typo corrected 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 value (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 5189
  • 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 4929: 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 4846: 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 highlighting, 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 penalty.
  • 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 (interface 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 similarly to HTML_EXTRA_FILES in that it copied specified files to the LaTeX output directory.
  • id 5149: Added support for C++11 keyword alignas
  • id 5056: Added support for processing DocSets with Dash (thanks to Bogdan Popescu for the patch
  • id 4900: 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 5042: 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 5070: 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 5061: Adds support for Latvian (thanks to a patch by Lauris).
  • Included language updates for Ukrainian, Romanian, and Korean

Bug fixes

  • id 1169: Fixed parse issue when using less than inside a template argument.
  • id 1976 man page output was missing a linebreak before .SH when definition a group with a section.
  • id 2114: @anchor were wrong when CREATE_SUBDIRS was enabled.
  • id 2445: Putting a @todo in front of an anonymous namespace caused bogus entry in the todo list.
  • id 3198: Fixed alignment issue with tabs and multibyte characters.
  • id 3230: Character entities in titles were not rendered correctly in the HTML navigation tree.
  • id 3272: No space between * and tag (e.g. \endcode) made parser misbehave
  • id 3397: Included patch to limit generated Doxyfile comments to 80 columns
  • id 3487: Fixed off-by-one with MAX_DOT_GRAPH_DEPTH.
  • id 3785: Improved linking to template specializations. Thanks to David Haney for the patch.
  • id 3909: Doxygen Header in C Files makes empty Lines in HTML Source Code when starts in Line 1
  • id 4096: Fortran: array constructors with brackets were not correctly recognized.
  • id 4223: The generated man pages had a .PP just before the subject description
  • id 4224: On generated manpages the return section is incorrectly indented
  • id 4261: use \page now generates a man page were the . is not replaced by _8.
  • id 4385: Fixed issue with PROJECT_LOGO when using backslashes in the path.
  • id 4499: Fortran: Using @var at module level didn't work. expect a file/path name.
  • id 4650: Replaced "echo -n" with "printf" in the configure script.
  • id 4684: Removed warning when using \endinternal
  • id 4696: Added &, @, and # as allowed characters for commands that
  • id 4788: Included patch by Abert to correctly link pages in the manual
  • id 4850: Added support for single column Markdown tables.
  • id 4855: Incomplete documentation on doxygen -w latex
  • id 4877: Doxygen crashed when structural commands (like \var) appeared in .md files.
  • id 4926: Fixed character encoding problem when multibytes characters were used in anchors.
  • id 5013: Documentation before an anonymous member did not appear.
  • id 5040: Fixed Markdown related indentation problem.
  • id 5044: Regression: Text after @copydoc was not visible anymore.
  • id 5046: Linked to external pages was done using the page label rather than the file name.
  • id 5059: build using ./configure ; make did not work if the path contained a space.
  • id 5060: Tag files are now identfied by the full path instead of only the name of the tag file.
  • id 5086: In some cases members were missing from the tag file.
  • id 5079: Fortran: derive intent from documentation in case no intent is specified
  • id 5089: Warning was not reported at the correct line in two cases.
  • id 5092, 5093: @cond..@endcond did not work properly for removing macro definitions.
  • id 5098: Fixed crash when adding two different functions with the same name to the same group.
  • id 5100: VHDL: fixed issue generating LaTeX output.
  • id 5116: Fortran: improved handling of protected statement
  • id 5124: Fortran: Fixed issue resulting in "Stack buffers nested too deeply" error.
  • id 5128: @cond was not handled properly by the preprocessor.
  • id 5133: @copyright command did not end a brief description.
  • id 5134: Markdown tables caused errors reported at wrong line number.
  • id 5135: Removed double entry from the messages produced by doxygen.
  • id 5152: Fixed problem handling @cond for #define's
  • id 5144: Fixed potential crash when searching files.
  • id 5131: #include's inside namespace could result in duplicate entries.
  • id 5132: Doxywizard: Labels of items are now also grayed out when an item is disabled (thanks to Albert for the patch).
  • id 5154: Changed Markdown page label to support multiple .md files with the same name.
  • id 5155: Fixed issue with margin computation in resize.js.
  • id 5157: Lonely h4,h5,h6 end tag caused assert.
  • id 5158: Trailing comments were not always rendered properly if MARKDOWN_SUPPORT was enabled.
  • id 5159: Updated doxygen man page (thanks to Manuel for the patch).
  • id 5160: Added reference to \xmlonly and \docbookonly in \htmlonly
  • id 5163: LaTeX: switch to using the xtabular package instead of longtable to prevent overfull vbox errors.
  • id 5164: Template parameters and Exceptions were rendered differently than Parameters and Return Values in the LaTeX output.
  • id : Tcl: Fixed crash when parsing certain Tcl code.
  • id 5171: Comment blocking ending with ///// made slashes appear in the output.
  • id 5180: 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 5031: 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 4191: Fortran: Included patch to improve parsing line continuation characters.
  • id 4204: Fortran: added support for protected attribute
  • id 4859, 5023: When using @copydoc, paragraphs breaks did not appear in the copied documentation.
  • id 4930: Fortran: handle single quotes in normal Fortran comment.
  • id 4931, 5025: Scope of forwardly declared template class was lost in the output.
  • id 4978: Tcl: Inline source code was not rendered correctly.
  • id 5005: Fixed case were a cyclic inheritance relation could crash doxygen.
  • id 5008: Using @subpage in a -# style list was not handled properly.
  • id 5012: For a mainpage without title the project name is now shown as the title in the XML output.
  • id 5017: The generated list of citations is now no longer included in the tag file.
  • id 5014: Documenting strongly typed enum values outside of the enum did not work.
  • id 5022: Python: = was missing in the output for variable assignment.
  • id 5024: Doxygen could crash when creating inline msc graphs.
  • id 5026: Members didn't have a More.. link to jump to detailed docs.
  • id 5030: Doxygen did not probably distinguish between two template
  • id 5034: regression: C++ style comments that started with a line of slashes did not get processed correctly anymore.
  • id 5038: 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 4863: 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 3945: 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 4888: 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 4584: Fixed compile issues with 0 to QCString cast for old compilers.
  • id 4752: 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 4839: Fixed problem processing .bib files when they were located in a path containing spaces.
  • id 4848: Using \addindex in a page will now produce a link to the word, instead of the start of the page.
  • id 4849: The TREEVIEW_WIDTH option did not have any effect.
  • id 4851: Jumping from a level 3 section to a level 1 section did not appear correctly in the page TOC.
  • id 4852: C++11: Improved handling of noexcept expressions, e.g.: Test() noexcept ( noexcept(T::T()) ) = default;
  • id 4853: Improved SIGINT handling when running multiple dot instances.
  • id 4860: Fixed problem processing .bib files when using a non default output directory.
  • id 4862: Comment for IDL_PROPERTY_SUPPORT in the config file template did not have line wrapping.
  • id 4864: Setting SHOW_FILES to NO prevented call graphs from being generated.
  • id 4865: Fortran: In initialization statement the "=" was missing
  • id 4872: Fortran: ALIASes where not replaced in !! and !< comments.
  • id 4886: Added meta tag "generator" to HTML output (thanks to Albert for the patch).
  • id 4899: 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 4908: Doxygen could select the wrong overloaded method when the only difference in parameter types was the template type of a typedef.
  • id 4909: Inheriting member documentation did not work in combination with Java interfaces.
  • id 4915: Enum values did not appear in the detailed documentation when using C++11 style enums.
  • id 4920: Even though HIDE_UNDOC_MEMBERS was enabled, the navigation still showed undocumented members.
  • id 4921: Fixed back button behaviour when using the navigation tree.
  • id 4927: Added anchors to refs in the index.qhp TOC.
  • id : Added XML declaration to index.qhp TOC.
  • id 4932: When a class and its base class has the same nested class, the collaboration diagram could point to the wrong class.
  • id 4934: Comments inside a function macro parameter appeared before the expanded macro, instead of being treated as part of the parameter.
  • id 4936: Allow minus in the name of a HTML attribute.
  • id 4939: Code fragments were wrapped too early in the latex output.
  • id 4947: Fixed Qt version number in ./configure --help text.
  • id 4955: Included patch to prevent processing identifiers starting with _ or __ as markdown.
  • id 4956: Horizontal ruler inside paragraph caused missing </p>
  • id 4957: Using "usergroup" in the layout.xml caused missing <div>
  • id 4962: Fixed problem with user defined entries in the eclipse help index (thanks to Rene Papenhoven for the fix).
  • id 4959: Fixed problem parsing initializer list with C++11 style uniform types.
  • id 4968: \if around list item preceded by whitespace caused wrong list in the output.
  • id 4969: Correct link in documentation of SIP_SUPPORT option.
  • id 4979: Fixed bug that could prevent refman.tex from being generated.
  • id 4980: Fixed missing space in Chinese translation.
  • id 4989: Files added via HTML_EXTRA_STYLESHEET did not correct refer to files that where placed in a subdirectory.
  • id 4991: Searching for multibyte characters did not work with the server based search engine.
  • id 4993: Fixed case where line numbers got out of sync with the code.
  • id 4994: First member of an anonymous C++11 style enum was not shown properly.
  • id 4995: Fixed case where _'s where falsely converted to Markdown emphasis.
  • id 4996: Title not used when \ref'ing to a \section imported via a tag file.
  • id 4997: Behavior of @cond was accidentally reversed by new expression parser.
  • id 5000: Fixed problems handling @cond inside /// comments.
  • id 5001: Fixed case where doxygen would during preprocessing.
  • id 5002: 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 fenced 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 4749: 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 4624: 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 4807: static_assert(...); inside a class is now ignored.
    • id 4793: 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 explicitly 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 4789: Nested namespaces did not appear in the namespace list if the parent namespace was undocumented.
  • id 4809: Fixed some spelling errors in the code comments.
  • id 4814: Fortran: comma at begin of argument list description in case of implicit type
  • id 4815: Fortran: Entities on line with USE, ONLY were not hyperlinked in code.
  • id 4816: Fortran: handle carriage return in non terminated strings.
  • id 4821: Using Markdown formatting in @todo/@bug/.. like descriptions did not work.
  • id 4823: Fixed potential crash when <code> appeared inside <summary> for C# code.
  • id 4824: \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 4825: HTML output of template-derived classes contained unescaped characters.
  • id 4800: "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 4840: 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 4835: Project logo was not included in the Qt help output.
  • id 4834: Fixed a couple of typos in the comments.
  • id 4841: Fixed a problem with Markdown processing of a @code block inside an indented /// style comment.
  • id 4799: Disabled section level correction for Markdown pages as it 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 4755: 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 4464: Added support for C++11 strongly typed enums (enum class E { ... }).

Bug fixes

  • id 3470: Added missing class member initialization to a class in doxmlparser and made the library compile again.
  • id : Added support for Obj-C property attribute "unsafe_retained".
  • id 4682, 4721: Unmatched quote in a comment prevented alias expansion.
  • id 4702: Fixed another case where local include path did not appear correctly in the class documentation.
  • id 4716: Fortran: Some keyword were not colored in the source view.
  • id 4720: Fortran: Argument type was wrong type of in case of out of place !> comment
  • id 4739: Included patch to fix problem compiling for x86 release on Windows.
  • id 4741: Section without title could result in an invalid Qt Help index.
  • id 4743: Anonymous enum could result in an invalid Qt Help index.
  • id 4751: Superfluous trailing comma in javascript prevented navigation tree to load in IE7.
  • id 4753: 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 4754: ndash (--) appearing in a brief description could lead to invalid SVG images.
  • id 4759: -- and --- inside a Markdown code block were not handled properly.
  • id 4783, 4699: In body documentation with a different indentation then the main documentation was not rendered correctly (MARKDOWN=YES).
  • id 4784: Using an escaped pipe symbol in a Markdown table did not get unescaped in the output.
  • id 4785: Code fragments did not appear properly in the doxygen manual.
  • id 4786: Added missing delete call in a piece of debugging code.
  • id 4788: 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 4735: Added support for strong and weak attributes in Objective-C properties.

Bug fixes

  • id 3772: Fortran: Appearance of comments in the HTML output are now customizable via CSS again.
  • id 4655: <code> inside a <summary> or <remarks> section is now treated as @code (was already the code for C#).
  • id 4661: 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 4689: If a file was not indexed, the navigation tree became empty.
  • id 4702: Include path using quotes did not work as documented.
  • id 4709: @warning did not end at blank line when followed by a numbered list.
  • id 4713: An anonymous namespace could introduce an invalid entry in the navigation list.
  • id 4715: Breadcrumb navigation path had wrong links when CREATE_SUBDIRS was enabled.
  • id 4729: Fixed case where function was incorrectly detected as a variable.
  • id 4733: Fixed typo in the documentation of the LAYOUT_FILE option.
  • id 4737: 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 declaration 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 highlighting 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 4426: Long names are now wrapped in the dot nodes to avoid very wide graphs.

New features

  • id 4508: Added support for <inheritdoc/> C# XML command (thanks to John Werner for the patch).
  • id 4588, Added support for resolving environment variables of the form C:\Program Files (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 4669: Included build support for NetBSD.
  • A -- will now be rendered as an 'en dash', similarly, --- will produce an mdash.

Bug fixes

  • id 2891: Fortran: Prefix of routines got stripped.
  • id 4502: Include VHDL patch (thanks to Martin Kreis).
  • id 4569: Fixed include guard detection problem when using #pragma once
  • id 4582: 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 4586: Java: last enum value did not appear in the output unless it was followed by a comma.
  • id 4591, 4606: Regression: Autolist items starting on a new paragraph at indent level larger than 0 were not processed correctly.
  • id 4594: Sections could be missing from the navigation tree in some situations.
  • id 4597: @tableofcontents did not work for the main page (@mainpage)
  • id 4598: Sections in a separate markdown page did not appear in the table of contents.
  • id 4600: Fortran: Fixed problem causing call/caller graphs not to be generated.
  • id 4601: RPM spec file was updated to make it work with RHEL 6.2 (thanks to Peter Klotz for the patch)
  • id 4604: Corrected line number of error message reported for pages.
  • id 4605: C# regression: enum values where not shown in the docs.
  • id 4607: 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 enabled. Now at least one space is required after the # to make it a header.
  • id 4608: Fixed case where doxygen could crash when a section and subsection had the same label.
  • id 4610: docset creating could fail due to invalid Nodes.xml
  • id 4614: Using \internal in a group or member did not hide it from the navigation tree if there was no documentation.
  • id 4615: Backticks in C# comments did not appear as inline fragments, like was the case for other languages.
  • id 4620: PHP: defines are now shown as constants rather than enums.
  • id 4636: File with .md or .markdown extension were not included with the default setting of FILE_PATTERNS.
  • id 4623: mailto style URLs did not work correctly in combination with CREATE_SUBDIRS = YES.
  • id 4626: Removed bogus </b> when using @par.
  • id 4627: Added "warning:" prefix to "missing \endcode" message.
  • id 4629: Doxygen comments after a macro definition were not removed in the source browser view.
  • id 4632: Removed black line in front of custom paragraphs.
  • id : PHP: use keyword was not handled correctly when importing classes from another namespace.
  • id 4634: Switched to using "Macro" in the output instead of "Define".
  • id 4635: Using ![caption](filename.png) did not work correctly for local images pointed to with IMAGE_PATH.
  • id 4642: A block of ///'s inside a verbatim block inside a .md file was replaced by /** .. */
  • id 4645: Doxygen now skips scanning files in directories starting with a dot (e.g. .svn).
  • id 4651: Included patch by Ryan Schmidt to make the Mac versions in qglobal.h match that of Apple header files.
  • id 4659: Added C++11 classes when BUILTIN_STL_SUPPORT is enabled.
  • id 4662: Using a backslash in a section cause 026E30F to appear in the latex TOC.
  • id 4675: Fortran: case sensitiveness for routines and functions did not work
  • id 4676: Fortran: continuation by ampersand not placed in code output.
  • id 4698: Fixed indenting issue after the end of a markdown code block inside a list.
  • id 4703: Use new index style for page index.
  • id 4704: 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 determines 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 4558: 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 4533: 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 determine 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 4534: Latex: for Windows doxygen new generates a makepdf.bat file in the latex output dir to create the latex documentation.

Bug fixes

  • id 2729: Fixed encoding issue in CHM index file for group titles.
  • id 2791: FORTRAN: Keywords like .GT. recognized as symbols for cross ref.
  • id 2799, 3376, 3825: \copydoc did copy the brief description into the detailed section, causing a difference between the original and the copy.
  • id 3116: Using @ref for an example file, caused it to appear as file::ext.
  • id 3228: Fortran: Included patch for blockdata sub-programs.
  • id 3920: Fortran: doxygen filter, preparsing fixed form of null
  • id 4443: TCL: Included patch to fixed UTF-8 support.
  • id 4444: TCL: Included patch to prevent ##### from appearing in the output.
  • id 4220: Using a file name with path for HTML_STYLESHEET caused the path to appear in the HTML output.
  • id 4477: Fixed one more problem with include guard detection.
  • id 4492: Fixed parse problem when a #define appeared inside an enum.
  • id 4497: Fixed problem parsing C++ template specialization of the form A<func(T*)> such as used in boost::signal2 types.
  • id 4500: A </p> followed by an htmlonly..endhtmlonly section caused invalid XHTML output.
  • id 4501: Fixed include handling in case the include guard was documented.
  • id 4505: Fixed problem loading the navigation tree in IE8 when serving pages via a web server.
  • id 4506: Included patch to avoid hyphenation hints in front of the first capital in a word.
  • id 4509: When SHOW_FILES was NO, a grouped function did not appear in the javascript based search index.
  • id 4514: \copybrief introduced extra spacing in the HTML output.
  • id 4515: Fixed case where search engine specific code appeared twice in the HTML output.
  • id 4516: Fixed bug in the generated makefile causing index not to be generated when using pdflatex.
  • id 4517: HTML output for example pages was not well-formed.
  • id 4520: Include statements in latex output where placed all on one line in the LaTeX output.
  • id 4526: PHP: Fixed problem handling heredoc blocks
  • id 4527: For aliases with a single argument it is no longer required to escape commas that appear inside the argument text.
  • id 4536: Latex: tables can now span multiple pages by using the xtab package.
  • id 4544: 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 4549: Added missing newline in man page output.
  • id 4555, 4556: Fixed parse problem for Q_PROPERTY when a template with a namespaced type was used.
  • id 4557: Included patch which changes MATHJAX_RELPATH to use the content delivery network by default.
  • id 4560: Fortran: Fixed problem handling multiple definition statements on one line.
  • id 4561: Using -d Preprocessor now also works when QUIET is YES.
  • id 4563: Latex: citations where only generated properly if the bib files specified via CITE_BIB_FILES did not have a path.
  • id 4565: Tcl: Same function in multiple Tcl namespaces not added.
  • id 4574: Fixed case where doxygen would not correctly detect >> as a termination of a nested template.
  • id 4580: 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 4483: Space before @if was not preserved, causing problems with inline @if .. @endif constructs.
  • id 4490: Fixed XHTML validity problem when using mscgen graphs.
  • id 4493: Fixed XHTML validity problem when GENERATE_TREEVIEW was disabled.
  • id 4494: Included patch to fix hang issue when non-empty INCLUDE_PATH was used.
  • id 4495: 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 3637: 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 2867: .spec file was only updated after running ./configure
  • id 4363: Fixed potential crash when using doxygen for large projects.
  • id 4370: Fixed problem running bibtex with \cite command on Windows.
  • id 4375: Fixed constant expression evaluation error in the preprocessor.
  • id 4294: Removed bogus ' from the man page output.
  • id 4411: Quotes in the brief description could appear unescaped in the tooltip.
  • id 4137: #includes with ../ were not always processed correctly.
  • Fixed potential crash when INLINE_GROUPED_CLASSES and INLINE_SIMPLE_STRUCTS are set to YES.
  • id 4406: Fixed preprocessor problem handling #defines whose value was a constant string containing ///.
  • id 4419: Using a \ at the end of a comment line could cause parsing problems for C# as the \ was treated as a line continuation.
  • id 4391: Fixed parser problem when using multiple member groups inside a macro definition.
  • id 2755: Fixed several issues related to \cite handling.
  • id 4400: Improved the way macro definitions are collected.
  • id 4421: Fixed LaTeX error when using \name with a description.
  • id 4424: 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 4409: Nested aliases definitions where not always expanded properly (regression w.r.t version 1.7.4)
  • id 4392: Fixed preprocessor problem where the @ character inside a macro definition could appear as @@.
  • id 4401: Fixed problem running mscgen for LaTeX and RTF output.
  • id 4429: Using ClassName%'s did not work anymore, and also ClassName's wasn't autolinked.
  • id 4437: Fixed potential printing of null pointer when using a version filter that returned blanks.
  • id 3871: Fortran: first problem where subroutine using results variable appeared as a function.
  • id 4331: If an URL appeared at the end of a sentence, the period was included in the URL.
  • id 4362: Fortran: Added support for the Double Complex type.
  • id 4462: Included workaround for Solaris CC issue in index.cpp
  • id 4441: Included patch to fix some TCL issues and add the TCL_SUBST configuration option.
  • id 4428: Fortran: Added support for ALIAS expansion in comment blocks.
  • id 4451: Fixed case where a macro was not corrected found in the header file when it could only be found via INCLUDE_PATH.
  • id 4474: using multiple <para>'s inside a <summary> block caused text to be joined without spacing.
  • id 4361: Java enums are now parsed as classes.
  • id 4477: Fixed problem in the preprocessor regarding the handling of include guards.
  • id 4478: Fixed typo in the docs for EXCLUDE_SYMLINKS.
  • id 4487: Using a relative URL with <a href> did not work when CREATE_SUBDIRS was enabled.
  • id 4486: 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 2867: .spec file was only updated after running ./configure
  • id 4363: Fixed potential crash when using doxygen for large projects.
  • id 4370: 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 4145: Function in the call graphs are now shown based on first appearance rather then alphabetical order.
  • id 3743: 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 2755: 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 \snippet 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 1837: Putting two functions in the same group that only different in the number of template arguments did not work.
  • id 2483, 3199: Fixed proper encoding of multibyte output in RTF depending on the code page (thanks to Hirao for the patch).
  • id 2867: The .spec file in the source distribution did not get updated to the latest version.
  • id 2872: Fortran: Continuation character was not recognised in fixed format code.
  • id 2887: Fortran: @param checking was not case insensitive.
  • id 3168: Fixed problem combining @cond with preprocessor directives.
  • id 3343: Using "struct A : C, D {};" showed a private inheritance relation for D.
  • id 3410: Some links to typedef where pointing to the typedef'ed class instead.
  • id 3781: Anonymous enums caused an invalid entry in the LaTeX TOC.
  • id 3827: Deriving from an unknown template class could cause the class to appear with a -g postfix in C#
  • id 3883: Fortran: Fixed issue handling private subroutines.
  • id 3990: LaTeX now starts a new page when starting a new module.
  • id 4014: Fortran: Prefix of function was overwritten and the word 'function' not specified.
  • id 4050: Fortran: Included fix for using collaboration diagrams.
  • id 4158: Added PHP support for namespace with curly braces.
  • id 4174: Fortran: Improved handling of semicolons.
  • id 4178: Fortran: Added support for "type is".
  • id 4188: A macro added to a group appeared twice in the group documentation if was also made related to a class using \relates.
  • id 4221: Fixed problem were the search box was missing when using a custom HTML header.
  • id 4227: Fixed unterminated img tab in the XHTML output.
  • id 4228: Fixed problem handling MSCFILE_DIRS option with multiple paths.
  • id 4229: Included patch to sort overloaded members by appearance in the code.
  • id 4230, 4231: Putting an autolist inside a @todo, @bug or similar section did not work anymore.
  • id 4232: Referring to a logo with a relative path, caused a broken image target when using a custom HTML header.
  • id 4235: Fixed HTML rendering problem on older browsers when GENERATE_TREEVIEW was enabled.
  • id 4242: Linking to a section on the main page could result in a broken link when GENERATE_TREEVIEW was enabled.
  • id 4243: Fixed invalid warning when using @deparated method with default values for parameters.
  • id 4245: 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 4254: Return types containing multiple *'s ended up in the output with only one * in some cases.
  • id 4267: Fixed problem with alias substitution if the alias had more then 9 parameters.
  • id 4268: For nested anonymous structs @xx markers could appear in the output.
  • id 4270: Added compilation support for MacOSX 10.7 (aka Lion).
  • id 4278: Fixed issue printing HTML pages when the GENERATE_TREEVIEW option is set to YES.
  • id 4281: Fixed broken link to an undocumented namespace.
  • id 4291: Fixed potential crash while parsing Fortran code.
  • id 4292: Fixed problem parsing comment which included an unterminated alias within quotes (i.e. "\word{")
  • id 4294: Lines starting with . did not appear in the man page output.
  • id 4296: Fortran: Fixed text is detailed function section.
  • id 4297: When enabling INTERACTIVE_SVG wide graphs are now also fit to the screen width.
  • id 4304: Added missing space between parameter type and name in the RTF output.
  • id 4305: Use background-color instead of background in doxygen.css.
  • id 4313: Fixed potential segfault while creating man pages.
  • id 4321: Fortran: add a space to "type" in argument list.
  • id 4324: Fixed problem handling include guard when multiple blocks guarded by the same guard were used in a header file.
  • id 4327: Fortran: Unified handling of @params at various places.
  • id : make clean failed on a system without qmake.
  • id 4332: Fixed compile issue for HP Itanium.
  • id 4339: Fortran: Interface was seen as a class with constructor / destructor.
  • id 4341: Using the word "property" as a type in C caused wrong results.
  • id 4340: Fortran: fixed issue parsing function type that looked like C function pointers.
  • id 4345: Fortran: Fixed parse issue when using variable name starting with the word interface.
  • id 4348: Improved error handling for empty html style list.
  • id 4352: Fixed case where %s could end up in a warning message.
  • id 4355: 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 4121: 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 4162: Included patch that adds new LATEX_FOOTER option to customize the end of refman.tex in the LaTeX output.

Bug fixes

  • id 1067: Jumping to a @section did not work in the RTF output.
  • id 2868: Fortran: included patch for supporting multiple argument declarations on one line.
  • id 2872: Fixed problem with line continuation in Fortran.
  • id 3217: %A::B now prevents a link for A::B, instead of only for A and generating a warning that ::B cannot be linked.
  • id 3561: Fortran: Added support for extends keyword.
  • id 3771: Added support for inlining code in the VHDL output.
  • id 3872: Fortran: argument name starting with a reserved word was not handled properly.
  • id 4009: Fixed problem parsing an array of character literals.
  • id 4028: Links to file members were not made when found in tag files.
  • id 4066: The Doxyfile documentation contained some very long lines.
  • id 4067: Double quote in page or group title broke treeview.
  • id 4077: Improved documentation for DOT_IMAGE_FORMAT option.
  • id 4079: Added documentation to warn for consequences of using HTML_HEADER.
  • id 4080: Fixed problem autolinking to struct field using #S::a
  • id 4085: using @dot...@endot produced an image referenced with absolute path.
  • id 4091: \mscfile did not work properly for LaTeX output.
  • id 4095: Fixed problem where #include's could cause phantom __pad__ members to appear in the output (appeared on Windows only).
  • id 4103: Options PROJECT_LOGO and PROJECT_BRIEF were missing from the manual.
  • id 4105: Fixed problem parsing PHP "use" statement when the argument did not have a namespace scope.
  • id 4110: Included fix for proper splitting of multiple arguments given to the QHP_CUST_FILTER_ATTRS option.
  • id 4112: Long error messages could cause memory corruption.
  • id 4116: XML: switched indent option to no in the combine.xslt script.
  • id 4117: Comment with XML style list of type table was not rendered properly.
  • id 4118: Added support for overloading of C# indexer operators.
  • id 4119: Internal section marked with @internal was not shown as such anymore in the XML output.
  • id 4120: PHP: Fixed parse problem referring to class in global namespace.
  • id 4124: Included patch by Haffmans to make the custom header and footer independent of the chosen config options.
  • id 4127: Included fix to prevent a warning in the server side PHP search script.
  • id 4128: Included patch to fix broken hyperlink to page entry in xreflists.
  • id 4136: Header of \page was wrong in Man page output.
  • id 4137: #include's to other directories were not always linked.
  • id 4140: Using "use Foo\Foo;" in PHP could cause doxygen to hang.
  • id 4142: In some cases the HTML output could contain an extra </p>.
  • id 4147: Tooltips with HTML entities could be wrongly truncated.
  • id 4159: Include graphs could be incomplete.
  • id 4169: Fixed problem with macro expansion.
  • id 4176: Fixed potential crash when generating a warning for void f(int %x) style parameter, which is valid in C++/CLI.
  • id 4177: Included patch to enabled LargeAddressAware for Windows builds.
  • id 4175: Fixed cases where FILE_VERSION_FILTER was called for dummy files with name "generated".
  • id 4180: Fixed argument matching issue when one of match candidates was a typedef of a method pointer.
  • id 4210: 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 2734: 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 1666: code blocks with using directives did not get hyperlinked.
  • id 1770: enum values with bitfields did not get parsed correctly.
  • id 3207, 3944: Included a patch that fixes a couple of Fortran issues (thanks to Albert).
  • id 3731: Fixed problem handling @cond..@endcond in Fortran code.
  • id 3779: Scope was missing in Tokens.xml when using docsets.
  • id 3870, 2891: Applied patch tp avoid stripping prefixes for Fortran subroutines.
  • id 3895: allow label before end statement in Fortran
  • id 3956: </see> was not handled properly in comment block.
  • id 3980: Fixed potential crash for empty verbatim section.
  • id 3983: closing brace of a function with one parameter has wrong color in HTML.
  • id 3985: Added support for Fortran TYPEs with language bindings. (thanks to a patch by Daniel Franke)
  • id 3989: An explicit link request such as #blah did not longer produce a warning if no symbol named blah was found.
  • id 4002: warnings in "inbody" documentation were shown with "unknown" file name.
  • id 4006: Titles customized via the layout file did not appear in the title page and navigation tree, only in the top menu.
  • id 4010: Fixed problem resolving typedef.
  • id 4012: Fixed a problem were // inside a code block got removed.
  • id 4015: Added support for escaping :: by using \:: (or @::)
  • id 4018: #include with relative path to parent dir did not get hyperlinked.
  • id 4019: Removed double definition of docParamName in compound.xsd.
  • id 4023: C++/CLI Finalizer methods were not parsed properly.
  • id 4036: Objective-C method names can now be used as the the first argument of \ref.
  • id 4037: Fixed a couple of problems in the compound.xsd schema used for XML output.
  • id 4038: DISTRIBUTE_GROUP_DOC now works again for enum values.
  • id 4047: Improved matching of typedef'ed array parameter and non typedef'ed array parameter.
  • id 4056: Added a number of fixed for Fortran interfaces.
  • id 4057: Handle files with the .for extension as Fortran.
  • id 4060: 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 3855: Added \endinternal command that can be used to force the end of a section started with \internal.
  • id 3084: Added parsing support for PHP 5.3+ style namespaces.
  • id 3389: 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 1666: Fixed case where using of a namespace did not work inside an example.
  • id 2097, 2669: /// were not stripped from formulas and \dot..\enddot
  • id 3190: dropped support for a4wide paper format for LaTeX, since it is on the LaTeX taboo list.
  • id 3261: Behaviour of CLASS_DIAGRAM=NO in combination with HAVE_DOT=YES, was not properly documented.
  • id 3332: Python comments for next class or method could end up in code of a method/class when enabling INLINE_SOURCES.
  • id 3688: Fixed problem handling nested classes in Python.
  • id 3804: removed unexpected warnings about undocumented return types
  • id 3824: Undefined function macros could cause constant expression errors.
  • id 3826: updated copyright statement in PDF docs.
  • id 3827: C# generics appeared with -g extension in the output in some situations.
  • id 3829: Fixed parsing problem for "int &foo1(),&foo2();"
  • id 3830: Link to destructor was wrong in the member index.
  • id 3836: Fixed problem where struct description gets added to variable of struct type.
  • id 3837: Anchors were missing in the Qhp index for members.
  • id 3838: Fixed potential crash due to uninitialized line number.
  • id 3839: closed.png was wrongly linked when GENERATE_SUBDIRS and HTML_DYNAMIC_SECTIONS were enabled.
  • id 3840: Function macro was not handled properly when there was a line continuation directly after the name.
  • id 3841: Linking to a class via a tag file did not work if the class was in an undocumented namespace.
  • id 3843: Fixed a couple of typos in lodepng.h
  • id 3848: Graph legend image was missing form the index files.
  • Fixed a number of typos in the config file documentation (thanks to Jens Schweikhardt)
  • id 3854: Some enums were not cross-referenced.
  • id 3857: Missing \endcond could cause preprocessor issues in next file(s) to be parsed.
  • id 3862: a function definition in a namespace, documented in the header did not always get cross-referenced.
  • id 3865: Removed superfluous <td></td> from parameter list in HTML output.
  • id 3866: Unterminated comment could crash doxygen.
  • id 3873: Inherited documentation was only included for the last derived class in case of multiple inheritance.
  • id 3877: In the HTML output </div> was missing for built-in class diagrams.
  • id 3876: References in example files with underscores were wrong.
  • id : When using Japanese characters mixed with ascii characters doxygen incorrectly ended the brief description with a dot.
  • id 3886: setting MULTILINE_CPP_IS_BRIEF to YES, cause /// to appear in the output.
  • id 3890, 3235: EXTENSION_MAPPING did not work if a mapped language was handled by the same parser as used for the original extension.
  • id 3894: Fixed bracket bug in LaTeX fancy headers.
  • id 3896: Allow hyphen in key argument of \xrefitem.
  • id 3898: \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 3907: #define's in files only found via INCLUDE_PATH were not correctly handled.
  • id 3918: auto brief description ending with .) cause the ) to end up in the detailed part.
  • id 3919: Fixed encoding issue for the Spanish translation.
  • id 3927: Fixed segmentation fault in case of very long errors.
  • id 3930: Fixed type in search page of the documentation.
  • id 3931: Fixed problem detecting include guard.
  • id 3936: Made file extension to parser mapping case insensitive.
  • id 3937: Latex makefile clean target used rm command also for Windows.
  • id 3939: the EXCLUDE_SYMBOLS option was missing form the online docs.
  • id 3962: \htmlinclude and \verbinclude ended the brief description.
  • id 3963: 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)
  • 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 3803: 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 3809: 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 2959: Inheritance relation for a C# class deriving from a generic class was not handled correctly.
  • id 3105: Changing DOT_IMAGE_FORMAT did not cause the graphs to be regenerated.
  • id 3334: A field of the form "enum E *p" was ignore.
  • id 3549: Hide scope name was not working properly for todo items inside class members, where the class was inside a namespace.
  • id 3764: In dot graphs now also @ref worked (previously only \ref was supported).
  • id 3802: Fixed error when compiling doxygen for Solaris 8.
  • id 3804: Removed bogus warning about undocumented return type for define when WARN_NO_PARAMDOC was enabled.
  • id 3805: Fixed parsing support for a function that returns a struct definition.
  • id 3806: Doxygen could hang when using \copydoc in a function with \param.
  • id 3807: Using //!< after a #define no longer worked.
  • id 3808, 3816, 3820: html help compiler (and also the Qt help compiler) was called before all dot images were generated.
  • id 3810: Using a auto-list in combination with \subpage cause the items to be inlined.
  • id 3812: Fixed problem parsing a @param command where the text part started with a formula.
  • id 3813: Added some instructions how to document Fortran code.
  • id 3814: Using \var multiple times in a comment block did not work properly.
  • id 3818: Tooltips could get wrongly truncated when multi-byte UTF-8 characters were used.
  • id 3819: 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 1666: source browser could miss links for used namespaces.
  • id 2255, 3796: \if and \endif did not work properly inside auto lists.
  • id 3139: No warning for missing return type documentation even though WARN_NO_PARAMDOC was set to YES.
  • id 3341: Handling of nesting \defgroup's was not always working properly.
  • id 3355: ø was not translated correctly in the LaTeX output.
  • id 3401: Use relative paths for mscgen diagrams to avoid errors in the LaTeX output.
  • id 3491: The "Use current settings at startup" feature of Doxywizard was broken.
  • id 3500: Links in the search results were broken if they pointed to symbols imported via tag files using an absolute path or URL.
  • id 3504, 3735: Fixed man page output problem when using @par.
  • id 3506: A C comment before a #endif caused the preprocessor statement to be ignored.
  • id 3547: 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 3575: Autolinks to namespace members did not work if an explicit # or :: was used.
  • id 3591: Slashes inside strings in java annotations were not handled properly.
  • id 3628: Fixed the "show html output" button in doxywizard for Windows when IE was set as the default browser.
  • id 3652: Formatting was lost for section copied with \copydoc.
  • id 3653: Fixed C++ parse issue for "class : public base {} var;" construct.
  • id 3685: Generated HTML footer file did not have UTF-8 encoding and the relative path marker needed when using CREATE_SUBDIRS = YES.
  • id 3689: Fixed parsing problem with try-functions having multiple catch handlers.
  • id : Specialized private template member function appeared as public.
  • id 3695: Include dependency graphs were sometimes wrong.
  • id 3696: Some lines in the generated Doxyfile where too long.
  • id 3697: Fixed auto-link problem for certain URLs.
  • id 3698: Improved handling of ellipsis inside brief description when JAVADOC_AUTOBRIEF is enabled.
  • id 3700: Accessibility of macros was not handled properly in all cases.
  • id 3699: Enabling REFERENCED_BY_RELATION without SOURCE_BROWSER could result in broken links.
  • id 3701: Fixed problem handling @copydoc for function operators.
  • id 3703: A raw C# string constant could end up in the next string.
  • id 3709: subpages were not part of the XML output.
  • id 3711: First list item in the paragraph after a @todo item was not parsed properly.
  • id 3718: Generated man page links were having a heading underscore.
  • id 3720: Made include guard detect a bit more strict to avoid false positives.
  • id 3722: The labels of CVS tags were missing a colon.
  • id 3719: Fixed problem parsing Q_PROPERTY with template type and spaces.
  • id 3729: Made the date string in the HTML footer translatable, along with some other sentences on the directory pages.
  • id 3708: Inline attribute was shown also for non-inline template members.
  • id 3733: Fixed problem handling @copy for operators with const qualifier.
  • id 3738: Fixed problem handling '"' inside comments.
  • id 3740: Made the LaTeX output a bit less spacious using \input.
  • id 3736: Fixed preprocessor issue where a macro that was redefined was not resolved.
  • Fixed character encoding issue on the search results page.
  • id 3734: C# namespaces are now extracted also without comment block (the language spec does not allow XML documentation).
  • id 3742: included patch that fixes some typos in the code.
  • id 3744, 3679: Pages with an underscore in the label generated a file name containing two underscores.
  • id 3747: text of the form something.symbol got autolinked when symbol had a global scope.
  • id 3748: Call graph could be wrong when local variable has the same name as a global function.
  • id 3750: Added documentation patch on how to create URL links with custom text.
  • id 3751: Doxywizard now removes non-existent files from the recent list and has an option to clear the list completely.
  • id 3752: A macro defined via PREDEFINED did not always overrule a macro definition in the code.
  • id 3759: Enabling call graphs produced invalid XHTML output.
  • id 3766: Non ascii characters in file or directory names caused problems on Windows.
  • id 3768: An ALIAS with parameters spanning multiple lines caused problems with /// style comments.
  • id 3775: Included patch to prevent image overflowing the page in the LaTeX output.
  • id 3783: Fixed problem using EXTENSION_MAPPING for C# (thanks to Vsevolod Kukol for the patch).
  • id 3786: Links to external files could be wrong when CREATE_SUBDIR was enabled.
  • id 3787: /* characters in a print broke parsing within an conditional section.
  • id 3797: \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 3654: Using \dir without argument will create directory documentation for the directory in which the \dir command was found.

Bug fixes

  • id 3467: perlmod output was wrong when using paragraph commands.
  • id 3571: Included patch for VHDL.
  • id 3617: Replaced size attribute of hr tag by class attribute in the HTML output.
  • id 3618, 3623, 3639: Using \dot produced "Error opening map file" or could even crash doxygen.
  • id 3619: Loading a new config file in doxywizard did not reset all values of a previously loaded config file.
  • id 3621: Grouped members with todo-like items were shown with "GlobalScope" prefix.
  • id 3622: Fixed RTF rendering problem with group index.
  • id 3624, 3675: Added missing line break in LaTeX output.
  • id 3627, 3648: The title of pages whose label had an underscore was not shown
  • id 3631: Include guard not starting with #ifndef SOME_GUARD_H were not recognised as such.
  • id 3632: Setting SEARCHENGINE to YES and GENERATE_HTML to NO caused error that search results directory could not be created.
  • id 3635, 3655: typedef'ed enums or struct with the same as the typedef did no longer show up.
  • id 3636, 3643: Related pages (manual and automatic like the todo page) caused broken links when SHORT_NAMES was enabled.
  • id 3638, 3644: Automatically generated related pages (like the todo page) caused broken links when CREATE_SUBDIR was enabled.
  • id 3641: comments after #if could cause next function call not to be cross-referenced.
  • id 3642: \internal inside a conditional section caused warning.
  • id 3646: Using \internal inside a \section did not end at the next \section as documented.
  • id 3647: \internal command produced message with .: in the LaTeX output.
  • id 3649: HTML Tables with custom attributes were not rendered properly.
  • id 3651: Man pages with underscore got double underscore in the name.
  • id 3658: Buffer overflow when using non-ascii characters as class name.
  • id 3662: Macro definition had effect even if the definition was not actually included.
  • id 3670: config.h and config.l where missing from the SVN repository.
  • id 3672: Todo items were merged for overloaded functions.
  • id 3673: C# enum values with @todo items were missing from the todo list.
  • id 3678: 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 3513: Autolinking to all-lower case words has been disabled, in accordance with the documentation.
  • id 3608: 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 3156: Make \addindex put keywords into the .qhp file.
  • id 3519: #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 3136: Empty class definitions were not included in Tokens file for docsets.
  • id 3187: GENERATE_QHP details was considered even though it is not defined.
  • id 3223: Comment parser could get stuck in certain cases.
  • id 3254: GENERATE_QHP should generate keywords for classes in generated *.qhc.
  • id 3273: Fixed two issues in the compound.xsd schema definition.
  • id 3491: Fixed wrong default destination directory.
  • id 3492: Fixed problem with distributing member group documentation for anonymous member groups.
  • id 3496: GENERATE_TODOLIST=NO and friends not longer worked.
  • id 3505: Added support for UCS-2 encoded input files.
  • id 3508: Fixed problem parsing fully-qualified java annotations.
  • id 3511, 3539: Fixed problem handling quotes.
  • id 3517: Not all configuration options appeared in the index of the documentation and some were not sorted correctly.
  • id 3520: formulas had the .png extension while they were gifs.
  • id 3525: Fixed recursive lockup while resolving template relations.
  • id 3528: Doxygen's preprocessor got confused when /**/ appeared as part of a macro definition.
  • id : Removed obsolete option USE_WINDOWS_ENCODING from the docs.
  • id 3531: RTF output was missing a new paragraph for brief member descriptions.
  • id 3536, 3542: Code reformatting done for the LaTeX output could break multibyte UTF-8 characters causing invalid output.
  • id 3537: Using multibyte characters in a page label caused invalid output.
  • id 3540: Documented the interaction between LATEX_CMD_NAME and USE_PDFLATEX.
  • id 3548: Todo items for two inner classes with the same name where collapsed together in the todo list when HIDE_SCOPE_NAMES was enabled.
  • id 3549: Scope was not hidden for members in the todo list even though HIDE_SCOPE_NAMES was set to YES.
  • id 3562: Struct variable with explicit struct keyword got labelled with [read] attribute.
  • id 3545: PHP was not parsed properly when it appeared in a <script language="php"> section.
  • id 3550: Fixed problem matching base class member against the member in the derived class.
  • id 3551: Makefile for Docsets now honors DESTDIR.
  • id 3560: Made browsing for HHC_LOCATION via the wizard yield an absolute path.
  • id 3564: Changed default for CHM_INDEX_ENCODING to CP1250 to avoid issues in a Solaris environment.
  • id 3527: Removed unnecessary paragraphs from HTML table cells.
  • id 3552: referring to page labels of the form a-1 did not work.
  • id 3565: Code generators could produce extra </span> tags.
  • id 3568: Included the PHP search engine again (with new config option SERVER_BASED_SEARCH to enable it)
  • id 3572: Doxygen produced invalid Latex output for RCS tags.
  • id 3573: Fixed issue with include dependency tracking that could cause macro expansion not to work properly.
  • id 3576: Fixed issue with VHDL call graph (thank to Martin Kreis for the fix).
  • id 3577: Fixed problem parsing C++ function-try-blocks.
  • id 3578: #include inside a class could cause line numbers to be off.
  • id 3579: Fixed parsing problem skipping over /**/ comment.
  • id 3584: Fixed problem handling Javadoc style {@code ... } blocks.
  • id 3585: Special commands did not work in the title of the @mainpage.
  • id 3593: Fixed problem parsing files that start with UTF-8 BOM.
  • id 3596: Fixed problem parsing friend function with explicit scope.
  • id 3599: Fixed perlmod generation issue.
  • id 3613: Project number was not centered anymore in the HTML output.
  • id 3607: 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 966: Multiline second argument of \ref caused unexpected " warning.
  • id 3479: Feeding invalid XML could crash doxygen's DBus XML parser.
  • id 3481: Include patch to fix problem with building rpms.
  • id 3482, 3486: Doxywizard problem with GENERATE_TREEVIEW.
  • id 3488: SHOW_USED_FILES now works again.
  • id 3489: 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 3372, 3012: 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 2852: Make the HTML output XHTML 1.0 compliant.
  • id 3365: 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 3415: 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 3377: 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 947: Fixed preprocessor handling for C# code.
  • id 966: -- was not rendered correctly for LaTeX output
  • id 1327: Missing link in todo page.
  • id 1837: Two template functions that only differed in the number of template arguments were seen as the same function.
  • id 2505: HIDE_UNDOC_CLASSES did not work properly.
  • id 2786: Fixed problem with syncing the information of declaration and definition in the presence of an extra forward declaration in the source code.
  • id 2875: For C# enum values were merged together if the same enum name was used in different scopes.
  • id 2894: Included patch to handle PROGRAM statement in Fortran as subroutines/functions.
  • id 3104: Remove spacing around brackets for Obj-C protocols.
  • id 3131: Included patch for fixing wrongly labeled items in docsets.
  • id 3170: Improved parser to better disambiguate nested templates ending with >> from the bitshift right operator.
  • id 3251: Fixed matching problem for method in nested class, where the outer class is a template.
  • id 3379: Segfault/realloc error when a very long path was used.
  • id 3388: documented #define with guard caused wrong documentation.
  • id 3385: Doxywizard could crash on exit in some cases.
  • id 3392: Regression: a struct ivar in ObjC class screws up method identification.
  • id 3396: Included patch that avoids trailing spaces in the generated Doxyfile template.
  • id 3409: Included VHDL patch by Martin Klein
  • id 3420: Fixed case where matching declaration and definition did not work correctly.
  • id 3418: The "more..." link for files was broken, since the anchor was not generated.
  • id 3433: Fixed parsing problem when an unpaired apostrophe appeared in a Python comment.
  • id 3446: Included fix for doxywizard makefile.
  • id 3447: Added missing virtual destructor to CompAccept base class.
  • id 3450: Fixed segmentation fault for specific case in PHP code.
  • Fixed some issues building for Windows.
  • id 3457: Fixed problem handling strings like a"\b" within a comment.
  • id 3459: Fixed problem matching explicitly scoped parameter in a template class.
  • id 3473: A namespaced with name "internal" (C++/CLI keyword) could confuse doxygen's C++ parser.
  • id 3477: @optional/@required attributes for Objective-C were missing from the XML output.

1.5 Series

Doxygen Release 1.5.9

(release date 30-04-2009)

New features

  • Added new option LATEX_SOURCE_CODE, which when enabled adds source code also to the latex output (typically to be used in combination with SOURCE_BROWSER)
  • Included updates for the Finnish, Romanian, Korean, German, Japanese, and Hungarian translation.
  • Added translation support for Esperanto.
  • id 579630: Added class attribute to the \todo and \bug HTML code so they can be customized via CSS.
  • id 578740: Added support for Æ and æ characters.

Bug fixes

  • id 395169: Some links via tagfiles were not correct in combination with CREATE_SUBDIRS=YES
  • id 539080: Having the same comment for the declaration and definition of a function could result in duplicate documentation in case the indentation level was different.
  • id 566713: Dot font was not removed even though DOT_CLEANUP was YES.
  • id 566925: Fixed problem resolving symbolic links.
  • id 567044: Fully qualified name was not shown correctly for nested classes.
  • id 567375: Fixed parse problem for typedefs with redundant braces.
  • id 567535: Fixed problem when parsing operator%= for CLI/C++ code.
  • id 567777: Fixed problem with latex output when using enums.
  • id 567990: Doxygen could crash when there was a symlink in project.
  • id 568237: Non-ascii values entered where not saved according to the INPUT_ENCODING.
  • id 568505: Fixed build problem for old Linux distributions.
  • id 569478: Fixed line continuation issue with the Fortran parser.
  • id 570960: C++ class defined in a .mm file was sometimes parsed as Objective-C code.
  • id 571013: In the wizard, editing a text field in the middle of the text in the expert tab caused the cursor to jump to the end of the line.
  • id 571096: Fixed Objective-C parsing problem when multiple protocol forward declarations are put on one line.
  • id 571990: Fixed compiler issue with portable_iconv by moving the function to a C file.
  • id 572560: Fixed parse issue when a #define is inside an enum.
  • id 572740: Fixed problem parsing C++ comments using line continuation.
  • id 573057: Included update for Swedish translator and changed the language code from SE to SV to comply with ISO 639.
  • id 578382: When referring to a static variable or function doxygen will now look at the file context in case of ambiguity.

Doxygen Release 1.5.8

(release date 27-12-2008)

Changes

  • Completely rewrote the doxywizard. Main changes:
    • It is now based on Qt version 4. (4.3 or higher is required)
    • Different layout that allows easy switching between wizard and expert mode, without losing settings.
    • Running doxygen can be done without first having to save the configuration file.
    • For HTML output, there is a button to show the results in the default browser.
    • Option to change the default configuration that is used when you first start the wizard.
    • Non-default options are shown with red label, and there is context menu to reset them back to the default.
  • Included Qt help update by Sebastian Pipping introducing three new options to define custom filter sections and attributes: QHP_CUST_FILTER_NAME, QHP_CUST_FILTER_ATTRS, QHP_SECT_FILTER_ATTRS. Doxygen now directly generates the indices needed by the qthelpgenerator. Qt customers can have a look at issue 28 of the Qt Quarterly for more information.

New features

  • id 131496, 522488, 541649, 554800: Add new option EXTENSION_MAPPING, which can be used to change the mapping of file extension to language parser, e.g. defining EXTENSION_MAPPING = f=C will make doxygen parse files with the .f extension as if it were C files.
  • Added support for Vietnamese (thanks to Dang Minh Tuan)
  • Thanks to Emin Ilker Cetinbas doxygen can now also produce Turkish documentation.
  • id 143218: It is now possible to add the direction attributes normally used with the @param command to document parameters inline, e.g. void foo(int v /**< [in] input parameter docs */);

Bug fixes

  • TYPEDEF_HIDES_STRUCT did not work correctly if the typedef did a forward declaration of the struct/union.
  • id 153222: Fixed issue following recursive symbolic links.
  • id 423223: Detailed description was not visible for group functions when SEPARATE_MEMBER_PAGES was enabled.
  • id 437346: Fixed issue handling multibyte characters in the RTF output.
  • id 475377: Improved error handling in case of character encoding problems.
  • id 486747: Inherited typedefs were not resolved propertly.
  • id 508752: Add support for BLOCK DATA to the fortran parser.
  • id 532695: included documentation update about the use of \public and friends for object-oriented programming in C.
  • id 532808: References to class variables in PHP code did not already work.
  • id 536394: Warning "no matching file member found" was given for a static variables in multiple anonymous namespaces.
  • id 537686: Fixed invalid empty section for enum in a member group.
  • id 539590: C# generics with the same name but different template parameters where merged.
  • id 540321: A using declaration in a header file was not taken into account in the source file that included it.
  • id 540520: Have two C# enum values with the same name in different enums was not handled properly.
  • id 543036: //## comments were extracted even if they were not part of Rose documentation.
  • id 547436: Fixed issue combining Python docstrings and doxygen comments.
  • id 551615: A multiline C# comment with @ was not shown correctly in the source browser.
  • id 544598: A multiline comment as part of a #define could case wrong line counting and missing cross-references.
  • id 545128: \overload didn't work if it was the last statement in a comment and not followed by a newline.
  • id 553380: Removed bogus warning refering to a namespace member from with a brief description that was converted to a tooltip.
  • id 553968: Added support for JavaDoc command {@code ... }
  • id 554444: Bullet lists were no longer correctly indented when using IE6.
  • id 554674: Fixed index rendering bug in the RTF output.
  • id 555174: The .qch file didn't include generated images.
  • id 555200: Fixed potential crash bug when parsing special comment inside an if at global scope level of a PHP code fragment.
  • id 556240: Tree view in HTML output was not encoded correctly.
  • id 557001: VHDL Parser got confused when -- is in a string literal.
  • id 557014: Undocumented VHDL record member's internal record prefix was not removed.
  • id 557026: Obj-C Protocols and interfaces had wrong type/name in DocSets.
  • id 557031: Obj-C methods no longer require a space after the initial - or +.
  • id 557034: Fixed problem parsing property in Objective-C code.
  • id 557038: Items in tabs.css could not be overridden by custom style sheet.
  • id 557419: $relpath$ was no longer expanded in custom HTML headers.
  • id 557735: Summary for member groups was missing for groups and files.
  • id 558078: collaboration graph of a class using std::list of another class was not correct if the classes where inside a namespace.
  • id 558460: When using \subpage, any section in the sub page was missing from the LaTeX output.
  • id 558525: Template classes produced invalid HTML in the tree view.
  • id 559338: PHP Parser could get confused when there was a comment inside an array initializer.
  • id 559650: Obj-C @interface without body was handle correctly.
  • id 560623: Mixin template classes where not shown properly in the inheritance diagram if the classes where inside a namespace.
  • id 563136: The brief sentence is not shown for groups with no children.
  • id 563384: call graphs were not generated for Qt signals and slots
  • Included VHDL fix by Martin Kreis.
  • grouping of multiple @todo's (and friends) didn't work anymore, causing duplicate sections and labels.
  • Some issues related to the Qt help output were fixed.

Doxygen Release 1.5.7.1

(release date 5-10-2008)

Changes

  • The dot tool is no longer part of the doxygen package for MacOSX. Please install GraphViz separately and set the dot path to /usr/local/bin

New features

  • Added option DOT_FONTSIZE which allows to set the size of the fonts used in dot generated graphs.

Bug fixes

  • id 554432: Re-added ALPHABETICAL_INDEX option.
  • id 554379: Fixed internal error for GENERATE_INDEXLOG when GENERATE_HTML was set to NO.
  • id 554546: Included fix for handling relative includes in the preprocessor.
  • Included several VHDL fixes related to syntax highlighting, finding class members, and mixing upper and lower case.
  • Included patch to allow setting DEST_DIR environment variable to determine where to install doxygen.

Doxygen Release 1.5.7

(release date 28-9-2008)

Changes

  • The default CSS style sheet has been cleaned up and simplified, thanks to the work done by Quinn Taylor.

New features

  • Added new config options GENERATE_QHP which enables generating .qch (Qt compiled help) file via the Qt's qthelpgenerator tool (part of Qt 4.4+). This type of files can be read with Qt's Assisant to browse the documentation in a similar way as is possible with Microsoft's compiled HTML help (.chm). To further customize the output and run the help generator from within doxygen, the following options are available: QCH_FILE, QHP_NAMESPACE, QHP_VIRTUAL_FOLDER, QHG_LOCATION. Thanks to Sebastian Pipping for the patch.
  • Add new option SYMBOL_CACHE_SIZE to allow a different trade off between doxygen's memory usage and the amount of disk accesses.
  • id 532695: Added 3 new commands: \extends, \implements, and \memberof that allow object oriented constructs to be documented as such for languages that do not support it natively (e.g. C)
  • Added better support for one line comments after VHDL types.
  • Added new option LAYOUT_FILE which can be used to specify a layout template file that tells doxygen in which order to generate the output and which titles to use for headings and how the navigation index will look; Read this for more info. As a result the following options are now obsolete since they can now only be controlled via the layout file: DETAILS_AT_TOP, ALPHABETICAL_INDEX. The following options can also be set via the layout file, but for convenience and backward compatibility reasons they are still also part of the configuration file: SHOW_INCLUDE_FILES, SHOW_USED_FILES, CLASS_GRAPH, COLLABORATION_GRAPH, GROUP_GRAPHS, INCLUDE_GRAPH, INCLUDED_BY_GRAPH. Run doxygen with the -l option to generate the default layout file.
  • Included update for the Macedonian, Catalan, Brazilian, and Serbian translation and also support for Serbian with Cyrilic characters.

Bug fixes

  • id 140264, 332187, 541924: Sections inside a \subpage where not shown as subsection in the LaTeX/RTF output.
  • id 155098,156188: Added support for UTF-8 special characters in identifiers (which is allowed by e.g. C#).
  • id 304598: operator-- caused invalid HTML output.
  • id 324047: parameter type [in or out] were not generated in RTF document
  • id 363499: @todo and friends did not work in a comment marked with @dir.
  • id 445485: HTML commands in a comment block with attribute values without quotes were not handled properly.
  • id 533855: Processes were always documented as anonymous in VHDL code.
  • id 535379: Added support for %{...%} blocks in XPCOM's IDL.
  • id 536298: Last port in a VHDL port list was not correctly put in a member group.
  • id 536385: Fixed problem matching function prototype and implementation under certain conditions.
  • id 536629: Fixed compilation issue on NetBSD.
  • id 537393: Properties in Python were not properly handled.
  • id 538065: Added support for @optional and @required in Objective C 2.0 protocols.
  • id 538239: Some unlabeled VHDL processes were not corrected detected.
  • id 538515: Deriving a Objective-C interface from a protocol caused parsing problems if the interface also has a body.
  • id 539057: Part of an Objective-C expression could be missing in the source browser under certain conditions.
  • id 539590: Generic C# classes with the same name but different template arguments were no longer treated as different classes.
  • id 539712: Fixed code parser issue for parameter indices of procedures and functions.
  • id 540058: Creator code was wrong in the MacOSX application bundle.
  • id 540372: Fixed problem parsing large table by increasing YY_READ_BUF_SIZE in the generated parser files.
  • id 540247: Fixed potential memory corruption issue parsing VHDL.
  • id 541113: Fixed locale for ctype, to avoid stripping of 0xA0 from multi-byte UTF-8 characters.
  • id 544479: SORT_MEMBER_DOCS did not work for class members.
  • id 546621: Fixed makefile so that .svn stuff is removed from the tarball when doing "make archive".
  • id 546812: Using a table with row span greater than 1 did not produce correct LaTeX output.
  • id 545098: Fixed problem parsing where clauses in combination with C# generics.
  • id 545503: Nameless parameters of type "struct A" could end up wrongly in the XML output.
  • id 545970: Refering to the main page did not work as advertised.
  • id 546158: The variable defined inside a foreach statement in C# code was not considered for source linking, cause potentially incomplete call graphs.
  • id 547361: Linking to specialized template functions did not work.
  • id 548175: Fixed problem parsing class members within a class X, inside a namespace that is also named X.
  • id 548443: Documenting a nested namespace/classes with @namespace X.Y did not work for C# (only X::Y worked).
  • id 548489: C++/CLI classes of type sealed abstract were not processed correctly.
  • id 549318: Some headings in the user manual where wrongly formatted.
  • id 549581: Fixed potential buffer overflow in preprocessor.
  • id 550058: Obj-C: properties for private fields did not appear in the output unless EXTRACT_PRIVATE was enabled.
  • id 550156: Corrected typo in the documentation for GENERATE_TREEVIEW.
  • id 550247: Fixed problem parsing octal character literals in the preprocessing phase.
  • id 551739: Related function with explicit namespace scope was not properly placed if the function also existed in the global namespace.
  • id 552115: Anonymous structs and unions could produce invalid links in the html help index.
  • id 552361: Fixed problem with operators in the LaTeX output.
  • id 552600: \copybrief ended a brief description instead of appending to it.
  • id 553469: Removed bogus warning about internal inconsistency when importing items via a tagfiles that are inside an undocumented scope.
  • id 553616: One can now remove the automatic line breaks in the type part of a declaration by using a custom stylesheet with BR.typebreak { display: none; }
  • id 553663: Aliases did not work in Fortan comments.
  • id 549022: Reimplemented in links could be wrong in case of overloaded members.
  • id 553225: Parser was confused by arrays inside an Obj-C message.
  • Finnish translation was disabled.
  • A collaboration graph with multiple edge labels with not written to the XML output correctly.
  • sub pages of a \mainpage were not shown in the Latex/RTF output.
  • Included some fixed for the VHDL parser.

Doxygen Release 1.5.6

(release date 18-5-2008)

Changes

  • The GENERATE_TREEVIEW option is not longer a boolean, but can now have 4 values, NONE (was NO), FRAME (was YES), HIERARCHIES, and ALL. Thanks to Jake Colman for the patch.
  • a page marked as a sub page (\subpage) is now shown in the LaTeX and RTF output as a section of its parent page. So the top level pages are shown a chapters, subpages as sections, subpages of a subpage as subsections, etc.
  • Included spec file updates by Kenneth Porter.

New features

  • id 514810: Added DOT_FONTNAME and DOT_FONTPATH options which allow instructing dot to use a different font than FreeSans.ttf which doxygen put in the output directory.
  • id 517242: Added option CHM_INDEX_ENCODING to specify the encoding to be used for the CHM index files. Needed because CHM index files cannot handle UTF-8 encoding.
  • id 519573: Included patch to make the font-size button visible in the CHM output.
  • id 521288: Added new options SHOW_NAMESPACES and SHOW_FILES to Suppress Namepace and Files Pages.
  • id 521495: Included a patch that makes it easy to modify the root of the html treeview with an image using style sheets.
  • id 522300: Added option IDL_PROPERTY_SUPPORT to enable/disable special propget/propput handling in IDL files.
  • Translation support for Finnish has been updated.
  • Added option FORMULA_FONTSIZE which can be used to change the font size of the formulas included in the HTML documentation.
  • included update for Russian translation.
  • included patch to fixed some issues with VHDL code and add support for some VHDL-93 constructs.

Bug fixes

  • Regression: fixed problem handling STL classes when BUILTIN_STL_SUPPORT was enabled
  • id 142866,377976: Added new \copybrief and \copydetails commands, which work as \copydoc but then only copy either the brief or the detailed part of a comment block.
  • id 312655: DISTRIBUTE_GROUP_DOC didn't always work in combination with SORT_BRIEF_DOCS enabled.
  • id 352234: The search index could contain invalid references when SOURCE_BROWSER=NO and CALL_GRAPHS=YES.
  • id 402447: Added support for C# method declarations with where clauses.
  • id 425029: WARN_FORMAT does no longer require all of $file, $line, $text to be valid.
  • id 495687: Replaced MAX_DOT_GRAPH_MAX_NODES with DOT_GRAPH_MAX_NODES in the docs & config file.
  • id 508694 Fixed problem with mixed simple and double quotes in fortran format declaration
  • id 508752: Fixed problem where the fortran scanner didn't recognize END
  • id 510971: Fortran: parser was confused by double REAL() in processed statements.
  • id 514488: Fixed problem matching argument lists with const qualifiers.
  • id 514891: PDF generation failed with a LaTeX error when tocdepth was set to a value higher than 2.
  • id 515518: Links in member group documentation was broken when CREATE_SUBDIRS was enabled.
  • id 516086: Fixed division by zero when producing RTF output for the comment /** <table><tr></tr></table> */
  • id 516536: Fixed build issues on OSX 10.4 and earlier.
  • id 516070: Added support for simple events without accessors in C#.
  • id 516387: replace 0xA0 character in perlmodgen.cpp by a space to avoid compilation problems with the Chinese version of Visual Studio.
  • id 517112: Regression: examples with the same name but different paths cause "file not found" warning.
  • id 518334: Fixed problem parsing Objective-C protocol definitions.
  • id 518537: Hiding an enum with an undocumented typedef with the same name caused explicit referencing of the enum to fail.
  • id 519661: In some cases a function prototype could incorrectly be flagged as a variable with constructor.
  • id 520325: Fixed parse problem when comment was after an extern "C" block and before the opening bracket.
  • id 521234: Fortran: fixed problem causing "stack empty! when parsing code"
  • id 522225: PDF Latex output did not produce proper hyperlinks for \page and \subpage comment blocks.
  • id 522248: Page header were wrongly displayed in the RTF output.
  • id 522415: Fixed compile errors in addon/doxmlparser.
  • id 522600: Added additional warnings to signal invalid configurations.
  • id 523138: Removed redundant paragraph in navigation section of the HTML output.
  • id 523326: Namespace name was prepended twice to template specializations classes.
  • id 524357: Default mentioned for REFERENCED_BY_RELATION relation was not correct.
  • id 524359: Default mentioned for REFERENCES_RELATION relation was not correct.
  • id 524473: Removed incorrect warnings about parameters in VHDL.
  • id 525140: Improved handling of Objective-C 2.0 properties.
  • id 525143: Properties are now listed as attributes in the UML diagrams.
  • id 525144: GENERATE_DOCSET option greyed out in doxywizard.
  • id 526155: Removed warning about QFile::setName when parsing VHDL files.
  • id 527781: Template arguments for bases class not shown in a consistent way.
  • id 528023: Inheritance relations were not correctly displayed for C# generics.
  • id 528424: Fixed rendering bug in HTML output when used with Opera.
  • id 528584: Using enum and enum value with the same name in C# code caused crash.
  • id 528620: Fixed typo in French translation.
  • id 528815: Fixed problem parsing define() statements in PHP code.
  • id 528989: Leading C comment could prevent preprocessor expansion for the rest of the line.
  • id 529803: Doxygen didn't find call(er) relations for C# when using this.Method() calls;
  • id 529554: Putting defined() inside a macro caused the preprocessor to get confused.
  • id 529758: C++/CLI: default inheritance is now public, nested templates ending with >> are now handled properly as well as indexed properties.
  • id 530201: Avoided warning for undocumented self parameter in Python.

Doxygen Release 1.5.5

(release date 10-2-2008)

Changes

  • Pages created with @page are now chapters in the LaTeX and RTF output and treeviews, and directly follow the mainpage. Also the project name is not longer repeated for each chapter. This should make it more convenient to create normal, printable documentation with doxygen.
  • For dot graphs with an edge with more than ten labels, only the first ten are shown followed by an ellipsis; done to prevent very long dot runs resulting in unreadable graphs.
  • Use of pdflatex with hyperlinks is now the default.
  • id 511116: C++ preprocessor macro names are now replaced in the comments as well. For example, S and m are replaced in the comments for: #define C(S,m) /** container S */ struct S { /** value m */ int m; }
  • id 493923: The options SOURCE_BROWSER, CALL_GRAPH, CALLER_GRAPH, REFERENCES_RELATION, and REFERENCED_BY_RELATION can now be indepently enabled and disabled. By default the relations are now disabled.

New features

  • Added support for VHDL (.vhd or .vhdl extension) based on a patch by Martin Kreis. Use OPTIMIZE_OUTPUT_VHDL when parsing VHDL code.
  • id 374699: Added support for Objective-C 2.0 properties.
  • Added compilation support for MacOSX 10.5 (Leopard) incombination with Xcode 3
  • Added support for docsets, which allow integration of doxygen generated API documentation in Xcode 3. new options:
    • GENERATE_DOCSET: enables/disables the feature
    • DOCSET_FEEDNAME: sets the provider/suite name under which the set is listed.
    • DOCSET_BUNDLE_ID: A unique name for the docset.
    See the configuration file or manual for more details.
  • id 493467: Added compilation support 64bit Solaris machines in combination with Sun's own compiler (thanks to Heiko Jansen).
  • id 153376: Added support for the \tparam command, which works similar to \param but is meant for documenting template parameters.
  • id 140104: Added \headerfile command which can be used to specify the second and third argument of a \class command, when the documentation is already in front of a class definition.
  • Added translator support for Macedonian.
  • Added language updates for German, Perian, Spanish, Taiwanese, and Chinese, Korean, Croatian.

Bug fixes

  • Fixed potential crash bug due to wrong pointer check.
  • Using @param as the first word in a comment block did not work properly in combination with JAVADOC_AUTOBRIEF set to YES.
  • Some character's could be missing from IDL properties.
  • Automatic abbreviations did not work for nested classes or classes in a namespace.
  • Fixed a preprocessor bug where the line numbers of a definition could get out of sync with the source code.
  • id 142023: Putting Qt signals or slots in a group did not make them appear in the group documentation.
  • id 318668: Comments in Python function argument lists got messed up.
  • id 325359: Added support for C# XML-doc commands typeparam and typeparamref.
  • id 331674: Aliases did not work in Python code.
  • id 356399: Fixed strange warning when specifying a tag file with an anchor twice.
  • id 363828: Docstrings found at the top of a python file are handled as module documentation again.
  • id 429437: A #include outside the input files was not searched in the current directory of the file containing the include.
  • id 451299: Sometimes the wrong include file chosen when ambiguous
  • id 460585: @cond did not work in Python code.
  • id 477377: Function in undocumented anonymous namespace cause broken link if EXTRACT_ALL was set to NO.
  • id 484731: Additional fixes for parsing Fortran.
  • id 488125: operator->* was not displayed properly in the output.
  • id 490766: Fixed compile error in fortranscanner.l which occurred for some compilers.
  • id 492027: Ampersand (&) in front of parameter stops documenting of PHP source
  • id 493249: using a namespace (or fortran module) caused the namespace to appear in the documentation as if it was defined.
  • id 493434: Nested C# style XML lists in a comment block were not handled correctly.
  • id 494187: Doxygen could crash due to an infinite recursion when using tag files.
  • id 494599: When updating a config file an extra space was added just before the end of a quoted string.
  • id 494760: Putting a # in a path name using Doxywizard, caused the # to interpreted as the start of a comment in the Doxyfile.
  • id 495656: Description of default used for DOT_TRANSPARENT was wrong.
  • id 495687: Fixed typo in the description of DOT_GRAPH_MAX_NODES.
  • id 496392: Putting character entities like é in section/group titles resulted in &acute; in the output.
  • id 498049: Improvements to .spec files for RPM creation.
  • id 498680: Callgraphs for functions in anonymous namespaces generated invalid labels for 'dot' when EXTRACT_ANON_NSPACES was set to YES.
  • id 498711: Reference parameters in PHP were not properly parsed.
  • id 499577: Collaboration diagrams not working with typedef
  • id 500227: Wrong output generated for Objective-C methods with multiple arguments for LaTeX or RTF output.
  • id 500635: Project name is no longer placed before each top level item in the treeview and other indices.
  • id 500465: Fixed some issues compiling for AIX.
  • id 500928: Fixed parser issue handling a tripple quoted string when used to initialize a Python variable.
  • id 500944: Python variables with package scope were only extracted if EXTRACT_STATIC was enabled.
  • id 501704: Line numbering was wrong when a #include was placed inside an array/struct initializer list.
  • id 502213: Combining a brief and detailed description in an alias produced the warning "unknown command \_‍linebr".
  • id 502447: Single quoted PHP strings were not handled correctly by the source code parser.
  • id 503939: Variable was checked before initialized.
  • id 504120: TYPEDEF_HIDES_STRUCT now also works for enums.
  • id 504439: Assert when marshaling a member which had an associated example.
  • id 504650: Generated LaTeX code injected hyperlinks into section titles.
  • id 507052: Fortran function named x_function was not properly handled.
  • id 507603: Enabling FILTER_SOURCE_FILES caused strange warnings when INPUT_FILTER is empty.
  • id 508740: Using upper case port mode specifiers did not work correctly.
  • id 508753: Fortran: Added .f as allowed fortran extension.
  • id 508759: Fortran: fixed potential memory corruption while scanning parameter lists.
  • id 507528: XML output was not correct for pointer arrays.
  • id 508752: Fortran scanner didn't recognize lonely END
  • id 509278: Spaced before the \internal command where treated as documentation.
  • id 509582: Fortran: Spaces in function return type were not parsed properly.
  • id 510387: Fortran scanner didn't parse initialisation of complex type correctly.
  • id 511921: @file command ended brief description even when JAVADOC_AUTOBRIEF was enabled.
  • id 512620: \copydoc of a comment with @param commands could result in warnings that parameters were not documented.
  • id 513570: Fixed cross site scripting vulnerability in the search.php script.
  • id 514814: Included missing fromUtf8 calls to translator decoder to prevent potential language encoding issues.
  • id 513885: Using this-> inside a function could result in incomplete call graph.

Doxygen Release 1.5.4

(release date 27-10-2007)

Changes

  • id 469260: When setting SOURCE_BROWSER to YES, all undocumented classes also ended up in the documentation. Now this will only happen if EXTRACT_ALL is also enabled.
  • Upgraded included third party libs libpng and zlib to version 1.2.21 and 1.2.3 respectively.

New features

  • Included support for parsing Fortran 90, thanks to a patch by Anke Visser and Oleg Batrashev (source: http://dougdevel.org/index.php?page=doxygen)
  • id 477548: Added config option SIP_SUPPORT to support handling SIP sources (used for Python to C++ bindings).
  • id 475828: Added support for CLI/C++ style indexed properties.
  • Added config option TYPEDEF_HIDES_STRUCT which when enabled treats a typedef of a struct as a struct with the name of the typedef. This behavious was coupled to OPTIMIZE_OUTPUT_FOR_C in the previous version and is now an independent option.
  • Included updates for the Korean, Brazilian and Chinese translations.

Bug fixes

  • id 314541: Fixed wrong DOCTYPE in HTML output when GENERATE_TREEVIEW was set to YES
  • id 321784: Changed scope resolution algorithm to avoid lookup failures on using directives (thanks to Christoph Schulz for the patch).
  • id 415866: Fixed bug in preprocessor causing "More #endif's than #if's found" warning.
  • id 426971,465020: A brief description would in some cases be treated as a detailed one.
  • id 430148: Doxygen reported "Internal Inconsistency" for class member inside anonymous namespaces.
  • id 433449,363010: Removed Internal inconsistency when referencing enum values found in a tag file.
  • id 438282: Line numbers were displayed when using \include inside \example.
  • id 443942,461433: mscgen was not called correctly on Windows when generating .map files.
  • id 457346: increased the threshold for adding line breaks to the type part of a declaration.
  • id 460294: Missing references in source browser when using the "register" keyword.
  • id 461889: Fixed bogus "no matching class member found" case.
  • id 462051: In certain cases doxygen failed to find the proper inheritance relation.
  • id 462077: Error in LaTeX index generation due to unescaped characters.
  • id 462159, 143250: Added support for parsing functions/methods returning a pointer or reference to an array, e.g. a function of the form: "int (*f(int))[];"
  • id 462436: Inheritance from an unknown template class was not handled consistently.
  • id 462439: Adjusted \author documentation.
  • id 462757: Fixed Latex output bug for members of anonymous struct or unions.
  • id 462861: Members references via tagfiles were sometimes broken.
  • id 463139: Doxygen failed to detect duplicate variable declarations in the same file.
  • id 465138: HTML entities in page title (such as ü) where not displayed correctly in the HTML output.
  • id 465170: Wrong line numbers reported for errors when using multiline formulas.
  • id 465172: Fixed issues parsing <code>operator</code>.
  • id 466803: Fixed crash when parsing Java enum with empty field.
  • id 466890: Handling of CVS/RCS keywords was broken.
  • id 466910: When UML_LOOK is set to YES, the graph orientation is always top to bottom.
  • id 466991: Template argument using '?' operator breaks file generation.
  • id 468858,472310: C++ casting operator with templates was displayed wrong.
  • id 468937: .hhc and .hhk was missing the </body> and </html> tags.
  • id 469269: When HTML_DYNAMIC_SECTIONS was enabled, index.hhp missed open.gif and closed.gif.
  • id 470029: Fixed crash while parsing a particular piece of PHP code.
  • id 471185: The word "property" was stripped from functions that started with it.
  • id 471495: Objective C category documentation was ignored in some cases.
  • id 472193: Fixed issue expanding multiple occurrences of the same alias command argument.
  • id 472201: Removed spurious warning introduced by the fix for bug 465170.
  • id 473105: Auto link to nested class inside a base class was missing.
  • id 473140: Anonymous scope ended up wrongly in the XML output.
  • id 473402: context dependent \ref's inside a dot or msc graph did not work anymore.
  • id 473679: Doxygen skipped function if return type contained round parenthesis.
  • id 474529: index entries in LaTeX could be wrong on some platforms.
  • id 476035: Externally referenced links obtained via a tag file had an extra g in the anchor
  • id 476562: argument of copydoc appears in XML output without proper escaping.
  • id 476766: Type of a virtual destructor was "virtual" in the XML output.
  • id 479113: Automatic links were not generated when next word started with "const".
  • id 479762: Wrong character encoding was used for dot files.
  • id 480722: File tooltips incorrect for the include dependency graph.
  • id 481168: Allow \f{environment}{ .... \f} so the number of braces matches.
  • id 481107: Using HTML_FILE_EXTENSION to set a non-default extension did not work for the "no frames" link to main.html when GENERATE_TREEVIEW was enabled.
  • id 481827: Macro expansion removed the @ character when it appear in a C comment.
  • id 482964: The "template" word was a little too close to the rounded border in the html output when rendered by Firefox.
  • id 484277: Adjusted the instructions to report a bug in the hope this will result in less duplicate bugs.
  • id 484731: Fixed issue parsing unindented interface (Fortran).
  • id 486159: Fixed problem parsing \xrefitem commands in joined comment blocks.
  • id 488760: Added support for Trigraphs to doxygen's C-preprocessor.
  • id 488800: Fixed problem in perlmod generation.
  • id 488837: abstract class in PHP was not properly parsed.
  • id 489049: Setting MUTLILINE_CPP_IS_BRIEF to YES could cause wrong line number references.
  • Call graphs were not properly synced between function declaration and definition.
  • Fixed bug in doxygen's internal caching mechanism which could make doxygen forget enum lists for large projects.

Doxygen Release 1.5.3

(release date 27-7-2007)

Changes

  • When OPTIMIZE_OUTPUT_FOR_C is enabled then a struct definition of the form typedef struct _S { ... } S_t will be shown in the output as a struct of type S_t and the typedef itself is omitted (previousily _S was shown as well as a typedef of the form typedef _S S_t).
  • Improved the line-breaking rules for members whose return types have many characters (for example a function returning a pointer to a template class).
  • Multiple brief and detailed descriptions are now possible. It is still not recommended to make use of them, but at least no documentation is silently hidden when there are two brief or two detailed descriptions for the same entity.
  • Improved dot layout control and page sizing to better fit images on the screen and paper.

New features

  • Added support for aliases with arguments, see the manual for more information.
  • Added HTML_DYNAMIC_SECTIONS option which, when enabled, will produce sections in the HTML output that can be expanded/collapsed. Currently used for diagrams and graphs.
  • Added support for type constraints as available in the C# language ("where" clause)
  • id 332263: Added new option EXTRACT_ANON_NSPACES that when set to YES will extract the contents of anonymous namespaces and show then in the output.
  • id 423765: Added support for <see cref="SomeSymbol"/> style XML comments.
  • id 426971: Added QT_AUTOBRIEF config option, which has the same meaning as JAVADOC_AUTOBRIEF only now for /‍*! .. *‍/ style comment blocks.
  • id 435108: Reintroduced the MAX_DOT_GRAPH_DEPTH option as a means to further reduce the size of a graph.

Bug fixes

  • id 137644: Fixed issue with "const" parsing of a typedef'ed struct where the "const" is placed after the struct definition.
  • id 153362: A typedef of a function pointer was not shown correctly in the output.
  • id 156003: Wrong template arguments when using @related for a (template) function with a template class.
  • id 170004: The check for PDF or DVI in the generated latex output was not always reliable.
  • id 300022: PHP code with unknown extension was parsed as C/C++ code. Added a detection rule for <?php to switch to PHP parsing.
  • id 317967: Setting USE_PDFLATEX to YES now generates a Makefile with a "pdf" target, to be consistent with the documentation.
  • id 397099: Fixed several cases where "referenced by" relation was unresolved.
  • id 423776: XML style see tag resulted in messed up documentation.
  • id 426852: \hideinitializer was sometimes ignored when using structural commands.
  • id 426977: Included a patch allow building under recent versions of Cygwin
  • id 427991: Doxygen failed to call mscgen.exe properly on Win32 platforms.
  • id 430962: struct keyword was stripped from typedefs even for C code.
  • id 431049: Fixed potential crash when GENERATE_PERLMOD was enabled.
  • id 431202, 333607: Quotes inside strings caused the Pythons parser to get off track.
  • id 431763: doxygen crashes when using unsupported tags in the config file.
  • id 432420: Last enum value of a Java 1.5 style enum with constructor did not appear.
  • id 432743: The "std" namespace appeared in the output when BUILTIN_STL_SUPPORT was enabled.
  • id 432757: Setting INLINE_INHERITED_MEMBERS to YES, did not inherit the group of grouped members of a base class.
  • id 433630: Using double-quotes (") inside a brief description could lead to errors in dot files when the brief description was used as a tooltip.
  • id 434079: The number of graph nodes could still be too large despite a conservative DOT_GRAPH_MAX_NODES setting.
  • id 436648: List of class members was no longer complete under certain conditions.
  • id 437218: Special characters in \brief string cause problems HTML/XML in source listings.
  • id 438300: Fixed two cases where doxygen could access memory outside array boundaries under certain conditions.
  • id 441114: Add support for <term> inside <list> to conform to C# XML comments.
  • id 442313: Casing of special commands was not handled consistently.
  • id 443942: Fixed problems running mscgen.
  • id 444823: No newline after the error message when hhc failed with return code >0
  • id 445105: Fixed some issues and wrong spacing for the RTF generation.
  • id 446585: Doxygen could crash when producing a warning for undocumented C++/CLI arguments of the type "T%".
  • id 447133: Replaced occurrences of ' by ' in the HTML output.
  • id 448210: Make rule to install manpages was broken.
  • id 451297: Fixed more issues where using double-quotes (") inside a brief description could lead to errors in dot files when the brief description was used as a tooltip.
  • id 452824: In the source browser linking of a local variable did not work after a sizeof() of the variable.
  • id 452828: Missing reference to struct member in the source browser due to incorrect bracket count.
  • id 453366: Removed bogus warning for unresolved references in brief descriptions.
  • id 453918: The __init__.py files were incorrectly treated as modules causing scoping issues for symbols defined inside such file.
  • id 456471: Changing the installation location (--prefix) did not affect the location were the documentation was installed. --docdir can still be used to overrule the location for the documentation.
  • id 456475: Added support for C++/CLI style finalizers.
  • id 457857: Leading "struct" keyword is no longer stripped from the documentation of functions that return a pointer to a struct.
  • id 458710: Expanding environment variables in the config file to a file or path name with spaces (e.g. "C:\tools'vs2015\VC\include") was incorrectly interpreted as a list when used with for instance INPUT.
  • id 458749: Undocumented constructors/destructors inside an undocumented member group were not visible in the output.

Doxygen Release 1.5.2

(release date 4-4-2007)

Changes

  • The options MAX_DOT_GRAPH_WIDTH, MAX_DOT_GRAPH_HEIGHT, and MAX_DOT_GRAPH_DEPTH have been replaced by a single option DOT_GRAPH_MAX_NODES, which can be used to limit the size of a graph indirectly, by specifying the maximum amount of nodes in the graph. The main advantage is that this can be computed much faster; dot has to be run only once per graph and never on graphs with more than the specified amount of nodes. Note that doxygen will always render the root node and its direct children even when DOT_GRAPH_MAX_NODES = 0.
  • Parameters names are now copied to reimplemented functions, avoiding warnings about missing or wrong parameter names when INHERIT_DOCS = YES.

New features

  • id 150916,159291,166209,330109,396316 Doxygen now uses UTF-8 internally for all strings and uses iconv to recode the input to UTF-8. For HTML, LaTeX and man pages the output is now always UTF-8. For RTF the encoding is local and depends on the code page specified in the translator. The config option USE_WINDOWS_ENCODING has been removed. A new config option INPUT_ENCODING has been added which can be used to specify the encoding of the input. Another config option DOXYFILE_ENCODING can be used to specify the encoding of the config file itself.
  • Added support for message sequence charts (using mscgen). For this two new commands have been added: \msc and \endmsc (similar to \dot..\enddot), and a new config option MSCGEN_PATH (similar to DOT_PATH) See the manual and website for more info.
  • Added support for C++/CLI. To enable it set CPP_CLI_SUPPORT to YES in the config file (thanks to Ben Voigt for doing a lot of the work).
  • IGNORE_PREFIX now also works for function/members names when shown in the various indices.
  • Doxygen will show a tooltip in the HTML output for links to classes, namespaces, and members with the brief description (including dot graphs and source code).
  • id 321575: Added a new config option EXCLUDE_SYMBOLS which can be used to exclude certain namespaces/classes/functions from the output by specifying their name (which may include wildcards).
  • id 364536: Included patch by Ben Voigt which adds syntax highlight support for several (managed) C++ keywords.
  • id 419349: Added two LaTeX layout enhancements provided by Stefan Pawig.

Bug fixes

  • id 132886: Included patch to fix an issue with using a sequence of xrefitems
  • id 134792: Added configure script for Cygwin autodetection.
  • id 162006: Doxygen now uses the default search path of dot for user defined dot graphs (defined with @dot and @dotfile).
  • id 306231: Include fix for Japanese translation.
  • id 315543: htmlinclude didn't work as part of a description of a param.
  • id 322806: Doxygen now does not treat >> in a template list as a shift operator for Java and C#.
  • id 332815: Legend generated with GENERATE_LEGEND did have typo.
  • id 345820: Included patch to make doxygen handle config files with @INCLUDE with absolute paths correctly.
  • id 364780: Included patch to improve scope handling of nested classes/namespaces by the code parser (thanks to Ben Voigt).
  • id 366113: Fixed configure script issue under Solaris.
  • id 367233: Non-class functions were duplicated in the xml index file.
  • id 367495: Windows build files had only support for English by default.
  • id 369499: In some cases variable names were duplicated in python source code output.
  • id 369200: Fixed parse problem when a single quote appeared in a Python comment line.
  • id 373229: Doxygen now gives a warning when it cannot inline a #include inside a body
  • id 374486: Inheriting from a template argument via an intermediate typedef could result in invalid output.
  • id 375073: \ref could cause wrong XML output.
  • id 375753: Added missing new line to error message.
  • id 377911: Fixed problem with end of formula.
  • id 380516: Fixed line number issue in the Python parser.
  • id 381450: Tabs in the HTML output redefined the value of an "id" attribute, which is not legal HTML.
  • id 374592: Member grouping didn't work properly for constructors.
  • id 381608: Initializer values of class variables and constants did no longer appear in the documentations.
  • id 382274: Scanning files with RECURSIVE enabled ignored EXCLUDE_PATTERNS.
  • id 383377: C# code was not passed though the C-preprocessor.
  • id 383493: Improved the warning message for unterminated code/verbatim blocks.
  • id 384439: Made comment block parser more robust against HTML errors.
  • id 385384: SEPARATE_MEMBER_PAGES=YES caused broken links in Html Help index.
  • id 387781: Parsing #import statements was broken for Objective-C.
  • id 387848: Included patch to avoid LaTeX compilation issues.
  • id 389656: For C# enums in the same scope can have the same values, but doxygen's parser got confused.
  • id 389750: Fixed alignment bug in the default html footer generated by doxygen.
  • id 390821: Fixed problem parsing Java 1.5 enums with initializers.
  • id 391619: When dot produces an non-zero return code, doxygen now prints the return code and the command it tried to execute.
  • id 407815: Doxygen's got confused by certain combinations of " and ' s in PHP code.
  • id 409935: Fixed bug in qcstring.cpp
  • id 411300: PDF/Latex output was broken for operator[] documentation.
  • id 411328: Fixed Accessibility/Section 508 Compliance issue.
  • id 413071: Added support for Java 1.5 annotations.
  • id 415683: Two typedefs of function pointers with different names could still resolve to the same type if the only difference was the argument list and as a result cause "Undocumented function" warnings.
  • id 418920: Doxygen stripped leading comment chars from C# code blocks.
  • id 421131: Character encoding was not consistent for all HTML files.
  • The "list of all members" was not shown for a class with no members that derived from a class with members.

Doxygen Release 1.5.1

(release date 29-10-2006)

Bug fixes

  • id 148567: @todo at the end of a comment block caused problem when copied by @copydoc
  • id 352420: Fixed bug in LaTeX output (missing space after \bf).
  • id 363227: missing output for instance variables defined in a Python function that has a doc string
  • id 363397: Member groups did not appear in a class when SUBGROUPING was set to YES.
  • id 364341: Parsing could become really slow if often included header files contained using statements.
  • id 364673: The values of two enums with the same name (both in difference scopes) where merged.
  • The version of dot shipped with the Mac binary had some non-standard dependencies.
  • Doxywizard didn't work on PC's where no Visual Studio 2005 was present, when build with the project files (I'm now using /MT instead of /MD which fixes this issue).
  • Running 2 instances of doxygen on the same output directory caused corruption of the temporary files generated by doxygen.

Doxygen Release 1.5.0

(release date 16-10-2006)

Changes

  • cleaned up the internal structures to make them smaller, and made doxygen use a temporary file to store the parse results (instead of keeping them in memory), which will further reduce the memory usage, especially for large projects, and is a first step towards incremental parsing.

New features

  • Added example application that shows how to configure and run doxygen from within an application and use the information collected by doxygen without also generating the output (see addon/doxyapp).
  • id 322467: Sections produces by \note, \warning, \remarks etc, now have a class label in the generated HTML (<dl> tag) so you can give them a distinct style using a non-default stylesheet (i.e. using HTML_STYLESHEET).
  • Added project files for building doxygen from Visual Studio 2005 (see winbuild dir).
  • added translator updates for Czech, Danish, German, Catalan, Croatian, French, Japanese, and Italian.
  • added translator support for Arabic (thanks to Moaz Reyad)
  • added translator support for Persian (thanks to Ali Nadalizadeh)

Bug fixes

  • id 131445: Fixed autolinking for related functions.
  • id 137236: Updated documentation to make it clear that a lower-case only word is not a candidate for autolinking.
  • id 141758: Fixed a problem parsing <?=...?> contructs outside of functions in PHP.
  • id 319169: Second level index not shown when DISABLE_INDEX=YES.
  • id 325337: Added "optimize output for C#" option to Doxywizard.
  • id 325426: Partial C# class inside a namespace where not handled properly.
  • id 327358: Fixed wrong link to the search engine when CREATE_SUBDIRS was set to YES.
  • id 326885: Leading ///'s ended up in code fragments when using indented /// comments.
  • id 330513: For file documentation, the scope not stripped for namespace members even if HIDE_SCOPE_NAMES was set to YES.
  • id 335131: Fixed "internal inconsistency" warning related to use of nested classes defined outside a used namespace.
  • id 338475: Added support for Q_SIGNALS and Q_SLOTS macros (thanks to Thomas Zander for the patch).
  • id 340973: Improved performance of "Computing template instances" step significantly in case of (large) Java projects.
  • id 342090: Fixed missing cross-reference to "m" for code of the form f(a[s.f]->m)
  • id 344443: Code font commands where not treated properly in C# style comments.
  • id 344445: Made it more clear in the documentation where the XML commands in the comment blocks are for, and how <code> works in C#.
  • id 345322: DOTFONTPATH was corrupted in mingw builds.
  • id 345519: Fixed problem parsing attributes in C#.
  • id 345660: Python class members that spanned multiple lines could confuse the parser.
  • id 345742: enum values were shown twice in some cases.
  • is 346095: Forced a newline before \normalsize in the LaTeX to avoid font size issues.
  • id 346848: Under certain conditions nesting of groups did not work properly.
  • id 347444: paramref XML command did not render properly.
  • id 348259: Doxygen now keeps the _formulas.log file when there is a problem generating bitmaps for formulas. This can help to identify the problem quicker.
  • id 348481: friend class in unnamed namespace produced bogus error.
  • id 348537: Fixed internal inconsistency warning that could occur when reopening an anonymous namespace
  • id 349867: Fixed issue handling brief and detailed description when both are positioned after an item.
  • id 350168: Doxygen didn't parse C# type contraints properly.
  • id 351890: In some cases C# attributes were treated as properties.
  • id 353044: C99 style variadic macros were not handled properly by doxygen.
  • id 353195: Member grouping with SUBGROUPING = YES now works the same for files and namespaces as it does for classes.
  • id 354765: A command like \ingroup now ends a brief description as was the case in the pre 1.4.x series.
  • id 355922: When a function was found in a namespace but also in the global namespace, doxygen could make the wrong cross-reference.
  • id 356204: Setting HIDE_UNDOC_RELATIONS to NO could result in argument mismatches in certain cases.
  • id 357092: Spurious doxygen warning when using a class that ends with 'const' or 'volatile'.
  • id 357438: tabs and newlines were not parsed properly for html attributes inside a comment block.
  • id 357646: objcache.cpp did not compile cleanly on a system with 64 bit pointers.
  • id 361812: whitespace after the colon at the end of a Python definition caused parsing issues.
  • "struct Foo operator+()" was not parsed properly due to the "struct" keyword.
  • As a side-effect of bug 329861 Obj-C protocols and categories were no longer extracted.
  • Fixed an problem with cross-referencing Obj-C code.
  • Removed the memory leaks reported by valgrind and tuned some data structures to reduce the memory usage.
  • enums in a used namespace could cause arguments not to match.
  • fixed several cases where arguments of function/method declaration and definition did not match while they should.

1.4 Series

Doxygen Release 1.4.7

(release date 11-06-2006)

Changes

  • The stylesheet has changed, so if you use your own, you will need to update it or the output will look ugly.

New features

  • Added support for universal binaries on MacOSX (only the non-GUI part).
  • Added CALLER_GRAPH config option and \callergraph command to add a caller (or called-by) graph to a function or all functions. (thanks to Daniel Sherwood for the patch)
  • Added REFERENCES_LINK_SOURCE config option which allows to selected if reference relations should point to the source or to the documentation (thanks to Daniel Sherwood for the patch).
  • Included patch by Christoph Pesch to mention the member type in the warning "Member ... of ... is not documented".
  • included update for Spanish, Italian, Norwegian, and Czech translations.
  • Added support for get/set properties in IDL (thanks to a patch by Sander Stoks).

Bug fixes

  • id 151959: incremental "using" of nested namespaces could prevent that doxygen matched function declaration against definition.
  • id 310521: HIDE_IN_BODY_DOCS was longer working.
  • id 315039: Improved handling of members in an anonymous scope.
  • id 322415: Under certain conditions a scrollbar appeared in a HTML page while this was not needed.
  • id 325845: Documentation parser was confused when starting a HTML list directly after a \b command.
  • id 325866: SORT_BY_SCOPE_NAME=YES did not always work if SORT_BRIEF_DOCS was also enabled.
  • id 326023: CHM files had @ signs in CHM index for anonymous class enums
  • id 326250: Fixed incorrect regular expression in constexp.l
  • id 326688: Added better support for PHP5 style constructors and destructors.
  • id 326885: Using multi-line //!-blocks did not work nicely together with @code...@endcode blocks anymore.
  • id 327242: Python: Methods starting with _ are now marked private, except for special method names (i.e. starting and ending with __).
  • id 327666: Fixed parse issue that resulted in a missing call graph.
  • id 328435: When enabling USE_PDFLATEX a blank line appeared in the makefile
  • id 328849: Added clarification to the manual about the use of //!< comments.
  • id 328635: Text of the HTML output didn't always wrap properly anymore after "fixing" bug 322415.
  • id 329343: Fixed segment in Python parser caused by @var or @fn with a missing argument.
  • id 329530: An apostrophe in ##-comments inside a Python class confused the parser.
  • id 329534: Fixed problem resolving inheritance relations for nested Python classes.
  • id 329537: Corrected the Python example to show how modules should be documented.
  • id 329719: # comment in PHP containing a ' caused doxygen to ignore rest of input.
  • id 329861: Fixed problem parsing embedded structs in an Objective-C interface.
  • id 329905: PDF manual produced a LaTeX error because style sheet was not up to date.
  • id 330209: A typedef in an Obj-C implementation file could obscure class implementation later in the file
  • id 331511: no matching class member found error for class template instance in combination with "using" of said class.
  • id 331751: Fixed problem parsing a function typedef.
  • id 332110: method matching failed for equivalent template instance types.
  • id 332178: Fixed malformed XML output for readable properties.
  • id 333270: Fixed BoundingBox problem with PostScript graphs generated with dot using graphviz-2.9.20060302.0540 and later (thanks to John Ellison for the patch)
  • id 332875: Enabling SEPARATE_MEMBER_PAGES could lead to bogus warning messages about undocumented parameters if only the HTML output was enabled.
  • id 333330: Patch the reorganizes the treeview.
  • id 333831: "typedef const struct { } NAME" construction was not properly parsed.
  • id 334716: Doxygen could hang when calling latex with invalid formulas.
  • id 336467: Latex formula could prevent /// comment blocks to be properly converted to /** */ blocks.
  • id 336782: Prevented crash when providing code with illegal/redundant class scope.
  • id 337344: Configure now accept system's /usr/bin/install on FreeBSD.
  • id 341365: @endcode comment was skipped in a specific case.
  • id 341453: Under certain conditions @cond did not stop at @endcond
  • id 341456: Fixed crash when feeding doxygen /dev/null as config file
  • id 342329: Text such as "dir/file.cpp" was not auto-linked.
  • id 342946: Anonymous enums couldn't be grouped using separate @var block
  • id 344118: Inbody documentation could hide the detailed description.
  • id 344172: Class Hierarchy appeared in a C-Code-Documentation.
  • Protection level of inner classes was not written to the XML output (thanks to Shachar Itzhaky for the patch)
  • Included patch by Ernst Giessmann, which prevents most of the underfull hbox warnings that are produced when compiling doxygen's LaTeX output.
  • Fixed potential crash during preprocessing if C-macros are defined with /* (thanks to Günther Haslauer for the patch).
  • Anonymous struct members could end up in the wrong scope (thanks to Bruno Andrillon for the patch).
  • saving to an existing file in doxywizard now requires a confirmation.
  • Fixed potential crash in case a template class with a redundant namespace qualifier was used: e.g. "namespace N { template<> class N::C<G::H> {}; }"

Doxygen Release 1.4.6

(release date 30-12-2005)

New features

  • id 317773: Improved .spec file and better support for building rpms (thanks to Kevin McBride)

Bug fixes

  • id 145294: Boolean expression with '<' as template argument confused doxygen.
  • id 303297: The class hierarchy was sometimes incorrectly shown.
  • id 317819: Updated the documentation concerning the creation of PDF output.
  • id 317967: @‍htmlonly..@‍endhtmlonly type of blocks (including formulas) were not always working properly if used in inline parameter documentation.
  • id 318008: The base class name was missing from the XML output.
  • id 318208: Enabling SUBDIRS resulted in the tabs at the top of certain pages not be styled as tabs. Also, links to include dependency graphs had wrong links or were incomplete.
  • id 318564: Python: parser skipped comment blocks in some cases.
  • id 318565: Python: single quote doc strings did not get parsed properly if there was no space before the closing '''.
  • id 318567: Python: parse problem when () appear in default value of a function parameter.
  • id 318618: If INLINE_INHERITED_MEMB = YES constructors of a template class were shown in the derived class.
  • id 318678: Python: A referenced variable that was not found using docstring could lead to memory corruption.
  • id 319170: The CHM file did not include the stylesheet material needed to properly render the tabs at the top of each page.
  • id 319341: Doxygen crashed while generating call graph under certain circumstances.
  • id 319539: Fixed parse problem with Python/Objective-C code.
  • id 319586: tabs.css not correctly included with CREATE_SUBDIRS option set.
  • id 318460: Multiply-defined labels if two function specializations differ only on the name of a template parameter.
  • id 319219: Spurious space was inserted after inlined math formulae.
  • id 319826: The file name for template classes could become too long causing files that cannot be created by some file systems.
  • id 320026: undocumented "typedef struct foo baz" causes subsequent variables appear as typedefs.
  • id 320543: If enabled the alphabetical class list is now the default item under the classes tab.
  • id 320587: Links in brief file descriptions shown in directory pages were broken if CREATE_SUBDIRS was enabled.
  • id 320693: First sentence in mainpage was missing with JAVADOC_AUTOBRIEF enabled.
  • id 320740: Added support for documenting individual elements of an associative array in PHP.
  • id 320813: The if() statement with space after the if confused the code parser and resulted in partial call graphs.
  • id 320960: redundant line continuation characters were not removed by doxygen's C-preprocessor.
  • id 321165: Doxygen choked on Qt properties with namespaced types
  • id 321197: using a namespace that contains a nested class, where the inner class was forward defined, could introduce a bogus namespace with the name of the outer class.
  • id 321256: Installation path mentioned in the documentation was wrong.
  • id 321349: In typedefs like "typedef struct {} T, *pT, the pT typedef appeared wrongly in the documentation.
  • id 321540: An array of type an anonymous struct was not parsed properly if there was a space between the name and the size, i.e. struct {} Var [10];
  • id 321682: Fixed typo in the HTML output of the search page.
  • id 321743: Cross-references were missing to members of anonymous structs.
  • id 311833: A template specialization of a private class member was marked as public.
  • id 312329: @link label @endlink, i.e without link text now shows the label as text, and space after label is omitted.
  • id 312624: \verbatim block could cause wrong line numbers while parsing the source code.
  • id 322752: Fixed specific case where aliases were incorrectly expanded inside environment formulas
  • id 322997: Putting function-style macros in a parameter of a template return type of a function confused doxygen's parser.
  • id 323320: An enum name that also appears as a typedef (i.e. typedef T {} T; }) is now linked as an enum and the typedef is omitted from the output.
  • id 323557: Bit field information was missing from the XML output.
  • id 323627: Fixed compiler warning when using gcc 4.x.
  • id 323628: Improved warning when documenting #defines while the preprocessor is disabled.
  • id 323988: FILE_VERSION_FILTER incorrectly handled command parameters
  • id 324076: Fixed some typos in the documentation.
  • id 324153: The configure script didn't work for SunOS 5.8.
  • id 324163: \todo paragraph did not end at \author (or similar commands).
  • id 324313: Added support for having a Linux system where libraries are located in lib64 by adding a new platform to tmake: linux-64
  • id 324521: Autolinking to classes in a group which itself was in a namespace didn't work without explicit scoping.
  • id 324558: Null pointer dereference in namespacedef.cpp
  • id 324565: References and callgraphs missing for some functions (thanks to a patch by Dave Dodge).
  • id 324566: Fixed problem matching f(unsigned long const a) against f(unsigned long)
  • id 324568: Fixed problem were some function prototypes were detected as variable constructor calls (thanks to Dave Dodge for the patch).
  • id 324601: Cross referencing and call graphs were broken by certain bracket positions for functions.
  • id 324823: Doxygen's code parser lost track in some cases, causing function definitions not being found in some cases.
  • id 324891: Doxygen crashed on circular python imports.

Doxygen Release 1.4.5

(release date 4-10-2005)

Changes

  • Changed to way the index looks (I hope you like it!). It now is a list of items styled (with CSS) as a row of tabs. Also class/namespace/file related items are now grouped together and presented as a second row of tabs to prevent clutter (the latter is based on the suggestions/patch in bug report 162968). Note that if you use a custom HTML header you need to add <link href="tabs.css" rel="stylesheet" type="text/css"> to the head section!
  • Copydoc now copies the brief description as well.

New features

  • id 306889: Added new config option BUILTIN_STL_SUPPORT. When enabled, doxygen will assume that STL classes exist (without the need to include the STL headers as INPUT). This helps with matching of argument lists for function declarations and definitions and also helps to improve the collaboration and inheritance diagrams that involve STL classes.
  • id 317010: Added support for the following new HTML entities: &lsquo; &rsquo; &ldquo; &rdquo; &ndash; &mdash; (thanks to a patch by madalexonline)
  • Included update for Chinese translation.
  • included update for the VC++ project files (in wintools dir), thanks to Johan Eriksson.

Bug fixes

  • id 304339: Using \dot in latex formulas conflicted with the doxygen's \dot command.
  • id 306076: Using a namespace inside an example listed with @example did not work.
  • id 306069: Search engine required lower case names in order to find something, which made pasting of names difficult.
  • id 308395: Doxygen could crash when producing a warning that included a %s sequence.
  • id 311191: Default values for parameters weren't shown in the detailed documentation.
  • id 311198: If JAVADOC_AUTOBRIEF was set to YES, a \todo or \bug like command always ended at the first dot.
  • id 311207: The /* and */ inside a \code ... \endcode code fragment were stipped.
  • id 311577: Putting a documentated class name in the title of the main page caused a LaTeX error if pdf hyperlinks were enabled.
  • id 311665: Fixed compile issue for Solaris.
  • id 312688: Typedefs of arrays were auto-linked to the base type i.s.o the typedef.
  • id 312678: Fixed excessive memory usage for @fn commands due to a memory leak of the scanner buffer 256K of memory was leaked for each command!
  • id 312791: Undocumentated members did not result in warnings if SOURCE_BROWSER was enable and the member's definition was part of the INPUT.
  • A C-comment inside a \code block could lead to parse problems in the preprocessor, resulting in #defines that are not found.
  • Fixed problem documenting Python code using docstrings where the module documentation was not picked up. Also fixed several other Python related issues. Also included Python examples in the documentation.
  • id 312805: Using BUILTIN_STL_SUPPORT could result in dead links for STL classes.
  • id 312807: Added support for STL exceptions (when BUILTIN_STL_SUPPORT is enabled).
  • id 313011: Item after the closing of a nested group was ignored in some cases.
  • id 313103: Member groups within other nested groups did not work anymore.
  • id 313298: Code parser didn't handle function-try-blocks correctly.
  • id 313572: Fixed lockup issue when generation code for Python files.
  • id 313695: Fixed parsing issues for the constructs "\f$n\f$" and "operator <CODE>".
  • id 313805: '@' characters in a string literal were lost during macro expansion.
  • id 313906: added support for "import" and "from ... import" to the Python parser so cross module inheritance works.
  • id 313908: Fixed python parser problem: If there are two classes defined in one module there needed to be a comment between them.
  • id 314165: Python functions starting with _ are not marked as public, whereas variables starting with _ are marked private.
  • id 314194: Brief description containing 'i.e., ' ended after the comma.
  • id 314237: You can now also use \ref on directories documented with \dir.
  • id 314288: Using \ref with an ambiguous filename didn't work.
  • id 315006: C++ comments at the start of a line and inside a <pre>..</pre> block were stripped.
  • id 316264: Fixed typo in the inline config file documentation.
  • id 316266: Included update for the Japanese translation (thanks to Katsuhiro Hermit Endo)
  • id 316759: Fixed problem in the Makefile of doxywizard so that the right version appears in the about box.
  • id 316944: An inline formula (or other special command) did not get executed if it was within an inline documentation block and put after a parameter.
  • id 317052: The alphabetical class index was not sorted properly if multiple prefixes were specified using IGNORE_PREFIX.
  • id 317105: Latex output expanded &szlig; as "s instead of {\ss} which only worked if german.sty was included. Thanks to Stefan Pawig for the patch)
  • id 317397: Copying of images from subdirectory within the IMAGE_PATH didn't work properly since doxygen didn't remove the subdirectory from the destination path.
  • id 317446: Documenting an enum with \enum while there is also a function with the same name in the same scope could make the enum documentation appear at the wrong spot or the enum in the wrong member group.
  • id 317490: A variable of a nested class, forward declared in a template class, which in turn was in a namespace, caused the variable to end up in the global scope.

Doxygen Release 1.4.4

(release date 21-7-2005)

New features

  • Added support for parsing Python code. Special comment blocks in Python are of the
             ##
         #  Some comment
         #
    or you can rely on Python docstrings. This code uses the new parser interface and was based on the work done by a group of students as part of a compiler design project.
  • Added support for C# style XML tags in the comments. See the manual or the C# language specification for more details. Thanks to Talin for doing most of the work.
  • Added support for the JavaDoc command {@inheritDoc}.

Bug fixes

  • id 166254: SORT_BY_SCOPE_NAME didn't work anymore.
  • id 304380: New argument matching algorithm didn't handle the case where "const int" needed to be matched against "const int a" correctly.
  • id 304435: Superfluous backslash in the makefile caused problems for Japanese locale.
  • id 304476: A #define directly after a //!< style comment block was not parsed properly.
  • id 304598: Using operator-- in resulted in broken HTML output due to the embedded doxytag that include the end of a HTML comment.
  • id 304623: Spreading a @fn command over multiple lines didn't work anymore without using line-contination characters.
  • id 304666: Attributes of the same class appeared separated with \n in collaboration diagrams
  • id 304751: A define "foo()" was indisguishable from a define "foo" in the XML output.
  • id 304752: XML location tag attribute "file" could have the syntactially wrong value "<generated>" in some cases.
  • id 305334: INPUT_FILTER tag did not work properly anymore due to additional quotes.
  • id 305364: Improved argument matching routine to avoid cases where declaration and definition of functions/methods could not be matched.
  • id 305439: @link command did not work if the link text started with "const" as part of a longer word.
  • id 305638: operator& was only usable with @copydoc if the method was fully qualified.
  • id 305672: Title of a paragraph was not properly rendered for the RTF output when using \par in ALIASES.
  • id 305740: When putting a \b command in a HTML table cell, doxygen got confused by the cell end tag, causing the rest of the table to be displayed wrongly.
  • id 305768: @todo, @bug, @deprecated, etc, did not always end at the next paragraph.
  • id 305770: For overloaded global functions only the first appeared in the file documentation.
  • id 306028: The text after /*@{ and //@{ was treated as source code instead of a comment block.
  • id 306136: Structural commands were executed even though they appeared within quoted text.
  • id 306200: Putting a command like \author before \brief caused the long description to be glued to the \author command.
  • id 306235: Punctuation is not automatically added to brief descriptions for Japanese, Chinese, and Korean anymore.
  • id 306637: @endcond did not properly end a conditional section when @cond was used without label.
  • id 306711: Brief descriptions ended at a new paragraph even if no content was found and @name didn't work without explicit @{ ... @} block commands.
  • id 306851: Under certain conditions bogus argument documentation could appear.
  • id 306943: Certain constructs could get the code parser off track and could lead to memory corruption.
  • id 307579: Fixed argument matching problem where "unsigned int" did not match "unsigned int i".
  • id 307613: Documented struct fields declared as a comma separated list caused the documentation of all fields to be appended.
  • id 307618: Reference in the source file did not appear if a variable was documented with \var and also had a brief description.
  • id 307954: Parse problem when a /* was nested inside a C-style comment.
  • id 308053: It is now possible to put multiple structural commands into a single comment block. Doxygen will treat them as separate comment blocks internally. Example:
                      /** @file
                      File documentation.
                      @defgroup grp A Group
                      Group documentation.
                   */
  • id 308059: &nbsp; was written as "\ " to the LaTeX output instead of ~.
  • id 308400: The parameter names are now used based on whether the documentation is in front of the declaration or definition.
  • id 309022: Conversion operators inherited from a template class did not appear with the proper type substitution.
  • id 309148: The search index page was not correct if DISABLE_INDEX was set to YES.
  • id 309446: Files beginning with one or more digits were not autolinked.
  • id 309461: Made the configure script look for qt in places like /usr/share/qt3 (debian) and /usr/qt/3/ (gentoo)
  • id 309711: Aliases were expanded inside formulas.
  • id 310012: Made the allowed suffixes for constants in the constant expression evaluator of the C-preprocessor more strict.
  • id 310025: Added explicit type conversion to avoid problems with compiler bugs in Sun's Forte 6.1 and Studio 10 compiler.
  • Fixed argument matching issue exposed by the template example in the examples directory.

Doxygen Release 1.4.3

(release date 16-5-2005)

Changes

  • For Developers: Added an abstract interface for language parsers (see src/parserintf.h), which can be used implement new programming language parsers. There is also a manager class, where a parser instance can be bound to a certain file extension.
  • Changed the algorithm for matching function/method declarations against their definitions. The new algorithm should be faster, more powerful, and more accurate.

New features

  • Included new config option HTAGS. When enabled in combination with SOURCE_BROWSER=YES, the source browser of GNU's Global source system (via htags) is used instead of doxygen's own (thanks to Shigio Yamaguchi for the patch).
  • Added language updates for Indonesian, Catalan, Russian, Korean, German, Hungarian, Polish, and Lithuanian.
  • Included update of the .spec file (thanks to Stephane Gourichon).

Bug fixes

  • id 163705: Using \image for latex without caption but with size parameter "width=\textwidth" did not work.
  • id 163783: Items of an autolist could be wrongly indented if put directly after @name.
  • id 163928: Class section was missing in the file documentation.
  • id 164072: When using tag files unneeded external classes could appear in the class hierarchy in some cases.
  • id 169755: page title was omitted in the XML output if CASE_SENSE_NAME was set to NO.
  • id 170592: Using \ref for Objective-C methods did not work if the name contained a colon.
  • id 171795: Refering to Objective-C methods now follows Apple's conventions.
  • id 171878: When JAVADOC_AUTOBRIEF = YES and there was no blank line after a page command, the first sentence did not appear in the documentation.
  • id 171923: Doxygen failed to match arguments for a function documentated out-of-line with @fn and using @relatesalso.
  • id 172118: Doxywizard now shows the version of doxygen it is for.
  • id 172133: Doxygen did not longer ignore preceding C++ comments inside a comment block.
  • id 172217: 'using namespace' declarations with spaces resulted in duplicate namespaces.
  • id 172329: The index of the CHM did not always link to groups correctly.
  • id 172456: Fixed case where doxygen had problems differentiating const and non-const member functions.
  • id 172494: @code blocks were not poperly ignored by the preprocessor in some cases.
  • id 172622: Fixed parse problem for Objective-C method implementations whole declaration part ended with a semicolon.
  • id 172723: Namespace members appeared in the file documentation without proper links to the namespace.
  • id 172778: A single colon after retval caused a crash.
  • id 172783: Doxygen will now put quotes around a filter name before calling it so it will work with filters with spaces in the name or path.
  • id 172818: Improved translation of Todo List to German.
  • id 172937: FILE_VERSION_FILTER failed for filenames containing spaces.
  • id 173034: The \elseif command was not handled properly.
  • id 173110: \ingroup did not work with multiple group labels anymore.
  • id 300204: Doxygen disobeyed Cygwin's 'text/binary mount mode' (thanks to Max Bowsher for the patch).
  • id 300466: Improved the documentation for FILTER_SOURCE_FILES.
  • is 300473: Added a browse button for several of Doxywizard's fields of the expert dialog where a file was expected.
  • id 300532: consecutive @todo items were joined together even if they are in different sections.
  • id 300745: A disabled @cond section did not omit #define documentation.
  • is 301409: autolinks to undocumented files did not work correctly when SOURCE_BROWSER was enabled.
  • id 301437: Fixed a typo in an example that is part of the preprocessor documentation.
  • id 301478: Fixed some cases where cross-references were not properly detected anymore.
  • id 301616: Added "+" or "-" to the Objective-C method lists in the summary section of a class.
  • id 302100: An enum could not be grouped by grouping out of line documentation.
  • id 302158: When enabling SEPARATE_MEMBER_PAGES and CREATE_SUBDIRS the member index contained invalid links.
  • id 302160: list directly after @brief not parsed properly if there were spaces before the @brief command.
  • id 302713: Updated doxytag so it works better with recent versions of Qt3 and the Qt4 beta versions.
  • id 303305: When using \subpage the page hierarchy wasn't reflected in the tree view or .chm index.
  • id 303511: Documenting a class in a namespace with a comment block inside the namespace containing a @class command did not work properly.
  • id 303911: Links from todo list items to Objective-C categories were broken.
  • id 304026: A class/struct/interface can now be turned into something else of the same kind using the proper command (i.e. @interface could by used to turn a class into an interface).
  • Doxygen did not honor the "All members of an interface in Java are implicitly public" rule.
  • An enum of a class could not be documented with @enum from inside a namespace.
  • Fixed problem handling unname member groups (useful in combination with DISTRIBUTE_GROUP_DOC = YES, which didn't work anymore).
  • Updated Doxygen.dsp (thanks to Gerik Rhoden).
  • For a word marked with a #, the # is now also removed when no link could be generated.
  • Using '<' (or '\<') in a <pre> section cause '$<$' to appear in the Latex output.

Doxygen Release 1.4.2

(release date 28-3-2005)

Changes

  • If the class/namespace/file member indexes get too long they are now automatically split over multiple pages (one page per index letter).
  • Internal: I've split the input scanner (scanner.l) in a part that scans the supported programming languages and passes the comment blocks to a second scanner. This should clean up the code a lot and make the handling of structural commands (like \class and \section) more consistent. It is also a first step towards supporting dedicated scanners for other programming languages.
  • Made doxygen parse .as files (Action Script) as Java code.

New features

  • Added a new option SEPARATE_MEMBER_PAGES. When enabled doxygen will generate a separate page for each documented member, instead of putting all members on the class/file/namespace page. An index for other members of the same compound is rendered on the left hand side of the page.
  • Added new command \subpage that can be used to build a hierarchy of pages. For pages this is more convenient than using \defgroup and \ingroup. See the documentation more details and an example.
  • Included man pages for doxygen and doxywizard.
  • Language updates for Czech, Swedish, Russian, Italian, Catalan, German, Brazilian, Korean, Ukrainian, Romanian, Croatian and Chinese,

Bug fixes

  • id 124214: #'s inside a single quoted PHP string could lead to parse problems.
  • id 142339: Doxygen did not using the LATEX_CMD_NAME setting when generating formulas.
  • id 163180: Extension specific filters did not work.
  • id 163940: Labels in dot graphs containing quotes where not escaped properly.
  • id 164198: \overload text was always English, it is now translatable.
  • id 164498: Fixed problem where doxygen ignored the documentation for members of Objective C class categories when put in the implementation section.
  • id 164563: \anchor didn't work inside a <pre>...</pre> section.
  • id 164812: fix compile problem for certain language selections.
  • id 165097: Fixed problem with wrong syntax color in \code section.
  • id 165188: in index.xsd the refid attribute type (xsd:Name) was not broad enough and has been replaced by xsd:string.
  • id 165339: Fixed some issues in the code parser causing missed cross-referencing relations and/or call graphs.
  • id 165428: ALIASES containing @section commands where not handled properly.
  • id 165503: grouped classes did not appear as such in the XML output.
  • id 165793: input filter was applied to \verbinclude.
  • id 165816: Grouped functions referenced via tag files had broken links
  • id 165821: Tag file parser produced bogus errors for nested classes and namespaces and no line number was reported.
  • id 166043: static initializer block in Java made doxygen ignore the rest of the file.
  • id 166161: More documentation to make the \code command more clear.
  • id 166756: Fixed a number of issues with the new comment scanner. It should be much more usable now.
  • id 166782: XML output: Simple types in a namespace are also listed at file scope in index.xml
  • id 166863: @class required fully qualified name even if the comment block was in the right scope already.
  • id 166898: Forward declaring a template class added the template argument to next class defined
  • id 167037: The method names were non-informative in the todo like lists when HIDE_SCOPE_NAMES was set to YES (thanks to Luigi Ballabio for the fix).
  • id 167040: Related functions were listed as members in the todo list.
  • id 167462: Doxygen doesn't recognize references to methods of classes that come as parameter
  • id 168159: Sometimes enums don't have hyperlinks in the source code.
  • id 168243: Doxygen produced an unclear warning when putting multiple @page commands in one comment block.
  • id 168693: A C-style comment ending with a brief description (including dot) and a **/ as end marker, caused strange warning.
  • id 168734: Nested C comments in a \code block confused the preprocessor.
  • id 168754: //@{ was not working with the new comment block scanner.
  • id 168871: \~ did not work in C++ style documentation and aliases.
  • id 168961: Fixed problem parsing arrays of unnamed structs.
  • id 169003: cross-references were make to global variables even if the global variables were hidden by local ones or undocumented/private member variables.
  • id 169069: static C++ variables with initializers were detected as functions.
  • id 169188: static functions were not extracted from PHP classes even though EXTRACT_STATIC was set to YES.
  • id 169495: const Qt properties were not parsed properly.
  • id 169535: spaces after \ref command were not preserved in <pre> context when the command had only one argument.
  • id 169547: Removed bogus warning for friend classes inside classes in an anonymous namespace.
  • id 169549: Previous fixes introduced flattening of the class hierarchy.
  • id 169640: File suffix check for the D language was broken.
  • id 169641: D contructors and destructors were not detected.
  • is 169657: Fixed the way import is treated in D to prevent recursive lockup.
  • id 169784: Objective-C methods with a variable number of arguments were are not parsed properly.
  • id 169789: Images specified via \image are now also copied to the XML output.
  • id 170612: documenting members of nested anonymous compounds did no longer work.
  • id 170833: <code> ended a brief description.
  • id 170835: doxygen didn't match members of classes in unnamed namespaces with their definitions
  • id 170846: template instance friend classes could not be documented externally.
  • id 171260: In some cases doxygen produced an incorrect warning about duplicate detailed descriptions.
  • id 171295: It now possible again to link to a (enum)value of a @retval using #name.
  • id 171376: \else command was not properly parsed if the corresponding \if was disabled.
  • id 171749: Using @relatesalso for functions in a namespace didn't work correctly.
  • It is now possible again to use Thing%s to auto-link to a class Thing and put a non-linked "s" after it.
  • Nested anonymous namespaces appeared as @<num> in the documentation of the parent namespace.
  • aliases containing @brief were not handled correctly.
  • The class name in the HtmlHelp index was linked to the first member function of that class instead of the class itself.

Doxygen Release 1.4.1

(release date 11-1-2005)

Bug fixes

  • id 163058,163401: Due to a memory corruption bug doxygen could crash under certain conditions (the Windows binary was the most sensitive to this).
  • id 163003,163495: Doxygen crashed when GROUP_GRAPH and UML_LOOK were enabled.
  • Book icon in the treeview is now clickable and has the appropriate action (thanks to Will Bateman).
  • Entering the expert dialog in doxywizard now only requires saving the config file if actual changes were made.

Doxygen Release 1.4.0

(release date 31-12-2004)

Changes

  • In the HTML help output (.chm files) the index items with only one subitem are now collapsed into one item (thanks to Antony Pranata for the patch).
  • Some minor tweaks to the style sheet.
  • @relates can now not only be used for functions, but also for other members (i.e. enums, types and variables).
  • Static members do have have explicit "static" in the declaration part of the documentation. This is useful for grouping where it is otherwise not obvious that a member is static.
  • typedefs and enumeration are no longer shown in the "referenced by" list as these are types (based on patch by Antoine Tandin).
  • Make configure script use solaris-g++ by default (Sun's own compiler generates faulty code for doxygen).

New features

  • Included language update for Serbian, German, and Korean.
  • For directories dependency graphs are now generated (controlled by the DIRECTORY_GRAPH switch). For a given directory, the graph will show its parent directory and the sub directories as nested boxes. For the directory and its sub directories it will show the relations with other directories. Relations are based on #include relations of the files contained in the directories. Each dependency arrow has an associated number. This number indicates the number of different #include relations. Clicking on the number will show a page with the exact #include relations (the latter is for the HTML output only).
  • Added \cond and \endcond commands, which can be used to (conditionally) exclude a part of a file. See the manual for an example.
  • Added "-d ExtCmd" debug option, which when used shows what doxygen will execute when invoking an external command (such as dot).
  • New option WARN_NO_PARAMDOC that warns about the absence of function parameter or return type documentation.
  • Nested classes are now listed in their containing class.
  • Extended the \f command to support different environments, i.e. \f{eqnarray*} for equation arrays. The end command is \f}. The documentation has an example.
  • Added support for group dependency graphs (thanks to a patch by Antoine Tandin): New option: GROUP_GRAPHS
  • New option DOT_TRANSPARENT to enable dot graph with a transparent background. Thanks to Maik Hinrichs for the patch.
  • New option FILE_VERSION_FILTER which allows an external tool to provide version information per file, which is then used in the file documentation. Thanks to Maik Hinrichs for the patch.
  • id 162295: New option DOT_MULTI_TARGETS which when set to YES, will run dot with multiple output files if possible. This was added to support older version of dot (<=1.8.10) which do not support multiple output targets. If you use a recent version of dot, you probably want to enable this (default is NO).

Bug fixes

  • id 119868: Removed warning when </li> ended a @c or similar command.
  • id 120367: \~lang didn't work correctly around brief descriptions and certain commands. It is now implemented as an early filter operation like \cond.
  • id 135311: Recursive ALIAS definitions now work again.
  • id 151012: <td> tag in HTML function documentation missed 'class="md"'
  • id 154689: Wrong link to members of namespaces imported from tag files when CASE_SENSE_NAMES is set to NO.
  • id 154700: anchors in pages imported via tag files could not be linked to.
  • id 154755: Files were missing from Doxygen.dsp project file. (thanks to Gerik Rhoden).
  • id 154758: Fixed typedef resolution bug that could crash doxygen (thanks to Gerik Rhoden for the analysis and fix).
  • id 154862: Fixed problem matching array parameters that include template parameters as the array size.
  • id 154863: Fixed parsing problem in the preprocessor when an expression contained the division operator.
  • id 154469: Referring to Objective-C messages was broken if the full scope was used.
  • id 155086: Typedef for member-function pointers of template classes not recognized
  • id 155272: Image filenames in RTF output were not quoted causing problem with custom images whose name contained spaces.
  • id 155322: Fixed parse problem for php code containing '#'.
  • id 155224: Java interfaces did't resolve across packages w/o FQN.
  • id 156411: Return type of a function was not hyperlinked in some cases (typical with nested namespaces or Java packages).
  • id 156445: function seen first in header and doc'ed in source broke autolinking depending on the order of the input.
  • id 157085: Autolinks for const/volatile operators didn't work.
  • id 157229: Upper case letters in \page "<name>" breaks title on page.
  • id 157433: Multi-variable declarations were not parsed properly.
  • id 157485: @todo's inside the body of a function were not handled properly.
  • id 158961: Set EXTRACT_ALL to NO resulted in no directory information unless the directory and files were documented. This is now controlled by SHOW_DIRECTORIES.
  • id 158481: I did some memory usage analysis with valgrind's massif tool, which indicated that a lot of memory was used by QCString objects. This made me decide to reimplement the class and optimize it for memory usage. The resulting class saves a "new" operation of 12 bytes per string object, which seems to reduce the overall amount of memory used by doxygen by a factor 2 to 3! The implementation seemed more expense to use (as it always copies the content instead of sharing it), but the performance has improved nevertheless (probably because "new" is much more expensive operation than copying small strings).
  • id 158637: Links to classes in brief description in index pages were wrong when CREATE_SUBDIRS was set to YES.
  • id 158884: "typedef [something] enum" in IDL was not handled properly.
  • id 159487: @ref's to Objective-C class categories were not possible.
  • id 159973: @todo item in anonymous enum resulted in broken link.
  • id 160642: Fixed problem parsing multi-dimensional C arrays.
  • id 160673: Borland's __property keyword was not handled correctly.
  • id 160824: UML Collab diagram did't show fields in user defined groups.
  • id 160931: Made configure script use /bin/bash as it apparently didn't work with /bin/sh anyway.
  • id 161048: Latex output for directories could contain unescaped underscores when SHOW_DIRECTORIES was set to YES.
  • id 161167: /// \file was not parsed properly.
  • id 161247: If CALL_GRAPH was enabled references were shown even if REFERENCES_RELATION was set to NO.
  • id 161320: An incorrect line number was given for inherited comments which have an error.
  • id 161321: Fixed problem parsing '"' in PHP code.
  • id 161394: Fixed problem with inheritance tree showing the same undocumented base class multiple times.
  • id 161556: Fixed two parse bugs related to member specializations.
  • id 162149: URLs with commas were not handled properly.
  • id 162271: Doxygen was confused by read-only Qt properties.
  • id 162434: void function gave rise to warnings when WARN_NO_PARAMDOC was set to YES.
  • id 162446: Fixed parse problem in code.l, causing it to get off track.
  • id 162517: A @ref command was not parsed properly if the argument between quotes was found on the next line.
  • Dot would not run if doxygen was installed in a path which contained spaces (Mac OS X).
  • Functions inside inline methods were not always cross-referenced anymore.
  • Latex output was broken in some cases where anonymous structs were used.
  • Fixed bug in doxywizard: if the wizard was used some settings were not remembered.
  • Using \n inside an ALIAS definition caused line numbers for source browsing to become misaligned.
  • For included-by graphs files with the same name all had the same node label.
  • The following typedef was not parsed properly: typedef function<void (int,int)> ptr_t;
  • Fixed problems with the WARN_NO_PARAMDOC command.
  • Struct members of the form "enum a b;" where not properly parsed.
  • Fixed a couple of memory leaks.
  • Fixed crash problem on Windows related to the new string implementation.
  • Fixed problem with Visual Studio project files (in wintools).
  • Included patch by Antoine Tandin to fix problem with GROUP_GRAPHS in combination with CREATE_SUBDIRS = YES.
  • Included patch by Mikhail Glushenkov to make HTML look prettier.
  • Parsing operator[]s was broken.
  • Referencing constants via #CONST did not work anymore.
  • Fixed problem handing multiline ALIASES containing @defgroup and @ingroup.
  • Fixed problem handling \n in ALIASES.
  • @section's in non-page documentation blocks did not work.
  • Referencing a group label in a @see section, now shows the group's title i.s.o. the label name (this was already done for @ref).

1.3 Series

Doxygen Release 1.3.9.1

Bug fixes

(ids refer to the old buzilla issue, just use it in the search box of the issue tracker)
  • Due to an error in the packaging script, an old version of doxywizard was bundled with the Mac OS X version of doxygen.
  • Dot would not run if doxygen was installed in a path which contained spaces (Mac OS X).
  • id 151012: <td> tag in HTML function documentation missed 'class="md"'
  • id 154689: Wrong link to members of namespaces imported from tag files when CASE_SENSE_NAMES is set to NO.
  • id 154700: anchors in pages imported via tag files could not be linked to.
  • id 154755: Files were missing from Doxygen.dsp project file. (thanks to Gerik Rhoden for sending an update).
  • id 154758: Fixed typedef resolution bug that could crash doxygen (thanks to Gerik Rhoden for the analysis and fix).
  • id 154862: Fixed problem matching array parameters that include template parameters as the array size.
  • id 154863: Fixed parsing problem in the preprocessor when an expression contained the division operator.

Doxygen Release 1.3.9

Changes

  • Changed the stylesheet so font usage is more uniform and consistent.
  • Changed the colors of the doxygen logo at the bottom of a HTML page. Let me know if you prefer this one or the old one.
  • Improved rendering of template functions and methods in the HTML output (previously these could push the method names to the right side of the page).
  • id 149899: A macro defined in the config file (see PREDEFINED) can now prevented from being undefined (via a #undef in the code) when its value is assigned via the := operator (e.g. PREDEFINED = A(x):=x ).
  • id 150631: if HIDE_SCOPE_NAMES is enabled the scope of a method in a call graph is only shown when the method is of a different class.
  • id 151911: Stylesheet is generated earlier in the process.
  • id 152164, 152166: Improved the way search results are sorted.
  • Changed the way function pointer arguments are represented in the detailed description.

New features

  • Directory information is now extracted by doxygen. Files are automatically grouped by directory. You can use the SHOW_DIRECTORIES option to enable/disable this feature. Added a new command \dir which can be used to document directories.
  • Language updates for Czech, Swedish, Hungarian, Danish, Russian, Italian, German, Chinese, Croatian, and Polish.
  • Applied a patch by Arend van Beelen which adds support for the new features introduced in PHP5.
  • Applied a patch by Ferdinand Wess for better handling of #import statements in Obj-C code.
  • Applied a patch by Adam Treat to add read and write accessors of a Q_PROPERY to the XML output.
  • Arnaud Bercegeay has added platform support for the Atari MiNT OS.
  • Included patch by James Ahlborn which improves the way nested numbered lists are layouted in the HTML output.
  • Included update for Hungarian translation.
  • Added patch to improve support for Debian (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=263542)

Bug fixes

  • id 123772: putting an example inside a group caused broken links to in the example list.
  • id 125737: Fixed link error when a @todo item was placed in the documentation of a variable inside a anonymous union/struct.
  • id 126344: Added initial support for member template specializations.
  • id 126448: Argument passed to input filter was not always quoted.
  • id 126745: Anchors of grouped members were wrong in some cases.
  • id 128585: Lists were not always rendered properly in the man page output format.
  • id 128809: Hidden files (starting with a dot) could not be included with for instance \verbinclude.
  • id 130431: Prevented recursive loop in the call graph when a function declares a local variable with the name of the function.
  • id 131299: \copydoc with argument A#func() didn't work.
  • id 131354: Fixed bug matching function declaration/implementation with using declarations.
  • id 135448: Improved autodetection of Qt by the configure script some more (thanks to Michael Henry).
  • id 135808: Removed reference to doxysearch.cpp from Doxyfile included with the source distribution.
  • id 138629: Included patch to make the HTML output more conformant to the XHTML standard (thanks to Jan Nijtmans).
  • id 144865: Variables in anonymous unions/structs did not appear as data fields.
  • id 148547: Added a workaround for a compile problem in pngrutils.c on AIX 5.2.
  • id 148671: Using "publicsomething" as a name for a base class resulted in the "public" part being stripped.
  • id 148707: <a href> and <br> tags are now allowed inside html headings.
  • id 149023: Fixed template inheritance through typedefs problem.
  • id 149045: Fixed several small problems related to template handling.
  • id 149106: Fixed problem parsing enum declarations.
  • id 149164: Fixed problem in the configure script when used with perl version 5.6 (thanks to a patch by Joerg Schlichenmaier)
  • id 149258: Example sources could be wrongly indented.
  • id 149263: Fixed copy/paste error in HTML_FOOTER documentation.
  • id 149698: Multiple lines of //!< comments were not handle correctly.
  • id 149711: Title of a namespace page/section was not generated.
  • id 149797: Forgot to turn off debug mode for the RTF output.
  • id 149880: Brief description of one variable could appear in the the description of the next under certain circumstances.
  • id 150264: linking to Obj-C protocols did not work.
  • id 150427: "virtual" and "const" were not nicely formatted when followed by unary scope resolution operator (e.g "const ::A")
  • id 150629: Enabling OPTIMIZE_OUTPUT_JAVA did not help for call graphs.
  • id 151457: Fixed compile problem on Solaris 4.2.
  • id 151452: Bug in LaTeX output for anonymous structs/unions whose members have brief descriptions.
  • id 151246: Parse error when using in-body comment blocks.
  • id 152005: Objective-C string constants appear in output with @"@"
  • id 152182: Spaces mess up type in Objective C functions.
  • id 152184: label-less parameters in Objective C functions were not parsed properly.
  • id 152383: Objective-C categories showed methods twice.
  • id 152572: \brief inside an argument description caused a bogus warning.
  • id 152681: Call-graphs were generated inside a table environment in the HTML output.
  • #include after a @file comment made the #include appear on the same line when DETAILED_AT_TOP was enabled.
  • User specified images & stylesheets did not work with CREATE_SUBDIR.
  • Nested using directives did not work for C#.
  • Grouped classes did not always appear in the modules section of the navigation tree.
  • "internal" classes appeared in the XML output.
  • friend classes did no longer appear in the output even when HIDE_FRIEND_COMPOUNDS was set to NO.
  • Fixing bug in code parser when encountering arrays and some other related problems.
  • Array initializers did not show up regardless of the MAX_INITIALIZER_LINES setting.
  • Improved support for classes with the same name but in different namespaces in combination with "using" of namespaces.

Doxygen Release 1.3.8

Changes

  • Rewrote doxywizard. It should be more easy to use and has much better support for running doxygen from the GUI. Feedback is welcomed!
  • Members of a namespace are now also added to the file in which they appear (thanks to Mike Morearty for the patch).
  • Included patch by Mikhail Glushenkov that fixed item 5 on the todo list (titles of html pages are now internationalized).
  • A macro defined in the config file can now be undefined in the source code via a #undef.
  • Optimized calling of dot using multiple -T flags at a couple of places (note that doxygen now requires graphviz >=1.9)

New features

  • New option FILTER_PATTERNS which can be used to specify multiple input filters, and let doxygen select the right one based on matching the source file name with a specified pattern (thanks to a patch by James Ahlborn).
  • id 142939: New commands \protocol and \category which can be used to document Objective-C protocols and categories in the same way the \class command does for classes.
  • Included patch that removes some cosmetic annoyances in the man page output (thanks to Chris Croughton).
  • Added internationalization support for Afrikaans and Lithanian. Included language updates for Dutch, Czech, Italian, Brazilian, Croatian, Japanese, Norwegian and Russian.

Bug fixes

  • id 120810: \code fragment has links first time, but then no more.
  • id 124214: Fixed parse problems with single quoted strings in PHP.
  • id 135508: Using a namespace in C# did not get interpreted correctly.
  • id 137842: Using @todo/@bug/... and disabling the generation of the list, still caused a colon to appear in the output.
  • id 138075: A comment block containing a \code block with C style comments was not properly parsed.
  • id 138307: Fixed parse problems with single quoted strings in PHP.
  • id 138394: C style comments placed on the same line after a macro definition appeared as part of the macro's value.
  • id 138429: Fixed language setting for HTML output when using traditional chinese.
  • id 140259: Using @dotfile in a comment block could cause broken @refs to sections defined after the @dotfile command.
  • id 141915: Fixed a couple of problems with the RTF output.
  • id 141918: Fixed a couple of problems with the RTF output.
  • id 142118: Fixed compile issue with the mingw compiler.
  • id 142288: Doxywizard crashed when started (fix was applied to version 1.3.7 as well).
  • id 142741: Links in todo/bug/... lists were broken if CREATE_SUBDIRS was enabled. Same was true for the built-in diagrams.
  • id 142925: Autolinking to a member of a class from a page inside a namespace did not work.
  • id 142940: Due to a misplaced break statement a examples included with \example was shown twice in the output.
  • id 143107: Made some cosmetic changes to the HTML and HTML output, (thanks to David Baird for the patch).
  • id 143340: Fixed autolink problem for names ending with a colon or a <br> tag.
  • id 143412: Fixed problem parsing Objective C class methods.
  • id 143413: Fixed problem parsing Objective C root classes.
  • id 143593: Under certain conditions the XML output could contain a reference to a non-existing class.
  • id 145295: Variable of a templated type was mistaken for a function.
  • id 145583: Fixed problems handing formulas and graphs defined using @dot in combination with CREATE_SUBDIRS = YES.
  • id 147253: Quotes in a class initializer could confuse the source code parser.
  • id 147425: The class diagram did not show the relation to the template specialization when inheritance was done via one or more typedefs.
  • Fixed case where template classes "used" via typedefs were not properly shown in the collaboration diagram.
  • Variables explicitly declared external were reported being defined at the place they were actually declared external.
  • Fixed bug in the XML schema for enum values with initializers.
  • Documentation of a member group did not appear in the XML output (thanks to Chris Croughton for the patch).
  • Command line build process failed under windows if the name of the directory in which sources are located contained spaces (thanks to Mikhail Glushenkov for the patch).
  • Improved cross-referencing to methods of a template instance variables (thanks to a patch by Jeff Apple).
  • Included a patch by Enrico Schnepel that puts the same output files in the same subdirectories (with SUBDIRS = YES) for subsequent runs (on slightly modified input files) and also renumbers the dot nodes so they are only regenerated when actually changed.
  • Unsupported HTML end tags and unsupported begin tags with attributes are now copied to the output as is.

Doxygen Release 1.3.7

Changes

  • The \param command now has an optional input and/or output attribute. The syntax for an input & output parameter is for example: \param[in,out] name Description.

New features

  • Added new option CREATE_SUBDIRS which when enabled makes doxygen distribute the generated output evenly over 100 subdirectories.
  • Added support for Qt's properties (i.e. Q_PROPERTY) which can be documented by putting a documentation block in front of the macro or by using a comment block with the new \property command.
  • Added new commands \manonly and \endmanonly to enter man page specific text and commands in the generated man pages (thanks to Carsten Stiborg).
  • Included new python based translation report script, which now replaces the old perl based version (thanks to Petr Prikryl).
  • Improved parser to also support parsing of Objective-C implementation files.
  • Added new config option EXTRACT_LOCAL_METHODS which can be used for Objective-C code to extract methods definition in the implementation section that are not present in the interface.
  • Added new config option STRIP_FROM_INC_PATH which allows to specify a list of paths that, if matched, will be striped from the #include statement in the generated documentation of a class.
  • Added new command \includelineno with works as \include except it will add line numbers to the code (thanks to Giancarlo Niccolai for the patch).
  • Added BeOS support, thanks to a patch by Mark Hellegers.
  • Included update for the French translation, thanks to Jacques Bouchard.

Bug fixes

  • id 133388: Fixed problem parsing '"' inside multi-line C++ style comment blocks
  • id 134265: Doxygen now outputs unrecognized HTML tags instead of removing them (thanks to Éric Malenfant for the patch).
  • id 134869: When HIDE_SCOPE_NAMES was set to NO, the methods of an Objective-C class did not have the right name.
  • id 134876: Fixed problem with forward declaration of a protocol in Objective-C.
  • id 134647: using a parameter name ending with "const" was not accepted by doxygen.
  • id 134639: Fixed parse problem in the preprocessor.
  • id 137398: add \% command to the documentation.
  • id 137730: Fixed problem for man pages with non numeric extension (thanks to a patch by Joe Schirmer).
  • id 138652: Line numbers for defines with /* */ comments were wrong (thanks to J. Noack for the patch).
  • id 139591: Fixed problem parsing nested template arguments with comments.
  • id 140012: a variable could appear in a group twice if it was declared externally somewhere.
  • id 140540: Fixed problem parsing "@" in the source code parser.
  • id 141133: Spaces were stripped in default arguments such as f(const char *t=" \t")
  • id 141364: Members of an anonymous nested structure had no brief comment and no link to the detailed description if available.
  • Fixed recursive lockup problem that was caused by two or more namespaces using each other (i.e. a cycle in the usage relation).
  • Included patch by Erik Zeek to allow the explicit setting of QTDIR to override the "search for Qt" algorithm in the configure script.
  • Parsing of tag files produced for Objective-C code now works.
  • Objective-C: Improved hyperlinking of source code, handling of prototypes and the list of all members of a class now also contains the members of class categories.
  • Third argument of @class was ignored (thanks to Mahadevan for the patch).
  • Fixed problem with collaboration diagrams for template instances whose template parameter list contained qualified scope names (e.g A<B::C>).
  • Removed bogus warning about undefined documented function for classes that were made friends of other classes.
  • Spaces where not preserved for @code block inside a @example block.
  • Undocumented dependency relations where not shown in some cases even though HIDE_UNDOC_RELATIONS was set to NO.
  • Fixed two bugs that resulted in invalid HTML output.
  • For Unix the default FILE_PATTERNS did not include upper case versions such as .C and .H
  • Fixed incorrect character encoding problem for the generated tag files.
  • Fixed problem that could lead to memory corruption/crashes.
  • Included a patch by Bernhard Rosenk to fix a compile problem with doxywizard using a recent Qt version.
  • Call-graphs were missing if a file name ended with ".C" and K&R function definitions were used.
  • Improved source code generation performance when there are many typedefs with the same name in different scopes.
  • Linking to a section resulted in the wrong label in the XML output.

Doxygen Release 1.3.6

Changes

  • For projects with many nested classes, namespaces, typedefs and using statements, doxygen could become very slow. This should now be improved significantly.
  • Made some cosmetic changes to the HTML output (thanks to Ben Harper).
  • STRIP_FROM_PATH now by default strips the path from which doxygen is run (i.e. / on Unix)

New features

  • Make a start with adding support for Objective-C. Doxygen can now parse Objective-C header files (including protocols and categories). Thanks to Apple for donating hardware.
  • Include a patch by Hauke Duden which adds preliminary support for the D programming language (see http://www.digitalmars.com/d).
  • C Comments inside #defines are now preserved. This could be useful to document boilerplate code.
  • Included patch to replace tabs by the proper amount of spaced inside code fragments in the XML output (thanks to Alexandr for the patch).
  • Included Gerik Rhoden's fixes for the .dsp/.dsw files found in the wintools dir.
  • Examples (documented via \example) are now included in the XML output.
  • New option SORT_BRIEF_DOCS which when enabled will list the declaration section of the documentation (with the brief descriptions) in alpabetical order, instead of declaration order (thanks to Akos Kiss for the patch).
  • Included patch for Hungarian translation (thanks to Akos Kiss) and for the Serbian language. Added support for mixed Korean/english (thanks to Jihoon Chung). The translator report script was also updated (thanks to Petr Prikryl)

Bug fixes

  • id 120070: Included workaround for build problems with RedHat 9 (thanks to Tim van Holder)
  • id 128054: Fixed rare case where doxygen crashed due to a recursive lock-up.
  • id 131404: Fixed problem cross-referencing PHP member functions.
  • id 131434: Clarified confusing warning message.
  • id 131446: Extra attributes of a <a href> tag (like target) are now copied to the HTML output.
  • id 132535: Fixed problem with generating man page output for groups with brief descriptions.
  • id 132772: Fixed compile problems on HP-UX using acc compiler (thanks to Clyde Gerber).
  • id 133300: Fixed missing cross-reference to "c" in constructs such as "a[b].c"
  • id 133482: Fixed spurious cross-references to member function which was shadowed by a parameter name.
  • id 133986: Attributes of the <img> tag where not written to the HTML output.
  • id 134123: Fixed problem with multiple arrows between nodes in the graphical class hierarchy.
  • \ref in dot graphs was not working correctly (thanks to Eoin MacDonell for the fix).
  • Grouped pages in the XML output did have the same id as their group.
  • Fixed problem handling environment variables inside a quoted string in the config file (e.g. "/My Path/").
  • Using "\mainpage notitle" caused the "notitle" to appear in the treeview.
  • Page references where wrong in the latex output when PDF_HYPERLINKS was disabled.
  • Words inside a hyperlink could be hyperlinked, resulting in invalid HTML.
  • Fixed parse error handling function pointer arguments in K&R-style code.
  • Doxygen could crash when it failed to enter a directory.

Doxygen Release 1.3.5

Changes

  • Doxygen now only regenerates a dot image if it has actually changed! This could significantly reduce the time of any run after the first. Checking if a graph has changed is done by computing an md5 hash for the graph description which is then stored along with the image generated by dot and compared in subsequent runs.
  • Improved the way lists look in the man pages (thanks to Silke Reimer).

New features

  • Added support for parsing K&R style function prototypes. Please try it on your favourite legacy C project and report any problems.
  • Included languages updates for Traditional Chinese, Danish, German, Korian translation.
  • id 120464: doxygen's XML output does now assign a prot="..." attribute for nested classes (thanks to Paul Ross for the patch).
  • Added new configuration switch XML_PROGRAMLISTING to enable/disable generating source code listings as part of the XML output (thanks to Paul Ross for the patch).
  • Added new config option ABBREVIATE_BRIEF which makes the abbration process of brief descriptions configurable and language independent (thanks to Jake Colman for the patch).
  • The alphabetical class list now comes with a quick index (thanks to Marcin Zukowski for the patch).
  • An XSLT script "combine.xslt" is now generated in the XML output directory. It can be used to combine XML files into one big file.
  • The source code is now indexed and thus searchable when the source browser and search engine options are enabled.
  • Added "dist" target to the makefile (thanks to Erik Zeek)

Bug fixes

  • id 119778, 123385: Documentation in the body of a function could not be combined with a detailed description before the declaration.
  • id 122852: References to grouped functions were wrong in certain cases.
  • id 123031: problem matching f(const char) with f(const char cc).
  • id 123140: typedef'ed enums whose tag name was the same as the typedef name did not appear in a group.
  • id 123145: Under certain circumstances an assertion failed message was produced.
  • id 123206: Fixed problem in qtools when opening files in text mode.
  • id 123322: The search page did not honor DISABLE_INDEX.
  • id 123420: Functions with a brief description caused bugus </em> tags in the HTML output.
  • id 124114: typo in the generated PHP search script could cause errors in the search result page.
  • id 124187: Setting EXTRACT_LOCAL_CLASSES to NO, could result in a broken "More..." link in documented local classes inside a namespace.
  • id 124214: Fixed problem in search indexer, which could crash doxygen (thanks to Daniel Koebbing for the patch).
  • id 124545: fixed a number of problems in the generated search script.
  • id 124815: Fixed compile problem in filedef.h for aCC on HP-UX.
  • id 125369: Fixed inconsistency of showing files in the tree view (thanks to a patch by Alexey Neyman).
  • id 125424: Font size was not reset after @endcode or verbatim block in the latex output.
  • id 125654: Character encoding was not correct for html help treeview (thanks to Sawada Kentaro for the fix).
  • id 125367: Fixed problem with producing links in case files with the same name (but in different directories).
  • id 126968: Fixed problem parsing verbatim string literals such as @"\" in C#.
  • id 127094: Fixed character encoding problem in the XML output.
  • id 131364: Fixed parse problem when initializing a function pointer.
  • Links to classes, files, namespaces and groups in the search results were broken (missing file extension).
  • Doxygen logo is now transparent even when viewed with IE.
  • Using a character with ascii code 0x06 in a comment block could crash doxygen if the preprocessor was enabled.
  • Fixed problem handling conditional commands and grouping (thanks to Silke Reimer for the patch).
  • Fixed problem using \dotfile in combination with RTF output (thanks to Vegard Larsen).
  • Fixed several problems related to the new md5 hash feature.
  • Undocumented functions referenced in a comment block were linked to anyway.
  • Fixed a number of typos in the config file documentation (thanks to Boaz Kelmer)
  • Workaround for toupper() bug for Russian (thanks to cav@cryptopro.ru)
  • Fixed problem that HTML image maps ended up in the RTF output.
  • Fixed bug in code fragment parser that could cause memory corruption in certain cases.
  • Fixed problem matching definition and declation of functions, which could cause bogus warnings for functions with the same name but in different namespaces.
  • Using "/// @file" to document a file quickly was not possible, while "/** @file */" did work. Now both work.

Doxygen Release 1.3.4

Changes

  • Rewrote the search engine. The doxysearch CGI binary has been replaced by a PHP script which is generated by doxygen. Also the index file is now generated by doxygen and requires way less memory. This should make it much easier to use the search facility. All that is required is a web server with PHP 4.1 or higher. Please report any problems you find.
  • Changed the way class names are resolved. This can result in a significant speedup for projects that use namespaces and typedefs (including Java projects). Thanks to Edmund Green for the performance analysis and ideas.

New features

  • Added support for the &oslash;, and &Oslash; character entities.
  • Added language updates for Korean, Swedish, German, Russian, Croatian, Brazilian, Spanish, Japanese, French and Italian.
  • Added new \relatesalso command, which can be used to put a file member also in the documentation of a class (thanks to Ian Scott for the patch).
  • Added support for pseudo IDL files with the .pidl extension (as used in TAO). Thanks to Éric Malenfant for the patch.
  • Added new commands \dot ... \enddot to include a dot graph in a comment block (thanks to a patch by Eoin MacDonell). Inside the URL attribute of a node you can use \ref to make links to documented items. See the documentation of the \dot command for an example.

Bug fixes

  • Fixed recursive lock-up problem handling "using" of namespaces.
  • Doxygen incorrectly translated \\htmlonly and \\latexonly to \verbatim in the output.
  • Using the -d Time option caused: message.cpp<100>: Internal error: Requested unknown option QUIET at the end of the run.
  • Static members appeared in the todo list even if EXTRACT_STATIC was set to NO.
  • Fixed problem matching f(const int *i) with f(const int * const i),
  • Fixed case where a variable could get by assigned a bogus "()" in the heading of the detailed description.
  • Fixed problem handling extern"C" (without the space).
  • \ref file.c ended up as file::c in the output.
  • Special characters in generated texts were not always translated into proper LaTeX commands in the LaTeX output.
  • Fixed problem parsing "const ::Class *func()" and "static ::Class *func()". The keywords were seen as namespaces. due to the use of more than one const keyword.
  • Fixed two bugs in compound.xsd schema, thanks to Ademar Aguiar.
  • Fixed some more problems linking typedefs in combination with namespaces.
  • id 120637: Fixed parse problem handing character literals such as '"' inside the initializer list of a constructor.
  • Fixed file handle leak when INLINE_SOURCES was set to YES.
  • Fixed problem handling Java packages (Internal inconsistency warnings).
  • Fixed problem preprocessing @verbatim blocks containing C comments.
  • Fixed problem handling preprocessor statement just before a function body when ENABLE_PREPROCESSING was set to NO.
  • id 122457: INLINE_SOURCES feature was broken (only showed the first line)

Doxygen Release 1.3.3

New features

  • Included update for VC++ 6.0 project/workspace files (can be found in wintools). Thanks to Simon Goodwin & Johan Eriksson.
  • Added new debug flag "-d Time" which will report the elapsed time for each message printed, and will also show the total running time along with the time spend on external tools such as dot. Note: If you have a project that takes doxygen a long time to process, please send me the output so I get a global idea where to optimize.
  • New option SUBGROUPING which can be set to NO to have \nosubgrouping for all classes (thanks to Torben Koch for the patch).
  • Added XML schemas for validating the XML output, and to help writing XSLT files. The generated index.xml now has a complete schema, the compounds not yet. Thanks go to Alexej Humbach for doing a lot of the work. Note that a couple of "id" attributes in the XML output have been changed to "refid", and section tags are now nested.
  • Included language updates for Traditional Chinese and Japanese.

Bug fixes

  • Doxygen crashed when parsing a comment block with only a \mainpage command.
  • Fixed problem matching namespace members.
  • Fixed scanner push back error for ALIASES with long definitions.
  • Default main page was wrong if DISABLE_INDEX was set to YES.
  • Argument of type array were not properly parsed in Java, causing problems when documenting them with @param.
  • \image with "" as caption didn't work.
  • If the last \section in a comment block was empty, doxygen produced warnings.
  • Call graphs were only generated if REFERENCES_RELATION was set to YES.
  • Link could be wrong if a member's name was found in multiple namespaces.
  • A function returning "struct s *" caused a bogus recursion relation in the call graph.
  • Improved handling backslashes for the perlmodgen (thanks to Miguel Lobo).
  • Page anchors did not appear in the tag files.
  • \ref's to grouped pages were not generated correctly.
  • Fixed parse bug when putting \image inside a HTML table.
  • Made the documentation parser more tollerant to spaces inside HTML commands.
  • Doxygen now issues a warning if invalid commands are used inside a single-line C++ comment (such a @see and @image).
  • Fixed parse problem for the semicolon in the following: Class A : a(";") {};
  • Doxygen now resolves links to classes imported in a namespace via using declarations or directives.
  • Doxygen now issues a warning when @code, @verbatim, @htmlonly, or @latexonly are not properly terminated.
  • Fixed "Internal inconsistency" messages when parsing Java packages.
  • A member did not appear in its group if it was first declared without documentation and then defined with documentation (with \ingroup).
  • The <caption> tag was put at the end of a <table> in the HTML output, while it should be the first tag after <table>. This is now corrected.
  • In the LaTeX output, the page references were missing for the links in the documentation when PDF_HYPERLINK was set to NO.

Doxygen Release 1.3.2

Changes

  • The main page (\mainpage) can now be completely customized, by using no project name or using "notitle" as argument for \mainpage.
  • Changed the look of the quick index on top of each page using CSS.

New features

  • Added new command \callgraph which can be put in the documentation of a function to get a callgraph. In the config file a new option CALL_GRAPH is added which can be set to YES to enable callgraphs for all functions (note that this will slow doxygen down!).
  • Added new boolean config option UML_LOOK which can be enabled to give class and collaboration diagrams a more UML conformant look (thanks to Dominick Paniscotti).
  • Added new commands \xmlonly and \endxmlonly which can be paired to form blocks of text that only appear in the XML output.
  • Added sub-indices for the lists of all class/file/namespace members to filter out just of type of members.
  • Included language update for Czech, Italian, Portuguese, and French.

Bug fixes

  • Doxygen could crash if a namespace and a class with the same name were found in the global scope.
  • Fixed problem handling multiple \xrefitem's in one comment block (could crash doxygen).
  • Added check for recursive group relations to prevent lock-up/crash while generating the group index.
  • Doxygen could crash if a group contained only undocumented members.
  • Putting a #include inside a function body would cause the line numbering to be off.
  • Fixed cause of a failed assertion when @retval or @param was the last text in a comment block.
  • Improved scope detection for code parser when dealing with examples (imported via \example).
  • Fixed preprocessor bug handling "#if!defined(VALUE)" (note the lack of a space).
  • Added warning if @subsection, @subsubsection or @paragraph were found in the page context.
  • French translation was broken (probably due to a dos2unix accident).
  • Underscores inside a <pre> section did not appear correctly in the LaTeX output.
  • Fixed several typos in the generated config file (thanks to a patch by Justin Zaglio)
  • Formula's inside comments directly in front or behind function arguments did not work.
  • Fixed code parser problem when //<! was nested in a normal C comment.
  • Included a number of fixes for typos found and corrected by Justin Zaglio.
  • For #define values that were constant strings, doxygen tried to link the text inside the string when shown in the documentation.
  • The source-browse parser did not link to class variables used in inline function if the variables were defined before the functions.
  • The first paragraph after a <h1> or similar heading was not put in a paragraph context in the generated output.

Doxygen Release 1.3.1

Changes

  • A multi-line C++ comment block now has to be aligned in order to make doxygen treat it is one block. As a result the following is treated as one comment block:
               int var; //!< variable.
                    //!  more info about var.
           int anotherVar;
    while this results in two comment blocks:
               int var; //!< variable.
                    //! info about second variable
           int anotherVar;
    Hopefully this will give more intuitive results. Tabs are replaced by spaces according to the value of TAB_SIZE in the config file.
  • Modified the CSS to change the look of the HTML output, and made the stylesheet a little more powerful (thanks to a patch by Ben Harper).
  • Formula alignment in the HTML output is now controlled via CSS (thanks to a patch by Vassilii Khachaturov).
  • The option TEMPLATE_RELATIONS now defaults to NO.

New features

  • Added new command \xrefitem which enables user-defined commands that act like \todo and \bug, i.e. produces a related page containing all items, which is cross-referenced with the documentation blocks where the items are placed.
  • Added support for package scope in Java.
  • Added alt attributes to user included images in the HTML output (thanks to patch by Vassilii Khachaturov)
  • Added XML_OUTPUT option to allow a user defined location for generating XML output (thanks to a patch by Emmanuel Guerin).
  • Included language updates for French, German, Czech, Italian, and Brazilian.

Bug fixes

  • Occurrences of <span> and <div> tags in the documentation were not properly handled.
  • Fixed problem parsing the following pattern "namespace { .... } typedef ....", which could crash doxygen if IGNORE_PREFIX was used.
  • The project name is now put in front of each title of a HTML page for easier bookmarking.
  • In C# enums, classes and structs without (optional) ; were not properly parsed.
  • Though still not perfect, I Improved the way namespace aliasing is handled. It should now work inside other namespaces and for computing class and usage relations.
  • Fixed problem documenting typedefs of function pointers using \typedef.
  • Links to groups imported via tag files were broken.
  • Fixed problem resolving class relations for nested classes within namespaces.
  • Static members can now be documentated in a separate file using \fn as long as they have unique names. If the names are not unique the documentation must be located in the same file (as was required before).
  • In arguments and return types of the form NA::A were not linked if NA was a namespace alias to a documentation namespace and A a documented class name.
  • Matching a declaration f(NA::C c) with f(C c) did not work if NA was a namespace alias.
  • Undocumented classes had wrong links in the treeview frame.
  • Pages whose title contained < or >'s were not written correctly to the tag file.
  • Fixed preprocessor bug: "a##b" was not correctly expanded if argument "a" or "b" was empty.
  • Putting \todo and friends inside the documentation of enum values did not result in an entry on the todo list page.
  • Fixed some problems compiling with versions of flex >2.5.4, but also added a #error if these are used, since they produce incompatible parsers (a bug report has been filed, but no feedback was received).
  • Characters >=128 are now written as &#nnn; to the XML output. (thanks to a patch by Michiel Ouwehand).
  • The table row backgroup color of the "all member" list was hard-coded in the HTML output. This is now controlled by the stylesheet.
  • Fixed problem handling omission of the optional arguments of the \image command.
  • Enabling HIDE_IN_BODY_DOCS did not work properly if C++-style special comments were used inside the body of a fucntion.
  • Fixed problem cross-referencing variables used as a guard (i.e. if (var) ...)
  • Setting ENUM_VALUES_PER_LINE to 0 caused a division by 0 error.
  • Autolinking did not work for members that were grouped and imported via tag files.
  • The divide symbol "/" did not appear in the output for array/define initializers
  • Fixed paring problem parsing "operator <b>new</b>" in the documentation.
  • Fixed problem with resolving template relations (as reported by Kris Thielemans).
  • Members in the todo list were not shown correctly (with dot separators) if OPTIMIZE_OUTPUT_JAVA was set to YES.
  • Fixed problem handing "class A { public: A::f(); };" which is accepted as valid C++ by a number of compilers.
  • Putting a /* inside a C-comment without matching */ caused the preprocessor to ignore the rest of the file.
  • Improved the way typedefs are resolved.
  • Fixed parse problem for the following PHP code: $color='#FFFFFF'
  • Using @dontinclude could cause broken LaTeX output.
  • Links to examples (using \example) were broken.
  • Class members appeared twice in the index of the latex output.
  • Fixed problem putting \if..\else..\endif around a pair of \defgroup's

Doxygen Release 1.3

Changes

  • Increased internal buffer size from 16K to 256K for a number of scanners, so the "input buffer overflow, can't enlarge buffer because scanner uses REJECT" error should occur less easily.
  • Style commands like \e, \a or \c will now be terminated when one of the characters in the following string is found: ".,()[]:;?", example: "a point (consisting of @a x and @a y)"
  • Setting OPTIMIZE_OUTPUT_JAVA to YES, will automatically set INLINE_INFO to NO.
  • Quotes strings (like "\0" or "%H.%d.%Y") are now considered to be words (hence the \ and % do not have to be escaped).

New features

  • Added new configuration option USE_WINDOWS_ENCODING which can be used to select windows specific character encodings for some languages. (thanks to Piotr Kaminski).
  • Added new configuration option LATEX_HIDE_INDICES which can be used to suppress the various indices that are normally generated in the LaTeX output (thanks to Ken Yarnall for the patch).
  • Added new option MAX_DOT_GRAPH_DEPTH to set the maximum distance from a root node after which the class or include graph will be truncated. Setting this to a low value should considerably reduce the time doxygen needs on large projects.
  • Included updates for French, Korean, Polish, Croatian, and Danish translations.
  • Access to title of user defined user defined sections is now possible from the doxmlparser.
  • <div> and <span> commands can now by used in the documentation. Their effect is limited to the HTML output though (thanks to Frank Schimmel for the patch)
  • Added inline, virtual, explicit and mutable attributes to XML output (thanks to patch by Michiel Ouwehand).

Bug fixes

  • Fixed out-of-memory bug for files containing using directives and including themselves (indirectly).
  • Doxygen could crash if two \todo-like commands appeared on the same line.
  • Non-inline cast operator was not properly parsed.
  • Fixed preprocessor problem with parsing /*//*/
  • URL's in the docs using <a href=""> caused a nested link.
  • "using namespace A::B;" confused the code parser.
  • Interface keyword was not recognised in C# (thanks to Onorio Catenacci for the patch).
  • Line counting was incorrect when parsing multi-line formulas.
  • \section's in a \mainpage are now correctly numbered in the LaTeX output (nesting level was one too deep).
  • \ref to lower case names did not work (thanks to Herman ten Brug for the patch)
  • escaped quotes (") were not preserved in the config file when it was updated (thanks to Herman ten Brug for the patch).
  • PHP related fixes contributed by Vaclav Dvorak:
    • #-style comment handling,
    • adds (problematic) support for define() constants,
    • adds ".phtml" as a supported file extension for PHP code (not very common, but still...),
    • fixes handling of code like "include 'file.inc';" (was parsed as a variable definition),
    • removes the variable insidePHPCode (was not needed),
    • fixes spaces in function argument lists (the '$' was the problem).
  • Functions documented with \fn did not get transferred to declaration or definition (depending on where the comment block was put).
  • If a function definition was documented and grouped the declaration was not even if the same documentation block was used for it.
  • Fixed bug in code parser that could crash doxygen under certain conditions.
  • Fixed some spacing problems in the LaTeX output (thanks to patches by Roberto Bagnara).
  • Mail address containing the '+' character were not properly parsed (thanks to Jon Parise for the patch).
  • Fixed duplicate/wrong id's of grouped members in the XML output.
  • Docparser reported wrong error if unknown command was found inside \c (or similar command).
  • Preprocessor got confused when parsing a special comment as part of a #define and containing a ' or ".
  • subgroups defined with @defgroup could be reordered if @addtogroup was used.
  • Projects name was not shown as the root of the treeview anymore.
  • Links to pages imported via tag files were broken in the treeview frame.
  • removed leading and trailing whitespace within a \code ... \endcode block.
  • Constant class variables with constructor were parsed as functions.
  • Autolinks of the form class#member were not shown as class::member or class.member in the documentation.
  • Fixed problem parsing things like echo('!$tar' . '"'); (PHP).
  • Fixed problem distinguishing f(__true_type) and f(__false_type)
  • Fixed lack of translation of some latin2 characters in the latex output (thanks to Aleksander Kupiec for the patch).
  • Group members appeared in the treeview or html help index regardless if they were documented.
  • The treeview page was not rendered with the right character set (it was always English).
  • Explicit template instantations appeared as a variable in the output.
  • Java instance and static initializer blocks are now correctly parsed and can be documented.
  • Fixed bug in the LATEX_HIDE_INDICES option.
  • Fixed bug parsing simple lists (last word or token could get repeated).
  • \section titles did not appear in the RTF output.
  • Tables were not correctly rendered in the RTF output.
  • Verbatim fragments were not properly rendered in the RTF output.
  • Fixed some cases where collaboration relations were not visible due to typedefs.
  • Fixed some compiler warnings that occurred with more recent versions of gcc.
  • Auto-links to files were shown with as file::c instead of file.c.
  • @ref namespace::class was not parsed correctly.
  • Undocumented enums could appear in the declaration part of the output even though HIDE_UNDOC_MEMBERS was set to YES.
  • \anchor tags now appear in the tagfiles as <docanchor> again.
  • Hyperlinks in the LaTeX were broken in some cases.
  • Fixed case where a global variable was not linked from within a function body.
  • Include dependencies graph was shown at the place where the "included by" graph should have appeared.
  • A // comment following by a //! comment was not handled properly by the source browser.
  • If the definition of nested class was found before the definition of the outer class, its name was displayed without scope.
  • If a parameter of a prototype was documented (with a separate documentation block) and the name of the parameter in the definition was different, the wrong name could be shown in the documentation.
  • Fixed bug handling \line, \skipline, and \until

Doxygen Release 1.3-rc3

Changes

  • Rewrote the implementation of the tree view feature (see GENERATE_TREEVIEW). The new implementation should be much faster, but does require a browser that supports JavaScript, DHTML, and CSS. Please report any problems you find.
  • Changed the way dot is launched under Linux/Unix (vfork i.s.o. fork) so less memory is required (thanks to a patch by Thorsten Behrens).
  • Changed "Methods" to "Member Functions" in the output (thanks to patch by Tom Emerson).
  • STRIP_FROM_PATH now ignores the exact casing of characters, which makes things simpler on Windows.
  • Style modifiers such as <b>, <em> and <pre> are now capable of spanning multiple paragraphs.
  • Made some improvements to the documentation, including a diagram showing the information flow between the doxygen and various other tools (see the getting started section).

New features

  • Added support for comment blocks generated by Rational Rose's ANSI C++ code generator (thanks to a patch by Martin Beaudoin).
  • Included language update for the Serbian and Japanese.
  • Included patch by Ryunosuke Satoh to reduce size of the executable when building for Cygwin.
  • Tables in the docs were ended with a bogus row in the LaTeX output.
  • A \link to a member variable that is grouped using \defgroup can now be done from another member without specifying the full scope.

Bug fixes

  • @addindex now works on the whole line instead of a single word (as was already suggested in the docs).
  • source code line in the XML output didn't escape special characters like & anymore.
  • Fixed small bug in german translation (thanks to Jens Seidel).
  • e-mail addresses with multiple dots got truncated when linked.
  • Attributes of html commands with value "" where not properly parsed causing the image in the legend page not to appear.
  • Fixed excessive memory usage in the "Building member list" phase while using todo/test/bug items (thanks to Gerik Rhoden).
  • Fixed parsing problem in PHP. Doxygen was expecting classes to end with a semicolon (thanks to Jaime Uriel Torres for the patch).
  • Using <dt> with also adding a <dd> caused a parse error while it is legal HTML.
  • The identifier "package" in C/C++ code was wrongly interpreted as a Java keyword.
  • \todo item at the end of a comment block caused "unexpected character" error while generating the XML output.
  • \ref did not work when the argument was a file name.
  • \ref and \link are now allowed inside a <td>..</td> section.
  • Argument matching routine was not able to distinguish between f(long n) and f(long long n).
  • Classes were listed in the alphabetical index with full scope.
  • \copydoc did not work recursively for members.
  • Fixed a number of small memory leaks (I used ccmalloc to detect them).
  • The HTML command <SUP> was not parsed correctly if it was prefixed with an identifier (i.e. blah<SUP>).
  • HTML tags were not properly parsed if there was a linebreak after the tag name.
  • The \~id command was not working properly. The section was always generated regardless of the OUTPUT_LANGUAGE setting.
  • id attribute was missing from the sect tag in the XML output.
  • Links to files or file members could be wrong if SHORT_NAMES was set to YES and the file was imported via a tag file.
  • Attribute lists inside an enum in an IDL file were not properly parsed.
  • Fixed problem in code browser that prevented linking to global variables defined in other files.
  • When putting a "using namespace X" in a header file doxygen did not recognise this in files that included the header file.
  • Fixed bug in parsing sections without title.
  • doxytag did not include anchor in the search index. Thanks to Joerg Schlichenmaier for the fix.
  • Using an auto-list as an argument of @todo and friends did not work.
  • A class with all members in a section grouped could result in broken LaTeX output (empty CompactItemize list).

Doxygen Release 1.3-rc2

New features

  • Added support for importing members via using declarations.
  • Anchors and sections (and references to them) are now supported in all comment blocks, not just \page blocks.
  • Dot files imported via @dotfile now produce images maps in the HTML output. Use the URL node attribute in the dot file to make a link (thanks to Marco Dalla Gasperina for the patch).
  • New config option WARN_IF_DOC_ERROR which allows documentation problems to be shown, while other warnings (such as warnings about undocumented members) can be hidden (thanks to Miguel for the patch).
  • Included language update for German and Italian.
  • Added support for &tm; (trademark) and &reg; (registered).
  • Added "static" attribute to methods in the XML output to ease parsing.

Bug fixes

  • A <pre> .. </pre> section with included blank lines causes warning about missing </pre> marker.
  • "typedef enum { a };" confused doxygen's parser, while most compilers seem to accept it without warnings.
  • \deprecated item alone in a comment block caused a crash.
  • Putting @todo (and similar commands) inside a function body did not result in correct cross-references with the todo list.
  • Java interfaces were not detected as such.
  • Fixed some localization problems in the XML output.
  • Fixed problem handling multiple \par commands (headings were wrong).
  • Fixed array out of bounds assert that was triggered while parsing.
  • Links to pages were not properly resolved in hyperlinked PDF.
  • Using a \name command without //@{ .. //@} scoping could cause a segmentation fault.
  • Including images with @dotfile caused problems in the LaTeX output.
  • Local variables and parameters now properly hide globals with the same name in the source browser, reducing wrong references.
  • Verbatim blocks in the documentation could break the RTF output.
  • RCS/CVS tags did not appear in the output.
  • @note section result in section with type "bug" in the XML output.
  • Dot graphs were truncated too quickly in some cases.
  • Files with a .php4 extension are now recognised as PHP files.
  • Source browser could get out of sync causing wrong cross references.
  • Text after @} could end up in another documentation block.
  • Putting a style command such as \c or \b at the end of a line, before a auto list item, caused the list item to be ignored.
  • Autolinks to files did not work anymore.
  • @copydoc of a target without documentation could cause a crash.

Doxygen Release 1.3-rc1

Changes

  • New validating parser for documentation blocks that replaces the old parser (which was actually only a lexical scanner).
  • The new documentation parser will now pass attributes of html tags to the html output. Example:
           /*! \mainpage A Dutch Table
          <table bgcolor="black" border="0" cellspacing="2"
                 cellpadding="2" align="center">
          <tr><td bgcolor="red">red
          <tr><td bgcolor="white">white
          <tr><td bgcolor="blue">blue
          </table>
        */
  • Doxywizard will now run doxygen from the directory where the config file is found, so paths can be made relative in the config file. This will now also work if the config file's path or name contains spaces.
  • Doxygen style comment blocks found in the body of functions are now appended to the function's documentation block.

New features

  • Added rudimentary support for C#. Parsing should work, but not all attributes are handled correctly.
  • Included perl module generator by Miguel Lobo. Setting GENERATE_PERLMOD to YES in the config file will produce a perl module in the output dir.
  • Included language updates for French, Czech, and Russian.
  • Included a number of enhancements to the xml parser (thanks to a patch by Tree).
  • Locally documentated parameters now appear in the XML output (thanks to Cormac Twomey for the patch).
  • The preprocessor now inserts line control commands where appropriate.

Bug fixes

  • Aliased \if .. \endif commands around a \brief section were not handled properly.
  • Warnings for undocumentation members were not generated anymore in certain cases.
  • A member of a group linked with \ref showed the group's title as link text instead of the member's name.
  • Using aliased commands whose definition contained \n's caused the code browser to put definition links at the wrong line numbers.
  • Todo items inside related pages appeared in tag files, causing warnings about duplicated labels.
  • Included a patch by Ryunosuke Satoh that fixes some issues when compiling in a cygwin environment.
  • The presence of using declarations could result bogus entries in the class hierarchy.
  • Links in the hyperlinked sources could point to the wrong global function depending on the order in which files were parsed.
  • Using \retval in combination with parameters that are documented on the spot, caused bogus warnings about undocumented parameters.
  • id attributes of references/referencedby relations are wrong in the XML output.
  • Links could wrongly point to a class in an outer scope instead of a typedef with the same name in the inner scope.
  • A reference in the code to a member of a derived class that is defined in a base class is now resolved properly even if both classes are imported via tag files.
  • Language codes were wrong in the html help output for some languages (thanks to Erwin Hoffmann for the patch).
  • Fixed case where function was detected as a variable.
  • if HIDE_UNDOC_CLASSES is set YES, doxygen will not complain about undocumented classes.
  • Included RTF output fixes by Gorden Machel.
  • Global variables of complex types were not properly cross-referenced.
  • Fixed argument matching bug for nested template classes;
    matching "f(A::B<T>::C c)" with
    "f(C c)" within context A::B<T>
  • Fixed preprocessor bug handling nested comment blocks (the */ of the inner block was eaten).

1.2 Series

Doxygen Release 1.2.18

Changes

  • Running doxygen with the "-d Validate" option will activate a new documentation parser. The parser will produce output for Html, Latex, XML and RTF output (man page output still needs to be done). For XML output this new parser will always be used. Please try it and let me know if you see unexpected errors or invalid output. This parser will replace the old one in the next release.

    The main advantages of the new parser are that it actually checks the syntax of the documentation blocks and will produce valid output by design.

    For debugging purposes, adding "-d PrintTree" along with "-d Validate" will let doxygen dump the abstract syntax tree of each documentation block to the output in a pretty printed way (this reflects the structure built-up by the parser).

  • A number of new XML tags are introduced along with the new parser, these include: umlaut, acute, grave, circ, tilde, szlig, cedil, ring nonbreakablespace, toclist, tocitem, xrefsect, xrefdescription, and xreftitle.
  • Changed the way code fragments are represented in XML to simplify validation.
  • Changed the way \page, \section, and \subsection are handled in LaTeX (and RTF).
    • \page now results in a section in latex (of the related pages chapter)
    • \section is now a subsection within that page section (used to be a section, so at the same level as \page)
    • \subsection is now a subsubsection within a subsection (used to be a subsection).
  • Included a number of patches by Kristian Ede:
    • Undocumented private friend classes no longer cause warnings
    • Undocumented private classes no longer cause warnings
    • Undocumented members are now hidden if they are default constuctors, destructors or reimplemented.
  • Pages introduced via \page are now context aware. This means that if you put them inside a class or namespace, names do not have to be prefixed with a full scope to create a link in the documentation.
  • Boolean values in doxywizard can no longer be toggled by clicking anywhere on the line on which they appear, but only by clicking on the name or checkbox.

New features

  • @deprecated is now treated as @todo, @test, and @bug, which means that a list of all deprecated items is generated. Thanks to Angela Marshall for the patch.
  • Enum value documentation was added to the XML output.
  • Files ending with ".inc" are now recognised as PHP files (thanks to Marcus Ahlfors).
  • Included updated documentation for language translators (thanks to Petr Prikryl).
  • Included language updates for Czech, Slovak, Brazillan, Croatian, Portuguese, Russian, Polish, Japanese and Serbian. Include language support for Catalan (thanks to Albert Mora)
  • Included .dsp update by Simon Goodwin (already needs to be updated again :-( )
  • Added new configuration options XML_DTD and XML_SCHEMA to set the DTD or Schema used in the XML output.
  • Include new commands \subsubsection and \paragraph which add two section level below \section and \subsection (thanks to Dirk Reiners for the patch)

Bug fixes

  • Fixed lock-up bug in RTF output when using tables.
  • The internal comment conversion routine was confused by lines of the form //*************
  • Fixed recursive lockup for template arguments of the form "typename A = ::A"
  • Description part of @name did not (always) appear in the resulting documentation.
  • Alphabetic index showed package scope using "::" even when OPTIMIZE_OUTPUT_JAVA was set to YES. The same happened for class and namespace HTML page titles.
  • New versions of dot (graphviz >=1.8.8) broke clickable images for versions of doxygen <=1.2.17. Now fixed for newer doxygen releases in a backwards compatible way thanks to a patch by John Ellson.
  • Fixed compile problem for 64 bit machines (pointer to int cast).
  • Included patch to build Doxygen 1.2.17 on AIX 4.3 by Russ Allbery
  • \if ... \else ... \endif blocks now also work in //!< style comments.
  • Fixed a couple of memory leaks in the code parser.
  • Fixed case where member function was put in the member variable section (thanks to Mahadevan R)
  • Fixed bug causing link targets not to appear in the output.
  • Setting BRIEF_MEMBER_DESC set to NO for a member that did not have a detailed description while setting ALWAYS_DETAILED to YES caused the documentation not to appear in the output at all.
  • Fixed todo list linking problems for hyperlinked pdf output and grouped pages.
  • Putting a function declaration and its definition in the same group could lead to wrong links using @ref.
  • Undocumented but grouped members did not appear in the output.
  • The declaration and definition of overloaded global functions was not always properly matched, causing functions not to appear in the documentation.
  • Nested C-comments were confusing the preprocessor, causing it to incorrectly skip comment blocks.
  • An empty line was not always being recognized as a paragraph break (thanks to Stephen Pope for the fix).
  • An aliased \endif in a skipped section was not handled properly.

Doxygen Release 1.2.17

Changes

  • XML: The index of the XML output now has @refid instead of @id's, and includes a "kind" attribute for the compounds and members for easier filtering.
  • Improved dot image generation speed for large projects by changing the way the best-fitting graph is computed (thanks to Philip Bergen for the suggestion).
  • @name now automatically starts a member group section (previously a @{ command was needed). The member group continues until a new @name command is found or until the end of a compound is reached. @{ ... @} commands can still be used for backward compatibility or to end a member group before the end of a compound. @defgroup and friends still require explicit @{ ... @} blocks.
  • Changed the way \todo, \bug, and \test are handled internally. This should have no visible effect on the outside, but makes it much easier to add similar commands and also saves a bit of memory on average.

New features

  • Added initial support for parsing PHP code (thanks to a patch by Jan Borsodi). For a PHP file the following additional commands are available:
    \private
    makes the current item private
    \protected
    makes the current item protected
    \public
    makes the current item public
    \privatesection
    changes to private section(same as private: in C++)
    \protectedsection
    changes to protected section(same as protected: in C++)
    \publicsection
    changes to public section(same as public: in C++)
    \static
    changes the current item to static
    \pure
    changes the current item to pure virtual
  • New command @copydoc that can be used to copy a documentation block of some item and paste it in another documentation block.
  • i18n: Added support for the Serbian language (thanks to Dejan Milosavljevic). Included a new language option Japanese-en for combined Japanese and english.
  • Included patch for dealing with variable argument macros in @param (thanks to Alfred Heggestad).
  • Added new option MULTILINE_CPP_IS_BRIEF to make doxygen treat a multi-line brief comment block as a brief description. Set this to YES to obtain the behaviour of version 1.2.15 and earlier. Default as of version 1.2.16 is to treat multi-line C++ comment block as a detailed description.
  • New option CHM_FILE to set the .chm file (and path) to use for Html Help output.
  • New option HHC_LOCATION to set the location of the Html Help compiler. If given doxygen will automatically run the compiler to create the .chm file.
  • Included .dsp & .dsw files to build doxygen from DevStudio in the wintools dir. Thanks to Simon Goodwin for providing these.
  • Included new command $year that can be use in header and footer files to produce the current year (thanks to Michael Beck for the patch).

Bug fixes

  • Fixed lock-up bug when writing RTF output with verbatim sections.
  • The tree view showed entries in C++ style even if OPTIMIZE_OUTPUT_JAVA was set to YES.
  • Documentation blocks for function arguments in a documented header file did not show up if the function definition was parsed first.
  • Inheritance relations in Java where not always correctly resolved if the base class was explicitly scoped.
  • Fixed some non-standard conformance issues in the HTML output (thanks to John Levon for the patch).
  • Usage relations for variables whose type was a qualified typedef were not properly resolved.
  • Fixed potential crash bug (null-pointer dereference) in source browser parser.
  • Comment blocks ending with an empty /// comment line were not properly handled by the comment conversion code.
  • @relates is no longer needed for a friend function documented in the source file (thanks to Johan Eriksson for the fix).
  • Doxygen could link include files to non-existing source files, if they pointed to external files but were also found in the include path.
  • "make install_docs" was broken.
  • Fixed parse bug for conversion operators of the form "operator ::X*()"
  • XML output fixes:
    • derivedcompoundref was not terminated properly.
    • innerpage and innergroup were closed twice.
    • Removed auto-generated section titles from the detailed descriptions in the XML output.
    • para tags in simple section in the XML output were not properly matched
  • PDF output fixes:
    • Fixed pdflatex reruns in the Makefile when USE_PDFLATEX was YES. It should now run the proper amount of times (thanks to Simon Goodwin for the fix).
    • Links to items in the bug list were broken for the PDF output.
    • Fixed bug in PDF output that resulted in links to non-existing source pages.
    • Fixed bug in URL parsing that caused invalid PDF output for the doxygen manual.
    • Doxygen logo did not appear in the PDF manual.
  • RTF output fixes/improvements by Janet Swisher, Gordon Machel & Martin Vuille:
    • Included fix for loading RTF style-sheets
    • reference list and title were merged
    • First word of company name was lost.
    • Main page title was not substituted.
    • There were two pages numbered "i" in the document.
    • Added a heading to the table of contents page.
    • Depending on the order in which things are documented, there were extra, empty paragraphs thrown in.
    • Added a number of debugging comments and changed some existing ones to make it easier to relate the comment in the RTF to the name of the method that generates it.
  • operator|() caused invalid entries in the latex index.
  • Fixed bug parsing URLs with curly braces in documentation blocks.
  • Html help output now uses the correct language code if non english language is selected.
  • Fixed bug in generate makefile for latex output (thanks to Petr Prikryl)
  • Fixed source browser bug: a comment just before a function body confused the parser.
  • Fixed problem handling function typedefs.
  • \endif appeared in output when used via ALIASES in a brief description.
  • Included heuristic to distiguish between a variable definition with initialization via a constructor and a function prototype (e.g. "Test var(initVal);", v.s. "Test func(SomeType);").
  • Fixed lock-up problem when to @brief were put after each other in a comment block.
  • Images for include dependency graphs were unclickable.
  • Members in source fragments and examples were not linked to their member group documentation if available.
  • For initializers of the form ' ', the space was removed in the output.
  • \dotfile generated files did not get generated correctly because dot could not find the specified font.
  • Third argument of \class did not always work.
  • The pattern argument for the @skip, @skipline, @until and @line commands now extents until the end of the line (as suggested by the documentation) instead of just the first word.

Doxygen Release 1.2.16

Changes

  • Verbatim and preformatted sections are now represented with a new "preformatted" tag in the XML output.
  • The HIDE_UNDOC_RELATIONS option is no longer depending on HAVE_DOT being set to YES.
  • A dot is only added after a brief description if it starts with a capital (thanks to Ondrej Jombik for the patch).
  • Doxygen now treats blocks of C++ comments such as //! Detailed //! Description as a detailed description (such blocks used to be treated as brief descriptions!). A single line C++ comments still represents a brief description, for multiline brief description an explicit @brief can be used. See the updated documentation for more examples.
  • XML: Added class name to inheritance relations that are written to the XML output.
  • Images included with \dotfile are now centered in the latex output (thanks to Nils Strom for the patch).

New features

  • Included language update for Slovene.
  • CGI_URL now allows URLs that start with cgi: (for KDE KIO slave support)
  • Made include dependency graphs available from the XML parser API.
  • Added patch to support multi-byte RTF output (thanks to Sato Ryunosuke)
  • Gary Lee added language support for Chinese-Traditional.
  • Thanks to a patch by Loïc the RTF output now supports (non-nested) tables.
  • Added compilation support for cygwin (win32-g++ target). Thanks to Ryunosuke Sato for the patch.
  • Added new option DETAILS_AT_TOP to put the detailed documentation at the top of a documentation page where normally only the brief descriptions would be shown (based on a patch by Elliott Hughes).
  • XML: Added member template parameters to the XML output.

Bug fixes

  • Improved portability of the png code: updated zlib to version 1.1.4, replaced K&R style code by ansi code, fixed compile problem with pngenc.cpp on some platforms.
  • Fixed recursive lock-up problem that could occur for certain cases in which recursive template inheritance was used.
  • The cross-package inheritance relations were broken for Java code. I fixed this by treating Java import statement as C++ using statements. Please report any problems that remain.
  • Alias commands put in separate parameter documentation blocks were not resolved.
  • The documentation for arguments, documented with a seperate documentation block, was not consistently shown in source and header files, depending on the order of the input files.
  • The characters '(', ')', '$', ''', and ';' were not recognised as part of an URL.
  • Grouped enum values could not share the same documentation block even when DISTRIBUTE_GROUP_DOC is YES.
  • The end caption tag was missing a closing > in the XML output.
  • Fixed bug with table captions in XML output.
  • Removed warning when documenting include guard-like defines.
  • The \package command was broken. Fixed cases where :: appeared in the output when OPTIMIZE_OUTPUT_JAVA was set to YES.
  • Fixed scoping problem using \class for documenting nested classes inside template classes.
  • Fixed invalid output bug when putting "-" items inside @arg or @li lists.
  • Fixed problem referencing functions using {@link ... } with explicit argument lists.
  • Fixed bug when parsing "typedef struct{}TypeName;" (i.e. without a space before the struct).
  • Fixed argument matching bug for global functions having undocumented classes, imported via using declarations, as their parameter type.
  • Fixed bug in conditional section handling for cases like: @if guard text @else more text @endif
  • The html help files did not honour the HTML_FILE_EXTENSION settings.
  • Removed bogus warning when using @param for function-type parameters.
  • Include statements in the source browser output now link to the right include file in case of ambiguities.
  • The include lines in the file documentation didn't link to files that were imported from tag files.
  • The include dependency graph did not show include files if they were directly or indirectly imported from tag files. Existing tag files need to be regenerated to make use of this.
  • XML: The refid of members in listofallmembers section in the XML output was wrong. The ulink tag did not end properly in the XML output. The Value of ambiguityscope in the XML output was not properly escaped. LaTeX page reference texts appeared in the XML output.
  • Included language update for Brazilian.
  • Doxygen now treats "const int *" and "int const *" (i.e. with reordered const) as equivalent types.
  • The preprocessor now avoids recursive includes, which helps to parse files that do not have proper #ifndef-#define .. #endif guards.
  • Matching arguments with types "unsigned long int" and "unsigned long int blah" removed argument name. Same for "int" and "const int blah".
  • Fixed LaTeX output bug that occurs when using \dotfile in combination with USE_PDFLATEX = YES (thanks to Nils Strom for the patch).
  • Links to static functions in the documentation, now point to the local file in case of ambiguities.
  • Comments of the form /*/**/ confused the source browser.
  • Fixed bug parsing "class C : public ::C {};" inside a namespace.
  • Fixed bug in tag file reader when parsing includes.
  • The include dependencies were wrong if an include file name was part of the input but the #include specifically asked for another file not part of the input but with the same name.

Doxygen Release 1.2.15

Changes

  • On request of Richard Stallman and others I replaced all generated GIF images with PNG images. See http://www.burnallgifs.org for the motivation.
  • The Documentation of function definitions and declarations are now always merged. References/Referenced by relations are now equal for function declarations and definitions.
  • When @retval commands are used to document parameters, doxygen will no longer produce a warning message for that parameter. @retval can still be used to document non parameters such as the return values of a function.
  • #define A(x) x /**< a define */
    will document a define, while
    #define A(x) /** an argument */ x
    will document the argument of the define
  • Links in the documentation to const/volatile members are now possible by explicitly specifying "f() const" or "f() volatile" in case a non-const/volatile "f()" also exists.
  • Doxygen now warns about undocumented compounds (thanks to Itai Frenkel for the patch).

New features

  • Included language update for Russian and Romanian translations.
  • EPS images included with "\image latex" are automatically converted to pdf's when USE_PDFLATEX is set to YES.
  • Added two new commands: LATEX_CMD_NAME and MAKEINDEX_CMD_NAME to set the name of the latex and makeindex tools to be used for latex output (thanks to Konno Akihisa for the patch).
  • Improved support for Java. Packages are now treated like C++ namespaces and there is a new option OPTIMIZE_OUTPUT_JAVA that, when enabled, provides more Java-oriented output. Please report any Java-related problems that remain.
  • Extended XML parser API (see addon/doxmlparser/include/doxmlintf.h) with full access to documentation blocks. Made inheritance/collaboration diagrams accessible via the XML parser API (see addon/doxmlparser/include/doxmlintf.h). Reorganised the internals of the XML parser so the API does not require destructors. Made the parser more portable (it should compile with gcc and M$ visual C++ now).

Bug fixes

  • Using "@param x,y,z" resulted bogus warnings about undocumented parameters.
  • "doxygen -w latex header.tex doxygen.sty Doxyfile" caused a segmentation fault (thanks to Aric Cyr for the patch).
  • Fixed argument matching problem that occurred in some rare cases that involved "using" of namespaces.
  • Using /**< Brief.\ more brief. Details. */ with ENABLE_JAVADOC = YES, now removes the slash just like it did with /**...*/ style comments.
  • Using an ordered, html-style list inside a @param command resulted in invalid output if list item contained blank lines.
  • STRIP_FROM_PATH now also works with Windows style paths (e.g. C:\MyPath\)
  • A module can now appear more than once in the module tree (thanks to Itai Frenkel for the patch).
  • In some cases the tree view showed leaf elements as non-leafs.
  • Fixed a number of cases where illegal characters could end up in the XML output.
  • If a function in a base class was (re)implemented by serveral classes only one of them appeared in the "(re)implemented in" list.
  • graph_legend.gif was hardcoded in translator_*.h files. Note to translators: this has affected all translator files, so please update your local translator file!
  • In some cases a grouped member within a namespace did not appear in the group's documentation.
  • Namespace members were not properly cross-referenced with in the source browser output.
  • Using directives inside anonymous namespaces had no effect.
  • Fixed bug in the preprocessor when parsing '"' as the argument to a function macro.
  • The argument of commands like \c did not produce a link to external documentation if possible, while links to local documentation were generated.

Doxygen Release 1.2.14

Changes

  • Split up the XML output into an index (index.xml) and one page per compound. This allows for faster processing and less memory consumption, when using DOM style parsers.
  • Include files are now shown in the class documentation if and only if SHOW_INCLUDE_FILES is YES.
  • Doxygen-style C comments inside macro definitions are now preserved in the output. Example:
             #define INIT(x) /*! Initializes x. */ void Init() { x = 0; }
  • When deriving from pure virtual members or IDL interfaces, doxygen will now put an "implements/implemented in" list in the documentation instead of "reimplements/reimplemented by".
  • Doxygen now filters out duplicate input files.

New features

  • Added a very simple metrics utility (see addon/doxmlparser/examples/metrics) which can compute some figures based on the XML output generated by doxygen.
  • Added autodetection for Darwin (MacOSX) to the configure script.
  • Added option EXCLUDE_SYMLINKS. The EXCLUDE_SYMLINKS tag can be used to select whether or not files or directories that are symbolic links (a Unix filesystem feature) are excluded.
  • Added option 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. (thanks to Darren Oldag for the patch).
  • Included update for translator.pl (thanks to Petr Prikryl)
  • updated .spec file (thanks to Emilio Riva).
  • Included patch by Jochen Hanff to make the index headings configurable via style-sheets.
  • If a comment block contains at least one @param command, doxygen now produces warnings if not all parameters of a function are documented or if the names of the parameters do not match the argumentlist. (Please report any false alarms).
  • Added new command \~language_id to create sections that are outputted for the language >language_id> only: Example:
           /** \~czech Cesky komentar \~english English comment text \~dutch
            Nederlands commentaar \~ Common comment for all languages,
            this tag switches off the language filter...
       */
    Which of the language specific fragments is outputed depends on the setting of OUTPUT_LANGUAGE (Thanks to Milan Rusek for the patch).
  • Added build support for Cygwin (thanks to Ryunosuke Sato).
  • Added new option HTML_FILE_EXTENSION to allow different file extension for the html file outputted by doxygen (like .php). Thanks to Rob Olsthoorn for the patch.
  • Added option DOT_IMAGE_FORMAT that can be used to set the image format of images generated by dot (possible formats: gif, png, jpg).
  • In the documentation of class, namespace, file and group items a list of groups to which the item belongs is put between brackets ([..]) under the title (HTML only).
  • Added "list of all members" and template parameter lists for classes to the XML output.
  • Included language updates for Chinese, Czech, French, Italian, Brazilian, Japanese, Russian and German.

Bug fixes

  • The start of a comment (/*) embedded in a page or example block caused parse problems.
  • operator%= member caused latex error when in pdf hyperlink mode.
  • fixed parse problem for global function typedefs like "typedef int f()"
  • Qt slots weren't included in the reference/referenced by relations (thanks to Gordon Machel for the patch).
  • Fixed parse problem that occurred when the <SUP> tag was used in a brief description.
  • Private members sometimes showed up in the all member list even though EXTRACT_PRIVATE was NO.
  • Doxygen now exits with code 0 if there is no error (previously it returned 1 in some cases were no error occurred).
  • Calling "doxygen -g -" now writes the config file to stdout (this already worked when using "doxygen -g-").
  • Undocumented classes exposed when setting EXTRACT_ALL to YES, could result in broken links in the class hierarchy.
  • Exception specifications in Java were not parsed properly.
  • If INLINE_INHERITED_MEMB was YES, pure vitual members of base classes reachable via multiple paths appeared more than once in the documentation.
  • Removed potential recursive loop when computing reimplements relations for template instances.
  • Fixed argument matching problem when matching "a<int *>" with a<int * >"
  • Links in the documentation of grouped namespace members were not pointing to the group but to the namespace.
  • For template specializations the title of an html page contained plain < and > characters.
  • When computing source references undocumented members could introduce non-existing relations for documented members in front of it.
  • Fixed escaping problem in Makefile generated for latex output.
  • File names were sometimes prefixed for undocumented classes in the class hierarchy.
  • When computing the list of all members, interface members are now treated as virtual.
  • Protected members of a base class did not appear as such in the list of all members of derived classes.
  • Fixed problem with ending itemized lists before paragraph commands (like @see), which resulted in invalid output.
  • The version number in config files generated by doxywizard was always 0.1.
  • Having a macro function and typedef with the same name confused doxygen.
  • An \endverbatim command at the end of a \name section was not parsed.
  • Stars (*) at the start of a line in /**< ... */ style comments after a parameter were included in the result.
  • Putting a C-style comment in a @code block was not handled properly.

Doxygen Release 1.2.13.1

Bug fixes

  • Links to grouped members were broken.
  • The Module index was broken in HTML and subgroups were still not sorted properly.
  • Selecting a non-default language was not possible in doxywizard (thanks to Heiko Schaefer for the patch).
  • Ending a dash-style list was not possible by starting a new paragraph anymore.
  • Fixed "exceptions" tag mismatch in the XML output.
  • extern "C" blocks inside source files incorrectly included header files during preprocessing.
  • Compiling doxywizard on Unix with Qt-3.x didn't work because libdoxycfg was linked with qtools from Qt-2.x.
  • Fixed potential memory corruption when generation the graphical class hierarchy (nodes were deleted more than once).

New features

  • Added support for multi-method declarations such as: int func1(),func2();
  • Included updated DTD for validating the XML output produced by doxygen, thanks to Angelo Hulshout.
  • Included support for Japanese-ShiftJIS translation, thanks to Ryunosuke Sato.
  • Included update for Slovak translator, thanks to Stanislav Kudlac.
  • Thanks to a patch by Pascal Flammant tables in the documentation can now have captions using <caption> ... </caption> within a table definition.
  • A dash-style list can now be ended without ending the paragraph. See the list-section of the documentation for an example.

Doxygen Release 1.2.13

Changes

  • Changed the way @internal works. The "For internal use only" message, now appears (along with the internal documentation) if and only if INTERNAL_DOCS = YES.
  • Subgroups are no longer sorted but presented in declaration order.
  • Members inside todo/test/bug lists are now shown with qualified names again.
  • Reorganized the XML parser. It is now structured as a library, a header file, and a test application. See addon/doxmlparser for details.

New features

  • Included languages updates for French, Portuguese, Korean, Italian, Dutch, Slovene, Brazil, German and Portuguese. Thanks to Harry Kalogirou doxygen now has support for output in the Greek language.
  • Included patch by Adam Doppelt to make doxysearch work better with windows/IIS.
  • Added more info to the XML output: include dependencies, member groups, re-implement relations, const/volatile specifiers, namespace info, related pages, inner classes, inner namespaces.
  • Added some logic to deal with member specializations. They should now be added as additional members to a class instead of being ignored and producing a warning.
  • Thanks to a patch by Bruce Korb, author of autogen, doxygen now has output support for producing autogen definition files. To do this set GENERATE_AUTOGEN_DEF to YES in the config file.
  • The \relates command can now be used for macros as well.
  • New option INLINE_INHERITED_MEMB which can be enabled to include all directly and indirectly inherited members inside the documentation of a class as if they were real members (inspired by a patch sent by Ted Drain).
  • Added option EXTRACT_LOCAL_CLASSES which can be used to show or hide classes and structs defined in source files.
  • Thanks to an install script written by David Greig, the windows version of doxygen now comes with a windows installer based on Jordan Russell's Inno Setup.

Bug fixes

  • Fixed potential bogus link in the references list.
  • Auto detection of idl files was broken.
  • Preprocessor did not parse hexadecimal values correctly.
  • Fixed XML output problem (too many </highlight> tags).
  • Documentation for nested classes inside other nested classes was not written to the output.
  • Fixed problem mixing paragraph commands (like \param) with hyphen-style lists.
  • Modules index in LaTeX was broken.
  • STRIP_FROM_PATH now works for windows-style paths as well. Thanks to Joël Conraud for the patch.
  • For functions whose declaration was grouped and whose definition contained a documentation block with a todo/test/bug item, the item did not appear in the todo/test/bug list.
  • In the source browser output, the "=" in variable initializers was outputted as "==".
  • Fixed parse problem for typedefs of function pointers returning a template instance.
  • Fixed bug in parsing method pointer function arguments of the form "void f(void (C::*m)() const)"

Doxygen Release 1.2.12

Changes

  • Improved the speed of the todo/test/bug list generation considerably.
  • The list of all members of a class now shows for each member, the class in which the member is defined.
  • Rewrote a substantial part of the source code parser (SOURCE_BROWSER = YES). It is now more context sensitive and will generate more/better links.

New features

  • Added new option HIDE_UNDOC_RELATIONS that can be set to NO to show any undocumented inheritance and usage relations from the various graphs.
  • Included updates for translations to Chinese (thanks to Charlie Liu) Slovene (thanks to Matjaz Ostroversnik), Russian (thanks to Alexandr Chelpanov), Czech (thanks to Petr Prikryl) and Croatian (thanks to Boris Bralo). Included Petr's translator adapter simplifications. Included Latin2 patch by Mitja Udovc.
  • Updated the graph legend page.
  • Added option REFERENCES_RELATION that can be enabled in combination with SOURCE_BROWSER to produce for each function a list of all called/used members/functions/variables. The reverse list can now be enabled/disabled using the new REFERENCED_BY_RELATION option.
  • Added native support for typedefs of the form "typedef void (__stdcall *name)()", where __stdcall can be any identifier.
  • Included a patch by Stephen Goudge which adds an option EXAMPLE_RECURSIVE to indicate whether or not example files should be searched recursively.
  • Included patch by Erik Zeek to add EOL translation to the config file output.
  • Doxygen now searches the current directory for source files if the INPUT and FILE_PATTERNS are empty (thanks to Johan Eriksson for ideas and code)
  • Reference to/referenced by information is now included in the XML output.

Bug fixes

  • Fixed more RTF problems and added an RTF integrity check that is performed on the generated RTF output (bracket matching).
  • Refined the macro detection in the preprocessor a little, so it does not match constructors and functions so easily.
  • the % prefix didn't work for scoped items.
  • References to groups defined in tag files did not work.
  • documentation for classes inside namespaces was generated multiple times.
  • Running doxytag on qt-3.0.0 resulted in a tag file containing non-breakable spaces.
  • The \package statement did not work correctly for packages whose name contained a dot.
  • Fixed Parser bug for java initializers of the form = "\"/*";
  • Fixed LaTeX output problem when using \par followed by a (-) list.
  • Fixed LaTeX output bug in the related page index.
  • Commands inside a conditional section would still appear in the result even if the section was disabled.
  • Included idea by Roberto Bagnara to make running "make" in the LaTeX output autodetect how many times latex has to be run.
  • Included a patch by Johan Eriksson to fix a link problem in the "list of all member" for grouped members.
  • Fixed potential crash when \todo was used without arguments.
  • The HIDE_UNDOC_CLASSES option did not work correctly for template instances when set to YES.
  • \line, \skipline and \until introduced too many new lines.
  • Doxygen did not parse "struct {} typedef S;" correctly.

Doxygen Release 1.2.11.1

Changes

  • Included update for Slovak translation (thanks to Stanislav Kudlac)

Bug fixes

  • Fixed RTF output bugs.
  • When preprocessing was disabled, the input was truncated for sources containing CR's (i.e. sources edited on Windows).
  • Syntax highlighting C-style comments was broken.
  • Links to members in undocumented groups were broken.
  • Deep class hierarchies caused "nested too deep" error in LaTeX output.
  • providing one documentation block for grouped, related members did not work.
  • Documentation pages for documented classes nested inside undocumented classes or namespaces were not generated.

Doxygen Release 1.2.11

Changes

  • Undocumented friend class declarations now link to their class if documented.
  • Undocumented template classes (and other "used" types) are now shown in the collaboration diagram.
  • Changed the look of the various indices (file/class/namespace/...) in the HTML output.

New features

  • The source browser option now generates links to (documented) globals and fields. Especially useful for C code.
  • Input containing CR+LF (DOS/Windows) or CR only (Mac) are now automatically converted to LF.
  • New config option SKIP_FUNCTION_MACROS that when set to YES (the default) makes doxygen's preprocessor automatically remove all function macros that are alone on a line and do not end with a semicolon. These are typically used as boiler-plate code and confuse the parser if not removed.
  • Added class collaboration and inheritance diagram descriptions to the XML output. Also added source browser output for each file.
  • Added a developers part to the manual, with some information on how doxygen is structured internally.

Bug fixes

  • Using HIDE_UNDOC_MEMBERS=YES and ENUM_VALUES_PER_LINE=1 resulted in blank lines in the HTML-output.
  • "friend class A::B" caused a bogus warning.
  • Fixed problem generating tag files for the Qt-3.0.0 beta releases.
  • Fixed parameter list layout problem in the HTML output.
  • Fixed some (all?) compile problems on Solaris.
  • Class hierarchy was not correct if a template class inherited from a template argument, which was also a documented class.
  • When substituting template arguments, default values of template arguments were not substituted themselves.
  • Fixed a number of XML output bugs (thanks to Christian Hammond).
  • Fixed bug parsing character literals.
  • Fixed bug in RTF output (bracket mismatch).
  • Inializer of the last enum value of an enum did not always appear.
  • Dots were removed from return types in Java.
  • In some cases a broken "More..." link was generated after a brief class description.
  • Text of a section title containing was truncated if it contained an asterix.
  • Fixed crash bug when filtering CR+LF's from input (thanks to Petr Prykril).
  • Fixed generated makefile dependencies for USE_PDFLATEX = YES (thanks to Marcus Holland-Moritz)
  • "\retval #VALUE" now links to VALUE if documented. The same works for \exception and \throws (and since the argument is a class no # is needed).
  • Sorting the alphabetical list was broken for nested classes.

Doxygen Release 1.2.10

New features

  • Relations between templates and their instances are now visualized in the inheritance and collaboration graphs. Can be disabled by setting TEMPLATE_RELATIONS to NO in the config file.
  • A Java package can now be documented using a comment block containing a @package command or by putting a documentation block in front of a package statement.
  • Added new command \dotfile which can be used to include a user specified dot file as an image in the documentation. The new config option DOTFILE_DIRS should be used to specify directories in which doxygen should look for dot files (thanks to Samit Basu for the patch).
  • Added new build target macosx-c++ to build doxygen for Mac OS X (Thanks to Jason Harris for telling me what needed to be changed).
  • Added --enable-langs option to the configure script which can be used to compile-in support for a specified set of languages (thanks to Vitaly Repin for the patch).
  • Included update for Russian & Italian translation.
  • Included translator.pl update received from Petr.

Bug fixes

  • Fix compile problem for the Irix compiler (thanks to Dirk Reiners)
  • Some generated &nsbp; entities where missing a ; in the HTML output. For some browsers this resulted in argument types & names being glued together.
  • The heading of parameter and return value lists was not bold anymore in the HTML output.
  • "Reimplemented to/from" member links now work between template base classes and their derived classes.
  • Not all documented templates class were regarded as documented (unless EXTRACT_ALL was set to YES).
  • Fixed recursive lock-up problem for recursive templates of the form: template<class T> class A : public A<typename T::B> {}
  • The labels in the alphabetical list were broken when namespaces were used.
  • An error was given for import statements in Java sources.
  • The "list of all members" was no longer generated for nested classes.
  • Fixed bug in XML output causing mis matched <para> tags.
  • Fixed parse problem for enum initializers like: "enumVal = A<T,C>::val"
  • \hideinitializer did not hide the initializer of enum values.
  • Undocumented enums and enum values now behave correctly when HIDE_UNDOC_MEMBERS is set to YES.
  • Fixed a problem with using \if inside alias definitions.
  • Fixed & changed the layout of function arguments a little.
  • Typedef struct{}Name was not parsed properly without adding more spaces.
  • Static initializer blocks were not properly parsed in Java classes.
  • Members of an unnamed namespace are now treated as static, and will only appear in the documentation if EXTRACT_STATIC is set to YES.
  • Classes are sorted by their name, i.s.o. full scope again.
  • Improved argument matching for members defined within (nested) namespaces.

Doxygen Release 1.2.9.1

Changes

  • Bug/test/todo items of members are now grouped together with their compound.

New features

  • Added three new conditional commands: \ifnot, \else and \elseif (thanks to Fabian Cenedese).

Bug fixes

  • The .spec file still assumed the --with-xmlgen switch was available.
  • Template instances caused double entries in the class list (in LaTeX) and broke RTF output.
  • \if and \endif can now be used to make structural commands like \brief, \ingroup, and \defgroup conditional.
  • The "const" in "func(B * const)" was parsed as a variable name.
  • Template specializations of the form A<N::C> where not handled properly.
  • Putting \relates in a function documentation block that was within a namespace, while referring to another namespace did not work.
  • Doxywizard always complained it could not read the config file.
  • Doxywizard did not properly update boolean and integer values.
  • Fixed recursive lock-up problem when recursive templates were used.
  • LaTeX output was broken when PDF_HYPERLINKS was enabled and templates were used.
  • Private friends were hidden even though friends have no access control.
  • Argument matching was sensitive to spaces in some cases.
  • Bug/test/todo item in class members did not always result in the generation of the list.

Doxygen Release 1.2.9

Changes

  • Friend class declarations are now treated as normal members.
  • Completely rewrote the way templates are handled. Doxygen now (internally) computes all template instances it encounters. This has the following advantages:
    • Template instances are now shown in the hierarchical index and in all class diagrams in a uniform way.
    • The list of all members is now correct for classes deriving from a template.
    Since there is a lot of new code, some more testing won't hurt to mature the code. If you are using templates, please try this version for me and report any problems.
  • Started moving the XML output generator back into doxygen. As a result the GENERATE_XML option has reappeared.
  • Function arguments names are now nicely aligned in the generated HTML output. Thanks to Joe Bester for doing most of the work.

New features

  • Added GNU install tool auto detection to the configure script.
  • Included update for French translation (thanks to Xavier Outhier) Olexij Tkatchenko has added support for the Ukrainian language. Included update for Portuguese and Brazillian.
  • Added --docdir option to the configure script.
  • Using the non-commercial version of Qt for windows, it is now possible to build doxywizard for windows.
  • Made preprocessor parse error messages somewhat more informative.

Bug fixes

  • Image references to dot images were broken in the RTF output (thanks to Henning Moll for the fix).
  • Linebreaks are now done with \par instead of \line in the RTF output (thanks to Henning Moll).
  • Removed bogus warnings when parsing tag files.
  • The detailed description in a @name block can now be more than plain text.
  • Included fix for the tree view script for the mozilla browser (thanks to Alec Panovici).
  • Grouping members with the same signature but with a different scopes is now possible.
  • Related functions could not be grouped.
  • MAN_LINKS option was broken (fixed by Patrick Ohly).
  • Including a file with \include in LaTeX caused the leading text to appear in a smaller font size.
  • Improved the documentation and spec file (thanks to Jens Seidel). Fixed some typos in the docs. Thanks to Wouter Slegers.
  • JavaDoc style links such as @{link #var} and @{link #var label} now work.
  • "doxygen -g -s" now creates a file named Doxyfile i.s.o "-s"
  • Fixed a null pointer referencing problem (thanks to Nick Pratt)
  • 8-bits characters are now correctly handled within the argument of \b, \c or \e.
  • Reimplemented links were broken for grouped members (thanks to Johan Eriksson for the fix).
  • Enabling the Tree view didn't result in proper RTF and LaTeX output (thanks to Paul Sydney for the fix).
  • Merged patches by Joe Bester:
    • Could not link to @anchors in the main page on external packages.
    • All external modules and pages were linked to or appended (even the TODO page, etc), even when EXTRACT_ALL is set to NO.
    • The section containing structs and unions is labeled "Class Documentation" (in the English translation) even when the OPTIMIZE_OUTPUT_FOR_C was set to YES.
  • using the IDL keyword "import" in other languages did not work correctly.
  • members of a privately inherited base class were not shown in the list of all members, while they were accessible from the derived class.
  • Reworked part of the template handling. Doxygen should now be capable of handling nested template classes correctly. Please test this if you are using these contructs. Thanks to Christoph Koegl for providing some difficult test cases.
  • Fixed parse problem when parsing << as part of the first argument of a typedef.
  • Further improved typedef resolution.
  • The LATEX_HEADER-config option disabled the \mainpage-output (thanks to Eric Reinhart for the fix).
  • Merged a patch by Erik Zeek, to allow compilation under BCB5
  • Spaces in arguments of preprocessor macros were not treated properly.
  • Fixed argument matching bug that caused doxygen to treat f(type t) and f(type_t t) as the same function. "void func(const ::A)" was interpreted as "void func(const::A)", where "const" would have to be a class name.
  • static file members were not auto-linked even if EXTRACT_STATIC was set to YES.

Doxygen Release 1.2.8.1

Changes

  • Enum values of a grouped (with @ingroup) enum are now automatically added to the same group.

New features

  • Included update for Brazilian translation.
  • Add support for &lt; &gt; &amp; &apos; &quot; in the documentation, since these commands after occur in Java documentation.

Bug fixes

  • Parameters appeared in the documentation for undocumented arguments (and twice if they were also documented with @param).
  • Specifying boolean tags twice in the config file resulted in an invalid value (both boolean values were appended).
  • Fixed a number of typos (thanks to Jens Seidel).
  • When a paragraph header was directly followed by an item list doxygen did not render the first item properly.
  • The "More..." link was often omitted for grouped members.
  • "dangerous" characters like ":" are now escaped from man page file names

Doxygen Release 1.2.8

Changes

  • Doxygen now uses a more natural naming scheme for man pages.
  • Man page and rtf output are now disabled by default.

New features

  • The dot generated inheritance and collaboration graphs for classes should now show the proper template instantation for the derived/used classes. For instance it should show that class S uses class V (indirectly) in the following example:
               class V {};
           template<class T> class U1 { T *m_t; };
           template<class T> class U2 { U1<T> *m_t; };
           template<class T> class B1 { U2<T> *m_t; };
           template<class T> class B2 : public B1<T> {};
           class S : public B2<V> {};
    Please report any example of class hierarchies that are not shown properly.
  • Added doc/translator.pl script created by Petr Prikryl. Its main purpose is to extract information from doxygen's sources related to internationalization (i.e. the translator classes), to avoid duplication of information (i.e. doc/language.doc is now generated) and to generate reports about the status of the translations (e.g. missing methods).
  • Stanislav Kudlac added support for Slovak language and Erik Søe Sørensen added support for Danish. Applied language updates for Italian, Croatian, Spanish, Czech, German & Russian.
  • Added support for "KBD" HTML tags (thanks to Albin Wu).
  • Added man patch by Patrick Ohly which allows to create freestyle man pages using \page and puts man page with non-default extension in the correct directory.
  • Added MAN_LINKS option (thanks to Patrick Ohly for the patch).
  • Added grouping patches by Patrick Ohly: There are now three commands to define a group:
             \defgroup name title
         \addtogroup name [title]
         \weakgroup name [title]
    \defgroup must be used exactly once for a group, so you should provide a title. Without the title you will get a warning and doxygen will use the name as title (this is the old behaviour).
           /** \addtogroup name */
    can be used to add documentation or members to a group (as in 1.2.7), but the group is created if it doesn't exist yet. You can provide the title later with another block:
           /**
          \addgroup name title
          documentation
        */

    Setting different titles will trigger a warning without overwriting the title once more.

    \weakgroup is exactly the same as \addtogroup, but if a member is put into such a group with \weakgroup name @{ @} and into another group with \[def|addto]group @{ @}, then it will be placed into the other group without issuing a warning.

    Actually there is a four-level hierarchy for grouping with (from strongest to weakest) \ingroup, \defgroup, \addtogroup, \weakgroup. You will get warnings when putting members into groups with commands of the same level, but only when you really document this member. This will not trigger a warning and put variable a into Group1:

           /** \addtogroup Group1 */
       /*@{*/
       /** this is the real group */
       extern int a;
       /*@}*/

       /** \addtogroup Group2 */
       /*@{*/
       extern int a;
       /*@}*/

Bug fixes

  • Fixed a bug in the LaTeX output generation (empty lists).
  • Doxygen can now distiguishing f(const A) from f(const B) even though they match from a syntactical point of view.
  • A template base class that is actually an inherited template argument of the derived class is no longer shown in the output indices and hierarchies.
  • TOC_EXPAND could result in a broken tree view (patch by Alexandr Chalpanov).
  • If a base class had member names which has the same name as enumerator values in a derived class, the enumerator values did not show up in the documentation (thanks to John Harris for reporting this).
  • Applied a number of patches sent by Jens Seidel.
  • Fixed compiler limit problem on Windows (thanks to Trevor Robinson).
  • Add -dBATCH in system calls to ghostscipt (needed for formulas) to avoid a command prompt for newer versions of ghostscript (thanks to Marvin Wolfthal).
  • In some situations doxygen wanted to write a files containing a \n.
  • Environment variables can now also be used for non-string values in the config file, like for example QUIET =
  • Fixed a number of typo's in the docs (thanks to Philippe Lhoste & Jens Seidel).
  • Inheritance through typedefs within a namespace did not yield the correct inheritance diagram.
  • References to anchors in grouped members or pages were not correctly resolved.
  • Fixed a problem with argument matching for arguments that contained classes imported via a using declaration.

Doxygen Release 1.2.7

Changes

  • The configgen tool is now replaced by a more dynamic parser. This will allow future output generators to add specific options without changing or recompiling the doxygen engine. Doxywizard has also been updated to use this new parser. Developers that wish to add new configuration options, please look at Config::create() in src/config.l
  • Changed the way the translators work internally (thanks to Petr Prikryl for ideas and code) and updated the documentation regarding language support and maintenance. Users of languages other than English will get a warning message if the translation for their language is not up to date.
  • Did some internal cleaning up to make things more consistent and easier to maintain. Please let me know if you think something has been broken in the process.
  • Doxygen now uses a more unique output file name mangling scheme, which generates unique file names even if entity names (like class names) only differ in case.
  • Setting ALLEXTERNALS = NO now hides external pages in the page index.

New features

  • \image is now supported for RTF output (thanks to Joe Ninety).
  • New RTF_EXTENSIONS_FILE that can be used to configure the RTF output (thanks to Joe Ninety for the patch).
  • Added new command \htmlinclude that can be used to include a HTML file as is in the HTML documentation. (thanks to Uwe Wojak for the patch)
  • &nbsp; can now be put in the documentation to force a non-breakable space.
  • Included support for the gcc extension #include_next (thanks to Jac Goudsmit for the patch).
  • Included translation for Brazilian Portuguese sent by Fabio Jun Takada Chino. Add update for the Czech translation (thanks to Petr Prikryl). Also included updates for German (thanks to Jens Seidel), Russian (thanks to Alexandr Chelpanov) and Croatian (thanks to Boris Bralo).
  • Added RPM spec file update by Jens Seidel.
  • Added SHORT_NAMES option which can be set to YES to make doxygen generate short (but non-informative) output file names.
  • Added new command \addtogroup that can be used to extend a group defined with \defgroup with extra members and/or documentation.

Bug fixes

  • Inline sources weren't appearing for undocumented non-inline members.
  • Doxygen did not subgroup in case the parent group was found after the child group. (thanks to Johan Eriksson for the patch that fixes this).
  • Specifying a directory at the INPUT that ends with a \ did not make doxygen recurse the down the directory tree in Windows.
  • Fixed two small bugs that caused segfaults on NetBSD and Linux on 64bit Alpha's (thanks to Rex McMaster and Ovidiu Toader).
  • "Referenced by" section now starts at a new paragraph (thanks to Joe Ninety).
  • Setting OPTIMIZE_OUTPUT_FOR_C still produced some C++-ish sentences for the list of all struct/union fields.
  • Undocumented friend functions were listed as friend classes.
  • A CORBA IDL union with a switch was not always recognised correctly.
  • doxygen did not handle try-function-blocks with multiple catch clauses properly.
  • \bug and co. were not working for static members.
  • Formulas weren't correctly re-generated when changed.
  • relative include paths containing /../ were not linked, since they were not normalized.
  • Locally included files where not searched in the directory containing the file that did the inclusion, only in the paths specified with INCLUDE_PATH.
  • Fixed problem with numbers in the generated eps file for non-english systems (thanks to Vsevolod Novikov).
  • Generated bookmarks in the RTF output not starting with a letter caused problems (thanks to Jonathan Beaupre for the fix).
  • Putting &aring; in the docs wasn't working as expected.
  • Fixed a number of typo's in the docs (thanks to Jens Seidel and Philippe Lhoste).
  • Autolinking could create links inside user defined HTML links.
  • Email addresses in the docs starting with an "a" and put inside sharp brackets were not properly displayed (thanks to Abramo Bagnara for the fix).
  • Fix several man page output bugs (thanks a patch by Patrick Ohly).

Doxygen Release 1.2.6

Changes

  • The \bug command now works like the \todo and \test commands; each item documented with \bug will be cross-referenced with a bug list. The list can be disabled by setting GENERATE_BUGLIST to NO in the config file.

New features

  • Included updates for Croatian, Czech and German, Japanese, Italian and Russian translations.
  • Added option GENERATE_CHI that can be used to control whether or not an .chi file should be generated by the HtmlHelp compiler (default is NO).
  • Added option DOT_CLEANUP that when set to NO leaves the intermediate dot files in the output directory.
  • Added option BINARY_TOC to enable/disable use of a binary table of contents in a .chm file (thanks to Martin Slater for the patch).
  • Added option TOC_EXPAND to when enabled shows the members of a group in the treeview and HTML help table of contents (thanks again to Martin Slater).
  • Included group support for man page output (thanks to Joe Bester for the patch).
  • Added option SHOW_USED_FILES that can be used to disable the list of used files normally generated at bottom of the documentation of classes and structs (thanks to Joe Bester).
  • Updated the doxbar tool:
    • the addin no longer requires administrator privileges to work (thanks to Michael Beck)
    • the existance of files is now checked (thanks to Pekka Pessi).
    • .odl and .inl files are recognised (thanks to Pekka Pessi).

Bug fixes

  • doxygen.css was also used by the treeview even if the user specified his/her own stylesheet.
  • Inline source blocks (INLINE_SOURCES=YES) were sometimes truncated at the wrong closing bracket (thanks to Jac Goudsmit for the fix).
  • Some references to subsections were not correctly generated (thanks to Stefan Ruppert for the fix).
  • Fixed IDL union parse problem (thanks to Richard Hash).
  • Latex output sometimes contained $\ast$ for code fragments.
  • lonely *'s were not removed inside a <pre> and <code> blocks.
  • Applied patch sent by Joe Bester to make the treeview javascript work with Mozilla. Still has some problems though.
  • Fixed a bug in code parser regarding string detection, inside the argument list of a function.
  • Using a command alias starting with \class (or other structural commands) did not give the expected result.
  • A function pointer returned as the template argument of a template class that itself is the return type of a function was not parsed properly.
  • In IDL, typedef's followed by an attribute list where not parsed properly.
  • The list of all members now shows all privately accessible members if EXTRACT_PRIVATE is set to YES, instead of just the non-inherited private members.
  • Fixed autolink problem for grouped members.
  • Mutliple static global functions with the same name (but in different files), which were forward declared, could make doxygen put the wrong documentation block at the wrong global function.
  • Support for Norwegian was not enabled.
  • The correct charset is now set when the treeview is used (thanks to Boris Bralo).
  • For inline source fragments of member functions, the types of the arguments are now also taken into account for cross-referencing.
  • A sentence ending with a dot, directly followed by a \n was not handled correctly.
  • File reference extracted from a tag file could something cause doxygen to generate a bogus warning.
  • Parsing large arrays of hex numbers took very long when the source browser was enabled.
  • Fixed install rule in the Makefile
  • Doxygen now parses try-function-blocks correctly.
  • A zero initialized function pointer inside a namespace was misinterpreted as a pure virtual function.
  • Applied Joe Bester's patch that fixes some LaTeX output problems.
  • Java Package info was not correctly read from a tag file.
  • Todo items in the documentation of grouped members were not correctly referenced from the todo list.
  • Removed bogus "a" entries from appearing in doxysearch's search results.
  • Putting <a href="..."><img src="..."></a> in the docs will now work as expected for HTML.
  • Fixed problems with >pre>...>/pre> block in LaTeX.
  • Putting &ccedil; in the docs now preduces a c-cedille.

Doxygen Release 1.2.5

Changes

  • Split up doxygen into a library and an executable part, and moved the XML generation part to a separate front-end (see addon/xmlgen).
  • Having SOURCE_BROWSER set to YES does not automatically imply that a member is documented.
  • Typedefs of classes are now shown in (dot) inheritance graphs with their typedef name instead of the resolved name.
  • Upgraded Qt files to 2.2.3 to fix some compile issues.

New features

  • Added initial support for Java. The parsing of Java code should be ok. There is a new "packages" index, with a list of all parsed Java packages, each of which can be documented (but not yet in the Java way using package.html) and contains links to the interfaces and classes in the package. The code parser still needs work (It doesn't do much cross-referencing yet). Also any explicit package scope for classes is basically ignored, so you cannot have two classes with the same name in different packages. Let me know if you know of other improvements.
  • Added support for the Java style of linking (using {@link package.object#item()} as syntax)
  • Added file, compound and namespace members to the treeview index.
  • New configuration option MAX_INITIALIZER_LINES that can be used to control when/if the initial values of variable and defines are shown in the documentation.
  • OPTIMIZE_OUTPUT_FOR_C flag that when set to YES makes doxygen produce output that looks more natural for C programmers.
  • Included Czech language update sent by Petr Prikryl.
  • Added "Binary TOC=YES" and "Create CHI file=YES" to the HtmlHelp project file for better integration with MSDN.
  • I've updated the doxbar tool:
    • sources are appended to the INPUT line of the template config file
    • sources mentioned in the .dsp with quotes (i.e. "c:\bla.cpp") are now handled properly (thanks to Robert Radtke for the fix).

Bug fixes

  • Fixed 0-pointer bug that could crash doxygen in some cases.
  • Starting a list in a brief JavaDoc-style description splitted the list into two invalid parts if a list item ended with a dot.
  • Fixed a problem with linking to grouped class members.
  • Indenting of code fragment in LaTeX output was not always correct. Also for code lines starting with a * the * was removed.
  • Typedefs where not properly extracted from tag files.
  • Links to operators in a "See also" section did only work if the arguments list was given.
  • Fixed parse bug in the code parser for the case where "<" and ">" were found on a line but couldn't possibly be a template scope.
  • The "More..." links was incorrect for members of class grouped with @ingroup.
  • Fixed preprocessor parse bug that occurred when parsing string literal "...\\" as an macro argument.
  • Fixed buffer overflow problems when parsing very long input lines (thanks to Arnault Bonafos).
  • References to pages and anchors imported via tag files did not work.
  • Local references to page anchors did not work.
  • Windows only: doxygen leaked process handles while running dot (thanks to Jeroen ter Hofstede for the fix).
  • Undefining (with #undef) a define set using PREDEFINED now longer has an effect.
  • Functions appeared twice in modules if the prototype and definition did not match exactly.
  • the word "operator" in todo items caused problems.
  • Fixed some more problems with references to external pages, local references to sections, and naming conflicts with multiple todo/test lists.
  • "char a:1, b:2" resulting in output including both bitfields for b.
  • The protection level of the members in the all-member list was not always correct.
  • Fixed some typos in the Dutch and German translations.
  • \todo's in the docs of #define did not end up on the todo list.
  • "typedef volatile struct {} name;" was not handled properly.
  • HTML header and footer file are now read only once.
  • Fixed 2 memory leaks.

Doxygen Release 1.2.4

Changes

  • New XML-based tag file format.

    Note: If you are already using tag files, you need to regenerate them, because the old format is no longer supported!

  • Removed the "No description available" for classes without brief description in the compound list.
  • User defined groups (a.k.a. modules) are now shown in a hierarchy.
  • If a function and its prototype are both inside different documented files then they may both be documented separately and will appear as such in their file documentation If you only document the header file and not the source file you can still put your documentation in front of the function definition as before.
  • For unresolved base classes of a class inside a namespace, doxygen now guesses they are defined outside the namespace (was inside).
  • Performance: replaced O(n^2) sort routines for member lists with O(nlog(n)) versions.

New features

  • There is now an HTML Help like tree view, that can be enabled by setting GENERATE_TREEVIEW to YES. This feature requires a browser that supports frames and javascript. Note that frame/page-resizing requires a manual reload with Netscape 4.x at the moment (it is a known netscape bug). (thanks to Ken Wong for providing the code to generate the tree in the proper format).
  • Added new option TREEVIEW_WIDTH that can be used to set the initial with of the treeview frame.
  • A warning is now generated for invalid \link targets (again thanks to Ken Wong).
  • Wang Weihan sent an update for the Chinese translation which is now included. Included update for the Russian and Italian language as well.
  • Support for Borland C++ and MINGW compilers for Windows (thanks to Oliver Brandt for the patch).
  • Groups and pages defined in external documentation (i.e. with tag files) can now be referenced using \ref.
  • Pages can now be put into groups using \ingroup (thanks to Ken Wong). A group with only pages is rendered as a page (the group itself) with subsections (the inserted pages).
  • \ingroup can now be put in a one line comments (thanks to Patrick Ohly)
  • \ingroup in a comment block before a comma separated list of variables is now applied to all variables (as is the documentation itself). (thanke to Patrick Ohly for the patch)
  • @{ .. @} blocks can now be used for normal groups as well (thanks to Trevor Robinson for the patch). Here is an example:
           /** @defgroup mygrp My Own Group
           @brief My brief group description.
           @{
        */

       /** @name My member group
           @{
        */
       /** This is a function */
       void func1();

       /** Another function */
       void func2();

       /** This is a typedef */
       typedef int Int;

       /** @} */

       /** This is a variable */
       int var;

       /** This is a define */
       #define DEF def

       /** @} */
  • Normal groups can now also be nested using /*@{*/ ... /*@}*/ blocks (thanks to Patrick Ohly for the patch)

Bug fixes

  • If source files were put in the input before header files, the declaration against definition matching did not work for global functions (thanks to Frank Warmerdam for reporting this).
  • The template argument type and name of template functions were not separated by a space.
  • A comma separated list of member reference variables (like int &i,&j;) was not parsed correctly.
  • Removed bogus warning when excluding non-existent files or directories
  • Fixed problem parsing nameless bit padding fields.
  • Fixed a pointer bug in the XML generation that could crash doxygen.
  • The code parser did not cross-reference functions inside namespaces and nested classes.
  • Only the first member of a member group was shown in a group definition.
  • REPEAT_BRIEF = NO now works for class, namespace and file documentation as well.
  • No macro-expansion was done on a file that was #include'd in a body of a class or enum.
  • Fixed macro concatenation bug in the preprocessor.
  • Global functions that were \ingroup'd could appear twice in a group in some cases.
  • % and & can now be used in the URL in the documentation.
  • \c,\e and \b now also generate a link if they have the name of a documented file as their argument.
  • Made the FILTER_SOURCE_FILES actually do something (it was always treated as enabled).
  • Fixed two bugs in the autolist feature (thanks to Ken Wong)
  • Fix macro expansion bug in the preprocessor, when macro's where used as the argument of an #include.
  • // did not work inside the argument of a \todo or \test command.
  • Doxygen did not parse arrays of function pointers properly.
  • Fixed parse bug for templates with nested template arguments.
  • Fixed parsing problem for template arguments containing << or >> operators
  • Fixed some problems with the DOT_PATH config option on windows.
  • Group title and file names are now shown in the latex index instead of the label names.
  • Portability: Added workaround for SGI MipsPro compiler, that (hopefully) prevents it from crashing while compiling doxygen. Worked around a number of compile problems with HP's C++ compiler.
  • Fixed problem with doxygen calling epstopdf.bat in Windows.
  • Fixed some problems that occurred when regenerating the doxygen manual on Windows.
  • Fixed some output formatting problems regarding templates.
  • Global functions, typedefs, and enums did not get linked when were read in via a tag file.
  • Using /* inside an \code ... \endcode block confused the parser.

Doxygen Release 1.2.3

Changes

  • enum values are now packed in groups of 4 in the declaration part of the HTML docs.
  • JAVADOC_AUTOBRIEF is now set to NO by default, because too many people expect the JavaDoc-style to behave as the Qt-style and not in the way described in the JavaDoc spec.
  • The distribution now includes the part of Qt-2.2.0 that is needed for compilation of doxygen, doxytag, and doxysearch. I've also created the missing files for Windows. This allows compilation of doxygen on systems without X11 or the full Qt. For doxywizard Qt-2.2.x is still required however.

New features

  • Support for the Slovene language (thanks to Matjaz Ostroversnik)
  • Bit fields for struct members are now shown in the documentation.
  • Enabled "favourites" and "Full text-search" for the generated HTML Help browser files.
  • Added support for M$-IDL properties. The "methods:" section now also works.
  • Added support for Borland C++ builder "__published:" and "__property:" sections. (__published: is just treated as public:).
  • Included update for the Czech language. Thanks to Wang Weihan there is also support for Chinese output now.
  • Added a config option WARN_LOGFILE to log warnings to a file for those people that have to use certain "operating systems" that do not support redirection of stderr to file.
  • Added a config option GENERATE_LEGEND that can be used to disable the legend page normally generated for explaining dot graphs.
  • Thanks to a patch send by Micha Bieber, doxygen can now be run from inside doxywizard.
  • Environment variables can now be used in the @INCLUDE_PATH and @INCLUDE tags in the config file (thanks to Stephen Goudge).
  • Windows compilation/installation instructions are updated (thanks to Petr Prikryl)
  • New config tag ENUM_VALUES_PER_LINE to set the number of enum values that are grouped on one line (default=4).
  • #include's inside the body of a class are now expanded.
  • The source browser files can now by filtered using the INPUT_FILTER if FILTER_SOURCE_FILES is set to YES (thanks to Paul Strauss).

Bug fixes

  • For #foo in member documentation doxygen was trying to find a global variable named foo instead of a member. Use ::foo to make an explicit link to a global variable in case there is also a member named foo.
  • A bullet list ending with a \par sometimes caused the paragraph to be indented.
  • When STRIP_CODE_COMMENTS was set to NO, and /*!< .. */ style comments were used, the code parser got out of sync with the documentation parser.
  • (Hopefully) fixed some Solaris compile problems (thanks to John Sturton).
  • documentation for private slots appeared in the documentation even though EXTRACT_PRIVATE was set to NO.
  • \relates was not working for nested classes or classes defined within a namespace.
  • namespace alias support was broken with respect to inheritance relations containing aliased namespace names.
  • The documentation of members that are put into a group (with \ingroup) is now removed from the natural container of the member. Also the links are now corrected.
  • Links from the code parser to static global functions are now always pointing to the correct file (thanks to Bill Soudan for the patch).
  • Fixed HTML bug in non-indexed namespace member lists.
  • Using `:' inside ID's caused problems for some XML parsers. I'm now using "__" instead. Also removed @ from appearing in the output when annonymous compounds were used.
  • Fixed output bug that is caused by nesting paragraph commands inside autolists.
  • Doxygen no longer generates source files for input files that end with .doc or .txt
  • Fixed argument matching problem that could result in parameter name changes for overloaded functions. Also fixed buglet for matching things like "unsigned int" against "unsigned int name"
  • Fixed qtools compile problem with ./configure --english-only problem
  • Putting documentation between the class and its body now also works if the class has base classes.
  • Fixed parse problem for const function pointers like "int* (* const name)(long);"
  • Slightly changed the HTML output to work around display "bugs" in Konquerer and Opera (thanks to Achim Spangler).
  • Examples in compress HTML help of doxygen's manual has absolute links.

Doxygen Release 1.2.2

Changes

  • Verbatim headers are now also created if a documented header file does not contain a struct or class (unless VERBATIM_HEADERS = NO of course).
  • For member groups, where only the first member is documented, that documentation is no longer automatically copied to all other members of the group. You can still enble this by setting DISTRIBUTE_GROUP_DOC to YES in the config file.
  • The \mainpage block now gets its own chapter in Latex/RTF

New features

  • Added support for KDE-2 IDL (more specific: k_dcop member sections).
  • New ALIASES config option which allows you to add one or more user defined aliases (a.k.a. macros) that can be used as commands in the documentation. For instance:
           ALIASES = "sideeffect=\par Side Effects:\n"
    allows you to put @sideeffect in the documentation, which doxygen will replace by "\par Side Effects:", before parsing. As a result a formatted paragraph with a "Side Effects" header will appear. Note that the \n's are replaced by real newlines, so in the example you can put your paragraph text directly after the sideeffect command.
  • Added language support for Hungarian (Thanks to György Földvári), Korean (thanks to Richard Kim), and Romanian (thanks to Alexandru Iosup). Received language updates for Italian, Polish, Croatian, Czech, Hungarian and Russian.
  • Added support for namespace aliases.
  • Added RTF patch from Alexander Bartolich. Here is his description of the changes: "The following patch of rtgen.cpp allows to read *complete* style definitions from rtfstyle. This includes \sbasedon, \snext, \additive and actual style names. If this data is missing the default value is used. This means old rtfstyle-files can be used without change, with one exception: Reset is no longer considered a style. Since unknown style names are simply ignored I don't consider this a big problem. There is no means to write rtfstyle in old format, however. "
  • Documentation can now also be put after the initializer of a constructor but before the body.

Bug fixes

  • RTF output was broken w.r.t. dot generated images.
  • Spacing and blanks inside <pre> ... </pre> block were not properly preserved.
  • Fixed lock-up when parsing "enum A { A };"
  • If INLINE_INFO was set to NO an empty property list could be put after the function definitions.
  • Fixed source code linking for the following cases: A::func().func2() and a[2]->func().
  • \em %className did not remove the %
  • In some cases namespace members ended up multiple times in the documentatation.
  • Fixed a bug in the auto list generation.
  • \latexonly inside brief description did not work properly.
  • "Referenced By" list did not include constructors with inline initializers.
  • &auml; and such were not parsed when used as the argument of a section.
  • A struct inheriting from a base class was marked as private inheritance while it should be public inheritance.
  • The autobreak routine for long return types was sometimes skipping characters.
  • Class usage relations should now also appear in the collaboration diagrams for classes within the same namespace, without explicitly having to mention the namespace.

Doxygen Release 1.2.1

Changes

  • I have completely rewritten the \todo code. Now a \todo command have a paragraph as argument. The todo list has a header for each item indicating where the todo item was found. The todo list (and all todo items) can be disabled by setting GENERATE_TODOLIST to NO.
  • <pre> ... </pre> blocks now behave as in plain HTML instead of \code ... \endcode blocks. This also works for LaTeX ofcourse. These blocks differ from \verbatim ... \endverbatim blocks in that commands can be used inside these blocks.

New features

  • Added rudimentary support for XML output. Still very much work in progress... You can enable it by setting GENERATE_XML to YES. There is a small utility (based on Qt & Xerces-C) in addon/xmlread that uses the SAX interface to read a generated XML file and then dumps the class hierarchy contained in it.
  • Thanks to a patch sent by Christophe Prud'homme, doxygen now has a new option USE_PDFLATEX that when set to YES makes doxygen use pdflatex instead of latex to generate refman.pdf. The result is a document with higher quality fonts.
  • Added a \test command that works similar to \todo and can be used to describe test cases. Doxygen will generate a page containing a list of all test cases. To disable the list set GENERATE_TESTLIST to NO. Thanks to Dave Murrell for the idea and the initial code.
  • For each list option in the config file += can now be used to append something to a list. Thanks to Joerg Baumann for adding this.
  • Numbered items are now supported like this:
           /*!
         This is nested list:
          - It can be either one of following:
            -# An apple
              - Green or
              - Red
            -# An orange
          - Or one of the following:
            -# A plane
            -# A bird

         More text follows.
       */
    Credits go to Joerg Baumann.
  • Included French and Czech language updates from Mathieu Despriée and Petr Prikryl. Also included a language update for german from Raimund Klein.
  • Doxygen will now do give proper warnings for formulas that do not end properly.
  • Improved error reporting for illegal list combinations (thanks to Joerg Baumann for the patch)
  • Comments from the code example in the dot graph "legend page" was stripped if STRIP_CODE_COMMENTS was set to YES.
  • In the config file "@INCLUDE = file" can now be used to include part of a configuration file. "@INCLUDEPATH = dir1 dir2 ..." can be put in front of it to add search paths (default is $PWD). Thanks to Joerg Baumann for the patch.
  • Added alphabetical quick indices for compound, file and namespace member lists.

Bug fixes

  • Running ghostscript on Windows for generating formulas was done asynchronously, resulting in ghostscript trying to access temporary files that may already have been deleted by doxygen. Thanks to Robert Golias for the code to fix this.
  • Include dependency graphs failed to get included in LaTeX because \includegraphics did not like the dots in the generated file names. Those dots are now escaped by underscores.
  • The \remark did not end a brief description in JavaDoc comments, resulting in a error in the generated LaTeX.
  • "operator >>" was not matched against "operator>>"
  • the (required) space after \addindex ended up in the LaTeX index, causing all generated entries to be placed after the user added entries.
  • "typedef class A<B> a;" is now correctly handled in inheritance relations.
  • Fixed some typos in the manual
  • \c Class::func(arg) was not autolinked.
  • Doxygen stopped reading from stdin after 4096 bytes.
  • In code fragments no autolinks for local variables or dereferenced arguments were generated for template classes.
  • autolinking to a namespace member foo from within a class scope also having a member foo did not work.
  • The brief description was prepended before \todo and \test. The reference from the todo and test lists back to the documentation did not work for overloaded members.
  • specifying width or height for \images was not handled properly. (width and height were repeated). Now you can also use commands like \textwidth as the width or height.
  • After expanding an environment variable in the config file, the next environment variable was searched starting at the wrong position.
  • Fixed LaTeX/RTF labelname collisions between members of files and groups, and between classes and groups with the same name.
  • HTML image map partly appeared in RTF output when built-in class diagrams were used causing the RTF file to be truncated.
  • Inheritance relation was not determined correctly in case a base class was imported from another namespace via a using declaration.
  • Todo and test items defined with \class or related block, where sometimes missing from The todo & test
  • Preprocessor: Multi-line #define's where not properly parsed & colored on windows due to \r's
  • Preprocessor: expansion of M(x)A, where M is a macro that expands to mx, resulted in "mxA", instead of "mx A"
  • Fixed compile problem with Qt-2.2.0beta1

Doxygen Release 1.2.0

Changes

  • CASE_SENSE_NAMES is now enabled by default.
  • In LaTeX .eps images are now included using the graphicx package instead of epsfig to simplify the use of pdflatex (thanks to Pier Giorgio for showing me how that works).
  • Reimplemented the system() call for Unix, so doxygen becomes interruptable when calling external tools such as dot.
  • Changed the way -w works. It can now also be used to generate template header and footers.

New features

  • Grzegorz Kowal added support for the Polish language. His patch is now included.
  • A \par command without title argument can now be used to add a new paragraph with the same indent under the heading of another command (such as \par, \param, \note, etc...)
  • Added a legend page explaining the various arrows and box colorings for the class diagrams generated by dot.
  • Merged update for Croatian language.
  • Relative paths are now also allowed for the STRIP_FROM_PATH tag.
  • Added a new section to the manual explaining the use of tag files in more detail. Also move the contents of the INSTALL file into the "installation" section of the manual.
  • Added ps_2on1 and pdf_2on1 targets to the Makefile generated in the LaTeX directory. These can be used to generate manual with 2 logical pages on 1 physical pages (Thanks to Onno).
  • Merged Czech language update from Petr Prikryl. Merged Spanish language update sent by Lucas Cruz.
  • Added standard GNU long options --help and --version.
  • Added a -w option that can be used to generate template style sheet files for RTF, HTML, Latex. Thanks to Alexander Bartolich for the idea and part of the implementation.
  • Merged patch from Steve Hespelt, which adds a new configuration option: INCLUDE_FILE_PATTERNS. This tag can be used to set the file patterns for the include files (if left empty the FILE_PATTERNS will be used, which was also the old behaviour).
  • Added a couple of commands for kdoc compatability: @p, @li, @em. Also made @ref a bit less strict.
  • Portuguese translation by Rui Lopes.

Bug fixes

  • Documenting member function pointers with \var like this:
           /*! class B */
       class B
       {
         public:
           void (B::*pmf)();
       };

       /*! \var void (B::*B::pmf)()
           docs for this class member.
        */
    did not work.
  • Library blocks inside M$-IDL files are now also processed (a library is treated as a namespace at the moment).
  • Argument matching did not work for array argument with different amounts of whitespace.
  • If a namespace definition was found before its documentation than grouping it (with @ingroup) did not work.
  • Global functions within anonymous namespace scopes did appear in the documentation with the anonymous scope marker used internally by doxygen.
  • "namespace{}",so without space was not recognised as a namespace.
  • If the search engine was used then running installdox on the generated html resulted in bogus links to the search engine.
  • Fixed some compiler warning on Solaris.
  • Changed grey by grey50 in dot.cpp to avoid PDF conversion problems.
  • A </pre> that was not preceeded by a whitespace was ignored
  • The methods operator<() and operator<<() were not automatically linked anymore.
  • Some special characters in LaTeX were eating up the blanks that followed them.
  • The built-in C preprocessor did not evaluate the following to TRUE:
           #define A
       #define TO_BE_EVALUATED defined A
       #if TO_BE_EVALUATED
         ...
       #endif
  • Improved code parsing a bit: things like getClass()->func() and (*pb)->func() should now work. Also the scope of the body is correctly detected in case of inline constructor initializers like: A() : m_a(10) { ... }
  • File index is now in (path,name) lexical order, instead of (name,path) order. The file index is also only generated once instead of twice ;-)
  • Typedefs to structs in C-style did (still) not get resolved as "usage" relations for the collaboration diagrams.
  • Fixed some HTML output typos reported by Onno Kortmann (who used the tool "html tidy" on the generated output).
  • Merged a patch from Paul Lieverse that should solve the empty image map problems on Solaris.
  • If the title of a \defgroup contained a documented class, a nested (and thus broken) link was generated.
  • Externally defined variable were treated as variable definitions.
  • If a file only had a verbatim header but no documentation, a link broken link was added to the HTML help TOC.
  • Fixed "member with no name" warning that occurred when a enum's last value ended with a comma and the enum was inside a member group.
  • A <dl> type of list with multiple <dd>'s did not give the correct output in LaTeX.
  • SORT_MEMBER_DOCS is NO only worked for class members.
  • Both the prototype and the definition of a global function appeared in a \defgroup.
  • Fixed some visual problems with operator links in source code fragments.
  • Code parser got confused by template specifiers. Also improved linking of typedef'ed classes.
  • A warning was generated if the same function was defined both inside and outside a namespace.

1.1 Series

Doxygen Release 1.1.5

Changes

  • If DISABLE_INDEX = YES and a user defined main was specified (with \mainpage), then no index will be generated anymore.
  • RTF output is now enabled by default.
  • LaTeX output now uses fancyhdr instead of fancyheader.
  • If the search engine is enabled, the default config values will be put into the generated HTML files, so you do not need to run the installdox script, if the initial values are ok.

New features

  • Added a new config option HIDE_SCOPE_NAMES that can be set to YES to hide the namespace and class scopes that are put in the documentation and diagrams.
  • added a new type of graph, that can be used to visualize which files #include (i.e. depend on) a given file. This graph is enabled by setting HAVE_DOT and INCLUDED_BY_GRAPH to YES.
  • added new configuration option EXTRACT_STATIC that can be used to enable/disable the extraction of static file members. The behaviour of this option used to be linked with EXTRACT_PRIVATE.
  • Added two new configuration options MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT that let the user configure how big the generated dot graph may become.
  • Added a new configuration option EXPAND_AS_DEFINED that can be used in combination with PREPROCESSING = YES, MACRO_EXPANSION = YES, and EXPAND_PREDEF_ONLY = YES, to expand a given list of macro names, as they are defined in the sources.
  • Merged Alexander Bartolich's RTF style sheet patch. A new config option RTF_STYLESHEET_FILE is now available with which you can specify a style sheet file. The style sheet file should contain a list of assignments. The assignments can be used to overwrite the definitions of the various styles with user defined settings.
  • Added a new command @since for JavaDoc compatibility.
  • Added two new commands: \remarks and \attention that work in a similar way as \warning, \pre, \post, et al.
  • If SOURCE_BROWSER = YES, each member function documentation now includes a list of member functions that call the member somewhere in their body.
  • RCS/CVS tags of the form $word:text$ are now nicely typeset in the documentation.
  • Providing all members of an enum with the same documentation can now be done with member grouping like this:
           /*!
          Rotation values
        */
       enum
       {
         //@{ rotation value
         Up=0,
         Left=-90,
         Right=90,
         Down=180,
         //@}
       };
  • Member grouping can by denoted more compactly like this:
           //@{ Same documentation for each function
       int getFunc1();
       int getFunc2();
       //@}

       /*@{ @name Set functions
            Functions for setting values.
        */
       void setFunc1(int v);
       void setFunc2(int v);
       /*@}*/
  • Merged Czech language support patches send by Petr Prikryl. Also removed some obsolete methods from the translator files.
  • Call chains like a->b()->c() are now followed by the code parser so c() is linked if documented.

Bug fixes

  • the warning message in case of ambigous file matches was containing a bogus %s, which could even crash doxygen.
  • An autolist followed by a \retval, \param, or \exception did produced invalid output, resulting in a compile error in LaTeX.
  • " has a special meaning in LaTeX when the german babel package is loaded. Doxygen now produces proper output for text containing quotes.
  • The title of a related page was not properly parsed, causing HTML special characters to end up in the output for some languages (German for instance).
  • The hierarchy shown in the "Contents" part of the html help browser did not properly show the hierarchy when it contained undocumented classes.
  • explict compound specifiers in the return type could lead to parse problems. Example:
           enum SomeEnumType_e Func()
       {
         ...
       }
    This was parsed as an enum definition.
  • A user defined style sheet did not get included properly, if it was specified with a (partial) path in HTML_STYLESHEET.
  • Linking in code fragments now works with nested classes and links to the correct reimplemented member are generated.
  • \ingroup did not work when grouping enums
  • members of a module were not cross-referenced with the sources.
  • Function pointers like void ( *func )() where not c orrectly parsed because of the extra spacing between the `(' and the `*'.
  • The const in void func(int * const val /*< a value. */); was named part of the name, instead of the type.
  • Removed bogus warning in case of global function pointer variables. Function pointers inside namespaces and member function pointers did also produce bogus warnings.
  • Fixed a misalignment problem with inline source fragments. Also the initializer list after a colon is now included in an inline source fragment.
  • Case sensitivity of file names was set before the configuration file was parsed, causing the default value of CASE_SENSE_NAMES to be used in any case.
  • added a space after "file" in the groupdef docs (thanks Hauke)
  • Documentation blocks can now also be put just after a class name, like in:
              class C
          /*! documentation here */
          {
            ...
          };
    This was already possible for functions.
  • Due to a bracket counting bug, throw clauses where not always parsed properly.
  • Fixed a parse bug for the following code-pattern:
             void Class::
         // Comment
         method() {}
  • With the newer Qt versions (2.1.x), passing a null string as the first argument of QRegExp::match seems no longer be allowed, so I added some extra checks to avoid potential crashes.
  • The title of the documentation of a template class now explicitly states that it is a template. (For non-English languages, this still requires a change to trCompoundReference() in translator_xx.h).
  • Fixed a problem with matching methods of template classes.
  • commenting out a section or subsection with <!-- --> did not work.
  • Fixed some inconsistencies in the configuration page of the documentation.
  • Some operators like operator[](), operator|() and operator!() did not appear correctly in the LaTeX index.
  • If an include file name matched a directory name, then the directory could be found first in the INCLUDE_PATH. This resulted in a scanner error.
  • Fixed parse problems that occurred when << or >> was part of a template argument list.
  • Fixed some more parse problems that occurred when parsing base classes that were nested templates.
  • variables whose name started with an _ like struct {int x; } _var; where not properly parsed.
  • LaTeX formulas did not work in the brief description of a JavaDoc style block that was put after an item.
  • Empty group definitions were not properly handled.
  • References to pages using \ref did not work in LaTeX.
  • Members that are typedef's to classes are now shown in the collaboration diagram.

Doxygen Release 1.1.4

Changes

  • The member definition that is put before the detailed documentation section should now be layouted a bit better for members of classes with lots of template arguments.
  • The HTML pages now have a new doxygen logo at the bottom. This logo has a transparent background and no shadow or anti-aliasing, so it looks equally nice on all backgrounds.
  • If the first member of a member group is documented, this documentation is now repeated for all undocumented members of that group.
  • The following is now treated as one parameter list with two parameters, instead of two lists with one parameter each.
           /*!
          @param a the first parameter

          @param b the second parameter
        */
    The same goes for the @retval and @exception commands.

New features

  • In code fragments: added different colors for keywords that are types, and for keywords that deal with the flow control. Also added colors for string and character literals.
  • Added a new command \nosubgrouping that 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. Example:
             /*! A class.
             \nosubgrouping
          */
         class Test
         {
           public:
             /*! \name A member group
              */
             //@{
             /*! Docs for both members in the group. */
             void Member1();
             void Member2();
             //@}
             /*! A member outside of the group. */
             void Member3();
         };
  • Added three new configuration options:
    • WARN_IF_UNDOCUMENTED which can be used to turn on or off warning message related to undocumented entities. This works independently of the WARNING tag, which is there to enable/disable all other warning messages.
    • WARN_FORMAT which can be used to specify the format of the warnings produced by doxygen. The argument is a free form string that must contain a $file, $line and $text marker. The $file and $line markers will be replaced by the file name and line number from where the warning originated. The $text marker will be replaced by the actual warning text. The default argument format string is: "$file:$line: $text".
    • DOT_PATH that can be used to specify the path where the dot tool is to be found, in case it is not in the default search path.
  • Added rudimentary support for using declarations. The following now works:
             /*! Docs for the namespace. */
         namespace N
         {
           /*! Docs for class Test. */
           class Test
           {
             public:
               void func();
           };
         };

         using N::Test;

         /*! The documentation for func is here */
         void Test::func() {}
    Using of individual functions remains unsupported.
  • collaboration and include dependency graph are now also included in the LaTeX documentation.
  • Thanks to Tim Mensch, doxygen has now has a \todo command, which can be used put todo items in the documentation. All items will automatically be cross-referenced with a (generated) todo list. Here is an example:
           /*! \mainpage
          \todo write something useful here.
        */

       /*! A class
          \todo Add more comments here
        */
       class Test
       {
         public:
           //! \todo implement this function
           void func();

           /*! Computes stuff.
               \todo can we combine this with Test::func()?
               More docs.
            */
           void func2();
       };
    Note that the arguments of the \todo command ends at the end of the line.
  • membergroups in files can now also be header-less. Example:
           /*! @file */

       /*! A macro */
       #define AMACRO 11

       //@{
       /*! F1 macros */
       #define F1_0 0
       #define F1_1 (F1_0 + 1)
       #define F1_2 (F1_1 + 2)
       //@}

       /*! Yet another macro */
       #define YAMACRO 10
  • The `explicit' and `mutable' keywords are now recognized as member attributes instead of return types.
  • the index page is now added to the HTML help contents.
  • In case "no matching member" is found, a list of possible (but non-matching) candidates is generated along with the warning. This makes it much easier to see what's wrong.
  • added two new commands:
    • \hideinitializer which can be put in the documentation to a variable or the define to hide the initializer or define value.
    • \showinitializer which can be used to explicitly show the initializer of a variable or the value of a define even if it is longer than 30 lines.

Bug fixes

  • Fixed a lock-up problem, that occurred when parsing a code fragment containing something like:
           //
       /*!
        blah
       */
    while STRIP_CODE_COMMENTS was set to NO
  • The auto list feature was still broken. Due to a bad scanner rule, things like -1 at the start of a line were treated as a list items (again) and a list at the end of a comment block did not always work either.
  • If an non-existent config file was specified, the directories "html", "man" and "latex" were created anyway.
  • A fragment like: os << ">" was misinterpreted by doxygen's code parser.
  • Parameter declarations that differ only in the presence or absence of const and/or volatile are now treated as equivalent, as is dictated by the C++ standard.
  • The inline function body was wrong in the following example:
            void f(
           int i    ///< Parameter
        )
        {
            return 1;
        }
    Thanks to Alexander Gidon for the fix.
  • typedef'ed classes are now also resolved in code fragments (again thanks to Alexander).
  • Fixed a bug related to base classes with nested template specifiers, like class SB in the following:
             template <class T> class C  {};
         template <class T> class S  {};
         template <class T> class SB {};
         template <class T> class S<C<T> > : public SB<C<T> > {};
  • #includes in code fragments where not hyperlinked. Operator methods were also not correctly recognised.
  • C/C++ comments inside initializers where not handled properly.
  • If the type of an argument of a member definition was prefixed with a (redudant) scope name of an indirect base class, then it was not matched against the member declaration if that omitted the scope.
  • \name did not work within //! comments
  • When FULL_PATH_NAMES was set to YES, doxygen did no longer distinguish between files with the same name (but in different directories).
  • The file match routine now does an case-insensitive lookup if CASE_SENSE_NAMES = NO. Hopefully this is enough to let doxygen ignore case differences in file names on Windows.
  • The constructors and destructors of classes inside namespaces or other classes did not end up in the constructor/destructor section of the documentation.
  • If an environment variable in the config file starts with a space followed by a list of words, the space ends up in the first word after expansion.
  • A <table> inside a JavaDoc style comment block caused a bogus warning.
  • Using member groups could result in an empty list generated in LaTeX, causing a error while compiling the documentation.
  • Fixed a missing stdlib.h problem in doxywizard, which occurred on non-Linux systems.
  • The generation of dot include graphs did not work properly in case file names with space were used.
  • back-references from source-lines to documentation only worked for those members of a member group that were explicitly documented.
  • doxygen did not distriguish between func(int a) and func(int a[]) which could cause documentation to end up at the wrong member in case over overloading.

Doxygen Release 1.1.3

Changes

  • Changed the way anonymous enums are handled: they are now handled just like named enums, which makes the "Enumeration Values" section obsolete.
  • If
             /*! \file */
    is put into a file (thus without further documentation) then the file is treated as being documented.

New features

  • Doxygen now has a GUI frontend to create and edit the configuration file. It is called doxywizard. To build it from sources use:
             ./configure --with-doxywizard
    The front-end requires Qt 2.x to build. I've only tested with Qt-2.1. Sources can be found in the addon directory.
  • To make it very easy to add new configuration options, doxygen now has an additional tool called configgen. All options supported by doxygen are now located in one place (in configgen.cpp). From this the configuration parser and part of the GUI are generated. You only need configgen if you want to add new options to doxygen. Thanks go to Joerg Baumann for providing the ideas and part of the code.
  • Added a bit of syntax highlighting to the generated source fragments in HTML (only keywords, comments and preprocessor directives are colored for now). The font color & style is determined by the style sheet, so it is easy to customize :-)
  • Typedefs of classes are now resolved when the inheritance and usage relation of classes is determined.
  • Waechter Parker made the following improvements on the RTF generator:
    1. Now it uses the translator for the table of contents entry names for the sections.
    2. writeSection now puts braces around the entry so the formatting doesn't get messed up so easily.
    3. removed extra newline in startDescList
    4. writeSectionRef now writes out "title (p.pagnum)" like it should.
    5. writeSectionRefAnchor now just calls writeSectionRef.
  • Doxygen's preprocessor now supports the non-ANSI "#else if" preprocessor construction, which some other preprocessors seem to accept as well.
  • Boris Bralo added language support for the Croatian language. Nickolay Semyonov has finished the translation to Russian, which is now included.
  • Added documentation for the commands \if and \endif, the configuration tag ENABLED_SECTIONS, and the ways to groups things together.
  • In the brief part of a JavaDoc style comment block, putting a backslash after a space, prevents switching to the detailed description. Example: i.e.\ this.
  • Class diagrams can now also be rendered with dot by setting CLASS_GRAPH to YES (this will disable the build-in class graphs). The advantages:
    • More compact diagrams.
    • Correctly looking diagrams in case of virtual inheritance.
    • A more consistent look w.r.t. the other graphs.
  • Groups can now contain namespaces and other groups.
  • operator% caused problems with LaTeX when PDF_HYPERLINKS was set to YES.

Bug fixes

  • \c func() did not autolink to function "func" anymore.
  • template members with multiple arguments were misaligned in the HTML output.
  • Since 1.1.2, environment variable expansion in the config file always resulted in a single string for each expanded variable (just as if quotes were put around the environment variable). The old behaviour is restored again.
  • removed redundant spaces in the man page output and fixed the tab alignment in code fragments.
  • typedef ( bla::*proc)(); was not properly parsed because of the space after the first opening bracket.
  • fixed a problem in the namespace strip routine that could potentially lock up doxygen.
  • Long pre-initialized arrays ended up in the documentation.
  • Friend functions that were documented at the declaration were cross-referenced to the wrong file when using SOURCE_BROWSER=YES.
  • When EXTRACT_ALL=YES was used, classes that were documented with \class appeared twice in the namespace documentation.
  • Setting HIDE_UNDOC_CLASS=YES could result in an incorrectly indented textual class hierarchy. This should now be fixed.
  • Members with very long return types caused all member names to be pushed to the right in the HTML documentation (if HTML_ALIGN_MEMBERS was YES). Now some line breaks are inserted at the proper places.
  • A couple of people reported that doxygen crashed while it was generating dot graphs. The cause was likely to be multiple frees of the same pointer (but I have not been able to reproduce the crash myself). I've now reimplemented the deletion routine of the dot graph respresentation, which hopefully fixes this problem.
  • Elements of the configuration options in lists, which used quotes were broken up into smaller pieces anyway. This most notably broke PREDEFINED in some cases that worked before.
  • Detailed description was present for classes, files and namespaces even if there was only a brief description and REPEAT_BRIEF was NO.
  • LaTeX: For German output "deutsch" was used as an option for the babel package, while it should be "german". For Russian output an encoding option is added.
  • The inheritance relation was incorrect for the inner class of B in the following situation:
           template <class T> class A { public: class inner { }; };
       template <class T> class B : public A<T>
              { public: class inner : public A<T>::inner { }; };
  • Fixed a bug that prevented the header links of the search engine from working.
  • Undocumented classes & enums made it in the file documentation even if HIDE_UNDOC_MEMBERS was set to YES.
  • Backslashes in includes like
           #include "..\blah.h"
    did not end up in the include dependency graph.
  • If ALPHABETICAL_INDEX=YES but there were no documented classes, part of the LaTeX output (doxygen.sty a.o.) was not generated (Thanks to Markus Lepper for reporting this).
  • Doxygen can now match arguments containing an explicit namespace qualifier against arguments containing an implicit qualitifier (i.e. imported via a using directive). An example (thanks to Karl Stroetmann):
           /*! a class */
       class Test
       {
         public:
           void resolve(const std::vector<int>&);
       };
       using namespace std;
       /*! a member */
       void Test::resolve(const vector<int>&) {}
  • Template specifiers are now shown in dot generated collaboration graphs.

Doxygen Release 1.1.2

Changes

  • Having the source browser set to YES does not longer imply that a member with a reference to the sources is automatically documented.
  • Base classes are shown in declaration order in the class diagrams
  • The arguments of a function now each get their own line in the header above the detailed description. This makes function with lots of argument much more readable.
  • Changed the look of the LaTeX output a bit.

New features

  • Thanks to Joerg Baumann, doxygen now has two new commands:
    • \if label
    • \endif
    These commands can be used to create conditional documentation blocks. Sections are disabled by default. To enable them add a guarding "label" to the ENABLED_SECTIONS tag in the config file. Conditional blocks can be nested. Example:
           /*! Normal docs.
           \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.
        */
  • Again thanks to Joerg Baumann, URLs and mail addresses are now hyperlinked in the PDF output (=latex with PDF_HYPERLINKS = YES).
  • Added support for member grouping. I reimplemented this from scratch. I decided to follow the doc++ syntax for the member grouping. Here are two examples.

    Usage: A group is defined by a //@{ .. //@} block (or /*@{*/../*@}*/ if you're addited to C style comments :-) Nesting of groups is not allowed. Before the opening marker of a block a separate comment block should be placed. This block should contain the @name (or \name) command to specify the header of the group.

    If all members of a user defined member group are in same section (for instance all are public methods), then the group as a whole will be listed as subsection of that section.

    Example1: Two ways to grouping member of a class

           /** A class. Details */
       class Test
       {
         public:
           /** @name Group1
               Description of group 1. Details.
            */
           //@{
           /** Function 1 in group 1. Details. */
           void func1InGroup1();
           /** Function 2 in group 1. Details. */
           void func2InGroup1();
           //@}

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

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

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

    Example2: Combining member groups with @defgroup.

           /** @defgroup globals Global Functions
           Functions that may be used in any translation unit.
        */

       /** @name Debug Functions */
       /*@{*/

       /** @ingroup globals
           debug printf function.
        */
       void debugPrint(const char *s /**< the message to print. */
                      );

       /** @ingroup globals
           assert function.
        */
       void my_assert(const char *f, /**< current file. */
                      int l,         /**< current line. */
                      BOOL e         /**< expression to evaluate. */
                     );
       /*@}*/

       /** @name Test Functions */
       /*@{*/

       /** @ingroup globals
           test on-board memory.
           @returns TRUE if successful.
        */
       bool testRam();

       /** @ingroup globals
           perform CPU self-test.
           @returns TRUE if successful.
        */
       bool testCPU();

       /*@}*/
  • Documented variables (e.g. constants) that are used as initializers of function parameters are now also cross-referenced.
  • Lucas Cruz sent an update for the Spanish translation. This is now included. Jens Breitenstein sent an update for the German translation. Philippe Lhoste sent some bug fixes for the French translation. Alessandro Falappa sent an updated of the Italian translation, which is now included. Nickolay Semyonov added initial support for the Russian language. I updated the Dutch translation.
  • Thanks to Matthias Andree, the doxygen source package now contains a .spec file. This can be used to build an .rpm package for doxygen. doing:
             rpm -ta doxygen-x.y.z.src.tar.gz
    will create the rpm (in /usr/src/packages/RPMS/i386/ on my machine). Running rpm -Uhv as root on the .rpm file will install/update doxygen. After that you can use rpm -e doxygen to uninstall it again.
  • Umlauts and other accents in the documentation now appear properly in generated RTF output.

Bug fixes

  • Fixed bug in the generated config file (LATEX_BATCHMODE)
  • When updating the config file, TAB_SIZE and COLS_IN_ALPHA_INDEX were reset to their default values. Environment variables in the config file are no longer replaced by their value when updating the config file.
  • The version.cpp file is now automatically updated when creating a source/cvs package.
  • The types of arguments that are prefixed with a namespace scope are now be matched against non-prefixed names. Example:
           namespace std { class string {}; }
       //! A class
       class Test {
         public:
           void test(std::string a);
       };
       using std::string;
       //! A member
       void Test::test(string a);
    Note: The namespace definition has to be part of the input sources for this to work!
  • Fixed a bug in structure of the graphical class hierarchy (thanks to Paul Bohme for pointing me at this bug)
  • Non-function members can now also be documented if they are inside annonymous namespaces, which themselves are nested in named namespaces.
  • #defines can now grouped with \defgroup and \ingroup as well.
  • fixed a bug in the latex output of groups (thanks to Gregory Kurz for reporting this)
  • Doing a \ref to a \anchor in an example did not work.
  • static file & namespace members were cross-referenced even though they were not visible if EXTRACT_PRIVATE is set to NO.
  • The following code fragment made doxygen crash, because the table was split between the brief and detailed section:
           /** <table><tr><td>a. </td><tr></table> */
       class Test {};
    Doxygen now ends the brief description when a <table> tag is encountered.
  • \c and \b now also accept numbers and other printable characters, instead of only identifiers.
  • Autolinking did not work if a member with arguments was specified in the documentation and that member had a const or volatile postfix in the code. Autolinking did not also not work if a member with arguments contained digits (thanks to Fred Labrosse for pointing me at this bug).
  • The first line was missed if @code was used for generating man pages. (Thanks to Joe Bester for the patch).
  • \link create_link(long,int&) bla \endlink now works (doxygen was confused by the arguments before).
  • A brief description after a function definition, followed by a detailed description now works as expected. Example:
             bool func()
         {
         }
         //!< Brief.
         /*!< Details. */
  • Multi-line brief descriptions after a function declaration or definition now work as excepted. Example:
             bool func()
         //!< Brief.
         //!< More brief.
  • \latexonly fragments were put on a single line causing problems when latex comments (%'s) are used.
  • The license file that came with doxygen was of LGPL, while it should be GPL. The correct license file is included now.
  • The heading of the alphabetical index was duplicated if classes were present in both upper and lower case.
  • If ENABLE_PREPROCESSING=NO and the INPUT_FILTER was used, doxygen did not filter properly can could even block on input!
  • Internationalization should now output proper characters with qt-2.1x.
  • If namespace contained a function prototype & a function definition they both ended up in the documentation.
  • <table> without </table> could cause doxygen to crash. Now a warning is given.
  • Multiline variable and enum initializers with lots of spaces were shown in an ugly way.

Doxygen Release 1.1.1

Changes

  • "Reimplements" for a member now points to the most direct base class that overrides the member instead of the base class containing the vtable.
  • classes, namespaces, and members are now sorted in a case insensitive way (like in a dictionary). Was case sensitive.
  • Kenji Nagamatsu has send me an update for the Japanese translation which is now included.

New features

  • new option SHOW_INCLUDE_FILES, which can be set to NO to turn of the list of include files that is generated for each documented file.
  • new option STRIP_CODE_COMMENTS, which can be set to NO to keep any special comment blocks in the generated code fragments.
  • Added a new tag to the configuration file: SORT_MEMBER_DOCS. If this is set to NO the member documentation will appear in declaration order (as was the case with version 1.0.0 and older).
  • Corba IDL exceptions are now also supported by doxygen. If you do not want to put the documentation in front of the exception you can use \idlexcept command which behaves like \class.
  • Local file:/// URLs are now automatically linked when put in the documentation.
  • For \class and other structural commands you can now use a backslash (\) at the end of a line to continue the command on the next line. Example:
             \class Abstract_Server_Session_Implementation  \
                Abstract_Server_Session_Implementation.h \
                ATD/Abstract_Server_Session_Implementation.h
  • "make distclean" now removes all generated stuff and results in a package that is more clean than a normal source package (i.e. the generated flex & bison code is removed).
  • Added command \note (and @note) for a "Note:" paragraph.
  • Multi arguments can now be given as a comma separated list after a \param or \retval command. Example:
           void Zoom( int aX1, int aY1, int aX2, int aY2 );
       /*! Zoom into the data.
           \param aX1, aY1 Upper left corner.
           \param aX2, aY2 Lower right corner.
        */
  • Added 9 new class declaration sections: Public/Protected/Private Types, for member typedefs & variables. [Static] Public/Protected/Private Attributes, for member variables.
  • Doxygen now has a new command line option -u, that can be used to upgrade an old configuration file without losing the values that where edited. In combination with the -s option this can also be used to strip comments from or add comments to a configuration file.
  • Added a new tag LATEX_BATCHMODE that makes latex run in batch mode. This will run latex non-interactively, and not stop at the first problem encountered. If the tag is enabled this mode will also be used when generation formulas for inclusion in the HTML documentation.
  • The \ingroup command can now also be used to group a number of members. The only limitation is that a member can currently be in one group only (classes, files & namespaces do not have this limitation).

Bug fixes

  • The graphical class hierarchy was not properly generated when template classes were used.
  • Template specialization could not be documented using the \class command. This is now fixed. Example:
           /*!
          \class T<A,int>
          My template specialization of template T.
        */
  • Fixed a bug when parsing M$-IDL code, containing helpstring("bla") attributes. The attributes of a method are no longer shown in the documentation (the attributes of method arguments still visible however).
  • Improved the search algorithm that tries to connect classes with their base classes. It should now (hopefully) work correct in all cases where nested classes and/or namespaces are used.
  • Fixed a scanner problem that could cause doxygen to get confused after parsing struct initializers.
  • the DOTFONTPATH environment variable is now automatically set for Windows. This should make any "missing doxfont.ttf" messages disappear.
  • the extra LaTeX packages specified with EXTRA_PACKAGES can now also be used when generating formulas for HTML.
  • The documentation of a parameters that is part of a member definition, is now used in the documentation as well.
  • Fixed a HTML output bug in the class/file group-pages.
  • Links to example files generated with \link ... \endlink where not correct.
  • made the bullet list generation more robust. A space is now required after the - sign. A list can now start a paragraph.
  • the configure script now detects whether or not dot is installed.
  • The VERBATIM_HEADERS option didn't have any effect any more. It should now work again as advertised.
  • The IGNORE_PREFIX option can now also deal with a list of prefixes.
  • @verbatim ... @endverbatim blocks did not work.
  • removed some \n's from the systems calls that run dot. This appears to cause problems for some people and was not what I intended anyway :^)
  • The following construct was not working:
           namespace foo { class bar; }
       /*! let's go to the bar */
       class foo::bar { };
  • Members inside annonymous namespaces nested inside named namespaces were not properly handled.
  • When documenting template specializations with the \class command, the second argument was not interpreted correctly.
  • Interface inheritance relations are now always public for IDL interfaces.
  • Templetized related functions showed a double `template' line.
  • Related function that had a declaration and a definition also appeared in file documentation but without documentation.
  • Links to files of the include dependency graph were non existent in some situations.
  • Removed warning generated for undocumented friend classes.
  • Class reference in the main page ended up in refman.tex
  • Source files were generated for files mentioned in tag files.
  • The graphical class hierarchy always contained all external class, regardless of the ALLEXTERNALS flag.
  • operator~() was grouped with the constructor/destructors.
  • In a number of cases, documented include files, that were shown in the include dependency diagram where not found to be documented. As a result the diagram was often not clickable and incomplete.
  • Fixed the graphical class hierarchy. Sometimes classes were missing.
  • Added support for the cpp_quote hack inside M$-IDL code.
  • The typedef in:
             struct MyStruct { int i; };
         typedef struct MyStruct * MyStructPtr;
    was mistaken for a variable.
  •         /** @file
           @brief
           Brief.

           Details.
        */
    was not properly handled.
  • Corba IDL unions now work. Example:
           /** \union XYZ
           \brief The XYZ union.
        */
       union XYZ switch ( ABC )
       {
         case A: D_VAR m_d; ///< Docs for a member in case A
         case B: E_VAR m_e; ///< Docs for a member in case B
       };
  • Classes documented with \class and using \ingroup where not always put into the group.
  • In Latex & RTF references to undocumented files where put in the index.

Doxygen Release 1.1.0

Changes

  • Static file members are now hidden if EXTRACT_PRIVATE is set to NO.
  • the documentation of members in the class/file descriptions are now alphabetically sorted by member name for each section. There is a new section for constructors & destructors.
  • merged file, header and source indices into one file index. As a result, doxygen will generate a hyperlinked source code only once. This should greatly increase speed and reduce memory usage for large projects.

New features

  • Thanks to Parker Waechter, doxygen now has a new output format: RTF. This is Microsoft's "portable" document format. Due to the great "portability" of this format the output produced by doxygen will probably only look nice with Microsoft's Word 97.

    RTF is currently disabled by default. You can set GENERATE_RTF to YES to enable it. The directory where the RTF output is put, can be specified using the RTF_OUTPUT tag in the configuration file. COMPACT_RTF can be enabled to generate more compact RTF. RTF_HYPERLINKS can be used to generate HTML like cross references in the document.

  • Doxygen can now use the "dot" tool from graphviz 1.5, which is an open-sourced, cross-platform graph drawing toolkit from AT&T and Lucent Bell Labs.

    Graphviz can be found at https://www.graphviz.org/ If you have the "dot" tool available 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:

    • if GRAPHICAL_HIERARCHY is set to YES, a graphical representation of the overall inheritance diagram will be drawn, along with the textual one (currently supported for HTML only).
    • if INCLUDE_GRAPH is set to YES, an include dependency graph is generated for each documented file that includes at least one other file (currently supported for HTML and RTF only).
    • if COLLABORATION_GRAPH is set to YES, a graph is drawn for each documented class and struct that shows:
      • the inheritance relation with base classes (using solid blue/green/red arrows, for public,protected,private inheritance).
      • the containment relations with other structs and class (using purple dashed arrows with variable names as labels) (currently supported for HTML and RTF only)

    For the include dependency graph and the collaboration graph, doxygen will render a transitive closure of the relation. If the diagram becomes too large (currently wider than 1024 pixels), only the maximum graph depth (as seen from the root of the graph) that still fits will be drawn. (the nodes that can still be expanded are shown with a red border in this case).

    For HTML all graphs are drawn as client side clickable image maps.

  • Each file now has a list the files it includes (with links to the sources if available)
  • For class documentation it is now possible to choose how the #include statement should look like (i.e. like "stdio.h" or <stdio.h>). This can be done using the third argument of the \class command. Example:
    \class myclass myclass.h "mydir/myclass.h"
  • If the - character is used as the first character in a comment line it is interpreted as an item of a bullet list. Subitems are also possible. Here is an example:
           /*!
          A list:
               - item 1
                 - subitem 1
               - item 2
                 - subitem 1
                   - subsubitem
                 - subitem 2
               - item 3
               - item 4

          Starting a new paragraph in a top level item ends the list!
        */
    Notice: tabs can be used for indenting, but the TAB_SIZE tag in the configuration file must be set correctly!
  • Function/member arguments can now be documented, like this
           /*! This function finds the first occurrence of a
           substring in a string.
        */
       char *strstr(const char *haystack, /*!< the string to search in. */
                    const char *needle)   /*!< the substring to search for. */
       {
       }
  • Three new section commands \pre, \post and \invariant are added to describe preconditions, postcondictions and invariants respectively.
  • Variable/enum initializers and define definitions are now included in documentation (unless the initializer/definition is more than 30 lines long)
  • Added new configuration option IGNORE_PREFIX that can be used to ignore a specified prefix while generating the alphabetical class index.

Bug fixes

  • All defines were shown as function macros in the documentation section.
  • Fixed bug with parsing multi-line defines on Windows (\r problem).
  • Protection level of members inside nested anonymous compounds was not set correctly.
  • Class diagram was not correct in case the same class was inherited via two different paths (bug introduced in 1.0.0).
  • If a tag is specified two times in the config file, then the second definition will correctly overwrite the value of the first occurrence.
  • For multiple defines with comments after them only the first was cross-referenced with the sources.
  • Autolinks to #defines looked like function macro even if they weren't.
  • Members that were hidden deep in an inheritance tree, got multiple scope prefixes in the "all members list", while a scope prefix to the member in the base class was enough to use it unambiguishly.
  • \latexonly ... \endlatexonly in the main page produced erroneous text in refman.tex
  • The keywords in header and footer were only evaluated once.
  • Formulas now also work in documentation blocks that are put after an item.
  • The source code could produce links to the wrong class for a code fragment like a.f() in case two classes have the same member variable `a', but with a different class types and those classes both had the member function `f'.
  • array type arguments (like int a[2]) where not matched if the argument name of declaration and definition were different.
  • memory in code.l is now returned at the appropriate times.
Go back to the main page.


Doxygen: Main Page

Doxygen
Doxygen Documentation
doxygen
Version:

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.
  • Section Emoji support shows an introduction how emoji 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-2016 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.


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
Including tables
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
Emoji support
Internationalization
Perl Module Output
Perl Module Tree Nodes
Doxygen's Internals
Changelog


(1.8.15)

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, 4 translators are up-to-date, 36 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 280 of the required methods, and even minor
problems were not spotted by the script:

  TranslatorDutch
  TranslatorEnglish

----------------------------------------------------------------------
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:

  TranslatorFrench	-- Change the base class to Translator.
  TranslatorSpanish	-- Change the base class to Translator.

----------------------------------------------------------------------
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:

  TranslatorSwedish               1.8.15	38 methods to implement (13 %)
  TranslatorSlovak                1.8.15	38 methods to implement (13 %)
  TranslatorRussian               1.8.15	38 methods to implement (13 %)
  TranslatorRomanian              1.8.15	38 methods to implement (13 %)
  TranslatorPortuguese            1.8.15	29 methods to implement (10 %)
  TranslatorKorean                1.8.15	38 methods to implement (13 %)
  TranslatorJapanese              1.8.15	38 methods to implement (13 %)
  TranslatorItalian               1.8.15	38 methods to implement (13 %)
  TranslatorHungarian             1.8.15	38 methods to implement (13 %)
  TranslatorGreek                 1.8.15	38 methods to implement (13 %)
  TranslatorGerman                1.8.15	29 methods to implement (10 %)
  TranslatorCzech                 1.8.15	38 methods to implement (13 %)
  TranslatorChinese               1.8.15	38 methods to implement (13 %)
  TranslatorChinesetraditional    1.8.15	38 methods to implement (13 %)
  TranslatorBrazilian             1.8.15	29 methods to implement (10 %)
  TranslatorUkrainian             1.8.4 	46 methods to implement (16 %)
  TranslatorLatvian               1.8.4 	46 methods to implement (16 %)
  TranslatorEsperanto             1.8.4 	46 methods to implement (16 %)
  TranslatorPolish                1.8.2 	52 methods to implement (18 %)
  TranslatorCroatian              1.8.2 	53 methods to implement (18 %)
  TranslatorIndonesian            1.8.0 	60 methods to implement (21 %)
  TranslatorDanish                1.8.0 	60 methods to implement (21 %)
  TranslatorCatalan               1.8.0 	60 methods to implement (21 %)
  TranslatorArmenian              1.8.0 	60 methods to implement (21 %)
  TranslatorTurkish               1.7.5 	63 methods to implement (22 %)
  TranslatorPersian               1.7.5 	63 methods to implement (22 %)
  TranslatorVietnamese            1.6.0 	71 methods to implement (25 %)
  TranslatorSerbian               1.6.0 	71 methods to implement (25 %)
  TranslatorSerbianCyrillic       1.6.0 	71 methods to implement (25 %)
  TranslatorMacedonian            1.6.0 	71 methods to implement (25 %)
  TranslatorFinnish               1.6.0 	71 methods to implement (25 %)
  TranslatorAfrikaans             1.6.0 	71 methods to implement (25 %)
  TranslatorSlovene               1.4.6 	95 methods to implement (33 %)
  TranslatorNorwegian             1.4.6 	93 methods to implement (33 %)
  TranslatorLithuanian            1.4.6 	95 methods to implement (33 %)
  TranslatorArabic                1.4.6 	93 methods to implement (33 %)

----------------------------------------------------------------------
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

======================================================================
Details for translators (classes sorted alphabetically):

TranslatorAfrikaans   (TranslatorAdapter_1_6_0)  71 methods to implement (25 %)
-------------------

  Implements 209 of the required methods (74 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFileIn(const char * name)
    virtual QCString trFunctionAndProc()
    virtual QCString trGlobalNamespace()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trLoading()
    virtual QCString trMethodDocumentation()
    virtual QCString trNoMatches()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSearching()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorArabic   (TranslatorAdapter_1_4_6)  93 methods to implement (33 %)
----------------

  Implements 187 of the required methods (66 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCallerGraph()
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundIndexFortran()
    virtual QCString trCompoundListDescriptionFortran()
    virtual QCString trCompoundListFortran()
    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
    virtual QCString trCompoundMembersFortran()
    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDataTypes()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFileIn(const char * name)
    virtual QCString trFunctionAndProc()
    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trLoading()
    virtual QCString trMemberFunctionDocumentationFortran()
    virtual QCString trMethodDocumentation()
    virtual QCString trModule(bool first_capital, bool singular)
    virtual QCString trModuleReference(const char * namespaceName)
    virtual QCString trModulesIndex()
    virtual QCString trModulesList()
    virtual QCString trModulesListDescription(bool extractAll)
    virtual QCString trModulesMemberDescription(bool extractAll)
    virtual QCString trModulesMembers()
    virtual QCString trNoMatches()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSearching()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trSubprogram(bool first_capital, bool singular)
    virtual QCString trSubprogramDocumentation()
    virtual QCString trSubprograms()
    virtual QCString trTemplateParameters()
    virtual QCString trType(bool first_capital, bool singular)
    virtual QCString trTypeConstraints()
    virtual QCString trTypeDocumentation()
    virtual QCString trVhdlType(uint64 type, bool single)

  Obsolete methods (should be removed, never used):

    virtual QCString trBugsAndLimitations()
    virtual QCString trField(bool/*first_capital*/, bool singular)
    virtual QCString trHeaderFiles()
    virtual QCString trHeaderFilesDescription()
    virtual QCString trNoDescriptionAvailable()
    virtual QCString trPackageDocumentation()
    virtual QCString trReimplementedForInternalReasons()
    virtual QCString trSources()

TranslatorArmenian   (TranslatorAdapter_1_8_0)  60 methods to implement (21 %)
------------------

  Implements 220 of the required methods (78 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFunctionAndProc()
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trMethodDocumentation()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorBrazilian   (TranslatorAdapter_1_8_15)  29 methods to implement (10 %)
-------------------

  Implements 251 of the required methods (89 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()

TranslatorCatalan   (TranslatorAdapter_1_8_0)  60 methods to implement (21 %)
-----------------

  Implements 220 of the required methods (78 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFunctionAndProc()
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trMethodDocumentation()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorChinese   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
-----------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

  Obsolete methods (should be removed, never used):

    virtual QCString latexDocumentPost()
    virtual QCString latexDocumentPre()
    virtual QCString latexFontenc()

TranslatorChinesetraditional   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
----------------------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

  Obsolete methods (should be removed, never used):

    virtual QCString latexDocumentPost()
    virtual QCString latexDocumentPre()
    virtual QCString latexFontenc()

TranslatorCroatian   (TranslatorAdapter_1_8_2)  53 methods to implement (18 %)
------------------

  Implements 227 of the required methods (81 %).

  Missing methods (should be implemented):

    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFunctionAndProc()
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trMethodDocumentation()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorCzech   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
---------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorDanish   (TranslatorAdapter_1_8_0)  60 methods to implement (21 %)
----------------

  Implements 220 of the required methods (78 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFunctionAndProc()
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trMethodDocumentation()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorEsperanto   (TranslatorAdapter_1_8_4)  46 methods to implement (16 %)
-------------------

  Implements 234 of the required methods (83 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorFinnish   (TranslatorAdapter_1_6_0)  71 methods to implement (25 %)
-----------------

  Implements 209 of the required methods (74 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFileIn(const char * name)
    virtual QCString trFunctionAndProc()
    virtual QCString trGlobalNamespace()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trLoading()
    virtual QCString trMethodDocumentation()
    virtual QCString trNoMatches()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSearching()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorFrench   (TranslatorAdapter_1_8_15)
----------------

  Implements 280 of the required methods (100 %).

TranslatorGerman   (TranslatorAdapter_1_8_15)  29 methods to implement (10 %)
----------------

  Implements 251 of the required methods (89 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()

TranslatorGreek   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
---------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorHungarian   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
-------------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorIndonesian   (TranslatorAdapter_1_8_0)  60 methods to implement (21 %)
--------------------

  Implements 220 of the required methods (78 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFunctionAndProc()
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trMethodDocumentation()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorItalian   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
-----------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorJapanese   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
------------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

  Obsolete methods (should be removed, never used):

    virtual QCString latexDocumentPost()
    virtual QCString latexDocumentPre()
    virtual QCString latexFontenc()

TranslatorJapaneseEn   (TranslatorEnglish)  276 methods to implement (98 %)
--------------------

  Implements 4 of the required methods (1 %).

  Obsolete methods (should be removed, never used):

    virtual QCString latexDocumentPost()
    virtual QCString latexDocumentPre()
    virtual QCString latexFontenc()

  This English-based translator implements the following methods:

    virtual QCString idLanguage()
    virtual QCString latexLanguageSupportCommand()
    virtual QCString trRTFCharSet()
    virtual QCString trRTFansicp()

TranslatorKorean   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
----------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

  Obsolete methods (should be removed, never used):

    virtual QCString latexCommandName()

TranslatorKoreanEn   (TranslatorEnglish)  276 methods to implement (98 %)
------------------

  Implements 4 of the required methods (1 %).

  Obsolete methods (should be removed, never used):

    virtual QCString latexCommandName()

  This English-based translator implements the following methods:

    virtual QCString idLanguage()
    virtual QCString latexLanguageSupportCommand()
    virtual QCString trRTFCharSet()
    virtual QCString trRTFansicp()

TranslatorLatvian   (TranslatorAdapter_1_8_4)  46 methods to implement (16 %)
-----------------

  Implements 234 of the required methods (83 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorLithuanian   (TranslatorAdapter_1_4_6)  95 methods to implement (33 %)
--------------------

  Implements 185 of the required methods (66 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCallerGraph()
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundIndexFortran()
    virtual QCString trCompoundListDescriptionFortran()
    virtual QCString trCompoundListFortran()
    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
    virtual QCString trCompoundMembersFortran()
    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDataTypes()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trEnumerationValueDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFileIn(const char * name)
    virtual QCString trFunctionAndProc()
    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trLoading()
    virtual QCString trMemberFunctionDocumentationFortran()
    virtual QCString trMethodDocumentation()
    virtual QCString trModule(bool first_capital, bool singular)
    virtual QCString trModuleReference(const char * namespaceName)
    virtual QCString trModulesIndex()
    virtual QCString trModulesList()
    virtual QCString trModulesListDescription(bool extractAll)
    virtual QCString trModulesMemberDescription(bool extractAll)
    virtual QCString trModulesMembers()
    virtual QCString trNoMatches()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSearching()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trSubprogram(bool first_capital, bool singular)
    virtual QCString trSubprogramDocumentation()
    virtual QCString trSubprograms()
    virtual QCString trTemplateParameters()
    virtual QCString trType(bool first_capital, bool singular)
    virtual QCString trTypeConstraints()
    virtual QCString trTypeDocumentation()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorMacedonian   (TranslatorAdapter_1_6_0)  71 methods to implement (25 %)
--------------------

  Implements 209 of the required methods (74 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFileIn(const char * name)
    virtual QCString trFunctionAndProc()
    virtual QCString trGlobalNamespace()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trLoading()
    virtual QCString trMethodDocumentation()
    virtual QCString trNoMatches()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSearching()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorNorwegian   (TranslatorAdapter_1_4_6)  93 methods to implement (33 %)
-------------------

  Implements 187 of the required methods (66 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCallerGraph()
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundIndexFortran()
    virtual QCString trCompoundListDescriptionFortran()
    virtual QCString trCompoundListFortran()
    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
    virtual QCString trCompoundMembersFortran()
    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDataTypes()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFileIn(const char * name)
    virtual QCString trFunctionAndProc()
    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trLoading()
    virtual QCString trMemberFunctionDocumentationFortran()
    virtual QCString trMethodDocumentation()
    virtual QCString trModule(bool first_capital, bool singular)
    virtual QCString trModuleReference(const char * namespaceName)
    virtual QCString trModulesIndex()
    virtual QCString trModulesList()
    virtual QCString trModulesListDescription(bool extractAll)
    virtual QCString trModulesMemberDescription(bool extractAll)
    virtual QCString trModulesMembers()
    virtual QCString trNoMatches()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSearching()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trSubprogram(bool first_capital, bool singular)
    virtual QCString trSubprogramDocumentation()
    virtual QCString trSubprograms()
    virtual QCString trTemplateParameters()
    virtual QCString trType(bool first_capital, bool singular)
    virtual QCString trTypeConstraints()
    virtual QCString trTypeDocumentation()
    virtual QCString trVhdlType(uint64 type, bool single)

  Obsolete methods (should be removed, never used):

    virtual QCString trBugsAndLimitations()
    virtual QCString trField(bool first_capital, bool singular)
    virtual QCString trHeaderFiles()
    virtual QCString trHeaderFilesDescription()
    virtual QCString trNoDescriptionAvailable()
    virtual QCString trPackageDocumentation()
    virtual QCString trReimplementedForInternalReasons()
    virtual QCString trSources()

TranslatorPersian   (TranslatorAdapter_1_7_5)  63 methods to implement (22 %)
-----------------

  Implements 217 of the required methods (77 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFunctionAndProc()
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trMethodDocumentation()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorPolish   (TranslatorAdapter_1_8_2)  52 methods to implement (18 %)
----------------

  Implements 228 of the required methods (81 %).

  Missing methods (should be implemented):

    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFunctionAndProc()
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trMethodDocumentation()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

  Obsolete methods (should be removed, never used):

    QCString trBugsAndLimitations()
    virtual QCString trField(bool first_capital, bool singular)
    QCString trHeaderFiles()
    QCString trHeaderFilesDescription()
    QCString trNoDescriptionAvailable()
    virtual QCString trPackageDocumentation()
    QCString trReimplementedForInternalReasons()
    QCString trSources()

TranslatorPortuguese   (TranslatorAdapter_1_8_15)  29 methods to implement (10 %)
--------------------

  Implements 251 of the required methods (89 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()

TranslatorRomanian   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
------------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorRussian   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
-----------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorSerbian   (TranslatorAdapter_1_6_0)  71 methods to implement (25 %)
-----------------

  Implements 209 of the required methods (74 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFileIn(const char * name)
    virtual QCString trFunctionAndProc()
    virtual QCString trGlobalNamespace()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trLoading()
    virtual QCString trMethodDocumentation()
    virtual QCString trNoMatches()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSearching()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorSerbianCyrillic   (TranslatorAdapter_1_6_0)  71 methods to implement (25 %)
-------------------------

  Implements 209 of the required methods (74 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFileIn(const char * name)
    virtual QCString trFunctionAndProc()
    virtual QCString trGlobalNamespace()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trLoading()
    virtual QCString trMethodDocumentation()
    virtual QCString trNoMatches()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSearching()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

  Obsolete methods (should be removed, never used):

    virtual QCString latexFontenc()

TranslatorSlovak   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
----------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorSlovene   (TranslatorAdapter_1_4_6)  95 methods to implement (33 %)
-----------------

  Implements 185 of the required methods (66 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCallerGraph()
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundIndexFortran()
    virtual QCString trCompoundListDescriptionFortran()
    virtual QCString trCompoundListFortran()
    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
    virtual QCString trCompoundMembersFortran()
    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDataTypes()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trEnumerationValueDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFileIn(const char * name)
    virtual QCString trFunctionAndProc()
    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
    virtual QCString trGlobalNamespace()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trLoading()
    virtual QCString trMemberFunctionDocumentationFortran()
    virtual QCString trMethodDocumentation()
    virtual QCString trModule(bool first_capital, bool singular)
    virtual QCString trModuleReference(const char * namespaceName)
    virtual QCString trModulesIndex()
    virtual QCString trModulesList()
    virtual QCString trModulesListDescription(bool extractAll)
    virtual QCString trModulesMemberDescription(bool extractAll)
    virtual QCString trModulesMembers()
    virtual QCString trNoMatches()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSearching()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trSubprogram(bool first_capital, bool singular)
    virtual QCString trSubprogramDocumentation()
    virtual QCString trSubprograms()
    virtual QCString trTemplateParameters()
    virtual QCString trType(bool first_capital, bool singular)
    virtual QCString trTypeConstraints()
    virtual QCString trTypeDocumentation()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorSpanish   (TranslatorAdapter_1_8_15)
-----------------

  Implements 280 of the required methods (100 %).

TranslatorSwedish   (TranslatorAdapter_1_8_15)  38 methods to implement (13 %)
-----------------

  Implements 242 of the required methods (86 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorTurkish   (TranslatorAdapter_1_7_5)  63 methods to implement (22 %)
-----------------

  Implements 217 of the required methods (77 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFunctionAndProc()
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trMethodDocumentation()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorUkrainian   (TranslatorAdapter_1_8_4)  46 methods to implement (16 %)
-------------------

  Implements 234 of the required methods (83 %).

  Missing methods (should be implemented):

    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trFunctionAndProc()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trVhdlType(uint64 type, bool single)

TranslatorVietnamese   (TranslatorAdapter_1_6_0)  71 methods to implement (25 %)
--------------------

  Implements 209 of the required methods (74 %).

  Missing methods (should be implemented):

    virtual QCString trAdditionalInheritedMembers()
    virtual QCString trAndMore(const QCString & number)
    virtual QCString trCiteReferences()
    virtual QCString trClassMethods()
    virtual QCString trCompoundReferenceSlice(const char * clName, ClassDef::CompoundType compType, bool isLocal)
    virtual QCString trConstantDocumentation()
    virtual QCString trConstantGroupReference(const char * namespaceName)
    virtual QCString trConstantGroups()
    virtual QCString trConstants()
    virtual QCString trCopyright()
    virtual QCString trCustomReference(const char * name)
    virtual QCString trDataMemberDocumentation()
    virtual QCString trDataMembers()
    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
    virtual QCString trDesignOverview()
    virtual QCString trDesignUnitHierarchy()
    virtual QCString trDesignUnitIndex()
    virtual QCString trDesignUnitList()
    virtual QCString trDesignUnitListDescription()
    virtual QCString trDesignUnitMembers()
    virtual QCString trDesignUnits()
    virtual QCString trDetailLevel()
    virtual QCString trDictionaries()
    virtual QCString trDictionaryDocumentation()
    virtual QCString trDirDepGraph(const char * name)
    virtual QCString trDirRelation(const char * name)
    virtual QCString trEnumGeneratedFromFiles(bool single)
    virtual QCString trEnumReference(const char * name)
    virtual QCString trExceptionDocumentation()
    virtual QCString trExceptionHierarchy()
    virtual QCString trExceptionHierarchyDescription()
    virtual QCString trExceptionIndex()
    virtual QCString trExceptionList()
    virtual QCString trExceptionListDescription()
    virtual QCString trExtendsClass()
    virtual QCString trFileIn(const char * name)
    virtual QCString trFunctionAndProc()
    virtual QCString trGlobalNamespace()
    virtual QCString trIncludesFileIn(const char * name)
    virtual QCString trInheritedFrom(const char * members, const char * what)
    virtual QCString trInstanceMethods()
    virtual QCString trInterfaceDocumentation()
    virtual QCString trInterfaceHierarchy()
    virtual QCString trInterfaceHierarchyDescription()
    virtual QCString trInterfaceIndex()
    virtual QCString trInterfaceList()
    virtual QCString trInterfaceListDescription()
    virtual QCString trInterfaces()
    virtual QCString trLoading()
    virtual QCString trMethodDocumentation()
    virtual QCString trNoMatches()
    virtual QCString trOperationDocumentation()
    virtual QCString trOperations()
    virtual QCString trPanelSynchronisationTooltip(bool enable)
    virtual QCString trProvidedByCategory()
    virtual QCString trSearching()
    virtual QCString trSequenceDocumentation()
    virtual QCString trSequences()
    virtual QCString trServiceGeneratedFromFiles(bool single)
    virtual QCString trServiceReference(const char * sName)
    virtual QCString trServices()
    virtual QCString trSingletonGeneratedFromFiles(bool single)
    virtual QCString trSingletonReference(const char * sName)
    virtual QCString trSliceInterfaces()
    virtual QCString trStructDocumentation()
    virtual QCString trStructIndex()
    virtual QCString trStructList()
    virtual QCString trStructListDescription()
    virtual QCString trStructs()
    virtual QCString trTemplateParameters()
    virtual QCString trVhdlType(uint64 type, bool single)

  Obsolete methods (should be removed, never used):

    virtual QCString latexCommandName()
    virtual QCString latexFontenc()


AfterDocs: afterdoc.h Source File

AfterDocs
afterdoc.h
1 /*! A test class */
2
3 class Afterdoc_Test
4 {
5 public:
6 /** An enum type.
7 * The documentation block cannot be put after the enum!
8 */
9 enum EnumType
10 {
11 int EVal1, /**< enum value 1 */
12 int EVal2 /**< enum value 2 */
13 };
14 void member(); //!< a member function.
15
16 protected:
17 int value; /*!< an integer value */
18 };
Afterdoc_Test::member
void member()
a member function.
Afterdoc_Test::EVal1
enum value 1
Definition: afterdoc.h:11
Afterdoc_Test::EnumType
EnumType
An enum type.
Definition: afterdoc.h:9
Afterdoc_Test::value
int value
Definition: afterdoc.h:17
Afterdoc_Test
Definition: afterdoc.h:3
Afterdoc_Test::EVal2
enum value 2
Definition: afterdoc.h:12


AfterDocs: Afterdoc_Test Class Reference

AfterDocs
Public Types | Public Member Functions | Protected Attributes | List of all members
Afterdoc_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

◆ EnumType

enum Afterdoc_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

◆ value

int Afterdoc_Test::value
protected

an integer value

The documentation for this class was generated from the following file:
  • afterdoc.h


AfterDocs: Member List

AfterDocs
Afterdoc_Test Member List

This is the complete list of members for Afterdoc_Test, including all inherited members.

EnumType enum name | Afterdoc_Test |
EVal1 enum value | Afterdoc_Test |
EVal2 enum value | Afterdoc_Test |
member() | Afterdoc_Test |
value | Afterdoc_Test | protected


Author Command: Bug List

Author Command
Bug List
Class SomeNiceClass
Not all memory is freed when deleting an object of this class.


Author Command: SomeNiceClass Class Reference

Author Command
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


Automatic link generation: Main Page

Automatic link generation
Automatic link generation Documentation


Class Command: Main Page

Class Command
Class Command Documentation


Define Command: define.h File Reference

Define Command
Macros
define.h File Reference

testing defines More...

Go to the source code of this file.

Macros

#define | ABS(x) (((x)>0)?(x):-(x))
Computes the absolute value of its argument x. More...
#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

◆ ABS

#define ABS ( x ) (((x)>0)?(x):-(x))

Computes the absolute value of its argument x.

Parameters
x input value.
Returns
absolute value of x.

◆ MAX

#define MAX | ( | x,
 |  | y
 | ) | ((x)>(y)?(x):(y))

Computes the maximum of x and y.

◆ MIN

#define MIN | ( | x,
 |  | y
 | ) | ((x)>(y)?(y):(x))

Computes the minimum of x and y.


Define Command: define.h Source File

Define Command
define.h
Go to the documentation of this file.
1 /*! \file define.h
2 \brief testing defines
3
4 This is to test the documentation of defines.
5 */
6
7 /*!
8 \def MAX(x,y)
9 Computes the maximum of \a x and \a y.
10 */
11
12 /*!
13 \brief Computes the absolute value of its argument \a x.
14 \param x input value.
15 \returns absolute value of \a x.
16 */
17 #define ABS(x) (((x)>0)?(x):-(x))
18 #define MAX(x,y) ((x)>(y)?(x):(y))
19 #define MIN(x,y) ((x)>(y)?(y):(x))
20 /*!< Computes the minimum of \a x and \a y. */


Diagrams: Main Page

Diagrams
Diagrams Documentation


Python: Main Page

Python
Python Documentation


Enum Command: Enum_Test Class Reference

Enum Command
Public Types | List of all members
Enum_Test Class Reference

#include <enum.h>

Public Types

enum | TEnum { Val1, Val2 }
enum | AnotherEnum { V1, V2 }

Detailed Description

The class description.

Member Enumeration Documentation

◆ AnotherEnum

enum Enum_Test::AnotherEnum

Another enum, with inline docs

Enumerator
V1 | value 1
V2 | value 2

◆ TEnum

enum 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


Enum Command: Member List

Enum Command
Enum_Test Member List

This is the complete list of members for Enum_Test, including all inherited members.

AnotherEnum enum name | Enum_Test
TEnum enum name | Enum_Test
V1 enum value | Enum_Test
V2 enum value | Enum_Test
Val1 enum value | Enum_Test
Val2 enum value (defined in Enum_Test) | Enum_Test


Enum Command: enum.h Source File

Enum Command
enum.h
1 class Enum_Test
2 {
3 public:
4 enum TEnum { Val1, Val2 };
5
6 /*! Another enum, with inline docs */
7 enum AnotherEnum
8 {
9 V1, /*!< value 1 */
10 V2 /*!< value 2 */
11 };
12 };
13
14 /*! \class Enum_Test
15 * The class description.
16 */
17
18 /*! \enum Enum_Test::TEnum
19 * A description of the enum type.
20 */
21
22 /*! \var Enum_Test::TEnum Enum_Test::Val1
23 * The description of the first enum value.
24 */
Enum_Test::Val1
Definition: enum.h:4
Enum_Test::AnotherEnum
AnotherEnum
Definition: enum.h:7
Enum_Test
Definition: enum.h:1
Enum_Test::V1
Definition: enum.h:9
Enum_Test::V2
Definition: enum.h:10
Enum_Test::TEnum
TEnum
Definition: enum.h:4


Example Command: Example_Test Class Reference

Example Command
Public Member Functions | List of all members
Example_Test Class Reference

A Example_Test class. More...

Public Member Functions

void example ()
An example member function. More...

Detailed Description

A Example_Test class.

More details about this class.

Examples
example_test.cpp.

Member Function Documentation

◆ example()

void Example_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


Example Command: Member List

Example Command
Example_Test Member List

This is the complete list of members for Example_Test, including all inherited members.

example() Example_Test


Example Command: example_test.cpp

Example Command
example_test.cpp

This is an example of how to use the Example_Test class.More details about this example.

void main()
{
Example_Test t;
t.example();
}


Example Command: Examples

Example Command
Examples
Here is a list of all examples:
  • example_test.cpp


File Command: file.h File Reference

File Command
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

◆ globalValue

int globalValue

A global integer value.

More details about this value.


File Command: file.h Source File

File Command
file.h
Go to the documentation of this file.
1 /** \file file.h
2 * A brief file description.
3 * A more elaborated file description.
4 */
5
6 /**
7 * A global integer value.
8 * More details about this value.
9 */
10 extern int globalValue;
globalValue
int globalValue
A global integer value.


Fn Command: Fn_Test Class Reference

Fn Command
Public Member Functions | List of all members
Fn_Test Class Reference

Fn_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

Fn_Test class.

Details about Fn_Test.

Member Function Documentation

◆ member()

const char * Fn_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


Fn Command: Member List

Fn Command
Fn_Test Member List

This is the complete list of members for Fn_Test, including all inherited members.

member(char, int) Fn_Test


Fn Command: func.h Source File

Fn Command
func.h
1 class Fn_Test
2 {
3 public:
4 const char *member(char,int) throw(std::out_of_range);
5 };
6
7 const char *Fn_Test::member(char c,int n) throw(std::out_of_range) {}
8
9 /*! \class Fn_Test
10 * \brief Fn_Test class.
11 *
12 * Details about Fn_Test.
13 */
14
15 /*! \fn const char *Fn_Test::member(char c,int n)
16 * \brief A member function.
17 * \param c a character.
18 * \param n an integer.
19 * \exception std::out_of_range parameter is out of range.
20 * \return a character pointer.
21 */
Fn_Test::member
const char * member(char, int)
A member function.
Definition: func.h:7
Fn_Test
Fn_Test class.
Definition: func.h:1


Grouping: C1 Class Reference

Grouping
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


Grouping: C2 Class Reference

Grouping
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


Grouping: C3 Class Reference

Grouping
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


Grouping: C4 Class Reference

Grouping
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


Grouping: C5 Class Reference

Grouping
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


Grouping: group.cpp File Reference

Grouping
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


Grouping: The First Group

Grouping
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.


Grouping: The Second Group

Grouping
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.


Grouping: The Third Group

Grouping
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.


Grouping: The Fourth Group

Grouping
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.


Grouping: The Fifth Group

Grouping
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


Grouping: Modules

Grouping
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


Grouping: N1 Namespace Reference

Grouping
N1 Namespace Reference
The First Group | The Second Group | The Third 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


Javadoc Style: Javadoc_Test Class Reference

Javadoc Style
Public Types | Public Member Functions | Public Attributes | List of all members
Javadoc_Test Class Referenceabstract

A test class. More...

Public Types

enum TEnum { TVal1, TVal2, TVal3 }
An enum. More...

Public Member Functions

Javadoc_Test ()
A constructor. More...
~Javadoc_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 Javadoc_Test::TEnum * | enumPtr
enum pointer. More...
enum Javadoc_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

◆ TEnum

enum Javadoc_Test::TEnum

An enum.

More detailed enum description.

Enumerator
TVal1 | enum value TVal1.
TVal2 | enum value TVal2.
TVal3 | enum value TVal3.

Constructor & Destructor Documentation

◆ Javadoc_Test()

Javadoc_Test::Javadoc_Test ( )

A constructor.

A more elaborate description of the constructor.

◆ ~Javadoc_Test()

Javadoc_Test::~Javadoc_Test ( )

A destructor.

A more elaborate description of the destructor.

Member Function Documentation

◆ testMe()

int Javadoc_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
Javadoc_Test()
~Javadoc_Test()
testMeToo()
publicVar()
Returns
The test results

◆ testMeToo()

virtual void Javadoc_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

◆ enumPtr

enum Javadoc_Test::TEnum * Javadoc_Test::enumPtr

enum pointer.

Details.

◆ enumVar

enum Javadoc_Test::TEnum Javadoc_Test::enumVar

enum variable.

Details.

◆ handler

int(* Javadoc_Test::handler) (int a, int b)

a function variable.

Details.

◆ publicVar

int Javadoc_Test::publicVar

a public variable.

Details.

The documentation for this class was generated from the following file:
  • jdstyle.cpp


Javadoc Style: Member List

Javadoc Style
Javadoc_Test Member List

This is the complete list of members for Javadoc_Test, including all inherited members.

enumPtr | Javadoc_Test |
enumVar | Javadoc_Test |
handler | Javadoc_Test |
Javadoc_Test() | Javadoc_Test |
publicVar | Javadoc_Test |
TEnum enum name | Javadoc_Test |
testMe(int a, const char *s) | Javadoc_Test |
testMeToo(char c1, char c2)=0 | Javadoc_Test | pure virtual
TVal1 enum value | Javadoc_Test |
TVal2 enum value | Javadoc_Test |
TVal3 enum value | Javadoc_Test |
~Javadoc_Test() | Javadoc_Test |


Manual inheritance and membership: Main Page

Manual inheritance and membership
Manual inheritance and membership Documentation


Member Grouping: Memgrp_Test Class Reference

Member Grouping
Public Member Functions | List of all members
Memgrp_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

◆ func1InGroup1()

void Memgrp_Test::func1InGroup1 ( )

Same documentation for both members.

Details

◆ func1InGroup2()

void Memgrp_Test::func1InGroup2 ( )

Function 1 in group 2.

Details.

◆ func2InGroup1()

void Memgrp_Test::func2InGroup1 ( )

Same documentation for both members.

Details

◆ func2InGroup2()

void Memgrp_Test::func2InGroup2 ( )
protected

Function 2 in group 2.

Details.

◆ ungroupedFunction()

void Memgrp_Test::ungroupedFunction ( )

Function without group.

Details.

The documentation for this class was generated from the following file:
  • memgrp.cpp


Member Grouping: Member List

Member Grouping
Memgrp_Test Member List

This is the complete list of members for Memgrp_Test, including all inherited members.

func1InGroup1() | Memgrp_Test |
func1InGroup2() | Memgrp_Test |
func2InGroup1() | Memgrp_Test |
func2InGroup2() | Memgrp_Test | protected
ungroupedFunction() | Memgrp_Test |


Member Grouping: memgrp.cpp File Reference

Member Grouping
Classes
memgrp.cpp File Reference

Classes

class | Memgrp_Test
A class. More...
#define | A 1
#define | B 2
void | glob_func ()

Detailed Description

docs for this file

Macro Definition Documentation

◆ A

#define A 1

one description for all members of this group (because DISTRIBUTE_GROUP_DOC is YES in the config file)

◆ B

#define B 2

one description for all members of this group (because DISTRIBUTE_GROUP_DOC is YES in the config file)

Function Documentation

◆ glob_func()

void glob_func ( )

one description for all members of this group (because DISTRIBUTE_GROUP_DOC is YES in the config file)


Mux: Main Page

Mux
Mux Documentation


Overloaded Command: Overload_Test Class Reference

Overloaded Command
Public Member Functions | List of all members
Overload_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

◆ drawRect() [1/2]

void Overload_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.

◆ drawRect() [2/2]

void Overload_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


Overloaded Command: Member List

Overloaded Command
Overload_Test Member List

This is the complete list of members for Overload_Test, including all inherited members.

drawRect(int, int, int, int) | Overload_Test
drawRect(const Rect &r) | Overload_Test


Page Command: A documentation page

Page Command
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.


Page Command: Another page

Page Command
Another page

Even more info.


Page Command: Related Pages

Page Command
Related Pages
Here is a list of all related documentation pages:
A documentation page
Another page


Par Command: Par_Test Class Reference

Par Command
Par_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


Qt Style: QTstyle_Test Class Reference

Qt Style
Public Types | Public Member Functions | Public Attributes | List of all members
QTstyle_Test Class Referenceabstract

A test class. More...

Public Types

enum TEnum { TVal1, TVal2, TVal3 }
An enum. More...

Public Member Functions

QTstyle_Test ()
A constructor. More...
~QTstyle_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 QTstyle_Test::TEnum * | enumPtr
Enum pointer. More...
enum QTstyle_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

◆ TEnum

enum QTstyle_Test::TEnum

An enum.

More detailed enum description.

Enumerator
TVal1 | Enum value TVal1.
TVal2 | Enum value TVal2.
TVal3 | Enum value TVal3.

Constructor & Destructor Documentation

◆ QTstyle_Test()

QTstyle_Test::QTstyle_Test ( )

A constructor.

A more elaborate description of the constructor.

◆ ~QTstyle_Test()

QTstyle_Test::~QTstyle_Test ( )

A destructor.

A more elaborate description of the destructor.

Member Function Documentation

◆ testMe()

int QTstyle_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
QTstyle_Test(), ~QTstyle_Test(), testMeToo() and publicVar()

◆ testMeToo()

virtual void QTstyle_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

◆ enumPtr

enum QTstyle_Test::TEnum * QTstyle_Test::enumPtr

Enum pointer.

Details.

◆ enumVar

enum QTstyle_Test::TEnum QTstyle_Test::enumVar

Enum variable.

Details.

◆ handler

int(* QTstyle_Test::handler) (int a, int b)

A function variable.

Details.

◆ publicVar

int QTstyle_Test::publicVar

A public variable.

Details.

The documentation for this class was generated from the following file:
  • qtstyle.cpp


Qt Style: Member List

Qt Style
QTstyle_Test Member List

This is the complete list of members for QTstyle_Test, including all inherited members.

enumPtr | QTstyle_Test |
enumVar | QTstyle_Test |
handler | QTstyle_Test |
publicVar | QTstyle_Test |
QTstyle_Test() | QTstyle_Test |
TEnum enum name | QTstyle_Test |
testMe(int a, const char *s) | QTstyle_Test |
testMeToo(char c1, char c2)=0 | QTstyle_Test | pure virtual
TVal1 enum value | QTstyle_Test |
TVal2 enum value | QTstyle_Test |
TVal3 enum value | QTstyle_Test |
~QTstyle_Test() | QTstyle_Test |


Relates Command: String Class Reference

Relates Command
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

◆ strcmp

int strcmp | ( | const String & | s1,
 |  | const String & | s2
 | ) |  |
friend

Compares two strings.

◆ stringDebug()

void stringDebug ( )
related

A string debug function.

The documentation for this class was generated from the following file:
  • relates.cpp


Relates Command: Member List

Relates Command
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


Resolving Typedefs: restypedef.cpp File Reference

Resolving Typedefs
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

◆ Coord

typedef CoordStruct Coord

Creates a type name for CoordStruct

Function Documentation

◆ add()

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)


Resolving Typedefs: CoordStruct Struct Reference

Resolving Typedefs
Public Attributes | List of all members
CoordStruct Struct Reference

Public Attributes

float | x
float | y

Detailed Description

A coordinate pair.

Member Data Documentation

◆ x

float CoordStruct::x

The x coordinate

◆ y

float CoordStruct::y

The y coordinate

The documentation for this struct was generated from the following file:
  • restypedef.cpp


Resolving Typedefs: Member List

Resolving Typedefs
CoordStruct Member List

This is the complete list of members for CoordStruct, including all inherited members.

x | CoordStruct
y | CoordStruct


Structural commands: structcmd.h File Reference

Structural commands
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

◆ MAX

#define MAX | ( | a,
 |  | b
 | ) | (((a)>(b))?(a):(b))

A macro that returns the maximum of a and b.

Details.

Typedef Documentation

◆ UINT32

typedef unsigned int UINT32

A type definition for a .

Details.

Function Documentation

◆ close()

int close ( int fd )

Closes the file descriptor fd.

Parameters
fd The descriptor to close.

◆ open()

int open | ( | const char * | pathname,
 |  | int | flags
 | ) |  |

Opens a file descriptor.

Parameters
pathname | The name of the descriptor.
flags | Opening flags.

◆ read()

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.

◆ write()

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

◆ errno

int errno

Contains the last error code.

Warning
Not thread safe!


Structural commands: structcmd.h Source File

Structural commands
structcmd.h
Go to the documentation of this file.
1 /*! \file structcmd.h
2 \brief A Documented file.
3
4 Details.
5 */
6
7 /*! \def MAX(a,b)
8 \brief A macro that returns the maximum of \a a and \a b.
9
10 Details.
11 */
12
13 /*! \var typedef unsigned int UINT32
14 \brief A type definition for a .
15
16 Details.
17 */
18
19 /*! \var int errno
20 \brief Contains the last error code.
21
22 \warning Not thread safe!
23 */
24
25 /*! \fn int open(const char *pathname,int flags)
26 \brief Opens a file descriptor.
27
28 \param pathname The name of the descriptor.
29 \param flags Opening flags.
30 */
31
32 /*! \fn int close(int fd)
33 \brief Closes the file descriptor \a fd.
34 \param fd The descriptor to close.
35 */
36
37 /*! \fn size_t write(int fd,const char *buf, size_t count)
38 \brief Writes \a count bytes from \a buf to the filedescriptor \a fd.
39 \param fd The descriptor to write to.
40 \param buf The data buffer to write.
41 \param count The number of bytes to write.
42 */
43
44 /*! \fn int read(int fd,char *buf,size_t count)
45 \brief Read bytes from a file descriptor.
46 \param fd The descriptor to read from.
47 \param buf The buffer to read into.
48 \param count The number of bytes to read.
49 */
50
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


Tcl: Main Page

Tcl
Tcl Documentation