Commit 916d6d5c authored by Dimitri van Heesch's avatar Dimitri van Heesch

mods for doxygen-0.49-991106

parent a54eecdf
DOXYGEN Version 0.49-991003
DOXYGEN Version 0.49-991106
CONTENTS
--------
......@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
gunzip doxygen-0.49-991003.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-991003.src.tar # unpack it
gunzip doxygen-0.49-991106.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-991106.src.tar # unpack it
2. Run the configure script:
......@@ -86,7 +86,7 @@ You will need to install the windows/dos versions of following tools:
location where bison.simple and bison.hairy are located.
- Qt-1.xx (Qt-2.xx should also work, but I didn't test it for Windows)
(Hint: only the tools section is required, so you can use the free
X-windows version as well!)
X-windows version (use Qt-1.44) as well!)
You can get it at http://www.troll.no
- Microsoft Visual C++ (I only tested with version 5.0).
Use the vcvars32.bat to set the environment variables
......@@ -138,6 +138,26 @@ QT RELATED PROBLEMS:
- Qt-2.01 contains a bug that makes some special characters appear as
question marks (?) in the HTML output.
Bernhard Ristow provided a fix for this:
% in QT-2.0.1 is a bug in the member function
% QTextStream &QTextStream::operator<<( char c ).
%
% If the character is negative the cast to int in
% ts_putc( c ) produces an invalid char as unsigned
% short (e.g. char c = -4 -> unsigned short: 65532).
% This produces a strange output.
% If we modify the function into:
%
% QTextStream &QTextStream::operator<<( char c )
% {
% CHECK_STREAM_PRECOND
% unsigned char uc = (unsigned char) c;
% ts_putc( uc );
% return *this;
% }
% it works correctly.
HTML RELATED PROBLEMS:
- the indent continuously increases.
This seems to be a problem that can be observed with Netscape 4.01.
......@@ -214,4 +234,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (03 October 1999)
Dimitri van Heesch (06 November 1999)
DOXYGEN Version 0.49-991003
DOXYGEN Version 0.49-991106
Please read INSTALL for compilation instructions.
......@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (03 October 1999)
Dimitri van Heesch (06 November 1999)
0.49-991003
0.49-991106
......@@ -11,35 +11,36 @@
#
# All output generated with Doxygen is not covered by this license.
PROJECT_NAME =
OUTPUT_DIRECTORY = ..
HTML_HEADER =
HTML_FOOTER =
QUIET = NO
WARNINGS = YES
DISABLE_INDEX = YES
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
GENERATE_MAN = NO
GENERATE_LATEX = YES
GENERATE_HTML = YES
PROJECT_NAME =
OUTPUT_DIRECTORY = ..
HTML_HEADER =
HTML_FOOTER =
QUIET = NO
WARNINGS = YES
DISABLE_INDEX = YES
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
GENERATE_MAN = NO
GENERATE_LATEX = YES
GENERATE_HTML = YES
GENERATE_HTMLHELP = YES
ENABLE_PREPROCESSING = NO
INPUT = index.doc install.doc starting.doc faq.doc trouble.doc \
INPUT = index.doc install.doc starting.doc faq.doc trouble.doc \
history.doc features.doc \
doxygen_usage.doc doxytag_usage.doc doxysearch_usage.doc \
installdox_usage.doc output.doc autolink.doc \
config.doc commands.doc htmlcmds.doc language.doc
FILE_PATTERNS = *.cpp *.h *.doc
EXAMPLE_PATH = ../examples
RECURSIVE = NO
TAGFILES =
ALLEXTERNALS = NO
PERL_PATH = /usr/local/bin/perl
SEARCHENGINE = NO
CGI_NAME = search.cgi
CGI_URL =
DOC_URL =
DOC_ABSPATH =
BIN_ABSPATH = /usr/local/bin/
EXT_DOC_PATHS =
PDF_HYPERLINKS = YES
FILE_PATTERNS = *.cpp *.h *.doc
EXAMPLE_PATH = ../examples
RECURSIVE = NO
TAGFILES =
ALLEXTERNALS = NO
PERL_PATH = /usr/local/bin/perl
SEARCHENGINE = NO
CGI_NAME = search.cgi
CGI_URL =
DOC_URL =
DOC_ABSPATH =
BIN_ABSPATH = /usr/local/bin/
EXT_DOC_PATHS =
PDF_HYPERLINKS = YES
......@@ -58,9 +58,9 @@
</ol>
where n>0.
\par Notice 1:
\par Note 1:
The patterns above should not contain spaces, tabs or newlines.
\par Notice 2:
\par Note 2:
For JavaDoc compatibility a \c # may be used instead of a \c :: in
the patterns above.
......
......@@ -176,6 +176,17 @@ Doxygen. Unrecognized commands are treated as normal text.
group of classes, files or namespaces. This can be used to
categorize classes, files or namespaces, and document those
categories.
The \<name\> argument should an single word identifier.
\par Example:
\verbinclude group.cpp
\htmlonly
Click <a href="$(DOXYGEN_DOCDIR)/examples/group/html/modules.html">here</a>
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\sa section \ref cmdingroup "\\ingroup"
<hr>
......@@ -197,7 +208,7 @@ Doxygen. Unrecognized commands are treated as normal text.
If a comment block is located directly in front of an enum declaration,
the \\enum comment may be omitted.
\par Notice:
\par Note:
The type of an anonymous enum cannot be documented, but the values
of an anonymous enum can.
......@@ -274,11 +285,12 @@ Doxygen. Unrecognized commands are treated as normal text.
\sa section \ref cmdvar "\\var" and \ref cmdtypedef "\\typedef".
<hr>
\subsection cmdingroup \ingroup <groupname>
\subsection cmdingroup \ingroup (<groupname> [<groupname> <groupname>])
\addindex \ingroup
If the \\ingroup command is placed in a comment block of a
class, file or namespace, then it will be added to the group.
class, file or namespace, then it will be added to the group or
groups identified by \<groupname\>.
\sa section \ref cmddefgroup "\\defgroup".
......@@ -345,10 +357,10 @@ Doxygen. Unrecognized commands are treated as normal text.
Any other documentation that is inside the documentation block will
by appended after the generated message.
\par Notice 1:
\par Note 1:
You are responsible that there is indeed an
earlier documented member that is overloaded by this one.
\par Notice 2:
\par Note 2:
The \\overload command does not work inside a one-line comment.
\par Example:
\verbinclude examples/overload.cpp
......@@ -374,7 +386,7 @@ Doxygen. Unrecognized commands are treated as normal text.
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\par notice:
\par Note:
The \<name\> argument consists of a combination of letters and number
digits. If you wish to use upper case letters (e.g. \c MYPAGE1), or
mixed case letters (e.g. \c MyPage1) in the \<name\> argument, you
......@@ -693,7 +705,7 @@ Doxygen. Unrecognized commands are treated as normal text.
See section \ref autolink "\\autolink" for more information on automatically
generated links and valid link-objects.
\b Notice:
\b Note:
Keep in mind that links are only meaningful in HTML text;
in \f$\mbox{\LaTeX}\f$ text, the link text is just written to the output.
......@@ -843,7 +855,7 @@ Doxygen. Unrecognized commands are treated as normal text.
the example, is set to the start of the line following the line that is
written (or to the end of the example if the pattern could not be found).
\par Notice:
\par Note:
The command:
\verbatim\skipline pattern\endverbatim
is equivalent to:
......@@ -921,7 +933,7 @@ Doxygen. Unrecognized commands are treated as normal text.
</ul><br>
No other types of alignment are supported.
\par Notice:
\par Note:
For nested lists, HTML commands should be used.
<hr>
......@@ -1021,11 +1033,11 @@ Doxygen. Unrecognized commands are treated as normal text.
endhtmlonly command.
This command can be used to include HTML code that is too complex
for Doxygen (i.e. images, applets, java-scripts, and HTML tags that
for Doxygen (i.e. applets, java-scripts, and HTML tags that
require attributes). You can use the \\latexonly and \\endlatexonly
pair to provide a proper \f$\mbox{\LaTeX}\f$ alternative.
\b Notice:
\b Note:
environment variables (like \$(HOME) ) are resolved inside a
HTML-only block.
......@@ -1043,12 +1055,13 @@ Doxygen. Unrecognized commands are treated as normal text.
The first argument specifies the output format. Currently, the
following values are supported: \c html and \c latex.
The second argument specifies the path and file name of the image.
If a relative path is used, this will be relative to the directory to
which the output of the particular format is written.
For the html format you may also
specify an URL. If the name contains spaces you'll have to put
quotes (") around it.
The second argument specifies the file name of the image.
Doxygen will look for files in the paths (or files) that you specified
after the \ref cfg_image_path "IMAGE_PATH" tag and filter those files through the patterns
you specified after the \ref cfg_image_patterns "IMAGE_PATTERNS" tag.
If the image is found it
will be copied to the correct output directory.
If the image name contains spaces you'll have to put quotes (") around it.
The third argument can be used to specify the width or height of the
image. This is only useful for \f$\mbox{\LaTeX}\f$ output
......@@ -1057,19 +1070,28 @@ Doxygen. Unrecognized commands are treated as normal text.
size specifier in \f$\mbox{\LaTeX}\f$ (for example <code>10cm</code> or
<code>6in</code>).
Here is example of a comment block:
\verbatim
/*! Here is a snapshot of my new application:
* \image html ../images/application.jpg
* \image latex ../images/application.eps width=10cm
* \image html application.jpg
* \image latex application.eps width=10cm
*/
\endverbatim
And this is an example of how the configuration file may look:
\verbatim
IMAGE_PATH = my_image_dir
IMAGE_PATTERNS = *.eps *.gif *.jpg
\endverbatim
\warning The image format for HTML is limited to what your
browser supports. For \f$\mbox{\LaTeX}\f$ the image format
must be an encapsulated postscipt (eps).
<br><br>
Doxygen does not check if an image exists or if it is in
the correct format. So \e you have to make sure this is the case!
Doxygen does not check if the image is in the correct format.
So \e you have to make sure this is the case!
<hr>
\subsection cmdlatexonly \latexonly
......@@ -1084,7 +1106,7 @@ Doxygen. Unrecognized commands are treated as normal text.
use the \\htmlonly and \\endhtmlonly pair to provide a proper HTML
alternative.
\b Notice:
\b Note:
environment variables (like \$(HOME) ) are resolved inside a
\f$\mbox{\LaTeX}\f$-only block.
......@@ -1209,7 +1231,6 @@ browser generator. Do \e not use these commands in your own documentation.
<li>\\functionindex
<li>\\header
<li>\\headerfilelist
<li>\\ingroup
<li>\\inherit
<li>\\l
<li>\\postheader
......
......@@ -58,12 +58,14 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_cgi_name CGI_NAME
<li> \refitem cfg_cgi_url CGI_URL
<li> \refitem cfg_class_diagrams CLASS_DIAGRAMS
<li> \refitem cfg_cols_in_alpha_index COLS_IN_ALPHA_INDEX
<li> \refitem cfg_compact_latex COMPACT_LATEX
<li> \refitem cfg_disable_index DISABLE_INDEX
<li> \refitem cfg_doc_abspath DOC_ABSPATH
<li> \refitem cfg_doc_url DOC_URL
<li> \refitem cfg_enable_preprocessing ENABLE_PREPROCESSING
<li> \refitem cfg_example_path EXAMPLE_PATH
<li> \refitem cfg_example_patterns EXAMPLE_PATTERNS
<li> \refitem cfg_exclude EXCLUDE
<li> \refitem cfg_exclude_patterns EXCLUDE_PATTERNS
<li> \refitem cfg_expand_only_predef EXPAND_ONLY_PREDEF
......@@ -84,6 +86,9 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_html_footer HTML_FOOTER
<li> \refitem cfg_html_header HTML_HEADER
<li> \refitem cfg_html_output HTML_OUTPUT
<li> \refitem cfg_html_stylesheet HTML_STYLESHEET
<li> \refitem cfg_image_path IMAGE_PATH
<li> \refitem cfg_image_patterns IMAGE_PATTERNS
<li> \refitem cfg_include_path INCLUDE_PATH
<li> \refitem cfg_inherit_docs INHERIT_DOCS
<li> \refitem cfg_inline_info INLINE_INFO
......@@ -190,7 +195,8 @@ followed by the descriptions of the tags grouped by category.
If the \c EXTRACT_ALL tag is set to \c YES all classes and functions will be
included in the documentation, even if no documentation was available.
\b Notice: This will also disable the warnings about undocumented members
\par Note:
This will also disable the warnings about undocumented members
that are normally produced when \c WARNINGS is set to \c YES
\anchor cfg_extract_private
......@@ -238,7 +244,7 @@ followed by the descriptions of the tags grouped by category.
prepend the brief description of a member or function before the detailed
description
\par Notice:
\par Note:
If both \c HIDE_UNDOC_MEMBERS and \c BRIEF_MEMBER_DESC are set to \c NO, the
brief descriptions will be completely suppressed.
......@@ -290,7 +296,7 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_javadoc_autobrief
<dt>\c JAVADOC_AUTOBRIEF <dd>
\addinex JAVADOC_AUTOBRIEF
\addindex JAVADOC_AUTOBRIEF
If the \c JAVADOC_NO_AUTOBRIEF is set to \c YES (the default) then Doxygen
will interpret the first line (until the first dot) of a JavaDoc-style
comment as the brief description. If set to NO, the Javadoc-style will
......@@ -304,7 +310,7 @@ followed by the descriptions of the tags grouped by category.
reimplements.
\anchor cfg_inline_info
<dt> INLINE_INFO <dd>
<dt>\c INLINE_INFO <dd>
If the \c INLINE_INFO tag is set to \c YES (the default) then a tag [inline]
is inserted in the documentation for inline members.
......@@ -321,7 +327,8 @@ followed by the descriptions of the tags grouped by category.
\c myfile.cpp or directories like \c /usr/src/myproject.
Separate the files or directories with spaces.<br>
\b Notice: This tag (and only this tag) is \e required.
\b Note:
This tag (and only this tag) is \e required.
\anchor cfg_file_patterns
<dt>\c FILE_PATTERNS <dd>
......@@ -360,6 +367,29 @@ followed by the descriptions of the tags grouped by category.
directories that contain example code fragments that are included (see
the \\include command in section \ref cmdinclude "\\include").
\anchor cfg_example_patterns
<dt>\c EXAMPLE_PATTERNS <dd>
\addindex EXAMPLE_PATTERNS
If the value of the \c EXAMPLE_PATH tag contains directories, you can use the
\c EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
and *.h) to filter out the source-files in the directories. If left
blank all files are included.
\anchor cfg_image_path
<dt>\c IMAGE_PATH <dd>
\addindex IMAGE_PATH
The \c IMAGE_PATH tag can be used to specify one or more files or
directories that contain images that are to be included in the
documentation (see the \ref cmdimage "\image" command).
\anchor cfg_image_patterns
<dt>\c IMAGE_PATTERNS <dd>
\addindex IMAGE_PATTERNS
If the value of the \c IMAGE_PATH tag contains directories, you can use the
\c IMAGE_PATTERNS tag to specify one or more wildcard pattern (like *.gif
and *.eps) to filter out the image files in the directories. If left
blank all files are included.
\anchor cfg_input_filter
<dt>\c INPUT_FILTER <dd>
\addindex INPUT_FILTER
......@@ -410,9 +440,11 @@ followed by the descriptions of the tags grouped by category.
standard header.
The following commands have a special meaning inside the header:
<code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>.
<code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>,
<code>\$doxygenversion</code>.
Doxygen will replace them by respectively
the title of the page, the current date and time, or only the current date.
the title of the page, the current date and time, only the current date,
or the version number of doxygen.
\anchor cfg_html_footer
<dt>\c HTML_FOOTER <dd>
......@@ -431,6 +463,28 @@ followed by the descriptions of the tags grouped by category.
Doxygen will replace them by respectively
the title of the page, the current date and time, or only the current date.
\anchor cfg_html_stylesheet
<dt>\c HTML_STYLESHEET <dd>
\addindex HTML_STYLESHEET
The \c HTML_STYLESHEET tag can be used to specify a user defined cascading
style sheet that is used by each HTML page. It can be used to
fine-tune the look of the HTML output. If the tag is left blank doxygen
will generate a default style sheet. Here is the default style sheet
that doxygen normally generates:
\verbatim
H1 { text-align: center }
A.el { text-decoration: none; font-weight: bold }
DL.el { margin-left: -1cm }
DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
DIV.in { margin-left: 16 }
DIV.ah { background-color: black; margin-bottom: 3; margin-top: 3 }
A.gl:link { color: #ffffff }
A.gl:visited { color: #ffffff }
A.gl { text-decoration: none; font-weight: bold; background-color: #ff8080 }
TD.md { background-color: #f2f2ff }
\endverbatim
\anchor cfg_html_align_members
<dt>\c HTML_ALIGN_MEMBERS <dd>
......@@ -438,14 +492,14 @@ If the \c HTML_ALIGN_MEMBERS tag is set to \c YES, the members of classes,
files or namespaces will be aligned in HTML using tables. If set to
NO a bullet list will be used.
\par Notice
<b>Note:</b>
Setting this tag to NO will become obsolete in the future, since I only
intent to support and test the aligned representation.
\anchor cfg_generate_htmlhelp
<dt>\c GENERATE_HTMLHELP <dd>
If the \c GENERATE_HTMLHELP tag is set to \c YES,
If the \c GENERATE_HTMLHELP tag is set to \c YES then
doxygen generates three additional HTML index files:
\c index.hhp, \c index.hhc, and \c index.hhk. The \c index.hhp is a
project file that can be read by
......@@ -472,6 +526,13 @@ If the \c ALPHABETICAL_INDEX tag is set to \c YES, an alphabetical index
of all compounds will be generated. Enable this if the project contains
a lot of classes, structs, unions or interfaces.
\anchor cfg_cols_in_alpha_index
<dt>\c COLS_IN_ALPHA_INDEX <dd>
If the alphabetical index is enabled
(see \c ALPHABETICAL_INDEX) then the \c COLS_IN_ALPHA_INDEX tag can be
used to specify the number of columns in which this list will be split (can be a number in the range [1..20])
</dl>
\subsection latex_output LaTeX related options
......@@ -515,7 +576,7 @@ a lot of classes, structs, unions or interfaces.
\anchor cfg_extra_packages
<dt>\c EXTRA_PACKAGES <dd>
\addindex EXTRA_PACKAGES
The EXTRA_PACKAGES tag can be used to specify one or more \f$\mbox{\LaTeX}\f$
The \c EXTRA_PACKAGES tag can be used to specify one or more \f$\mbox{\LaTeX}\f$
package names that should be included in the \f$\mbox{\LaTeX}\f$ output.
To get the times font for instance you can specify
\verbatim
......@@ -555,7 +616,7 @@ EXTRA_PACKAGES = times
\pagenumbering{arabic}
\endverbatim
\par Notice:
\par Note:
Only use a user defined header if you know what you are doing!
</dl>
......@@ -581,7 +642,7 @@ EXTRA_PACKAGES = times
\anchor cfg_man_extension
<dt>\c MAN_EXTENSION <dd>
\addindex MAX_EXTENSION
The MAN_EXTENSION tag determines the extension that is added to
The \c MAN_EXTENSION tag determines the extension that is added to
the generated man pages (default is the subroutine's section .3)
</dl>
......@@ -643,7 +704,7 @@ EXTRA_PACKAGES = times
See section \ref doxytag_usage for more information about the usage of
tag files.
\par Notice:
\par Note:
Each tag file most have a unique name and if a tag file is not located
in the directory in which doxygen is run, you must also specify the
path to the tagfile here.
......
......@@ -41,9 +41,15 @@ doxygen <config_file>
\endverbatim
</ol>
The \c -s option is optional and can be used suppress the description that
doxygen normally generates for each tag. Try to use this option if you send
me configuration files!
<b>Note:</b><br>
<ul>
<li> If you do not want the description for each item in the configuration
file then you can use the optional \c -s option.
Try to use this option if you send me a configuration file as part of
a bug report!
<li> To make doxygen read/write to standard input/output instead of from/to
a file, use \c - for the file name.
</ul>
If you also want to use the search engine, you should look
at section \ref doxysearch_usage.
......
......@@ -80,7 +80,7 @@ follow these steps:
<li>\c search.gif: this is the image that is used for the search button.
</ul>
\par Notice:
\par Note:
On the Windows platform Unix shell scripts cannot be used.
In fact the HTTP daemon that I tried (apache for Windows) only
recognized <code>.cgi</code> files that were renamed
......@@ -106,9 +106,11 @@ follow these steps:
<li>Run <a href="installdox_usage.html">installdox</a> to replace
any dummy links in the documentation with real links.
<b>Notice:</b> When using a search engine this step is <em>required</em>
\par Note:
When using a search engine this step is <em>required</em>
even if no tag files are used. If tag files are used you must specify
the correct options.
</ol>
<a name="searchqt">
......@@ -128,7 +130,7 @@ This can be done by carefully following these steps:
Apart from the file <code>search.idx</code> two other files
will be generated: <code>search.gif</code> and <code>search.cgi</code>
\par Notice:
\par Note:
Doxytag requires quite a large amount of memory to
generate the search index (about 30 Mb on my Linux box)!
The resulting index file requires about 3 Mb space on your disk.
......
......@@ -28,7 +28,7 @@ It has two functions:
documented in external documentation. Doxytag extracts this information
directly from the HTML files. This has the advantage that you do not need
to have the sources from which the documentation was extracted.
If you do have the sources you can also let \c doxygen generate the
If you \e do have the sources it is better to let \c doxygen generate the
tag file by putting the name of the tag file after \c GENERATE_TAGFILE in
the configuration file.
<li>
......@@ -55,7 +55,7 @@ In both cases the input of doxytag consists of a set of HTML files.
Then the documentation does not need to be regenerated by \c doxygen,
only \c installdox has to be run.
\par Notice:
\par Note:
Because the HTML files are expected to have a certain
structure, only HTML files generated with doxygen or with Qt's class
browser generator can be used. Doxytag only <em>reads</em> the HTML files,
......@@ -87,7 +87,7 @@ doxytag -t example.tag example/html
installdox script that doxygen generates
(See \ref installdox_usage for more information).
Notice that this is actually a feature because if you (or someone else)
Note that this is actually a feature because if you (or someone else)
moves the external documentation to a different
directory or URL you can simply run the script again and all links in
the HTML files will be updated.
......@@ -109,7 +109,7 @@ A typical example to use doxytag to generate a search index is:
doxytag -s search.idx
\endverbatim
\par Notice:
\par Note:
In the current version of doxygen, the search index must be
called \c search.idx.
......
......@@ -22,9 +22,13 @@
<li>Requires very little overhead from the writer of the documentation.
Plain text will do, but for more fancy or structured output HTML tags
and/or some of doxygen's special commands can be used.
<li>Outputs documentation in on-line format (HTML and man page) and off-line
format (LaTeX) simulatiously (any one can be disabled if desired).
Both formats are optimized for ease of reading.
<li>Outputs documentation in on-line format (HTML and UNIX man page) and
off-line format (\f$\mbox{\LaTeX}\f$) simultaniously
(any one can be disabled if desired). Both formats are optimized for
ease of reading. <br>
Furthermore, compressed HTML can be generated from HTML output using
Microsoft's HTML help workshop (Windows only) and PDF can be generated
from the \f$\mbox{\LaTeX}\f$ output.
<li>Allows documentation of files, namespaces, classes, structs, unions,
templates, variables, functions, typedefs, enums and defines.
<li>Includes a full C preprocessor to allow proper parsing of conditional
......@@ -33,7 +37,7 @@
the Qt specific signal and slots sections. Extraction of private class
members is optional.
<li>Automatically generates of class diagrams in HTML (as clickable
image maps) and Latex (as encapsulated postscript).
image maps) and \f$\mbox{\LaTeX}\f$ (as encapsulated postscript images).
<li>JavaDoc (1.1) and Qt-Doc compatible.
<li>References to base/super classes and inherited/overridden members are
generated automatically.
......@@ -46,7 +50,8 @@
of a member function or class. Most documentation systems (such as Javadoc) only
support the former, others (such as Qt) only the latter.
<li>You can type normal HTML tags in your documentation. Doxygen will convert
them to their equivalent Latex and man-page counterparts automatically.
them to their equivalent \f$\mbox{\LaTeX}\f$ and man-page
counterparts automatically.
<li>Allows references to documentation generated for other projects
(or another part of the same project) in a location independent way.
<li>Allows inclusion of source code examples that are automatically
......@@ -54,12 +59,12 @@
<li>Inclusion of undocumented classes is also supported, allowing to quickly
learn the structure and interfaces of a (large) piece of code without
looking into the implementation details.
<li>All options are read from an easy to edit and documented configuration
file.
<li>Allows automatic cross-referencing of (documented) entities with their
definition in the source code.
<li>All options are read from an easy to edit and documented
configuration file.
<li>Documentation and search engine can be transferred to another
location or machine without regenerating the documentation.
<li>Doxygen can generate index and project files that can
be converted into compressed HTML by MicroSoft's HTML help workshop.
<li>Can cope with large projects easily.
</UL>
......
......@@ -22,8 +22,6 @@
<li>Add support for grouping members, and document then as a group.
<li>Support for K&R-style function arguments.
<li>More ouput formats: suggested are info format and RTF format.
<li>Reintroduction of the multi-column class list (and file list) to quickly
select a class or file
<li>Split long lists in an index to a set of smaller lists.
<li>Add a nice graphical front-end for creating and modifying the
configuration file (it should be flexible enough to quickly add new options).
......@@ -34,15 +32,18 @@
not yet listed here, please let me know.
</ul>
<h3>Features scheduled for version 0.5</h3>
<h3>Features scheduled for version 1.0</h3>
<ul>
<li>Proper support for namespaces.
<li>Include LaTeX style formulas in LaTeX and HTML output (in HTML as a gif).
<li>Proper support for template classes, members, functions and specializations.
<li>Multi-lingual support.
<li>Generation of class diagrams (clickable image maps in HTML, eps images in
postscript).
<li>Add generator for man pages format.
<li>Include LaTeX style formulas in LaTeX and HTML output (in HTML as a gif).
<li>Multi-lingual support: currently supported languages are: English,
Dutch, French, German, Italian, Swedish, Czech, Japanese.
<li>Generation of class diagrams (clickable image maps in HTML, eps images
in postscript).
<li>Output generator for the man page format.
<li>Proper support for template classes, members, functions and specializations.
<li>Proper support for namespaces.
<li>Reintroduction of the multi-column class list (and file list) to quickly
select a class or file
</ul>
<h3>Version 0.4</h3>
......
......@@ -16,7 +16,7 @@
/*! \page htmlcmds HTML Commands
Here is a list of all HTML commands that may be used inside the
documentation. Notice that all attributes of a HTML tag are ignored
documentation. Note that all attributes of a HTML tag are ignored
(the HREF and NAME attributes for the A tag are the only exception).
<ul>
......
......@@ -180,8 +180,10 @@ Matthias Baas,
Walter Mueller,
William van Dieten,
Joshua Jensen,
Patrick Aberts,
Patrick Alberts,
Jacques Tremblay,
John Sturton,
Moshe Kruger,
and many others for suggestions, patches and bug reports.
</ul>
*/
......
......@@ -40,7 +40,7 @@ The following options are available:
that is used by doxygen. The location <tt>\<location\></tt> can be
an absolute path or a URL.
\par Notice:
\par Note:
Each <tagfile> must be unique and should only be the name of the
file, not including the path.
......
......@@ -35,7 +35,8 @@ Here is a list of the languages and their current maintainers:
<TR BGCOLOR="#4040c0">
<TD ><b><font size=+1 color="#ffffff"> Language </font></b></TD>
<TD ><b><font size=+1 color="#ffffff"> Maintainer </font></b></TD>
<TD ><b><font size=+1 color="#ffffff"> Contact address </font></b></TD>
<TD ><b><font size=+1 color="#ffffff"> Contact address </font>
<font size=-2 color="#ffffff">(remove the NOSPAM.)</font></b></TD>
<TR BGCOLOR="#ffffff">
<TD>
German
......@@ -44,8 +45,8 @@ Here is a list of the languages and their current maintainers:
Jens Breitenstein
</TD>
<TD>
<a href="mailto:Jens.Breitenstein@tlc.de">
Jens.Breitenstein@tlc.de</a>
<a href="mailto:Jens.Breitenstein@NOSPAM.tlc.de">
Jens.Breitenstein@NOSPAM.tlc.de</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -56,8 +57,8 @@ Here is a list of the languages and their current maintainers:
Christophe Bordeux
</TD>
<TD>
<a href="mailto:bordeux@lig.di.epfl.ch">
bordeux@lig.di.epfl.ch</a>
<a href="mailto:bordeux@NOSPAM.lig.di.epfl.ch">
bordeux@NOSPAM.lig.di.epfl.ch</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -69,10 +70,10 @@ Here is a list of the languages and their current maintainers:
XeT Erixon
</TD>
<TD>
<a href="mailto:sahag96@nts.mh.se">
sahag96@nts.mh.se</a><br>
<a href="mailto:xet@hem.passagen.se">
xet@hem.passagen.se</a>
<a href="mailto:sahag96@NOSPAM.nts.mh.se">
sahag96@NOSPAM.nts.mh.se</a><br>
<a href="mailto:xet@NOSPAM.hem.passagen.se">
xet@NOSPAM.hem.passagen.se</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -83,8 +84,8 @@ Here is a list of the languages and their current maintainers:
Vlastimil Havran
</TD>
<TD>
<a href="mailto:havran@fel.cvut.cz">
havran@fel.cvut.cz</a>
<a href="mailto:havran@NOSPAM.fel.cvut.cz">
havran@NOSPAM.fel.cvut.cz</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -95,8 +96,8 @@ Here is a list of the languages and their current maintainers:
Ionutz Borcoman
</TD>
<TD>
<a href="mailto:borco@borco-ei.eng.hokudai.ac.jp">
borco@borco-ei.eng.hokudai.ac.jp</a>
<a href="mailto:borco@NOSPAM.borco-ei.eng.hokudai.ac.jp">
borco@NOSPAM.borco-ei.eng.hokudai.ac.jp</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -107,8 +108,8 @@ Here is a list of the languages and their current maintainers:
Piotr Piatkowski
</TD>
<TD>
<a href="mailto:kompas@ceti.com.pl">
kompas@ceti.com.pl</a>
<a href="mailto:kompas@NOSPAM.ceti.com.pl">
kompas@NOSPAM.ceti.com.pl</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -120,10 +121,10 @@ Here is a list of the languages and their current maintainers:
Alessandro Falappa
</TD>
<TD>
<a href="mailto:aaf23@cam.ac.uk">
aaf23@cam.ac.uk</a><br>
<a href="mailto:a.falappa@flashnet.it">
a.falappa@flashnet.it</a>
<a href="mailto:aaf23@NOSPAM.cam.ac.uk">
aaf23@NOSPAM.cam.ac.uk</a><br>
<a href="mailto:a.falappa@NOSPAM.flashnet.it">
a.falappa@NOSPAM.flashnet.it</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -134,8 +135,8 @@ Here is a list of the languages and their current maintainers:
Kenji Nagamatsu
</TD>
<TD>
<a href="mailto:naga@joyful.club.ne.jp">
naga@joyful.club.ne.jp</a>
<a href="mailto:naga@NOSPAM.joyful.club.ne.jp">
naga@NOSPAM.joyful.club.ne.jp</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -146,8 +147,8 @@ Here is a list of the languages and their current maintainers:
Francisco Oltra Thennet
</TD>
<TD>
<a href="mailto:foltra@puc.cl">
foltra@puc.cl</a>
<a href="mailto:foltra@NOSPAM.puc.cl">
foltra@NOSPAM.puc.cl</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -158,8 +159,8 @@ Here is a list of the languages and their current maintainers:
Olli Korhonen
</TD>
<TD>
<a href="mailto:Olli.Korhonen@ccc.fi">
Olli.Korhonen@ccc.fi</a>
<a href="mailto:Olli.Korhonen@NOSPAM.ccc.fi">
Olli.Korhonen@NOSPAM.ccc.fi</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -170,8 +171,8 @@ Here is a list of the languages and their current maintainers:
Vladimir Vodolazkiy
</TD>
<TD>
<a href="mailto:voldemarus@geocities.com">
voldemarus@geocities.com</a>
<a href="mailto:voldemarus@NOSPAM.geocities.com">
voldemarus@NOSPAM.geocities.com</a>
</TD>
</TR>
......@@ -183,8 +184,8 @@ Here is a list of the languages and their current maintainers:
Dimitri van Heesch
</TD>
<TD>
<a href="mailto:dimitri@stack.nl">
dimitri@stack.nl</a>
<a href="mailto:dimitri@NOSPAM.stack.nl">
dimitri@NOSPAM.stack.nl</a>
</TD>
</TR>
</TABLE>
......@@ -201,7 +202,7 @@ Here is a list of the languages and their current maintainers:
\hline
French & Christophe Bordeux & {\tt bordeux@lig.di.epfl.ch} \\
\hline
Swedish & Samuel Hgglund & {\tt sahag96@nts.mh.se} \\
Swedish & Samuel H\"agglund & {\tt sahag96@nts.mh.se} \\
& XeT Erixon & {\tt xet@hem.passagen.se} \\
\hline
Czech & Vlastimil Havran & {\tt havran@fel.cvut.cz} \\
......
This diff is collapsed.
......@@ -24,8 +24,8 @@
properly. If you find such a piece, please send it to me, so I can
improve doxygen's parsing capabilities. Try to make the piece of code
you send as small as possible, to help me narrow down the search.
<li>Using declarations and directives are not yet. They are
simply ignored.
<li>Using declarations are not yet supported. They are simply ignored.
Using directives are supported however.
<li>Doxygen does not work properly if there are multiple classes, structs
or unions with the same name in your code. It should not crash however,
rather it should ignore all of the classes with the same name except one.
......@@ -42,7 +42,8 @@
\verbatim
const int (a);
\endverbatim
is also seen as a function declaration, because only the syntax is analysed,
is also seen as a function declaration with name
<code>int</code>, because only the syntax is analysed,
not the semantics. If the redundant braces can be detected, as in
\verbatim
int *(a[20]);
......
......@@ -18,7 +18,8 @@ all: class/html/index.html \
restypedef/html/index.html \
afterdoc/html/index.html \
template/html/index.html \
tag/html/index.html
tag/html/index.html \
group/html/index.html
clean:
rm -rf class define enum file func page relates author \
......@@ -86,3 +87,6 @@ afterdoc/html/index.html: afterdoc.h afterdoc.cfg
template/html/index.html: templ.cpp templ.cfg
$(DOXYGEN)/bin/doxygen templ.cfg
group/html/index.html: group.cpp group.cfg
$(DOXYGEN)/bin/doxygen group.cfg
......@@ -4,8 +4,7 @@
This is to test the documentation of defines.
*/
/*! \def ABS(x)
/*!
The define ABS computes the absolute value of its argument \a x.
*/
#define ABS(x) (((x)>0)?(x):-(x))
PROJECT_NAME = "Grouping"
OUTPUT_DIRECTORY = group
GENERATE_LATEX = NO
GENERATE_MAN = NO
INPUT = group.cpp
QUIET = YES
/*! \defgroup group1 The First Group
* This is the first group
*/
/*! \defgroup group2 The Second Group
* This is the second group
*/
/*! \defgroup group3 The Third Group
* This is the third group
*/
/*! \ingroup group1
* \brief class C1 in group 1
*/
class C1 {};
/*! \ingroup group1
* \brief class C2 in group 1
*/
class C2 {};
/*! \ingroup group2
* \brief class C3 in group 2
*/
class C3 {};
/*! \ingroup group2
* \brief class C4 in group 2
*/
class C4 {};
/*! \ingroup group3
* \brief class C5 in \link group3 the third group\endlink.
*/
class C5 {};
/*! \ingroup group1 group2 group3
* \brief class C6 in all groups
* \sa \link group1 The first group\endlink, group2, group3
*/
class C6 {};
/*! \file
* \ingroup group3
* \brief this file in group 3
*/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>Annotated Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>Grouping Compound List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<ul>
<li><a class="el" href="class_c1.html">C1</a> (Class C1 in group 1)
<li><a class="el" href="class_c2.html">C2</a> (Class C2 in group 1)
<li><a class="el" href="class_c3.html">C3</a> (Class C3 in group 2)
<li><a class="el" href="class_c4.html">C4</a> (Class C4 in group 2)
<li><a class="el" href="class_c5.html">C5</a> (Class C5 in <a href="group_group3.html"> the third group</a>)
<li><a class="el" href="class_c6.html">C6</a> (Class C6 in all groups)
</ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>C1 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>C1 Class Reference</h1>class C1 in group 1.
<a href="#_details">More...</a>
<p>
<table border=0 cellpadding=0 cellspacing=0>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
class C1 in group 1.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>C2 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>C2 Class Reference</h1>class C2 in group 1.
<a href="#_details">More...</a>
<p>
<table border=0 cellpadding=0 cellspacing=0>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
class C2 in group 1.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>C3 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>C3 Class Reference</h1>class C3 in group 2.
<a href="#_details">More...</a>
<p>
<table border=0 cellpadding=0 cellspacing=0>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
class C3 in group 2.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>C4 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>C4 Class Reference</h1>class C4 in group 2.
<a href="#_details">More...</a>
<p>
<table border=0 cellpadding=0 cellspacing=0>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
class C4 in group 2.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>C5 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>C5 Class Reference</h1>class C5 in <a href="group_group3.html"> the third group</a>.
<a href="#_details">More...</a>
<p>
<table border=0 cellpadding=0 cellspacing=0>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
class C5 in <a href="group_group3.html"> the third group</a>.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>C6 Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>C6 Class Reference</h1>class C6 in all groups.
<a href="#_details">More...</a>
<p>
<table border=0 cellpadding=0 cellspacing=0>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
class C6 in all groups.
<p>
<dl compact><dt>
<b>See also: </b><dd>
<a href="group_group1.html"> The first group</a>, <a href="group_group2.html">The Second Group</a>, <a href="group_group3.html">The Third Group</a> </dl><hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a></ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
H1 { text-align: center }
A.el { text-decoration: none; font-weight: bold }
DL.el { margin-left: -1cm }
DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
DIV.in { margin-left: 16 }
DIV.ah { background-color: black; margin-bottom: 3; margin-top: 3 }
A.gl:link { color: #ffffff }
A.gl:visited { color: #ffffff }
A.gl { text-decoration: none; font-weight: bold; background-color: #ff8080 }
TD.md { background-color: #f2f2ff }
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>File Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>Grouping File List</h1>
<p>
Here is a list of all documented files with brief descriptions:
<p>
<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a> (This file in group 3)
</ul>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>group.cpp File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>group.cpp File Reference</h1>this file in group 3.
<a href="#_details">More...</a>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=4><br><h2>Compounds</h2></td></tr>
<tr><td><img src="null.gif"></td><td><img src="null.gif"></td><td nowrap align=right valign=top>class &nbsp;</td><td valign=top><a class="el" href="class_c1.html">C1</a></td></tr>
<tr><td><img src="null.gif"></td><td><img src="null.gif"></td><td nowrap align=right valign=top>class &nbsp;</td><td valign=top><a class="el" href="class_c2.html">C2</a></td></tr>
<tr><td><img src="null.gif"></td><td><img src="null.gif"></td><td nowrap align=right valign=top>class &nbsp;</td><td valign=top><a class="el" href="class_c3.html">C3</a></td></tr>
<tr><td><img src="null.gif"></td><td><img src="null.gif"></td><td nowrap align=right valign=top>class &nbsp;</td><td valign=top><a class="el" href="class_c4.html">C4</a></td></tr>
<tr><td><img src="null.gif"></td><td><img src="null.gif"></td><td nowrap align=right valign=top>class &nbsp;</td><td valign=top><a class="el" href="class_c5.html">C5</a></td></tr>
<tr><td><img src="null.gif"></td><td><img src="null.gif"></td><td nowrap align=right valign=top>class &nbsp;</td><td valign=top><a class="el" href="class_c6.html">C6</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
this file in group 3.<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>The First Group</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>The First Group</h1><tr><td colspan=4><br><h2>Compounds</h2></td></tr>
<ul>
<li><a class="el" href="class_c1.html">C1</a>
<li><a class="el" href="class_c2.html">C2</a>
<li><a class="el" href="class_c6.html">C6</a>
</ul>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This is the first group <hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>The Second Group</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>The Second Group</h1><tr><td colspan=4><br><h2>Compounds</h2></td></tr>
<ul>
<li><a class="el" href="class_c3.html">C3</a>
<li><a class="el" href="class_c4.html">C4</a>
<li><a class="el" href="class_c6.html">C6</a>
</ul>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This is the second group <hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>The Third Group</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>The Third Group</h1><tr><td colspan=4><br><h2>Files</h2></td></tr>
<ul>
<li><a class="el" href="group.cpp.html">group.cpp</a>
</ul>
<tr><td colspan=4><br><h2>Compounds</h2></td></tr>
<ul>
<li><a class="el" href="class_c5.html">C5</a>
<li><a class="el" href="class_c6.html">C6</a>
</ul>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This is the third group <hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>Main Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>Grouping Documentation</h1>
<p>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>Module Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 0.49-990728 on Fri Nov 5 20:43:30 1999 -->
<center>
<a href="index.html">Main Page</a> &nbsp; <a href="modules.html">Modules</a> &nbsp; <a href="annotated.html">Compound List</a> &nbsp; <a href="files.html">File List</a> &nbsp; </center>
<hr><h1>Grouping Modules</h1>Here is a list of all modules:
<dl compact>
<dt><a href="group_group1.html">The First Group</a><dd>
<p>
<dt><a href="group_group2.html">The Second Group</a><dd>
<p>
<dt><a href="group_group3.html">The Third Group</a><dd>
<p>
</dl>
<hr><address><small>Generated at Fri Nov 5 20:43:30 1999 for Grouping by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0
width=118 height=53></a> 0.49-990728 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
&copy; 1997-1999</small></address>
</body>
</html>
......@@ -36,6 +36,8 @@ clean:
$(MAKE) -f Makefile.doxygen clean
$(MAKE) -f Makefile.doxytag clean
$(MAKE) -f Makefile.doxysearch clean
distclean: clean
-$(RM) scanner.cpp code.cpp config.cpp pre.cpp ce_lex.cpp \
ce_parse.cpp ce_parse.h doxytag.cpp tag.cpp \
declinfo.cpp defargs.cpp
......
This diff is collapsed.
This diff is collapsed.
#ifndef YYSTYPE
#define YYSTYPE int
#endif
#define TOK_QUESTIONMARK 258
#define TOK_COLON 259
#define TOK_OR 260
#define TOK_AND 261
#define TOK_BITWISEOR 262
#define TOK_BITWISEXOR 263
#define TOK_AMPERSAND 264
#define TOK_NOTEQUAL 265
#define TOK_EQUAL 266
#define TOK_LESSTHAN 267
#define TOK_GREATERTHAN 268
#define TOK_LESSTHANOREQUALTO 269
#define TOK_GREATERTHANOREQUALTO 270
#define TOK_SHIFTLEFT 271
#define TOK_SHIFTRIGHT 272
#define TOK_PLUS 273
#define TOK_MINUS 274
#define TOK_STAR 275
#define TOK_DIVIDE 276
#define TOK_MOD 277
#define TOK_TILDE 278
#define TOK_NOT 279
#define TOK_LPAREN 280
#define TOK_RPAREN 281
#define TOK_OCTALINT 282
#define TOK_DECIMALINT 283
#define TOK_HEXADECIMALINT 284
#define TOK_CHARACTER 285
#define TOK_FLOAT 286
extern YYSTYPE cppExpYYlval;
......@@ -29,6 +29,8 @@
#include "diagram.h"
#include "language.h"
#include "htmlhelp.h"
#include "example.h"
#include "outputlist.h"
static QCString stripExtension(const char *fName)
{
......@@ -73,6 +75,7 @@ ClassDef::ClassDef(const char *nm,CompoundType ct,const char *ref,const char *fN
tempArgs=0;
prot=Public;
nspace=0;
fileDef=0;
}
// destroy the class definition
......@@ -262,19 +265,12 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (incName.isNull()) nm=incFile->name();
ol.startTypewriter();
ol.docify("#include <");
ol.disable(OutputGenerator::Man);
if (Config::verbatimHeaderFlag)
{
ol.writeObjectLink(0,fileName+"-include",0,nm);
}
else
{
ol.docify(nm);
}
ol.enable(OutputGenerator::Man);
ol.disableAllBut(OutputGenerator::Man);
ol.disable(OutputGenerator::Html);
ol.docify(nm);
ol.enableAll();
ol.disableAllBut(OutputGenerator::Html);
ol.writeObjectLink(0,fileName+"-include",0,nm);
ol.enableAll();
ol.docify(">");
ol.endTypewriter();
ol.newParagraph();
......@@ -420,7 +416,10 @@ void ClassDef::writeDocumentation(OutputList &ol)
// write detailed description
bool exampleFlag=hasExamples();
if (!briefDescription().isEmpty() || !documentation().isEmpty() || exampleFlag)
if (!briefDescription().isEmpty() ||
!documentation().isEmpty() ||
(bodyLine!=-1 && bodyDef) ||
exampleFlag)
{
ol.writeRuler();
bool latexOn = ol.isEnabled(OutputGenerator::Latex);
......@@ -495,6 +494,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
//ol.endDescItem();
ol.endDescList();
}
writeSourceRef(ol);
}
pubMembers.countDocMembers();
......@@ -841,7 +841,7 @@ void ClassDef::writeIncludeFile(OutputList &ol)
parseText(ol,n);
endTitle(ol,0,0);
parseText(ol,theTranslator->trVerbatimText(incFile->name()));
ol.writeRuler();
//ol.writeRuler();
ol.startCodeFragment();
parseCode(ol,n,fileToString(incFile->absFilePath()),FALSE,0);
ol.endCodeFragment();
......@@ -1034,3 +1034,23 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md)
friends.writePlainDeclarations(ol,this,0,0);
related.writePlainDeclarations(ol,this,0,0);
}
/*! a link to this class is possible within this project */
bool ClassDef::isLinkableInProject()
{
return !name().isEmpty() && name().find('@')==-1 &&
(prot!=Private || Config::extractPrivateFlag) &&
hasDocumentation() && !isReference();
}
/*! the class is visible in a class diagram, or class hierarchy */
bool ClassDef::isVisibleInHierarchy()
{ return // show all classes or a superclass is visible
(Config::allExtFlag || hasNonReferenceSuperClass()) &&
// and not an annonymous compound
name().find('@')==-1 &&
// and not privately inherited
(prot!=Private || Config::extractPrivateFlag) &&
// documented or show anyway or documentation is external
(hasDocumentation() || !Config::hideClassFlag || isReference());
}
......@@ -17,18 +17,13 @@
#ifndef CLASSDEF_H
#define CLASSDEF_H
//#include <qtstream.h>
#include "qtbc.h"
#include <qfileinf.h>
#include <qlist.h>
#include <qdict.h>
#include <qstrlist.h>
#include "membername.h"
#include "memberlist.h"
#include "memberdef.h"
#include "example.h"
#include "entry.h"
#include "memberlist.h"
#include "definition.h"
typedef QDict<MemberDef> MemberDict;
......@@ -40,6 +35,9 @@ class MemberInfoList;
class MemberInfoDict;
class NamespaceDef;
class MemberDef;
class ExampleList;
class MemberNameInfoList;
class MemberNameInfoDict;
class ClassDef : public Definition
{
......@@ -50,13 +48,10 @@ class ClassDef : public Definition
Union=Entry::UNION_SEC,
Interface=Entry::INTERFACE_SEC
};
ClassDef(const char *name,CompoundType ct,const char *ref=0,const char *fName=0);
~ClassDef();
//QCString classFile() const { return fileName; }
QCString getOutputFileBase() const { return fileName; }
CompoundType compoundType() const { return compType; }
//const char *memberListFileName() const { return memListFileName; }
void insertBaseClass(ClassDef *,Protection p,Specifier s,const char *t=0);
BaseClassList *baseClasses() { return inherits; }
void insertSuperClass(ClassDef *,Protection p,Specifier s,const char *t=0);
......@@ -66,8 +61,6 @@ class ClassDef : public Definition
void setIncludeName(const char *n_) { incName=n_; }
MemberNameInfoList *memberNameInfoList() { return allMemberNameInfoList; }
MemberNameInfoDict *memberNameInfoDict() { return allMemberNameInfoDict; }
//bool isReference() { return !reference.isNull(); }
//const char *getReference() const { return reference; }
void insertMember(const MemberDef *);
void insertUsedFile(const char *);
void computeAnchors();
......@@ -83,14 +76,7 @@ class ClassDef : public Definition
//void writeExample(OutputList &ol);
void setProtection(Protection p) { prot=p; }
Protection protection() const { return prot; }
/*! a link to this class is possible within this project */
bool isLinkableInProject()
{ //int i = name().findRev("::");
//if (i==-1) i=0; else i+=2;
return !name().isEmpty() && name().find('@')==-1 &&
(prot!=Private || Config::extractPrivateFlag) &&
hasDocumentation() && !isReference();
}
bool isLinkableInProject();
/*! a link to this class is possible (either within this project,
* or as a cross-reference to another project
*/
......@@ -100,16 +86,7 @@ class ClassDef : public Definition
}
bool hasNonReferenceSuperClass();
/*! the class is visible in a class diagram, or class hierarchy */
bool isVisibleInHierarchy()
{ return // show all classes or a superclass is visible
(Config::allExtFlag || hasNonReferenceSuperClass()) &&
// and not an annonymous compound
name().find('@')==-1 &&
// and not privately inherited
(prot!=Private || Config::extractPrivateFlag) &&
// documented or show anyway or documentation is external
(hasDocumentation() || !Config::hideClassFlag || isReference());
}
bool isVisibleInHierarchy();
// template argument functions
ArgumentList *templateArguments() const { return tempArgs; }
......@@ -117,16 +94,15 @@ class ClassDef : public Definition
//QCString getTemplateNameString();
void setNamespace(NamespaceDef *nd) { nspace = nd; }
NamespaceDef *getNamespace() { return nspace; }
void setFileDef(FileDef *fd) { fileDef=fd; }
FileDef *getFileDef() const { return fileDef; }
bool visited;
private:
//QCString name; // name of the class
QCString fileName; // HTML containing the class docs
//QCString doc; // general class documentation
FileDef *incFile; // header file to refer to
QCString incName; // alternative include file name
//QCString brief; // brief class discription
QCString memListFileName;
BaseClassList *inherits;
BaseClassList *inheritedBy;
......@@ -147,11 +123,11 @@ class ClassDef : public Definition
MemberNameInfoDict *allMemberNameInfoDict;
ArgumentList *tempArgs;
QStrList files;
//QCString reference;
ExampleList *exampleList;
ExampleDict *exampleDict;
CompoundType compType;
Protection prot;
FileDef *fileDef;
};
......
This diff is collapsed.
......@@ -21,8 +21,9 @@
#include <stdio.h>
class OutputList;
class FileDef;
extern void parseCode(OutputList &,const char *,const QCString &,
bool ,const char *);
bool ,const char *,FileDef *fd=0);
extern void initParseCodeContext();
#endif
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -16,12 +16,17 @@
#include "qtbc.h"
#include <ctype.h>
#include "config.h"
#include "definition.h"
#include "doxygen.h"
#include "language.h"
#include "message.h"
#include "outputlist.h"
#include "scanner.h"
Definition::Definition(const char *name,const char *b,const char *d)
{
n=name; brief=b; doc=d; sectionList=0;
n=name; brief=b; doc=d; sectionList=0, bodyLine=-1, bodyDef=0;
}
Definition::~Definition()
......@@ -87,3 +92,103 @@ void Definition::setBriefDescription(const char *b)
}
}
}
/*! Write a reference to the source code defining this definition */
void Definition::writeSourceRef(OutputList &ol)
{
//printf("Definition::writeSourceRef %d %p\n",bodyLine,bodyDef);
if (Config::sourceBrowseFlag && bodyLine!=-1 && bodyDef)
{
ol.newParagraph();
QCString refText = theTranslator->trDefinedAtLineInSourceFile();
int lineMarkerPos = refText.find("@0");
int fileMarkerPos = refText.find("@1");
if (lineMarkerPos!=-1 && fileMarkerPos!=-1) // should always pass this.
{
QString lineStr,anchorStr;
lineStr.sprintf("%d",bodyLine);
anchorStr.sprintf("l%05d",bodyLine);
if (lineMarkerPos<fileMarkerPos) // line marker before file marker
{
// write text left from linePos marker
parseText(ol,refText.left(lineMarkerPos));
ol.disableAllBut(OutputGenerator::Html);
// write line link (HTML only)
ol.writeObjectLink(0,bodyDef->sourceName(),
anchorStr,lineStr);
ol.enableAll();
ol.disable(OutputGenerator::Html);
// write normal text (Latex/Man only)
ol.docify(lineStr);
ol.enableAll();
// write text between markers
parseText(ol,refText.mid(lineMarkerPos+2,
fileMarkerPos-lineMarkerPos-2));
ol.disableAllBut(OutputGenerator::Html);
// write file link (HTML only)
ol.writeObjectLink(0,bodyDef->sourceName(),
0,bodyDef->name());
ol.enableAll();
ol.disable(OutputGenerator::Html);
// write normal text (Latex/Man only)
ol.docify(bodyDef->name());
ol.enableAll();
// write text right from file marker
parseText(ol,refText.right(
refText.length()-fileMarkerPos-2));
}
else // file marker before line marker
{
// write text left from file marker
parseText(ol,refText.left(fileMarkerPos));
ol.disableAllBut(OutputGenerator::Html);
// write file link (HTML only)
ol.writeObjectLink(0,bodyDef->sourceName(),
0,bodyDef->name());
ol.enableAll();
ol.disable(OutputGenerator::Html);
// write normal text (Latex/Man only)
ol.docify(bodyDef->name());
ol.enableAll();
// write text between markers
parseText(ol,refText.mid(fileMarkerPos+2,
lineMarkerPos-fileMarkerPos-2));
ol.disableAllBut(OutputGenerator::Html);
// write line link (HTML only)
ol.writeObjectLink(0,bodyDef->sourceName(),
anchorStr,lineStr);
ol.enableAll();
ol.disable(OutputGenerator::Html);
// write normal text (Latex/Man only)
ol.docify(lineStr);
ol.enableAll();
// write text right from linePos marker
parseText(ol,refText.right(
refText.length()-lineMarkerPos-2));
}
}
else
{
err("Error: translation error: invalid markers in trDefinedInSourceFile()\n");
}
}
}
bool Definition::hasDocumentation()
{
return !doc.isNull() || // has detailed docs
!brief.isNull() || // has brief description
(Config::sourceBrowseFlag &&
bodyLine!=-1 &&
bodyDef
) || // has a source reference
Config::extractAllFlag; // extract everything
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment