Fpdoc
Fpdoc
1 Introduction 4
1.1 About this document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 About FPD OC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Getting more information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 FPD OC usage 8
3.1 fpdoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 FPD OC command-line options reference . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.1 content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.2 descr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.3 format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.4 help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.5 hide-protected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.6 html-search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.7 import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.8 input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.9 lang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.10 latex-highlight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.11 output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.12 package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.13 show-private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.14 warn-no-node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 makeskel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.1 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4 Makeskel option reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4.1 descr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4.2 suse:descr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1
CONTENTS
3.4.3 disable-arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4.4 disable-errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4.5 disable-function-results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4.6 disable-private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.7 disable-protected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.8 disable-seealso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.9 emitclassseparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.10 help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.11 input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.12 lang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.13 output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.14 package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4.15 update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2
CONTENTS
3
Chapter 1
Introduction
HTML Plain HTML. Javascript is used to be able to show a small window with class properties or
class methods, but the generated HTML will work without JavaScript as well. Style sheets are
used to do the markup, so the output can be customised.
LaTeX LaTeX files, which can be used with the fpc.sty file which comes with the Free Pascal doc-
umentation. From this output, PDF documents can be generated, and with the use of latex2rtf,
RTF or Winhelp files. Text files can also be generated.
4
CHAPTER 1. INTRODUCTION
Text plain ascii text files. No cross-referencing exists. Other than that it resembles the LaTeX output
in it’s structure.
Man Unix man pages. Each function/procedure/method identifier is a man page. Constants are on a
separate page, as are types, variables and resourcestrings.
5
Chapter 2
2.1 Compiling
In order to compile FPD OC, the following things are needed:
1. The fpdoc sources. These can be downloaded from the FPD OC website.
2. The Free Pascal compiler sources. FPD OC uses the scanner from the Free Pascal comiler to
scan the source file.
4. fpcmake is needed to create the makefile for fpdoc. It comes with Free Pascal, so if Free Pascal
is installed, there should be no problem.
5. To make new internationalisation support files, rstconv must be installed, and the GNU gettext
package.
Links to download all these programs can be found on the FPD OC website.
When the fpdoc sources have been unzipped, the Makefile must be generated. Before generating the
makefile, the location of the compiler source directory should be indicated. In the Makefile.fpc file,
which has a windows ini file format, locate the fpcdir entry in the defaults section:
fpcdir=../..
2.2 Installation
When installing from sources, a simple
make install
cd intl
make install
6
CHAPTER 2. COMPILING AND INSTALLING FPDOC
/usr/local/share/locale/XX/LC_MESSAGES/
or
/usr/share/locale/XX/LC_MESSAGES/
7
Chapter 3
FPD OC usage
3.1 fpdoc
Using FPD OC is quite simple. It takes some command-line options, and based on these options, cre-
ates documentation. The command-line options can be given as long or short options, as is common
for most GNU programs.
In principle, only 2 command-line options are needed:
package This specifies the name of the package for which documentation must be created. Exactly
one package option can be specified.
input The name of a unit file for which documentation should be generated. This can be a simple
filename, but can also contain some syntax options as they could be given to the Free Pascal
scanner. More than one input option can be given, and documentation will be generated for
all specified input files.
Some examples:
This will scan the crt.pp file and generate documentation for it in a directory called fcl.
This will scan the file classes.pp, with the DEBUG symbol defined, the scanner will look for include
files in the ../inc directory, and OBJFPC-mode syntax will be accepted.
(for more information about these options, see the Free Pascal compiler user’s guide)
With the above commands, a set of documentation files will be generated in HTML format (this is the
standard). There will be no description of any of the identifiers found in the unit’s interface section,
but all identifiers declarations will be present in the documentation.
The actual documentation (i.e. the description of each of the identifiers) resides in a description file,
which can be specified with the descr option:
This will scan the crt.pp file and generate documentation for it, using the descriptions found in the
filecrt.xml file. The documentation will be written in a directory called fcl.
8
CHAPTER 3. FPDOC USAGE
All options should be given on one line. This will scan the file classes.pp, with the DEBUG symbol
defined, the scanner will look for include files in the ../inc directory, and OBJFPC-mode syntax will
be accepted.
More than one input file or description file can be given:
This will generate a LaTeX file called fcl.tex, which contains the documentation of the units classes
and process. The latex file contains no document preamble, it starts with a chapter command. It
is meant to be included (using the LaTeX include command) in a latex document with a preamble.
The output of FPD OC can be further customised by several command-line options, which will be
explained in the next section.
3.2.1 content
This option tells FPD OC to generate a content file. A content file contains a list of all the possible
anchors (labels) in the generated documentation file, and can be used to create cross-links in doc-
umentation for units in other packages, using the counterpart of the content option, the import
option (section 3.2.7, page 11).
3.2.2 descr
This option specifies the name of a description file that contains the actual documentation for the
unit. This option can be given several times, for several description files. The file will be searched
relative to the current directory. No extension is added to the file, it should be a complete filename.
If the filename starts with an ’at’ sign @, then it is interpreted as a text file which contains a list of
filenames, one per line. Each of these files will be added to the list of description files.
The nodes in the description files will be merged into one big tree. This means that the documentation
can be divided over multiple files. When merging the description files, nodes that occur twice will
end up only once in the big node tree: the last node will always be the node that ends up in the parse
tree. This means that the order of the various input commands or the ordering of the files in the file
list is important.
9
CHAPTER 3. FPDOC USAGE
Examples:
--descr=crt.xml
will tell FPD OC to read filenames from fcl.lst; each of the filenames found in it will be added to the
list of files to be scanned for descriptions.
3.2.3 format
Specifies the output format in which the documentation will be generated. Currently, the following
formats are known:
latex LaTex, which uses the fpc.sty style used by the Free Pascal documentation.
3.2.4 help
Gives a short copyright notice.
3.2.5 hide-protected
By default, the documentation will include descriptions and listings of protected fields and methods
in classes or objects. This option changes this behaviour; if it is specified, no documentation will
be generated for these methods. Note that public methods or properties that refer to these protected
methods will then have a dangling (i.e. unavailable) link.
3.2.6 html-search
This option can be used when generating HTML documentation, to specify an url that can be used
to search in the generated documentation. The URL will be included in the header of each generated
page with a Search caption. The option is ignored for non-html output formats.
FPD OC does not generate a search page, this should be made by some external tool. Only the url to
such a page can be specified.
Example:
--html-search=../search.html
10
CHAPTER 3. FPDOC USAGE
3.2.7 import
Import a table of contents file, generated by FPD OC for another package with the content option
(section 3.2.1, page 9). This option can be used to refer to documentation nodes in documentation
sets for other packages. The argument consists of two parts: a filename, and a link prefix.
The filename is the name of the file that will be imported. The link prefix is a prefix that will be made
to each HTML link; this needs to be done to be able to place the files in different directories.
Example:
--import=../fcl.cnt,../fcl
This will read the file fcl.cnt in the parent directory. For HTML documentation, all links to items in
the fcl.cnt file, the link will be prepended with ../fcl.
This allows a setup where all packages have their own subdirectory of a common documentation
directory, and all content files reside in the main documentation directory, as e.g. in the following
directory tree:
/docs/fcl
/fpdoc
/fpgui
/fpgfx
/fpimg
The file fcl.cnt would reside in the docs directory. Similarly, for each package a contents file xxx.cnt
could be places in that directory. Inside the subdirectory, commands as the above could be used to
provide links to other documentation packages.
Note that for Latex documentation, this option is ignored.
3.2.8 input
This option tells FPD OC what input file should be used. The argument can be just a filename, but
can also be a complete compiler command-line with options that concern the scanning of the Pascal
source: defines, include files, syntax options, as they would be specified to the Free Pascal compiler
when compiling the file. If a complete command is used, then it should be enclosed in single or
double quotes, so the shell will not break them in parts.
It is possible to specify multiple input commands; they will be treated one by one, and documentation
will be generated for each of the processed files.
3.2.9 lang
Select the language for the generated documentation. This will change all header names to the equiv-
alent in the specified language. The documentation itself will not be translated, only the captions and
headers used in the text.
Currently, valid choices are
de German.
fr French.
nl Dutch.
Example:
11
CHAPTER 3. FPDOC USAGE
--lang=de
3.2.10 latex-highlight
Switches on an internal latex syntax highlighter. This is not yet implemented. By default, syntax
highlighting is provided by the syntax package that comes with Free Pascal.
3.2.11 output
This option tells FPD OC where the output file should be generated. How this option is interpreted
depends on the format that is used. For latex, this is interpreted as the filename for the tex file. For all
other formats, this is interpreted as the directory where all documentation files will be written. The
directory will be created if it does not yet exist.
The filename or directory name is interpreted as relative to the current directory.
Example:
--format=html --output=docs/classes
--format=latex --output=docs/classes.tex
3.2.12 package
This option specifies the name of the package to be used. The package name will also be used as a
default for the output option (section 3.2.11, page 12).
3.2.13 show-private
By default, no documentation is generated for private methods or fields of classes or objects. This
option causes FPD OC to generate documentation for these methods and fields as well.
3.2.14 warn-no-node
If this option is given, then fpdoc will emit a warning if it cannot find a documentation node for some
identifier. This can be used to see whether the description files are up-to-date, or whether they must
be updated.
3.3 makeskel
3.3.1 introduction
The makeskel tool can be used to generate an empty description file for a unit. The description file
will contain an element node for each identifier in the interface section of the Pascal unit.
12
CHAPTER 3. FPDOC USAGE
It’s usage is quite straightforward: the name of an input file (one or more) must be specified (as for
FPD OC), an output file, and the name of a package:
This will read the file crt.pp and will create a file crt.xml which contains empty nodes for all identi-
fiers found in crt.pp, all in a package named rtl.
The input option can be given more than once, as for the fpdoc command:
As can be seen, the input option can contain some compiler options, as is the case for FPD OC.
The above command will process the files system.pp and crt.pp, and will create element tags for
the identifiers in both units in the file rtl.xml.
The output of makeskel is a valid, empty description file. It will contain a module tag for each unit
specified, and each module will have element tags for each identifier in the unit.
Each element tag will by default contain short, descr, errors and seealso tags, but this can be
customised.
3.4.1 descr
3.4.2 suse:descr
When in update mode (section 3.4.15, page 15), this opion can be used to add an existing documen-
tation file, as for fpdoc. Nodes that are already in one of the existing documentation files will not be
written to the output file.
3.4.3 disable-arguments
By default, for each function or procedure argument, a element tag will be generated. This option
disables this behaviour: no element tags will be generated for procedure and function arguments.
3.4.4 disable-errors
If this option is specified, no errors tag will be generated in the element nodes. By default all element
tags contain a errors node.
The errors tag is ignored when it is not needed; Normally, an errors tag is only needed for procedure
and function elements.
3.4.5 disable-function-results
If this option is specified, then no element tag will be generated for function results. By default,
makeskel will generate a result node for each function in the interface section. The result node is
used in the documentation to document the return value of the function under a separate heading in
the documentation page. Specifying this option suppresses the generation of the element tag for the
function result.
13
CHAPTER 3. FPDOC USAGE
3.4.6 disable-private
If this option is specified, then no element tags will be generated for private methods or fields of
classes or objects. The default behaviour is to generate nodes for private methods or fields. It can be
used to generate a skeleton for end-user and developer documentation.
3.4.7 disable-protected
If this option is specified, then no element tags will be generated for protected and private methods
or fields of classes or objects. The default is to generate nodes for protected methods or fields. If this
option is given, the option -disable-private is implied. It can be used to generate end-user-
only documentation for classes.
3.4.8 disable-seealso
If this option is specified, no seealso tag will be generated in the element nodes. By default all
element tags contain a seealso tag.
3.4.9 emitclassseparator
When this option is specified, at the beginning of the elements for the documentation of a class, a
comment tag is emitted which contains a separator text. This can be useful to separate documentation
of different classes and make the description file more understandable.
3.4.10 help
Makeskel emits a short copyright notice and exits when this option is specified.
3.4.11 input
This option is identical in meaning and functionality as the input option for FPD OC. (section
3.2.8, page 11) It specifies the Pascal unit source file that will be scanned and for which a skeleton
description file will be generated. Multiple input options can be given, and element tags will be
written for all the files, in one big output file.
3.4.12 lang
This option is used to specify the language for messages emitted by makeskel. The supported
languages are identical to the ones for FPD OC:
de German.
fr French.
nl Dutch.
3.4.13 output
This option specifies the name of the output file. A full filename must be given, no extension will be
added. If this option is omitted, the output will be sent to standard output.
When using update mode, the output file name should not appear in the list of existing documentation
files. The makeskel program will do some elementary checks on this.
14
CHAPTER 3. FPDOC USAGE
3.4.14 package
This option specifies the package name that will be used when generating the skeleton. It is a manda-
tory option.
3.4.15 update
This option tells makeskel to create an update file: it will read description files (section 3.2.2, page
9) and will only create documentation nodes for identifiers which do not yet have a documentation
node in the read documentation files. The output file in this case can be merged with one (or more) of
the documentation files: it’s name should not appear in the list of existing documentation files. The
makeskel program will do some elementary checks on this.
15
Chapter 4
4.1 Introduction
The description file is a XML document, which means that it is a kind of HTML or SGML like
format, however it is more structured than HTML, making it easier to parse - and makes it easier to
connect or merge it with a Pascal source file. Since the allowed syntax uses a lot of HTML tags, this
makes it easy to write code for those that are familiar with writing HTML.
More information about the XML format, SGML and HTML can be found on the website of the W3
(World Wide Web) consortium: http://www.w3.org/
The remaining of this chapter assumes a basic knowledge of tags, their attributes and markup lan-
guage, so these terms will not be explained here.
The minimal documentation file would look something like this:
The header xml tag is mandatory, and indicates that the file contains a documentation XML docu-
ment.
Inside the document, one or more top-level fpdoc-descriptions tags may appear. Each of these tags
can contain one or more package tags, which must have a name attribute. The name attribute will be
used by fpdoc to select the documentation nodes.
Inside a package tag, one or more module tags may appear. there should be one module tag per unit
that should be documented. The value of the name attribute of the module should be the name of
the unit for which the module tag contains the documentation. The value of the name attribute is
case insensitive, i.e.
<module name="CRT">
16
CHAPTER 4. THE DESCRIPTION FILE
For each identifier in the unit interface header, the module should contain a tag that documents the
identifier: this is the element tag. The name attribute of the element tag links the documentation to
the identifier: the name attribute should have as value the fully qualified name of the identifier in the
unit.
For example, to document the type
Type
MyEnum = (meOne,meTwo,meThree);
<element name="myenum">
</element>
But also for each of the three enumerated values an element tag should exist:
<element name="myenum.meOne">
</element>
<element name="myenum.meTwo">
</element>
<element name="myenum.meThree">
</element>
As it can be seen, the names of the identifiers follow a hierarchical structure. More about this in the
next section.
Now the tags for the types are present, all that should be done is to fill it with the actual description.
For this, several tags can be placed inside a element tag. The most important tag is the descr tag.
The contents of the descr tag will be used to describe a type, function, constant or variable:
<element name="myenum">
<descr>
The MyEnum type is a simple enumeration type which is not
really useful, except for demonstration purposes.
</descr>
</element>
A second important tag is the short tag. It should contain a short description of the identifier, prefer-
ably a description that fits on one line. The short tag will be used in various overviews, at the top of
a page in the HTML documentation (a synopsis) or will be used instead of the descr tag if that one
is not available. It can also be used in different other cases: For instance the different values of an
enumeration type will be laid out in a table, using the short description:
<element name="myenum.meOne">
<short>The first enumeration value</short>
</element>
<element name="myenum.meTwo">
<short>The second enumeration value</short>
</element>
<element name="myenum.meThree">
<short>The third enumeration value</short>
</element>
17
CHAPTER 4. THE DESCRIPTION FILE
<module name="CRT">
<topic name="UsingKeyboard">
<short>Using the keyboard functions</short>
<descr>
To use the keyboard functions of the CRT unit, one...
</descr>
</topic>
Topic nodes can be useful to add ’how to’ sections to a unit, or to provide general IDE help.
Type
MyEnum = (meOne,meTwo,meThree);
The various enumeration values can be documented using the element names MyEnum.meOne,
MyEnum.meTwo and MyEnum.meThree:
<element name="myenum.meOne">
</element>
<element name="myenum.meTwo">
</element>
<element name="myenum.meThree">
</element>
18
CHAPTER 4. THE DESCRIPTION FILE
Note that the casing of the name attribute need not be the same as the casing of the declaration.
This hierarchical structure can be used for all non-simple types:
In the short form, the value of the id attribute will be used as the text which will be hyperlinked. This
is especially useful in the seealso tag.
To refer to a type in another unit, the unit name must be prepended to the id attribute:
<link id="myunit.myenum"/>
<link id="#fcl.classes.sofrombeginning"/>
will link to the constant sofrombeginning in the classes unit of the FCL reference documen-
tation. Note that for this to work correctly, the contents file which was created when generating the
documentation of the type must be imported correctly (see the import option).
19
CHAPTER 4. THE DESCRIPTION FILE
1. Documentation structure tags. These are needed for fpdoc to do it’s work. They determine
what elements are documented. See table (4.1)
2. Text structure and formartting tags. These tags indicate blocks of text, such as paragraphs,
tables, lists and remarks, but also specify formatting: apply formatting (make-up) to the text,
or to provide links to other parts of the text. These mostly occur in text structure tags. See
table (4.2)
The nodes for formatting a text resemble closely the basic HTML formatting tags with the following
exceptions:
• Tables and paragraphs are at the same level, i.e. a table cannot occur inside a paragraph. The
same is true for all ’structural’ tags such as lists,
20
CHAPTER 4. THE DESCRIPTION FILE
Also, if special formatting tags such as a table or lists are inserted, then the remaining text must be
inside a paragraph tag. This means that the following is wrong:
<descr>
Some beginning text
<ol>
<li>A list item</li>
</ol>
some ending text
</descr>
<descr>
<p>Some beginning text</p>
<ol>
<li>A list item</li>
</ol>
<p>some ending text</p>
</descr>
<table>
<caption>This caption will end up above the table</caption>
<th><td>Column 1</td><td>Column 2</td></th>
</table>
21
CHAPTER 4. THE DESCRIPTION FILE
<code>
With Strings do
For i:=Count-1 downto 0 do
Delete(i);
</code>
<element name="MyEnym">
<descr>Myenum is a simple enumeration type</descr>
</element>
See also: element (23), short (28), errors (23), seealso (27)
<dl>
<dt>FPC</dt><dd>stands for Free Pascal Compiler.</dd>
</dl>
Will be typeset as
<dl>
<dt>meOne</dt><dd>First element of the enumeration type.</dd>
<dt>meTwo</dt><dd>Second element of the enumeration type.</dd>
<dt>meThree</dt><dd>Thir element of the enumeration type.</dd>
</dl>
Will be typeset as
22
CHAPTER 4. THE DESCRIPTION FILE
<dl>
<dt>FPC</dt><dd>stands for Free Pascal Compiler.</dd>
</dl>
Will be typeset as
short For a one-line description of the identifier. Is used as a header or is used in overviews of
constants, types, variables or classes.
descr Contains the actual description of the identifier.
errors For functions an procedures this can be used to describe error conditions. It will be put in a
separate section below the description section.
seealso Used to refer to other nodes. will be typeset in a separate section.
The element tag should have at least the name attribute, it is used to link the element node to the
actual identifier in the Pascal unit. Other attributes may be added in future.
Example:
<element name="MyEnym">
<descr>Myenum is a simple enumeration type</descr>
</element>
See also: descr (22), short (28), errors (23), seealso (27)
23
CHAPTER 4. THE DESCRIPTION FILE
<element name="MyDangerousFunction">
<descr>MyDangerousFunction is a dangerous function</descr>
<errors>When MyDangerousFunction fails, all is lost</errors>
</element>
See also: descr (22), short (28), element (23), seealso (27)
<ul>
<li>First item in the list</li>
<li>Second item in the list</li>
</ul>
Will be typeset as
24
CHAPTER 4. THE DESCRIPTION FILE
construct in HTML.
The mandatory id attribute of the link tag should have the name of an element tag in it. This name
is not case sensitive. FPD OC will issue a warning if it cannot find a matching name. It will look for
matching names in the current file, and in all content files that have been specified with the import
command-line option.
The link tag can exist in 2 forms: one with separate closing tag, surrounding a piece of text, one
without separate closing tag. If a piece of text is surrounded by the link tag, then the text will be
converted to a hyperlink in the HTML documentation. If there is no surrounded text, then the value
of the id attribute will be used as the text. This means that
<link id="TStream">TStream</link>
and
<link id="TStream"/>
See also: element (23), the import option (section 3.2.7, page 11).
<module name="classes">
<descr>
The classes unit contains basic class definitions for the FCL.
</descr>
</module>
25
CHAPTER 4. THE DESCRIPTION FILE
4.3.17 p : Paragraph
The p tag is the paragraph tag. Every description text should be enclosed in a p tag. Only when there
is only one paragraph (and no lists or tables or remarks) in a description node, then the p tag may be
skipped.
Note that if a description node contains a table, pre, code or any list tag, then the text surrounding
these tags must be put inside a p paragraph tag. This is different from the behaviour in HTML.
The paragraph tag must always have an opening tag and a closing tag, unlike html where only the
opening tag may be present.
Example:
<descr>
This is a paragraph which need not be surrounded by paragraph tags.
</descr>
<descr>
<p>
This is the first paragraph.
</p>
<p>
This is the second paragraph.
</p>
</descr>
See also: table (28), dl (22), remark (27),code (21), ol (25),ul (30),ol (25)
26
CHAPTER 4. THE DESCRIPTION FILE
<pre>
This is some text.
This is some more text
<p>Normal text.</p>
<remark>
This text will stand out.
<example>
<p>Again normal text.</p>
Will be formatted as
Normal text.
Remark: This text will stand out.
Again normal text.
See also: p (26), code (21), pre (27)
27
CHAPTER 4. THE DESCRIPTION FILE
<seealso>
<link id="TStrings"/>
<link id="TStringList.Create">Create</link>
</seealso>
• Used in overviews of constants, types, variables, record fields, functions and procedures,
classes, and for method and property listings of classes.
• In the description of an enumerated type, the enumeration values are typeset in a table, each
row containing the name of the value and the short description.
• In the description of a function or procedure that accepts arguments, the arguments are fol-
lowed by their short description.
• In the declaration of a class or record, each method, field or property is followed by the short
description.
Example:
<element name="MyEnum.meOne">
<short>First element of MyEnum</short>
</element>
<table>
<caption>
<var>TALignment</var> values and their meanings.
</caption>
<th><td>Value</td><td>Meaning</td></th>
<tr>
<td><var>taLeftJustify</var></td>
<td>Text is displayed aligned to the left.</td>
</tr>
<tr>
<td><var>taRightJustify</var></td>
<td>Text is displayed aligned to the right</td>
28
CHAPTER 4. THE DESCRIPTION FILE
</tr>
<tr>
<td><var>taCenter</var></td>
<td>Text is displayed centred.</td>
</tr>
</table>
<table>
<tr><td>Cell (1,1)</td><td>Cell (2,1)</td></tr>
<tr><td>Cell (1,2)</td><td>Cell (2,2)</td></tr>
</table>
<table>
<th><td>Cell (1,1)</td><td>Cell (2,1)</td></th>
<tr><td>Cell (1,2)</td><td>Cell (2,2)</td></tr>
</table>
29
CHAPTER 4. THE DESCRIPTION FILE
attribute (for cross-referencing). If it appears inside a package, it can be nested: a topic may be
inside another topic tag.
<module name="CRT">
<topic name="UsingKeyboard">
<short>Using the keyboard functions</short>
<descr>
To use the keyboard functions of the CRT unit, one...
</descr>
</topic>
<table>
<tr><td>Cell (1,1)</td><td>Cell (2,1)</td></tr>
<tr><td>Cell (1,2)</td><td>Cell (2,2)</td></tr>
</table>
30
CHAPTER 4. THE DESCRIPTION FILE
Will be typeset as
The Items property gives indexed access to...
See also: b (21), u (30), i (24), code (21)
31
Chapter 5
1. A general unit description with the contents of the module’s descr tag. The uses clause is
documented here as well. All units in the uses clause together with their short description
tags are typeset in a table.
All these overviews are hyperlinked to pages which contain the documentation of each identifier.
Each page starts with the name of the identifier, plus a synopsis (made from the short tag’s contents).
After that follows the declaration, and the description. The description is filled with the descr node
of the identifiers element tag.
If an errors tag was present, an ’Errors’ section follows the description. Similarly, if there is a
seealso tag, a ’See also’ section with cross-reference links is made.
For classes, the declaration contains hyperlinks to separate pages which document all the members
of the class. Each member in the declaration is followed by the short tag of the member’s element
tag, if one exists. As an extra, the class hierarchy is given, plus links to pop-up pages (if JavaScript is
available, otherwise they are normal links) which contain alphabetical or hierarchical listings of the
methods, fields or properties of the class.
For functions and procedures, the declaration will be typeset in such a way that all function arguments
(if they are present) are in tabular format, followed by the short description of the argument. If it
concerns a function, and a result element exists, the result description will be provided in a separate
section, before the actual description.
The declaration of an enumerated type will be laid out in a table, with the enumeration value at the
left, and the short description node of the value’s element.
32
CHAPTER 5. GENERATED OUTPUT FILES.
For the constants, types and variables, the declaration is given, followed by the descr node of the
element corresponding to the identifier. All other nodes are ignored.
For functions and procedures, a subsection is made per procedure or function. This subsection con-
sists of a list with the following entries:
Description Description of the function. Filled with the contents of the descr tag.
Errors Description of any error conditions. Filled with the contents of the errors tag.
See Also Cross-references to other functions. Filled with the contents of the seealso tag.
For classes, a subsection is made with an overview of implemented methods. Then a subsection is
presented with available properties.
Then follows a subsection per method. These are formatted as a function, with an additional Visibil-
ity list element, giving the visibility of the function.
After the methods, a list of properties is given , formatted as a method, with an additional Access
list element, specifying whether the property is read/write or not.
33