/****************************************************************************** * * * * Copyright (C) 1997-2000 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 grouping Grouping Doxygen has two 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 other mechanism works within a member list of some compound entity, and is refered to as a "member group". \subsection modules 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 \ref cmddefgroup "\\defgroup" command in a special comment block. The first argument of the command is a label that should uniquely identify the group. You can make an entity a member of a specific group by putting a \ref cmdingroup "\\ingroup" command inside its documentation. \par Example: \verbinclude group.cpp \htmlonly Click here for the corresponding HTML documentation that is generated by Doxygen. \endhtmlonly \subsection memgroup 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 \verbatim //@{ ... //@} \endverbatim block or a \verbatim /*@{*/ ... /*@}*/ \endverbatim block if you prefer C style comments. Note that the members of the group should be physcially 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 \ref cmdname "@name" (or \ref cmdname "\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 \ref cmdnosubgrouping "\\nosubgrouping" command inside the documentation of the class. \par Example: \verbinclude memgrp.cpp \htmlonly Click here for the corresponding HTML documentation that is generated by Doxygen. \endhtmlonly 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). \htmlonly Go to the next section or return to the index. \endhtmlonly */