Doxygen



Generate Doxygen Comments in VS Code. This VS Code Extensions provides Doxygen Documentation generation on the fly by starting a Doxygen comment block and pressing enter. Run doxygen in the shell prompt as doxygen Doxyfile (or with whatever file name you’ve chosen for the configuration file). Doxygen issues several messages before it finally produces the documentation in Hypertext Markup Language (HTML) and Latex formats (the default). Jan 08, 2021 doxygen is an excellent tool for extracting the code structure, linkages, dependencies from a undocumented source files in a C project. Doxygen is also a free software project licensed under GPLv2. Strikr Free Software Project (strikr DOT io/) msillano Posted The more flexible documentation tool.

Doxygen

All doxygen tags must be placed inside of a doxygen comment block. A doxygen comment block can contain more than one tag.

Doxygen Tags

Doxygen Comment Blocks

There are several ways to start a doxygen comment block. Only a few will be presented.

C-Style Comment block
QT Style Comment block

@file

At the top of all of the coding files there needs to be an @file doxygen tag at the top. Note the space after the doxygen comment characters. Those three characters start the doxygen comment block. The remaining stars just allow doxygen to meet the programing guidelines with a line of stars.

@mainpage

When the mainpage tag is used in a comment block, you will to customize the index.html page for your documentation. The text that follows the tag will become the title for this page. If you do not wish to override the title generated by doxygen you can specify 'notitle' or just omit the argument for mainpage.

To view what this segment produces click here.

@section

When placed in the block with the mainpage tag, a fragment of the page will be used for specific documentation, after the section tag, the first argument will be a one word description for the section. The second argument will be a title to be shown on the web page identifying this section. You can have several sections and many doxygen tags can be placed between the sections.

To view what this segment produces click here.

@brief

This tag starts a paragraph that serves as a descriptionf for some class, structure, file, or global constant. The paragraph ends when a blank line is encountered.

To view what this segment produces click here.

@details

This tag allows you to display several paragraphs without having to use the @par tag. A blank line separates each paragraph and the tag will stop displaying paragraphs when another doxygen tag is encountered.<p>

To view the 3 paragraphs produced by the details tag click here.

@author and @authors

The author tag allows you to list who wrote the code. If it is a group project and you have more than one person who worked on the code you would use a comma seperatoed list

To view what a single author tag produces, click here.

To view what a single authors tag produces, click here.

Place multiple author tags to get a vertical list of authors

To view what multiple author tags produce, click here.

@date

The date tag will create formatted a date. The tag can accept plain text that is not a date. This can be used to create a label for the date if needed.

To view what a single date tag produces, click here.

Placing a label on the date.

To view what a single date tag with the label produces, click here.

Using multiple date tags consecutively.

To view what a multiple date tag with the label produces, click here.

Documentation

@par

The par tag is short for paragraph. Anything on the line with the tag will be bolded with the actual paragraph appearing directly below. The paragraph ends with a blank line or when another doxygen tag is encountered.

To view what a par tag produces with no title, click here.

Adding a title to the paragraph tag.

To view what a par tag produces with no title, click here.

Using multiple par tags. Each paragraph could contain a title. This is very similar to the details tag

To view what multiple par tags produces with a single title, click here.

@verbatim and @endverbatim

The verbatim tag is good when you wish to display something exactly as it is typed. Everthing after the tag will appear in a box until the @endverbatim tag is reached. The verbatim tag will not ignore the stars like the other tags.

To view what the verbatim and endverbatim tags produce, click here.

@bug

The bug tag is used to document what is not working correctly in your program. A link to a bug page will be created. Multiple bug tags allow you to document each bug. A tag is required for each bug. Do not place a blank line between the bug tags.

To view what the bug tags produce, click here and here.

@todo

The todo tag is used to document what you have left to get working in the program. A link to a page display each item that is not complete will be created. A todo tag is required for each item. Do not place a blank line between the todo tags.

To view what the todo tags produce, click here and here.

@param

The param tag is used to document the parameters that are passed to the function. This tag is used mainly in our function header to describe details of a parameter. If your function has no parameters then you do not need to include this tag.

By Value or By Reference
  • in - the variable contains data that is being passed into the function.
  • out - the variable contains data that was changed in the function.
  • in,out - the variable contains data that was passed into the function and was changed in the function.

To view what the param tag produces, click here and here.

To view what the param tag produces, click here and here.

@return

The return and returns tag are the same thing. This tag is used to document the value the a function returns. This tag is not present on non-valued functions.

Doxygen

To view what the returns tag produces, click here and here.

To view what the return tag produces, click here and here.

To view what multiple return tags produce, click here and here.

Doxygenis an automated documentation system for available Classes and methods. This page will introduce you to navigating the online Doxygen pages and orientate you to the structure and language used.

Doxygen Navigation

Doxygen Description

Doxygen Hompage

The doxygen homepage gives a top level view of the class groupings and the most popular OpenSim and SimTK classes. From the homepage you can navigate down the Class hierarchy by clicking on blocks that correspond to the Classes that interest you.

The search box, located in the top right hand corner, searches through the matching Class names. This is useful if you know the class name but can be limiting if you are trying to discover Classes or methods. If you are trying to discover a method to use we suggest using the OpenSim omnisearch box, which searches through all the OpenSim confluence, forum and doxygen content.


Class Lists

The left hand navigation panel is used move through Class lists, Class Hierachy and Class Members. The flat and hierarchical Class lists show all of the API classes and give you the opportunity to discover new Classes.

Parts of the Doxygen Page

Doxygen Code Example

Once you navigate to a Class of interest, you will find several sections.

Class Hierarchy

Class Hierarchy diagrams display the inheritance of methods from abstract to concrete Classes. For example, a Muscle() is a PathActuator() and inherits all the functionality of a PathActuator() while the Thelen2003Muscle() is a Muscle() and inherits all the functionality of the Muscle() Class.

Constructor Method

Methods and inputs to build an instance of a class. When given no inputs, indicated by empty brackets, a default instance of the class is created.

Member Functions

Public member functions list all the available methods. Public member functions are easily accessible, especially in Matlab and python. Protected member functions are generally not accessible by users and are rather used in development of new classes

Doxygen Manual

Next: Scripting

Doxygen Win10

Previous:The OpenSim API

Doxygen Download Windows

Home: Scripting and Development