diff options
Diffstat (limited to 'doc/docblocks.doc')
-rw-r--r-- | doc/docblocks.doc | 396 |
1 files changed, 0 insertions, 396 deletions
diff --git a/doc/docblocks.doc b/doc/docblocks.doc deleted file mode 100644 index a0132d8..0000000 --- a/doc/docblocks.doc +++ /dev/null @@ -1,396 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2005 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. - * - */ -/*! \page docblocks Documenting the code - -\section specialblock Special documentation blocks - -A special documentation block is a C or C++ style comment block with some -additional markings, so doxygen knows it is a piece of documentation that -needs to end up in the generated documentation. For Python code there is -a different comment convention, which can be found in section -\ref pythonblocks - -For each code item there are two types of descriptions, which together -form the documentation: a \e brief description and \e detailed -description, both are optional. -Having more than one brief or detailed description however, is -not allowed. - -As the name suggest, a brief description is -a short one-liner, whereas the detailed description provides longer, -more detailed documentation. - -There are several ways to mark a comment block as a detailed description: -<ol> -<li> You can use the JavaDoc style, which consist of a C-style comment -block starting with two *'s, like this: - -\verbatim -/** - * ... text ... - */ -\endverbatim - -<li> 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: - -\verbatim -/*! - * ... text ... - */ -\endverbatim - -In both cases the intermediate *'s are optional, so - -\verbatim -/*! - ... text ... -*/ -\endverbatim - -is also valid. - -<li> 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: - -\verbatim -/// -/// ... text ... -/// -\endverbatim - -or - -\verbatim -//! -//!... text ... -//! -\endverbatim - -<li> - -Some people like to make their comment blocks more visible in the -documentation. For this purpose you can use the following: - -\verbatim -///////////////////////////////////////////////// -/// ... text ... -///////////////////////////////////////////////// -\endverbatim - -</ol> - -For the brief description there are also several posibilities: -<ol> -<li>One could use the \ref cmdbrief "\\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: - -\verbatim -/*! \brief Brief description. - * Brief description continued. - * - * Detailed description starts here. - */ -\endverbatim - -<li>If \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" is set to \c 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: - -\verbatim -/** Brief description which ends at this dot. Details follow - * here. - */ -\endverbatim -The option has the same effect for multi-line special C++ comments: -\verbatim -/// Brief description which ends at this dot. Details follow -/// here. -\endverbatim - -<li>A third option is to use a special C++ style comment which does not - span more than one line. Here are two examples: -\verbatim -/// Brief description. -/** Detailed description. */ -\endverbatim - -or - -\verbatim -//! Brief descripion. - -//! Detailed description -//! starts here. -\endverbatim - -Note the blank line in the last example, which is required to separate the -brief description from the block containing the detailed description. The -\ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" should also be set to \c NO -for this case. - -</ol> - -As you can see doxygen is quite flexible. The following however is -not legal - -\verbatim -//! Brief description, which is -//! really a detailed description since it spans multiple lines. -/*! Oops, another detailed description! - */ -\endverbatim - -because doxygen only allows one brief and one detailed description. - -Furthermore, if there is one brief description before a declaration -and one before a definition of a code item, only the one before -the \e declaration will be used. If the same situation occurs for a -detailed description, the one before the \e definition is preferred -and the one before the declaration will be ignored. - -Here is an example of a documented piece of C++ code using the Qt style: -\include qtstyle.cpp - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/qtstyle/html/class_test.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -The one-line comments contain a brief description, -whereas the multi-line comment blocks contain a more detailed description. - -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 -\ref cfg_brief_member_desc "BRIEF_MEMBER_DESC" to \c NO in -the config file). By default the brief descriptions become the first -sentence of the detailed descriptions -(but this can be changed by setting the \ref cfg_repeat_brief "REPEAT_BRIEF" -tag to \c 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 behaviour you should set -\ref cfg_javadoc_autobrief "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: -\verbatim - /** Brief description (e.g.\ using only a few words). Details follow. */ -\endverbatim - -Here is the same piece of code as shown above, this time documented using the -JavaDoc style and \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" set to YES: -\include jdstyle.cpp - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/jdstyle/html/class_test.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -Unlike most other documentation systems, doxygen also allows you to put -the documentation of members (including global functions) in front of -the \e 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. - -\section memberdoc Putting documentation after members - -If you want to document the members of a file, struct, union, class, or enum, -and you want to put the documentation for these members inside the compound, -it is sometimes desired to place the documentation block after the member -instead of before. For this purpose you should put an additional \< marker -in the comment block. - -Here are some examples: -\verbatim -int var; /*!< Detailed description after the member */ -\endverbatim -This block can be used to put a Qt style detailed -documentation block \e after a member. Other ways to do the -same are: -\verbatim -int var; /**< Detailed description after the member */ -\endverbatim -or -\verbatim -int var; //!< Detailed description after the member - //!< -\endverbatim -or -\verbatim -int var; ///< Detailed description after the member - ///< -\endverbatim - -Most often one only wants to put a brief description after a member. -This is done as follows: -\verbatim -int var; //!< Brief description after the member -\endverbatim -or -\verbatim -int var; ///< Brief description after the member -\endverbatim - -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: -\include afterdoc.h - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/afterdoc/html/class_test.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -\warning These blocks can only be used to document \e members and \e 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 <code>\\class</code>) are ignored inside these comment blocks. - -\section structuralcommands Documentation at other places - -So far we have assumed that the documentation blocks are 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 before (or after) an item is the need to put a -structural command inside the documentation block, which leads to some -duplication of information. - -Structural commands (like all other commands) start with a backslash -(<tt>\\</tt>), or an at-sign (<tt>\@</tt>) if you prefer JavaDoc style, -followed by a command name and one or more parameters. -For instance, if you want to document the class \c Test in the example -above, you could have also put the following documentation block somewhere -in the input that is read by doxygen: -\verbatim -/*! \class Test - \brief A test class. - - A more detailed class description. -*/ -\endverbatim - -Here the special command \c \\class is used to indicate that the -comment block contains documentation for the class \c Test. -Other structural commands are: -<ul> -<li>\c \\struct to document a C-struct. -<li>\c \\union to document a union. -<li>\c \\enum to document an enumeration type. -<li>\c \\fn to document a function. -<li>\c \\var to document a variable or typedef or enum value. -<li>\c \\def to document a \#define. -<li>\c \\typedef to document a type definition. -<li>\c \\file to document a file. -<li>\c \\namespace to document a namespace. -<li>\c \\package to document a Java package. -<li>\c \\interface to document an IDL interface. -</ul> -See section \ref commands for detailed information about these and many other -commands. - -To document a member of a C++ class, you must also document the class -itself. The same holds for namespaces. To document a global C function, -typedef, enum or preprocessor definition you must first document the file -that contains it (usually this will be a header file, because that file -contains the information that is exported to other source files). - -Let's repeat that, because it is often overlooked: -to document global objects (functions, typedefs, enum, macros, etc), you -<em>must</em> document the file in which they are defined. In other words, -there <em>must</em> at least be a \verbatim /*! \file */ \endverbatim -or a \verbatim /** @file */ \endverbatim line in this file. - -Here is an example of a C header named \c structcmd.h that is documented -using structural commands: -\include structcmd.h - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/structcmd/html/structcmd_8h.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - - 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. - -\section pythonblocks Special documentation blocks in Python - -For Python there is a standard way of documenting the code using -so called documentation strings. Such strings are stored in \c __doc__ -and can be retrieved at runtime. Doxygen will extract such comments -and assume they have to be represented in a preformatted way. - -\include docstring.py - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/docstring/html/index.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -Note that in this case none of doxygen's \ref cmd_intro "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 support doxygen -and this also allows the use of special commands. - -Here is the same example again but now using doxygen style comments: - -\include pyexample.py - \htmlonly - Click <a href="$(DOXYGEN_DOCDIR)/examples/pyexample/html/index.html">here</a> - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - -Since python looks more like Java than like C or C++, you should set -\ref cfg_optimize_output_java "OPTMIZE_OUTPUT_JAVA" to \c YES in the -config file. - - -\htmlonly -Go to the <a href="lists.html">next</a> section or return to the - <a href="index.html">index</a>. -\endhtmlonly - -*/ |