********************************************************************************
Check the version of doxygen you're using, there is a bug
with older versions ( < 1.7.4 )
********************************************************************************
USAGE
=======================
To invoke doxygen,
cd $(papi_dir)/doc
make (alternativly doxygen Doxyfile-{html,man1,man3}
This command produces documentation for the PAPI user-exposed api and data-structures.
There are several different configuration files are present:
Doxyfile-html - generates documentation for everything under src. This will
take a long time to run, and generates north of 600 megs of files. Requires
the program dot, for dependency graphs.
Doxyfile-man1 - generates man-pages for the utilities.
Doxyfile-man3 - generates man-pages for the API, see papi.h
Commenting the Code
=======================
To get doxygen's attention, in general, use a special comment block
/** */
thing_to_be_commented
Doxygen responds to several special commands, denoted by @command
(if you're feeling texy, \command)
As an artifact of how doxygen started life, we call our api functions 'classes'
to get doxygen to generate man-pages for the function.
/** @class MY_FUNCTION
@brief gives a brief overview of what the function does,
limited to 1 line or 1 sentence if you need the space.
@param arg1 describes a parameter to the function
@return describes the functions return value
@retval allows you to enumerate return values
Down here we have more detailed information about the function
Which can span many lines
And paragraphs (feeling texy now?)
@par Examples:
@code
This is the way to get examples to format nicely
code goes here....
@endcode
@bug
Here you get a section of freeform text to describe bugs you encounter.
*/
@internal keeps comment blocks marked as such out of the documentation
(unless the INTERNAL_DOCS flag is set in the config file)
In several places /**< */ appears, this means that the comment
pertains to the previous element.
int foo; /**< This comment is about foo */
TODO
=======================
Doxygen provides options for [ab]using the preprocessor,
Do we need to look into this? Probably not more than we already do -J
Document the ctests?
See
http://www.stack.nl/~dimitri/doxygen/docblocks.html
for more detail on doxygen.