$Revision$
$Date$
funcsynopsis — The syntax summary for a function definition
funcsynopsis ::= ((funcsynopsisinfo|funcprototype)+)
| 
                         Name  | 
                     
                         Type  | 
                     
                         Default  | 
                  
| label | CDATA | None | 
               A FuncSynopsis contains the syntax summary of a function prototype
               or a set of function prototypes.  The content model of this element
               was designed specifically to capture the semantics of most C-language
               function prototypes (for use in UNIX reference pages).
               
            
               This is one of the few places where DocBook attempts to model as well
               as describe.  Using FuncSynopsis for languages that are
               unrelated to C may prove difficult.
               
            
For the most part, the processing application is expected to generate all of the parenthesis, semicolons, commas, and so on. required in the rendered synopsis. The exception to this rule is that the spacing and other punctuation inside a parameter that is a pointer to a function must be provided in the source markup.
With sufficient author cooperation, it should be possible to markup a function synopsis with enough clarity so that a processing system can generate either K&R-style or ANSI-style renderings.
VarArgs
                     The content model of FuncPrototype is such that you
                     cannot use VarArgs in a function prototype in which the
                     first few parameters to the function are given explicitly before
                     the variable arguments (generally rendered as an ellipsis).
                     
                  
                     In other words, the following synopsis cannot be rendered with
                     VarArgs:
                     
                     
int printf(char *format, ...)
                     Instead, you can enclose the ellipsis in a final Parameter,
                     like this:
                     
                     
<funcsynopsis> <funcprototype><funcdef>int <function>printf</function></funcdef> <paramdef> <parameter>char *format</parameter> <parameter>...</parameter> </paramdef> </funcprototype> </funcsynopsis>
                  
                  In DocBook V4.0, the content model fragment beginning with
                  FuncDef will be removed from the content
                  model of FuncSynopsis.  Instead
                  FuncSynopsis will become a mixture of
                  FuncSynopsisInfos and FuncPrototypes.
                  
               
Future versions of DocBook may provide additional environments for describing the syntax summaries of functions in other programming languages.
These elements contain funcsynopsis:
                  answer, appendix, application, article, attribution, bibliodiv, bibliography, bibliomisc, blockquote, callout, caution, chapter, citation, citetitle, constraintdef, emphasis, entry, example, figure, firstterm, footnote, foreignphrase, glossary, glossdef, glossdiv, glosssee, glossseealso, glossterm, important, index, indexdiv, informalexample, informalfigure, itemizedlist, lineannotation, link, listitem, literallayout, lotentry, member, msgaud, msgexplan, msgtext, note, olink, orderedlist, para, partintro, phrase, preface, procedure, productname, programlisting, qandadiv, qandaset, question, quote, refentrytitle, refsect1, refsect2, refsect3, refsection, refsynopsisdiv, remark, revdescription, screen, screeninfo, sect1, sect2, sect3, sect4, sect5, section, seg, setindex, sidebar, simpara, simplesect, step, synopsis, taskprerequisites, taskrelated, tasksummary, td, term, termdef, th, tip, tocback, tocentry, tocfront, ulink, variablelist, warning.
               
               The function max returns the larger of two integers:
               
            
<!DOCTYPE funcsynopsis PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<funcsynopsis>
<funcprototype>
  <funcdef>int <function>max</function></funcdef>
  <paramdef>int <parameter>int1</parameter></paramdef>
  <paramdef>int <parameter>int2</parameter></paramdef>
</funcprototype>
</funcsynopsis>int max( | 
                     int1, | |
int2);
                      | 
                     
int int1;int int2;
               
               One can imagine a more flexible max function that takes
               any number of integer arguments and returns the largest integer in 
               the list:
               
            
<!DOCTYPE funcsynopsis PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<funcsynopsis>
<funcsynopsisinfo>
#include <varargs.h>
</funcsynopsisinfo>
<funcprototype>
  <funcdef>int <function>max</function></funcdef>
  <varargs/>
</funcprototype>
</funcsynopsis>#include <varargs.h>
int max( | 
                     ...);
                      | 
                     
               The rand function takes no arguments and returns a 
               pseudorandom integer between 0 and 231-1:
               
            
<!DOCTYPE funcsynopsis PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<funcsynopsis>
<funcprototype>
<funcdef>int <function>rand</function></funcdef>
  <void/>
</funcprototype>
</funcsynopsis>int rand( | 
                     );
                      | 
                     
               The qsort function takes several arguments, including
               a pointer to a function (the function that should perform the
               comparison between two elements in order to sort them).
               
            
<!DOCTYPE funcsynopsis PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<funcsynopsis>
<funcprototype>
  <funcdef>void <function>qsort</function></funcdef>
    <paramdef>void *<parameter>dataptr</parameter>[]</paramdef>
    <paramdef>int <parameter>left</parameter></paramdef>
    <paramdef>int <parameter>right</parameter></paramdef>
    <paramdef>int <parameter>(* comp)</parameter>
      <funcparams>void *, void *</funcparams></paramdef>
</funcprototype>
</funcsynopsis>void qsort( | 
                     dataptr, | |
| left, | ||
| right, | ||
(* comp));
                      | 
                     
void *dataptr[];int left;int right;int (* comp)
                           (void *, void *);
               For additional examples, see also
               funcdef, funcparams, paramdef, refentry, varargs.