XXX Explain terminology, or come up with something more ``lay.''
There are a number of environments used to describe specific
features provided by modules. Each environment requires
parameters needed to provide basic information about what is being
described, and the environment content should be the description.
Most of these environments make entries in the general index (if
one is being produced for the document); if no index entry is
desired, non-indexing variants are available for many of these
environments. The environments have names of the form
featuredesc, and the non-indexing variants are named
featuredescni. The available variants are explicitly
included in the list below.
For each of these environments, the first parameter, name, provides the name by which the feature is accessed.
Environments which describe features of objects within a module, such as object methods or data attributes, allow an optional type name parameter. When the feature is an attribute of class instances, type name only needs to be given if the class was not the most recently described class in the module; the name value from the most recent \classdesc is implied. For features of built-in or extension types, the type name value should always be provided. Another special case includes methods and members of general ``protocols,'' such as the formatter and writer protocols described for the formatter module: these may be documented without any specific implementation classes, and will always require the type name parameter to be provided.
struct tag, or the name of a primitive type. If it is a pointer type, the trailing asterisk should not be preceded by a space. name should be the name of the function (or function-like pre-processor macro), and args should give the types and names of the parameters. The names need to be given so they may be used in the description.
struct tag. name will be added to the index unless tag is provided, in which case tag will be used instead. tag should not be used for a typedef name.
struct tag, or the name of a primitive type. If variable has a pointer type, the trailing asterisk should not be preceded by a space.
The description should include information about the parameters required and how they are used (especially whether mutable objects passed as parameters are modified), side effects, and possible exceptions. A small example may be provided.