Commit fd9cdfab authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.17-20020804

parent 9c8ea2e9
DOXYGEN Version 1.2.17
DOXYGEN Version 1.2.17-20020804
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (28 July 2002)
Dimitri van Heesch (04 August 2002)
DOXYGEN Version 1.2.17
DOXYGEN Version 1.2.17_20020804
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (28 July 2002)
Dimitri van Heesch (dimitri@stack.nl) (04 August 2002)
1.2.17
1.2.17-20020804
......@@ -30,12 +30,12 @@
The next sections show how to generate links to the various documented
entities in a source file.
\subsection linkurl Links to web pages and mail addresses
\section linkurl Links to web pages and mail addresses
Doxygen will automatically replace any URLs and mail addresses found in the
documentation by links (in HTML).
\subsection linkclass Links to classes.
\section linkclass Links to classes.
All words in the documentation that correspond to a documented class
will automatically be replaced by a link to the page containing the
......@@ -43,14 +43,14 @@
that corresponds to a documented class is replaced by a link you
should put a \% in front of the word.
\subsection linkfile Links to files.
\section linkfile Links to files.
All words that contain a dot (<tt>.</tt>) that is not the last character
in the word are considered to be file names.
If the word is indeed the name of a documented input file, a link will
automatically be created to the documentation of that file.
\subsection linkfunc Links to functions.
\section linkfunc Links to functions.
Links to functions are created if one of the following patterns is
encountered:
......@@ -90,7 +90,7 @@
that matches the pattern.
</ol>
\subsection linkother Links to variables, typedefs, enum types, enum values and defines.
\section linkother Links to variables, typedefs, enum types, enum values and defines.
All of these entities can be linked to in the same way as described in the
previous section. For sake of clarity it is advised to only use
......@@ -103,7 +103,7 @@
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\subsection resolving typedefs.
\section resolving typedefs.
Typedefs that involve classes, structs and unions, like
\verbatim
......
This diff is collapsed.
This diff is collapsed.
......@@ -20,8 +20,8 @@
classes.
Doxygen can use the "dot" tool from graphviz 1.5 to generate
more advanced diagrams & graphs. Graphviz is an open-sourced,
cross-platform graph drawing toolkit from AT&T and Lucent Bell Labs and
more advanced diagrams and graphs. Graphviz is an "open-sourced",
cross-platform graph drawing toolkit from AT\&T and Lucent Bell Labs and
can be found at http://www.research.att.com/sw/tools/graphviz/
If you have the "dot" tool available in the path, you can set
......@@ -48,7 +48,7 @@
graph is drawn for each documented class and struct that shows:
<ul>
<li> the inheritance relations with base classes.
<li> the usage relations with other structs & classes (e.g.
<li> the usage relations with other structs and classes (e.g.
class \c A has a member variable \c m_a of type class \c B, then
\c A has an arrow to \c B with \c m_a as label).
</ul>
......
......@@ -16,7 +16,7 @@
*/
/*! \page docblocks Documenting the code
\subsection specialblock Special documentation blocks
\section specialblock Special documentation blocks
A special documentation block is a C or C++ comment block with some
additional markings, so doxygen knows it is a piece of documentation that
......@@ -95,7 +95,7 @@ documentation. For this purpose you can use the following:
For the brief description there are also several posibilities:
<ol>
<li>One could use the \ref cmdbrief "\brief" command with one of the
<li>One could use the \ref cmdbrief "\\brief" command with one of the
above comment blocks. This command ends at the end of a paragraph,
so the detailed description follows after an empty line.
......@@ -215,7 +215,7 @@ implementer of the members more direct access to the documentation.
As a compromise the brief description could be placed before the
declaration and the detailed description before the member definition.
\subsection memberdoc Putting documentation after members
\section memberdoc Putting documentation after members
If you want to document the members of a file, struct, union, class, or enum,
and you want to put the documentation for these members inside the compound,
......@@ -272,7 +272,7 @@ Here is an example of the use of these comment blocks:
commands mentioned in the next section
(like <code>\\class</code>) are ignored inside these comment blocks.
\subsection structuralcommands Documentation at other places
\section structuralcommands Documentation at other places
So far we have assumed that the documentation blocks are always located in
front of the declaration or definition of a file, class or namespace or in
......@@ -303,20 +303,20 @@ in the input that is read by doxygen:
*/
\endverbatim
Here the special command \c \class is used to indicate that the
Here the special command \c \\class is used to indicate that the
comment block contains documentation for the class \c Test.
Other structural commands are:
<ul>
<li>\c \struct to document a C-struct.
<li>\c \union to document a union.
<li>\c \enum to document an enumeration type.
<li>\c \fn to document a function.
<li>\c \var to document a variable or typedef or enum value.
<li>\c \def to document a \#define.
<li>\c \file to document a file.
<li>\c \namespace to document a namespace.
<li>\c \package to document a Java package.
<li>\c \interface to document an IDL interface.
<li>\c \\struct to document a C-struct.
<li>\c \\union to document a union.
<li>\c \\enum to document an enumeration type.
<li>\c \\fn to document a function.
<li>\c \\var to document a variable or typedef or enum value.
<li>\c \\def to document a \#define.
<li>\c \\file to document a file.
<li>\c \\namespace to document a namespace.
<li>\c \\package to document a Java package.
<li>\c \\interface to document an IDL interface.
</ul>
See section \ref commands for detailed information about these and many other
commands.
......
......@@ -48,9 +48,8 @@ by typing:
g++ doxysearch.cpp -o doxysearch
\endverbatim
<a name="se">
<a name="se"></a>
<h3>Generating the search engine</h3>
</a>
To include a search engine in the documentation generated by doxygen
follow these steps:
......@@ -121,7 +120,7 @@ the Qt documentation, without needing the sources!
This can be done by carefully following these steps:
<ol>
<li>Go to the html directory of the Qt-distribution:
<pre>cd $QTDIR/html</pre>
<pre>cd \$QTDIR/html</pre>
<li>Generate the search index by typing:
<pre>doxytag -s search.idx</pre>
in the directory where the HTML files are located.
......
......@@ -104,7 +104,7 @@ You can document your class like
To make doxygen put <br><br>
<code>
#include <path/include.h>
#include \<path/include.h\>
</code>
in the documentation of the class MyClassName regardless of the name of the actual
......
......@@ -22,7 +22,7 @@ for each group. These groups are called "modules" in the documentation.
The other mechanism works within a member list of some compound entity,
and is refered to as a "member group".
\subsection modules Modules
\section modules Modules
Modules are a way to group things together on a separate page. You
can document a group as a whole, as well as all individual members.
......@@ -122,7 +122,7 @@ Click <a href="$(DOXYGEN_DOCDIR)/examples/group/html/modules.html">here</a>
for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly
\subsection memgroup Member Groups
\section memgroup Member Groups
If a compound (e.g. a class or file) has many members, it is often
desired to group them together. Doxygen already automatically groups
......@@ -149,8 +149,8 @@ comments. Note that the members of the group should be
physcially inside the member group's body.
Before the opening marker of a block a separate comment block may be
placed. This block should contain the \ref cmdname "@name"
(or \ref cmdname "\name") command and is used to specify the header
placed. This block should contain the \ref cmdname "@@name"
(or \ref cmdname "\\name") command and is used to specify the header
of the group. Optionally, the comment block may also contain more
detailed information about the group.
......
......@@ -17,11 +17,11 @@
/*! \page history Doxygen History
<h3>Version 1.2.0</h3>
<h4>Major new features:</h4>
<h2>Version 1.2.0</h2>
<h3>Major new features:</h3>
<ul>
<li>Support for RTF output.
<li>Using the dot tool of the AT&T's GraphViz package, doxygen can now
<li>Using the dot tool of the AT\&T's GraphViz package, doxygen can now
generate inheritance diagrams, collaboration diagrams, include
dependency graphs, included by graphs and graphical inheritance overviews.
<li>Function arguments can now be documented with separate comment blocks.
......@@ -46,26 +46,26 @@
The colors can be changed using cascading style sheets.
</ul>
<h3>Version 1.0.0</h3>
<h2>Version 1.0.0</h2>
<h4>Major new features:</h4>
<h3>Major new features:</h3>
<ul>
<li>Support for templates and namespaces.
<li>Internationalization support. Currently supported languages are:
English, Czech, German, Spanish, Finnish, French, Italian, Japanese,
Dutch, and Swedish.
<li>Automatic generation of inheritance diagrams for sub & super classes.
<li>Automatic generation of inheritance diagrams for sub and super classes.
<li>Support for man page, compressed HTML help, and hyperlinked PDF output.
<li>Cross-referencing documentation with source code and source inlining.
<li>LaTeX formulas can be included in the documentation.
<li>Support for parsing Corba & Microsoft IDL.
<li>Support for parsing Corba and Microsoft IDL.
<li>Images can be included in the documentation.
<li>Improved parsing & preprocessing.
<li>Improved parsing and preprocessing.
</ul>
<h3>Version 0.4</h3>
<h2>Version 0.4</h2>
<h4>Major new features:</h4>
<h3>Major new features:</h3>
<ul>
<li>LaTeX output generation.
<li>Full JavaDoc support.
......@@ -82,8 +82,8 @@
<li>A lot of small examples are now included.
</ul>
<h3>Version 0.3</h3>
<h4>Major new features:</h4>
<h2>Version 0.3</h2>
<h3>Major new features:</h3>
<ul>
<li>A search engine <a href="doxysearch_usage.html">doxysearch</a>,
that allows you to search through the generated documentation.
......@@ -99,8 +99,8 @@
documentation.
</ul>
<h3>Version 0.2</h3>
<h4>Major new features:</h4>
<h2>Version 0.2</h2>
<h3>Major new features:</h3>
<ul>
<li>Blocks of code are now parsed. Function calls and variables are
replaced by links to their documentation if possible.
......@@ -120,7 +120,7 @@
instead of only the used ones.
</ul>
<h3>Version 0.1</h3>
<h2>Version 0.1</h2>
Initial version.
*/
......@@ -23,96 +23,96 @@ documentation. Note that all attributes of a HTML tag are ignored
<ul>
<li><tt>\<A HREF="..."\></tt> Starts a HTML hyper-link (HTML only).
<li><tt>\<A NAME="..."\></tt> Starts an named anchor (HTML only).
<li>\c </A> Ends a link or anchor (HTML only).
<li>\c <B> Starts a piece of text displayed in a bold font.
<li>\c </B> Ends a \c <B> section.
<li>\c <BODY> Does not generate any output.
<li>\c </BODY> Does not generate any output.
<li>\c <BR> Forces a line break.
<li>\c <CENTER> starts a section of centered text.
<li>\c </CENTER> ends a section of centered text.
<li>\c <CAPTION> Starts a caption. Use within a table only.
<li>\c </CAPTION> Ends a caption. Use within a table only.
<li>\c <CODE> Starts a piece of text displayed in a typewriter font.
<li>\c </CODE> End a \c <CODE> section.
<li>\c <DD> Starts an item description.
<li>\c <DFN> Starts a piece of text displayed in a typewriter font.
<li>\c </DFN> Ends a \c <DFN> section.
<li>\c <DL> Starts a description list.
<li>\c </DL> Ends a description list.
<li>\c <DT> Starts an item title.
<li>\c </DT> Ends an item title.
<li>\c <EM> Starts a piece of text displayed in an italic font.
<li>\c </EM> Ends a \c <EM> section.
<li>\c <FORM> Does not generate any output.
<li>\c </FORM> Does not generate any output.
<li>\c <HR> Writes a horizontal ruler.
<li>\c <H1> Starts an unnumbered section.
<li>\c </H1> Ends an unnumberd section.
<li>\c <H2> Starts an unnumbered subsection.
<li>\c </H2> Ends an unnumbered subsection.
<li>\c <H?> Where ? is one of {3,4,5,6}, starts an unnumbered subsubsection using \c <H3> in HTML.
<li>\c </H?> Where ? is one of {3,4,5,6}, ends an unnumbered subsubsection using \c <H3> in HTML.
<li>\c <I> Starts a piece of text displayed in an italic font.
<li>\c <INPUT> Does not generate any output.
<li>\c </I> Ends a \c <I> section.
<li>\c <IMG> This command is written with attributes to the HTML output only.
<li>\c <LI> Starts a new list item.
<li>\c </LI> Ends a list item.
<li>\c <META> Does not generate any output.
<li>\c <MULTICOL> ignored by doxygen.
<li>\c </MUTLICOL> ignored by doxygen.
<li>\c <OL> Starts a numbered item list.
<li>\c </OL> Ends a numbered item list.
<li>\c <P> Starts a new paragraph.
<li>\c </P> Ends a paragraph.
<li>\c <PRE> Starts a preformatted fragment.
<li>\c </PRE> Ends a preformatted fragment.
<li>\c <SMALL> Starts a section of text displayed in a smaller font.
<li>\c </SMALL> Ends a \c <SMALL> section.
<li>\c <STRONG> Starts a section of bold text.
<li>\c </STRONG> Ends a section of bold text.
<li>\c <SUB> Starts a piece of text displayed in subscript.
<li>\c </SUB> Ends a \c <SUB> section.
<li>\c <SUP> Starts a piece of text displayed in superscript.
<li>\c </SUP> Ends a \c </SUP> section.
<li>\c <TABLE> starts a table.
<li>\c </TABLE> ends a table.
<li>\c <TD> Starts a new table data element.
<li>\c </TD> Ends a table data element.
<li>\c <TR> Starts a new table row.
<li>\c </TR> Ends a table row.
<li>\c <TT> Starts a piece of text displayed in a typewriter font.
<li>\c </TT> Ends a \c <TT> section.
<li>\c <KBD> Starts a piece of text displayed in a typewriter font.
<li>\c </KBD> Ends a \c <KBD> section.
<li>\c <UL> Starts an unnumbered item list.
<li>\c </UL> Ends an unnumbered item list.
<li>\c <VAR> Starts a piece of text displayed in an italic font.
<li>\c </VAR> Ends a \c </VAR> section.
<li><tt>\</A></tt> Ends a link or anchor (HTML only).
<li><tt>\<B></tt> Starts a piece of text displayed in a bold font.
<li><tt>\</B></tt> Ends a <tt>\<B\></tt> section.
<li><tt>\<BODY></tt> Does not generate any output.
<li><tt>\</BODY></tt> Does not generate any output.
<li><tt>\<BR></tt> Forces a line break.
<li><tt>\<CENTER></tt> starts a section of centered text.
<li><tt>\</CENTER></tt> ends a section of centered text.
<li><tt>\<CAPTION></tt> Starts a caption. Use within a table only.
<li><tt>\</CAPTION></tt> Ends a caption. Use within a table only.
<li><tt>\<CODE></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</CODE></tt> End a <tt>\<CODE\></tt> section.
<li><tt>\<DD></tt> Starts an item description.
<li><tt>\<DFN></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</DFN></tt> Ends a <tt>\<DFN\></tt> section.
<li><tt>\<DL></tt> Starts a description list.
<li><tt>\</DL></tt> Ends a description list.
<li><tt>\<DT></tt> Starts an item title.
<li><tt>\</DT></tt> Ends an item title.
<li><tt>\<EM></tt> Starts a piece of text displayed in an italic font.
<li><tt>\</EM></tt> Ends a <tt>\<EM\></tt> section.
<li><tt>\<FORM></tt> Does not generate any output.
<li><tt>\</FORM></tt> Does not generate any output.
<li><tt>\<HR></tt> Writes a horizontal ruler.
<li><tt>\<H1></tt> Starts an unnumbered section.
<li><tt>\</H1></tt> Ends an unnumberd section.
<li><tt>\<H2></tt> Starts an unnumbered subsection.
<li><tt>\</H2></tt> Ends an unnumbered subsection.
<li><tt>\<H3></tt> Starts an unnumbered subsubsection.
<li><tt>\</H3></tt> Ends an unnumbered subsubsection.
<li><tt>\<I></tt> Starts a piece of text displayed in an italic font.
<li><tt>\<INPUT></tt> Does not generate any output.
<li><tt>\</I></tt> Ends a <tt>\<I\></tt> section.
<li><tt>\<IMG></tt> This command is written with attributes to the HTML output only.
<li><tt>\<LI></tt> Starts a new list item.
<li><tt>\</LI></tt> Ends a list item.
<li><tt>\<META></tt> Does not generate any output.
<li><tt>\<MULTICOL></tt> ignored by doxygen.
<li><tt>\</MUTLICOL></tt> ignored by doxygen.
<li><tt>\<OL></tt> Starts a numbered item list.
<li><tt>\</OL></tt> Ends a numbered item list.
<li><tt>\<P></tt> Starts a new paragraph.
<li><tt>\</P></tt> Ends a paragraph.
<li><tt>\<PRE></tt> Starts a preformatted fragment.
<li><tt>\</PRE></tt> Ends a preformatted fragment.
<li><tt>\<SMALL></tt> Starts a section of text displayed in a smaller font.
<li><tt>\</SMALL></tt> Ends a <tt>\<SMALL\></tt> section.
<li><tt>\<STRONG></tt> Starts a section of bold text.
<li><tt>\</STRONG></tt> Ends a section of bold text.
<li><tt>\<SUB></tt> Starts a piece of text displayed in subscript.
<li><tt>\</SUB></tt> Ends a <tt>\<SUB\></tt> section.
<li><tt>\<SUP></tt> Starts a piece of text displayed in superscript.
<li><tt>\</SUP></tt> Ends a <tt>\</SUP\></tt> section.
<li><tt>\<TABLE></tt> starts a table.
<li><tt>\</TABLE></tt> ends a table.
<li><tt>\<TD></tt> Starts a new table data element.
<li><tt>\</TD></tt> Ends a table data element.
<li><tt>\<TR></tt> Starts a new table row.
<li><tt>\</TR></tt> Ends a table row.
<li><tt>\<TT></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</TT></tt> Ends a <tt>\<TT\></tt> section.
<li><tt>\<KBD></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</KBD></tt> Ends a <tt>\<KBD\></tt> section.
<li><tt>\<UL></tt> Starts an unnumbered item list.
<li><tt>\</UL></tt> Ends an unnumbered item list.
<li><tt>\<VAR></tt> Starts a piece of text displayed in an italic font.
<li><tt>\</VAR></tt> Ends a <tt>\</VAR\></tt> section.
</ul>
The special HTML character entities that are recognized by Doxygen:
<ul>
<li>\c &copy; the copyright symbol
<li>\c &quot; a double quote
<li>\c &?uml; where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y},
<li><tt>\&copy;</tt> the copyright symbol
<li><tt>\&quot;</tt> a double quote
<li><tt>\&?uml;</tt> where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y},
writes a character with a diaeresis accent (like &auml;).
<li>\c &?acute; where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y},
<li><tt>\&?acute;</tt> where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y},
writes a character with a acute accent (like &aacute;).
<li>\c &?grave; where ? is one of {A,E,I,O,U,a,e,i,o,u,y},
<li><tt>\&?grave;</tt> where ? is one of {A,E,I,O,U,a,e,i,o,u,y},
writes a character with a grave accent (like &agrave;).
<li>\c &?circ; where ? is one of {A,E,I,O,U,a,e,i,o,u,y},
<li><tt>\&?circ;</tt> where ? is one of {A,E,I,O,U,a,e,i,o,u,y},
writes a character with a circumflex accent (like &acirc;).
<li>\c &?tilde; where ? is one of {A,N,O,a,n,o},
<li><tt>\&?tilde;</tt> where ? is one of {A,N,O,a,n,o},
writes a character with a tilde accent (like &atilde;).
<li>\c &szlig; write a sharp s (i.e. &szlig;) to the output.
<li>\c &?cedil; where ? is one of {c,C},
<li><tt>\&szlig;</tt> write a sharp s (i.e. &szlig;) to the output.
<li><tt>\&?cedil;</tt> where ? is one of {c,C},
writes a c-cedille (like &ccedil;).
<li>\c &?ring; where ? is one of {a,A},
writes an \c a with a ring (like &aring;).
<li>\c &nbsp; a non breakable space.
<li><tt>\&?ring;</tt> where ? is one of {a,A},
writes an <tt>a</tt> with a ring (like &aring;).
<li><tt>\&nbsp;</tt> a non breakable space.
</ul>
Finally, to put invisible comments inside comment blocks, HTML style
......
......@@ -155,8 +155,8 @@ of possible and/or requested enhancements.
\addindex acknowledgements
Thanks go to:
<ul>
\addindex Doc++
<li>Malte Z&ouml;ckler and Roland Wunderling, authors of DOC++.
<li>\addindex Doc++
Malte Z&ouml;ckler and Roland Wunderling, authors of DOC++.
The first version of doxygen borrowed some code of an old version of DOC++.
Although I have rewritten practically all code since then, DOC++ has still
given me a good start in writing doxygen.
......@@ -182,7 +182,7 @@ Thanks go to:
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton and
Dwight Browne for donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
an ultra cool <a href="http://www.psion.com/revoplus>Revo plus</a>
an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a>
organizer!
<li>The band <a href="http://www.porcupinetree.com">Porcupine Tree</a> for
providing hours of great music to listen to while coding.
......
......@@ -22,7 +22,7 @@ First go to the
\latexonly({\tt http://www.doxygen.org/download.html})\endlatexonly
to get the latest distribution, if you did not have it already.
This section is divided into the following subsections:
This section is divided into the following sections:
<ul>
<li>\ref install_src_unix "Compiling from source on Unix"
<li>\ref install_bin_unix "Installating the binaries on Unix"
......@@ -32,7 +32,7 @@ This section is divided into the following subsections:
<li>\ref build_tools "Tools used to develop doxygen"
</ul>
\subsection install_src_unix Compiling from source on Unix
\section install_src_unix Compiling from source on Unix
If you downloaded the source distribution, you need at least the
following to build the executable:
......@@ -43,7 +43,7 @@ following to build the executable:
\addindex bison
\addindex make
<li>In order to generate a Makefile for your platform, you need
<a href="http://www.perl.com/>perl</a>
<a href="http://www.perl.com/">perl</a>
\latexonly(see {\tt http://www.perl.com/})\endlatexonly.
\addindex perl
</ul>
......@@ -156,7 +156,7 @@ Compilation is now done by performing the following steps:
</ol>
\subsection install_bin_unix Installating the binaries on Unix
\section install_bin_unix Installating the binaries on Unix
After the compilation of the source code do a <code>make install</code>
to install doxygen. If you downloaded the binary distribution for Unix,
......@@ -187,7 +187,7 @@ Compilation is now done by performing the following steps:
If you have a RPM or DEP package, then please follow the
standard installation procedure that is required for these packages.
\subsection unix_problems Known compilation problems for Unix
\section unix_problems Known compilation problems for Unix
<b>Qt problems</b>
......@@ -205,7 +205,7 @@ The solution: go to the root of the doxygen distribution and do:
export QTDIR=$PWD
\endverbatim
If you have a csh-like shell you should use <code>setenv QTDIR $PWD</code>
If you have a csh-like shell you should use <code>setenv QTDIR \$PWD</code>
instead of the <code>export</code> command above.
Now install doxygen as described above.
......@@ -228,7 +228,7 @@ your distribution does not have it please select another paper type
in the config file (see the \ref cfg_paper_type "PAPER_TYPE" tag in the
config file).
<b>HP-UX & Digital Unix problems</b>
<b>HP-UX \& Digital Unix problems</b>
If you are compiling for HP-UX with aCC and you get this error:
\verbatim
......@@ -357,11 +357,11 @@ or omit the -O2 for the particular files in the Makefile.
<b>Dot problems</b>
Due to a change in the way image maps are generated, older versions
of doxygen (<=1.2.17) will not work correctly with newer versions of
graphviz (>=1.8.8). The effect of this incompatibility is that
of doxygen (\<=1.2.17) will not work correctly with newer versions of
graphviz (\>=1.8.8). The effect of this incompatibility is that
generated graphs in HTML are not properly clickable.
\subsection install_src_windows Compiling from source on Windows
\section install_src_windows Compiling from source on Windows
Currently, I have only compiled doxygen for Windows using Microsoft's
Visual C++ (version 6.0). For other compilers you may need to edit the
......@@ -459,8 +459,10 @@ Here is what is required:
to produce PDF output instead of DVI, or the PDF can be produced
from PostScript using the utility <code>ps2pdf</code>.
If you want to use MikTeX then you need to download the
fancyhdr package separately. You can find it at:
If you want to use MikTeX then you need to select at least the
medium size installation. For really old versions of MikTex or minimal
installations, you may need to download the fancyhdr package separately.
You can find it at:
ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/supported/fancyhdr/
<li>If you want to generate compressed HTML help
......@@ -526,15 +528,15 @@ Compilation is now done by performing the following steps:
nmake
\endverbatim
The generated HTML docs are located in the <code>..\html</code>
The generated HTML docs are located in the <code>..\\html</code>
subdirectory.
The sources for LaTeX documentation are located in the <code>..\latex</code>
The sources for LaTeX documentation are located in the <code>..\\latex</code>
subdirectory. From those sources, the DVI, PostScript, and PDF
documentation can be generated.
</ol>
\subsection install_bin_windows Installating the binaries on Windows
\section install_bin_windows Installating the binaries on Windows
There is no fancy installation procedure at the moment (if anyone can
add it in a location independent way please let me know).
......@@ -549,7 +551,7 @@ the Qt library first. This library can be downloaded from
http://www.trolltech.com/products/download/qt-win-noncomm.html
-->
\subsection build_tools Tools used to develop doxygen
\section build_tools Tools used to develop doxygen
Doxygen was developed and tested under Linux using the following
open-source tools:
......
......@@ -42,7 +42,7 @@ The following options are available:
an absolute path or a URL.
\par Note:
Each <tagfile> must be unique and should only be the name of the
Each \<tagfile\> must be unique and should only be the name of the
file, not including the path.
<dt><b>-q</b><dd>
......
......@@ -55,7 +55,7 @@ when the translator was updated.
<TD>Brazilian Portuguese</TD>
<TD>Fabio "FJTC" Jun Takada Chino</TD>
<TD>chino@NOSPAM.icmc.sc.usp.br</TD>
<TD>1.2.17</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Chinese</TD>
......@@ -73,13 +73,13 @@ when the translator was updated.
<TD>Croatian</TD>
<TD>Boris Bralo</TD>
<TD>boris.bralo@NOSPAM.zg.tel.hr</TD>
<TD>1.2.17</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Czech</TD>
<TD>Petr P&#x0159;ikryl</TD>
<TD>prikrylp@NOSPAM.skil.cz</TD>
<TD>1.2.17</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Danish</TD>
......@@ -163,7 +163,7 @@ when the translator was updated.
<TD>Portuguese</TD>
<TD>Rui Godinho Lopes</TD>
<TD>ruiglopes@NOSPAM.yahoo.com</TD>
<TD>1.2.17</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Romanian</TD>
......@@ -187,7 +187,7 @@ when the translator was updated.
<TD>Slovak</TD>
<TD>Stanislav Kudl&aacute;&#x010d;</TD>
<TD>skudlac@NOSPAM.pobox.sk</TD>
<TD>1.2.13</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Slovene</TD>
......@@ -224,16 +224,16 @@ when the translator was updated.
{\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\
\hline
\hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt chino@icmc.sc.usp.br} & 1.2.17 \\
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt chino@icmc.sc.usp.br} & up-to-date \\
\hline
Chinese & Wei Liu & {\tt liuwei@asiainfo.com} & 1.2.13 \\
& Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\
\hline
Chinese Traditional & Gary Lee & {\tt garylee@ecosine.com.tw} & 1.2.16 \\
\hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & 1.2.17 \\
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\
\hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & 1.2.17 \\
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\
\hline
Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & 1.2.7 \\
\hline
......@@ -265,7 +265,7 @@ when the translator was updated.
Polish & Piotr Kaminski & {\tt Piotr.Kaminski@ctm.gdynia.pl} & 1.2.16 \\
& Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & \\
\hline
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & 1.2.17 \\
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & up-to-date \\
\hline
Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.16 \\
\hline
......@@ -273,7 +273,7 @@ when the translator was updated.
\hline
Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.2.16 \\
\hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt skudlac@pobox.sk} & 1.2.13 \\
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt skudlac@pobox.sk} & up-to-date \\
\hline
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\
\hline
......@@ -305,26 +305,49 @@ Just follow these steps:
is already working on support for that language, you will be
assigned as the maintainer for the language.
<li>Create a copy of translator_en.h and name it
translator_<your_2_letter_country_code>.h
translator_\<your_2_letter_country_code\>.h
I'll use xx in the rest of this document.
<li>Add definition of the symbol for your language into lang_cfg.h:
\verbatim
#define LANG_xx
\endverbatim
Use capital letters for your \c xx (to be consistent). The \c lang_cfg.h
defines which language translators will be compiled into doxygen
executable. It is a kind of configuration file. If you are sure that
you do not need some of the languages, you can remove (comment out)
definitions of symbols for the languages, or you can say \c #undef
instead of \c #define for them.
<li>Edit language.cpp:
Add a
\verbatim
#ifdef LANG_xx
#include<translator_xx.h>
#endif
\endverbatim
in <code>setTranslator()</code> add
Remember to use the same symbol LANG_xx that you added to \c lang_cfg.h.
I.e., the \c xx should be capital letters that identify your language.
On the other hand, the \c xx inside your \c translator_xx.h should be
lower case.
<p>Now, in <code>setTranslator()</code> add
\verbatim
#ifdef LANG_xx
else if (L_EQUAL("your_language_name"))
{
theTranslator = new TranslatorYourLanguage;
}
#endif
\endverbatim
after the <code>if { ... }</code>
after the <code>if { ... }</code>. I.e., it must be placed after the code
for creating the English translator at the beginning, and before the
<code>else { ... }</code> part that creates the translator for the
default language (English again).
<li>Edit libdoxygen.pro.in and add \c translator_xx.h to
the \c HEADERS line.
<li>Edit <code>translator_xx.h</code>:
<ul>
<li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code> twice.
<li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code>
twice (i.e. in the \c #ifndef and \c #define preprocessor commands at
the beginning of the file).
<li>Rename TranslatorEnglish to TranslatorYourLanguage
<li>In the member <code>idLanguage()</code> change "english" into the
name of your language (use lower case characters only). Depending
......
......@@ -52,26 +52,49 @@ Just follow these steps:
is already working on support for that language, you will be
assigned as the maintainer for the language.
<li>Create a copy of translator_en.h and name it
translator_<your_2_letter_country_code>.h
translator_\<your_2_letter_country_code\>.h
I'll use xx in the rest of this document.
<li>Add definition of the symbol for your language into lang_cfg.h:
\verbatim
#define LANG_xx
\endverbatim
Use capital letters for your \c xx (to be consistent). The \c lang_cfg.h
defines which language translators will be compiled into doxygen
executable. It is a kind of configuration file. If you are sure that
you do not need some of the languages, you can remove (comment out)
definitions of symbols for the languages, or you can say \c #undef
instead of \c #define for them.
<li>Edit language.cpp:
Add a
\verbatim
#ifdef LANG_xx
#include<translator_xx.h>
#endif
\endverbatim
in <code>setTranslator()</code> add
Remember to use the same symbol LANG_xx that you added to \c lang_cfg.h.
I.e., the \c xx should be capital letters that identify your language.
On the other hand, the \c xx inside your \c translator_xx.h should be
lower case.
<p>Now, in <code>setTranslator()</code> add
\verbatim
#ifdef LANG_xx
else if (L_EQUAL("your_language_name"))
{
theTranslator = new TranslatorYourLanguage;
}
#endif
\endverbatim
after the <code>if { ... }</code>
after the <code>if { ... }</code>. I.e., it must be placed after the code
for creating the English translator at the beginning, and before the
<code>else { ... }</code> part that creates the translator for the
default language (English again).
<li>Edit libdoxygen.pro.in and add \c translator_xx.h to
the \c HEADERS line.
<li>Edit <code>translator_xx.h</code>:
<ul>
<li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code> twice.
<li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code>
twice (i.e. in the \c #ifndef and \c #define preprocessor commands at
the beginning of the file).
<li>Rename TranslatorEnglish to TranslatorYourLanguage
<li>In the member <code>idLanguage()</code> change "english" into the
name of your language (use lower case characters only). Depending
......
......@@ -106,7 +106,7 @@ For compatibility with the Troll Tech's internal documentation tool and
with KDoc, doxygen has two commands that can be used to create simple
unnested lists.
See \ref cmdarg "\arg" and \ref cmdli "\li" for more info.
See \ref cmdarg "\\arg" and \ref cmdli "\\li" for more info.
\htmlonly
Go to the <a href="grouping.html">next</a> section or return to the
......
......@@ -157,8 +157,8 @@ for class QList is to define:
PREDEFINED = QListT:=QList
\endverbatim
Here is an example provided by Valter Minute & Reyes Ponce that helps
doxygen to wade through the boilerplate code in Microsoft's ATL & MFC
Here is an example provided by Valter Minute and Reyes Ponce that helps
doxygen to wade through the boilerplate code in Microsoft's ATL \& MFC
libraries:
\verbatim
......
......@@ -32,7 +32,7 @@ engine. See section \ref doxysearch_usage for more detailed usage information.
Optionally, the executable \c doxywizard is a GUI front-end for editing
the configuration files that are used by doxygen.
\subsection step1 Step 1: Creating a configuration file
\section step1 Step 1: Creating a configuration file
Doxygen uses a configuration file to determine all of its settings.
Each project should get its own configuration file. A project can consist
......@@ -106,7 +106,7 @@ It can also include the sources directly into the documentation by setting
\ref cfg_inline_sources "INLINE_SOURCES" to \c YES (this can be handy for
code reviews for instance).
\subsection step2 Step 2: Running doxygen
\section step2 Step 2: Running doxygen
To generate the documentation you can now enter:
\verbatim
......@@ -159,7 +159,7 @@ environment variable). Note that there are some limitations to the
capabilities of the man page format, so some information
(like class diagrams, cross references and formulas) will be lost.
\subsection step3 Step 3: Documenting the sources
\section step3 Step 3: Documenting the sources
Although documenting the source is presented as step 3, in a new project
this should of course be step 1. Here I assume
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.2.17
Version: 1.2.17_20020804
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -53,6 +53,6 @@ clean: Makefile.libdoxygen Makefile.doxygen Makefile.doxytag Makefile.doxysearch
distclean: clean
-$(RM) scanner.cpp doc.cpp code.cpp config.cpp pre.cpp ce_lex.cpp \
ce_parse.cpp ce_parse.h doxytag.cpp tag.cpp \
declinfo.cpp defargs.cpp commentcnv.cpp
declinfo.cpp defargs.cpp commentcnv.cpp doctokenizer.cpp
FORCE:
......@@ -725,7 +725,7 @@ void ClassDef::writeDetailedDescription(OutputList &ol, OutputList &briefOutput,
ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph();
ol.popGeneratorState();
parseDoc(ol,m_defFileName,m_defLine,name(),0,documentation()+"\n");
parseDoc(ol,docFile(),docLine(),name(),0,documentation()+"\n");
}
// write examples
if (exampleFlag)
......@@ -773,7 +773,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
OutputList briefOutput(&ol);
if (!briefDescription().isEmpty())
{
parseDoc(briefOutput,m_defFileName,m_defLine,name(),0,briefDescription());
parseDoc(briefOutput,briefFile(),briefLine(),name(),0,briefDescription());
if (!Config_getBool("DETAILS_AT_TOP"))
{
ol+=briefOutput;
......@@ -2466,7 +2466,7 @@ void ClassDef::addListReferences()
{
addRefItem(specialListItems(),
theTranslator->trClass(TRUE,TRUE),
getOutputFileBase(),name()
getOutputFileBase(),displayName()
);
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg;
......
......@@ -117,7 +117,7 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
if (!cd->briefDescription().isEmpty())
{
ol.startMemberDescription();
parseDoc(ol,cd->getDefFileName(),cd->getDefLine(),cd->name(),0,cd->briefDescription());
parseDoc(ol,cd->briefFile(),cd->briefLine(),cd->name(),0,cd->briefDescription());
if ((!cd->briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) ||
!cd->documentation().isEmpty())
{
......
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#include "cmdmapper.h"
CommandMap cmdMap[] =
{
{ "a", CMD_EMPHASIS },
{ "addindex", CMD_ADDINDEX },
{ "anchor", CMD_ANCHOR },
{ "arg", CMD_LI },
{ "attention", CMD_ATTENTION },
{ "author", CMD_AUTHOR },
{ "b", CMD_BOLD },
{ "bug", CMD_BUG },
{ "c", CMD_CODE },
{ "code", CMD_STARTCODE },
{ "copydoc", CMD_COPYDOC },
{ "date", CMD_DATE },
{ "deprecated", CMD_DEPRECATED },
{ "dontinclude", CMD_DONTINCLUDE },
{ "dotfile", CMD_DOTFILE },
{ "e", CMD_EMPHASIS },
{ "em", CMD_EMPHASIS },
{ "endcode", CMD_ENDCODE },
{ "endhtmlonly", CMD_ENDHTMLONLY },
{ "endlatexonly", CMD_ENDLATEXONLY },
{ "endlink", CMD_ENDLINK },
{ "endsecreflist", CMD_ENDSECREFLIST },
{ "endverbatim", CMD_ENDVERBATIM },
{ "exception", CMD_EXCEPTION },
{ "form", CMD_FORMULA },
{ "htmlinclude", CMD_HTMLINCLUDE },
{ "htmlonly", CMD_HTMLONLY },
{ "image", CMD_IMAGE },
{ "include", CMD_INCLUDE },
{ "internal", CMD_INTERNAL },
{ "invariant", CMD_INVARIANT },
{ "javalink", CMD_JAVALINK },
{ "latexonly", CMD_LATEXONLY },
{ "li", CMD_LI },
{ "line", CMD_LINE },
{ "link", CMD_LINK },
{ "n", CMD_LINEBREAK },
{ "note", CMD_NOTE },
{ "p", CMD_CODE },
{ "par", CMD_PAR },
{ "param", CMD_PARAM },
{ "post", CMD_POST },
{ "pre", CMD_PRE },
{ "ref", CMD_REF },
{ "refitem", CMD_SECREFITEM },
{ "remark", CMD_REMARK },
{ "remarks", CMD_REMARK },
{ "result", CMD_RETURN },
{ "return", CMD_RETURN },
{ "returns", CMD_RETURN },
{ "retval", CMD_RETVAL },
{ "sa", CMD_SA },
{ "secreflist", CMD_SECREFLIST },
{ "section", CMD_SECTION },
{ "see", CMD_SA },
{ "since", CMD_SINCE },
{ "skip", CMD_SKIP },
{ "skipline", CMD_SKIPLINE },
{ "test", CMD_TEST },
{ "throw", CMD_EXCEPTION },
{ "todo", CMD_TODO },
{ "until", CMD_UNTIL },
{ "verbatim", CMD_VERBATIM },
{ "verbinclude", CMD_VERBINCLUDE },
{ "version", CMD_VERSION },
{ "warning", CMD_WARNING },
{ "authors", CMD_AUTHOR },
{ "throws", CMD_EXCEPTION },
{ "\\", CMD_BSLASH },
{ "@", CMD_AT },
{ "<", CMD_LESS },
{ ">", CMD_GREATER },
{ "&", CMD_AMP },
{ "$", CMD_DOLLAR },
{ "#", CMD_HASH },
{ "%", CMD_PERCENT },
{ "~", CMD_LANGSWITCH },
{ 0, 0 }
};
//----------------------------------------------------------------------------
int CmdMapper::map(const char *name)
{
return instance()->find(name);
}
void CmdMapper::freeInstance()
{
delete m_instance; m_instance=0;
}
CmdMapper *CmdMapper::instance()
{
if (m_instance==0) m_instance = new CmdMapper;
return m_instance;
}
CmdMapper::CmdMapper() : m_map(89)
{
m_map.setAutoDelete(TRUE);
CommandMap *p = cmdMap;
while (p->cmdName)
{
m_map.insert(p->cmdName,new int(p->cmdId));
p++;
}
}
int CmdMapper::find(const char *name)
{
int *result = m_map.find(name);
if (result) return *result; else return CMD_UNKNOWN;
}
CmdMapper *CmdMapper::m_instance=0;
//----------------------------------------------------------------------------
CommandMap htmlTagMap[] =
{
{ "strong", HTML_BOLD },
{ "center", HTML_CENTER },
{ "table", HTML_TABLE },
{ "caption", HTML_CAPTION },
{ "small", HTML_SMALL },
{ "code", HTML_CODE },
{ "dfn", HTML_CODE },
{ "var", HTML_EMPHASIS },
{ "img", HTML_IMG },
{ "pre", HTML_PRE },
{ "sub", HTML_SUB },
{ "sup", HTML_SUP },
{ "tr", HTML_TR },
{ "td", HTML_TD },
{ "th", HTML_TH },
{ "ol", HTML_OL },
{ "ul", HTML_UL },
{ "li", HTML_LI },
{ "tt", HTML_CODE },
{ "kbd", HTML_CODE },
{ "em", HTML_EMPHASIS },
{ "hr", HTML_HR },
{ "dl", HTML_DL },
{ "dt", HTML_DT },
{ "dd", HTML_DD },
{ "br", HTML_BR },
{ "i", HTML_EMPHASIS },
{ "a", HTML_A },
{ "b", HTML_BOLD },
{ "p", HTML_P },
{ "h1", HTML_H1 },
{ "h2", HTML_H2 },
{ "h3", HTML_H3 },
};
//----------------------------------------------------------------------------
int HtmlTagMapper::map(const char *name)
{
return instance()->find(name);
}
void HtmlTagMapper::freeInstance()
{
delete m_instance; m_instance=0;
}
HtmlTagMapper *HtmlTagMapper::instance()
{
if (m_instance==0) m_instance = new HtmlTagMapper;
return m_instance;
}
HtmlTagMapper::HtmlTagMapper() : m_map(89)
{
m_map.setAutoDelete(TRUE);
CommandMap *p = htmlTagMap;
while (p->cmdName)
{
m_map.insert(p->cmdName,new int(p->cmdId));
p++;
}
}
int HtmlTagMapper::find(const char *name)
{
int *result = m_map.find(name);
if (result) return *result; else return HTML_UNKNOWN;
}
HtmlTagMapper *HtmlTagMapper::m_instance=0;
//----------------------------------------------------------------------------
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef _CMDMAPPER_H
#define _CMDMAPPER_H
#include <qdict.h>
struct CommandMap
{
const char *cmdName;
int cmdId;
};
const int SIMPLESECT_BIT = 0x1000;
enum CommandType
{
CMD_UNKNOWN=0,
CMD_ADDINDEX=1, /* DocIndex, word as arg */
CMD_ANCHOR=2,
CMD_ATTENTION=3 | SIMPLESECT_BIT,
CMD_AUTHOR=4 | SIMPLESECT_BIT,
CMD_BOLD=5,
CMD_BUG=6 | SIMPLESECT_BIT,
CMD_CODE=7,
CMD_COPYDOC=8, /* reference yields subtree */
CMD_DATE=9 | SIMPLESECT_BIT,
CMD_DEPRECATED=10 | SIMPLESECT_BIT,
CMD_DONTINCLUDE=11, /* file name */
CMD_DOTFILE=12, /* file name */
CMD_EMPHASIS =13,
CMD_ENDCODE=14,
CMD_ENDHTMLONLY=15,
CMD_ENDLATEXONLY=16,
CMD_ENDLINK=17,
CMD_ENDVERBATIM=18 ,
CMD_EXCEPTION=19 | SIMPLESECT_BIT,
CMD_HTMLINCLUDE=20 ,
CMD_HTMLONLY=21 ,
CMD_IMAGE=22 , /* some number of arguments */
CMD_INCLUDE=23 ,
CMD_INTERNAL=24 , /* node, with sub paragraphs? */
CMD_INVARIANT=25| SIMPLESECT_BIT ,
CMD_LATEXONLY=26 ,
CMD_LI=27 ,
CMD_LINE=28 ,
CMD_LINK=29 , /* argument + "text", TODO {@link...} */
CMD_NOTE=30 | SIMPLESECT_BIT ,
CMD_PAR=31 | SIMPLESECT_BIT ,
CMD_PARAM=32 | SIMPLESECT_BIT,
CMD_POST=33 | SIMPLESECT_BIT,
CMD_PRE=34 | SIMPLESECT_BIT ,
CMD_REF=35 ,
CMD_SECREFITEM=36 ,
CMD_REMARK=37 | SIMPLESECT_BIT ,
CMD_RETURN=38 | SIMPLESECT_BIT ,
CMD_RETVAL=39 | SIMPLESECT_BIT,
CMD_SA=40 | SIMPLESECT_BIT ,
CMD_SECTION=41 ,
CMD_SINCE=42 | SIMPLESECT_BIT,
CMD_SKIP=43 ,
CMD_SKIPLINE=44 ,
CMD_STARTCODE=45,
CMD_JAVALINK=46,
CMD_TEST=47 | SIMPLESECT_BIT,
CMD_TODO=48 | SIMPLESECT_BIT,
CMD_UNTIL=49 ,
CMD_VERBATIM=50 ,
CMD_VERBINCLUDE=51 ,
CMD_VERSION=52 | SIMPLESECT_BIT,
CMD_WARNING=53 | SIMPLESECT_BIT ,
CMD_BSLASH=54 ,
CMD_AT=55 ,
CMD_LESS=56 ,
CMD_GREATER=57 ,
CMD_AMP=58 ,
CMD_DOLLAR=59 ,
CMD_HASH=60 ,
CMD_PERCENT=61,
CMD_LINEBREAK=62,
CMD_FORMULA=63,
CMD_SECREFLIST=64,
CMD_ENDSECREFLIST=65,
CMD_LANGSWITCH=66
};
enum HtmlTagType
{
HTML_UNKNOWN = 0,
HTML_CENTER = 1,
HTML_TABLE = 2,
HTML_CAPTION = 3,
HTML_SMALL = 4,
HTML_CODE = 5,
HTML_IMG = 6,
HTML_PRE = 7,
HTML_SUB = 8,
HTML_SUP = 9,
HTML_TR = 10,
HTML_TD = 11,
HTML_TH = 12,
HTML_OL = 13,
HTML_UL = 14,
HTML_LI = 15,
HTML_EMPHASIS = 16,
HTML_HR = 17,
HTML_DL = 18,
HTML_DT = 19,
HTML_DD = 20,
HTML_BR = 21,
HTML_A = 22,
HTML_BOLD = 23,
HTML_P = 24,
HTML_H1 = 25,
HTML_H2 = 26,
HTML_H3 = 27
};
class CmdMapper
{
public:
static int map(const char *name);
static void freeInstance();
private:
static CmdMapper *instance();
CmdMapper();
int find(const char *name);
QDict<int> m_map;
static CmdMapper *m_instance;
};
class HtmlTagMapper
{
public:
static int map(const char *name);
static void freeInstance();
private:
static HtmlTagMapper *instance();
HtmlTagMapper();
int find(const char *name);
QDict<int> m_map;
static HtmlTagMapper *m_instance;
};
#endif
......@@ -38,18 +38,23 @@ void Debug::print(DebugMask mask,int prio,const char *fmt,...)
static int labelToEnumValue(const char *l)
{
QCString label=l;
if (label=="FindMembers")
label=label.lower();
if (label=="findmembers")
return Debug::FindMembers;
else if (label=="Functions")
else if (label=="functions")
return Debug::Functions;
else if (label=="Variables")
else if (label=="variables")
return Debug::Variables;
else if (label=="Preprocessor")
else if (label=="preprocessor")
return Debug::Preprocessor;
else if (label=="Classes")
else if (label=="classes")
return Debug::Classes;
else if (label=="CommentCnv")
else if (label=="commentcnv")
return Debug::CommentCnv;
else if (label=="validate")
return Debug::Validate;
else if (label=="printtree")
return Debug::PrintTree;
else
return 0;
}
......
......@@ -28,7 +28,9 @@ class Debug
Variables = 0x00000004,
Preprocessor = 0x00000008,
Classes = 0x00000010,
CommentCnv = 0x00000020
CommentCnv = 0x00000020,
Validate = 0x00000040,
PrintTree = 0x00000080
};
static void print(DebugMask mask,int prio,const char *fmt,...);
static void setFlag(const char *label);
......
......@@ -54,6 +54,8 @@ Definition::Definition(const char *df,int dl,
m_outerScope=Doxygen::globalScope;
m_partOfGroups=0;
m_specialListItems=0;
m_briefLine=1;
m_docFile=1;
}
Definition::~Definition()
......@@ -109,6 +111,8 @@ void Definition::writeDocAnchorsToTagFile()
void Definition::setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace)
{
if (d==0) return;
//printf("Definition::setDocumentation(%s,%s,%d)\n",d,docFile,docLine);
if (stripWhiteSpace)
m_doc=((QCString)d).stripWhiteSpace();
else
......@@ -119,6 +123,8 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine,
void Definition::setBriefDescription(const char *b,const char *briefFile,int briefLine)
{
if (b==0) return;
//printf("Definition::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine);
m_brief=QCString(b).stripWhiteSpace();
int bl=m_brief.length();
if (bl>0) // add puntuation if needed
......
......@@ -30,6 +30,10 @@
#include <qstack.h>
#include <qregexp.h>
// new experimental parser
#include "docparser.h"
#include "debug.h"
#include "doc.h"
#include "code.h"
#include "message.h"
......@@ -103,6 +107,8 @@ static QCString curDotFileCaption;
static QCString internalRefFile;
static QCString internalRefAnchor;
static QCString caption;
static QCString refItemText;
static QCString addIndexWord;
static QStack<char> currentListIndent; // indent stack of all list items
static bool insideItemList = FALSE;
......@@ -1438,6 +1444,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
);
}
<DocScan>{CMD}"addindex"{B}+ {
addIndexWord.resize(0);
BEGIN(DocIndexWord);
}
<DocScan>"\\form#"[0-9]+ {
......@@ -1449,9 +1456,17 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
outDoc->writeFormula(formName,formula->getFormulaText());
}
}
<DocIndexWord>[^\n]+ {
<DocIndexWord>"\\&" { addIndexWord+='&'; }
<DocIndexWord>"\\>" { addIndexWord+='>'; }
<DocIndexWord>"\\<" { addIndexWord+='<'; }
<DocIndexWord>"\\@" { addIndexWord+='@'; }
<DocIndexWord>"\\$" { addIndexWord+='$'; }
<DocIndexWord>"\\#" { addIndexWord+='#'; }
<DocIndexWord>"\\\\" { addIndexWord+='\\'; }
<DocIndexWord>. { addIndexWord+=*yytext; }
<DocIndexWord>\n {
//printf("Adding %s to index\n",yytext);
outDoc->addIndexItem(yytext,0);
outDoc->addIndexItem(addIndexWord,0);
BEGIN(DocScan);
}
<DocScan>{CMD}("arg"|"li")/{BN} {
......@@ -1768,7 +1783,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
if (inBlock()) endBlock();
inReturnBlock=TRUE;
currentListIndent.push("P");
outDoc->startSimpleSect(BaseOutputDocInterface::Return,0,0,theTranslator->trReturns()+" :");
outDoc->startSimpleSect(BaseOutputDocInterface::Return,0,0,theTranslator->trReturns()+":");
outDoc->writeDescItem();
}
}
......@@ -1881,7 +1896,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
outDoc->startDescTableData();
BEGIN(DocScan);
}
<DocScan>{CMD}"section "{ID}"\n" {
<DocScan>{CMD}"section "{ID}" " {
QCString secName=&yytext[9]; // skip "\section "
secName=secName.left(secName.length()-1); // remove \n
//printf("SectionName %s found\n",secName.data());
......@@ -1889,18 +1904,16 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
if ((sec=Doxygen::sectionDict[secName]))
{
//printf("Title %s\n",sec->title.data());
outDoc->startSection(sec->label,sec->title,
sec->type==SectionInfo::Subsection);
outDoc->startSection(sec->label,sec->title,sec->type);
scanString(sec->title);
outDoc->endSection(sec->label,
sec->type==SectionInfo::Subsection);
outDoc->endSection(sec->label,sec->type);
}
else
{
warn(yyFileName,yyLineNr,"Warning: reference to unknown section %s in the documentation of this entity!",yytext);
}
}
<DocScan>{CMD}"anchor "{ID}"\n" {
<DocScan>{CMD}"anchor "{ID}" " {
QCString secName=&yytext[8];
secName=secName.left(secName.length()-1);
SectionInfo *sec;
......@@ -1934,6 +1947,12 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
<DocScan>{CMD}"ref"/{BN} {
BEGIN(DocRefName);
}
<DocScan>{CMD}"secreflist"/{BN} {
outDoc->startSectionRefList();
}
<DocScan>{CMD}"endsecreflist"/{BN} {
outDoc->endSectionRefList();
}
<DocScan>{CMD}"refitem"/{BN} {
BEGIN(DocRefItem);
}
......@@ -2036,14 +2055,22 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
}
<DocRefItem>{ID} {
sectionRef=yytext;
refItemText.resize(0);
BEGIN(DocRefItemName);
}
<DocRefItemName>.*/"\n" {
<DocRefItemName>"\\&" { refItemText+='&'; }
<DocRefItemName>"\\>" { refItemText+='>'; }
<DocRefItemName>"\\<" { refItemText+='<'; }
<DocRefItemName>"\\@" { refItemText+='@'; }
<DocRefItemName>"\\$" { refItemText+='$'; }
<DocRefItemName>"\\#" { refItemText+='#'; }
<DocRefItemName>"\\\\" { refItemText+='\\'; }
<DocRefItemName>. { refItemText+=*yytext; }
<DocRefItemName>\n {
SectionInfo *sec;
QCString text=yytext;
if ((sec=Doxygen::sectionDict[sectionRef]))
{
outDoc->writeSectionRefItem(sec->fileName,sec->label,text.stripWhiteSpace());
outDoc->writeSectionRefItem(sec->fileName,sec->label,refItemText.stripWhiteSpace());
}
else
{
......@@ -2917,6 +2944,12 @@ void resolveCopyDocCommands(const char *scope,QCString &docString)
void parseDoc(OutputDocInterface &od,const char *fileName,int startLine,
const char *clName,MemberDef *md,const QCString &docStr)
{
if (Debug::isFlagSet(Debug::Validate))
{
validatingParseDoc(fileName,startLine,docStr);
}
strcpy(yyFileName,fileName);
yyLineNr = startLine;
......
This diff is collapsed.
This diff is collapsed.
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef _DOCTOKENIZER_H
#define _DOCTOKENIZER_H
#include <qcstring.h>
#include <qlist.h>
enum Tokens
{
TK_WORD = 1,
TK_WHITESPACE = 2,
TK_LISTITEM = 3,
TK_ENDLIST = 4,
TK_COMMAND = 5,
TK_HTMLTAG = 6,
TK_SYMBOL = 7,
TK_NEWPARA = 8,
TK_RCSTAG = 9,
TK_URL = 10,
RetVal_OK = 0x10000,
RetVal_SimpleSec = 0x10001,
RetVal_ListItem = 0x10002,
RetVal_Section = 0x10003,
RetVal_EndList = 0x10004,
RetVal_EndPre = 0x10005,
RetVal_DescData = 0x10006,
RetVal_DescTitle = 0x10007,
RetVal_EndDesc = 0x10008,
RetVal_TableRow = 0x10009,
RetVal_TableCell = 0x1000A,
RetVal_TableHCell = 0x1000B,
RetVal_EndTable = 0x1000C,
RetVal_Internal = 0x1000D,
RetVal_SwitchLang = 0x1000E
};
struct Option
{
QCString name;
QCString value;
};
struct TokenInfo
{
TokenInfo() { options.setAutoDelete(TRUE); }
// unknown token
char unknownChar;
// command token
QCString name;
// command text (RCS tag)
QCString text;
// comment blocks
// list token info
bool isEnumList;
int indent;
// sections
QCString sectionId;
// simple section
QCString simpleSectName;
// verbatim fragment
QCString verb;
// xrefitem
int id;
// html tag
QList<Option> options;
bool endTag;
// whitespace
QCString chars;
};
// globals
extern TokenInfo *g_token;
extern int doctokenizerYYlineno;
extern FILE *doctokenizerYYin;
// helper functions
const char *tokToString(int token);
// operations on the scanner
void doctokenizerYYinit(const char *input);
void doctokenizerYYcleanup();
void doctokenizerYYpushContext();
bool doctokenizerYYpopContext();
int doctokenizerYYlex();
void doctokenizerYYsetStatePara();
void doctokenizerYYsetStateTitle();
void doctokenizerYYsetStateCode();
void doctokenizerYYsetStateHtmlOnly();
void doctokenizerYYsetStateLatexOnly();
void doctokenizerYYsetStateVerbatim();
void doctokenizerYYsetStateParam();
void doctokenizerYYsetStateXRefItem();
void doctokenizerYYsetStateFile();
void doctokenizerYYsetStatePattern();
void doctokenizerYYsetStateLink();
void doctokenizerYYsetStateRef();
#endif
This diff is collapsed.
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef _DOCVISITOR_H
#define _DOCVISITOR_H
class DocWord;
class DocWhiteSpace;
class DocAutoList;
class DocAutoListItem;
class DocPara;
class DocRoot;
class DocSymbol;
class DocURL;
class DocStyleChange;
class DocSimpleSect;
class DocTitle;
class DocSimpleList;
class DocSimpleListItem;
class DocSection;
class DocVerbatim;
class DocXRefItem;
class DocHtmlList;
class DocHtmlListItem;
class DocHtmlPre;
class DocHtmlDescList;
class DocHtmlDescTitle;
class DocHtmlDescData;
class DocHtmlTable;
class DocHtmlRow;
class DocHtmlCell;
class DocHtmlCaption;
class DocLineBreak;
class DocHorRuler;
class DocAnchor;
class DocIndexEntry;
class DocInternal;
class DocHRef;
class DocCopy;
class DocInclude;
class DocIncOperator;
class DocHtmlHeader;
class DocImage;
class DocDotFile;
class DocLink;
class DocRef;
class DocFormula;
class DocSecRefItem;
class DocSecRefList;
class DocLanguage;
/*! @brief Abstract visitor that participates in the visitor pattern.
*/
class DocVisitor
{
public:
/*! @name Visitor functions for leaf nodes */
virtual void visit(DocWord *) = 0;
virtual void visit(DocWhiteSpace *) = 0;
virtual void visit(DocSymbol *) = 0;
virtual void visit(DocURL *) = 0;
virtual void visit(DocStyleChange *) = 0;
virtual void visit(DocVerbatim *) = 0;
virtual void visit(DocXRefItem *) = 0;
virtual void visit(DocLineBreak *) = 0;
virtual void visit(DocHorRuler *) = 0;
virtual void visit(DocAnchor *) = 0;
virtual void visit(DocCopy *) = 0;
virtual void visit(DocInclude *) = 0;
virtual void visit(DocIncOperator *) = 0;
virtual void visit(DocFormula *) = 0;
/*! @name Visitor functions for internal nodes */
virtual void visitPre(DocAutoList *) = 0;
virtual void visitPost(DocAutoList *) = 0;
virtual void visitPre(DocAutoListItem *) = 0;
virtual void visitPost(DocAutoListItem *) = 0;
virtual void visitPre(DocPara *) = 0;
virtual void visitPost(DocPara *) = 0;
virtual void visitPre(DocRoot *) = 0;
virtual void visitPost(DocRoot *) = 0;
virtual void visitPre(DocSimpleSect *) = 0;
virtual void visitPost(DocSimpleSect *) = 0;
virtual void visitPre(DocTitle *) = 0;
virtual void visitPost(DocTitle *) = 0;
virtual void visitPre(DocSimpleList *) = 0;
virtual void visitPost(DocSimpleList *) = 0;
virtual void visitPre(DocSimpleListItem *) = 0;
virtual void visitPost(DocSimpleListItem *) = 0;
virtual void visitPre(DocSection *) = 0;
virtual void visitPost(DocSection *) = 0;
virtual void visitPre(DocHtmlList *) = 0;
virtual void visitPost(DocHtmlListItem *) = 0;
virtual void visitPre(DocHtmlListItem *) = 0;
virtual void visitPost(DocHtmlList *) = 0;
virtual void visitPre(DocHtmlPre *) = 0;
virtual void visitPost(DocHtmlPre *) = 0;
virtual void visitPre(DocHtmlDescList *) = 0;
virtual void visitPost(DocHtmlDescList *) = 0;
virtual void visitPre(DocHtmlDescTitle *) = 0;
virtual void visitPost(DocHtmlDescTitle *) = 0;
virtual void visitPre(DocHtmlDescData *) = 0;
virtual void visitPost(DocHtmlDescData *) = 0;
virtual void visitPre(DocHtmlTable *) = 0;
virtual void visitPost(DocHtmlRow *) = 0;
virtual void visitPre(DocHtmlCell *) = 0;
virtual void visitPost(DocHtmlCell *) = 0;
virtual void visitPre(DocHtmlRow *) = 0;
virtual void visitPost(DocHtmlTable *) = 0;
virtual void visitPre(DocHtmlCaption *) = 0;
virtual void visitPost(DocHtmlCaption *) = 0;
virtual void visitPre(DocIndexEntry *) = 0;
virtual void visitPost(DocIndexEntry *) = 0;
virtual void visitPre(DocInternal *) = 0;
virtual void visitPost(DocInternal *) = 0;
virtual void visitPre(DocHRef *) = 0;
virtual void visitPost(DocHRef *) = 0;
virtual void visitPre(DocHtmlHeader *) = 0;
virtual void visitPost(DocHtmlHeader *) = 0;
virtual void visitPre(DocImage *) = 0;
virtual void visitPost(DocImage *) = 0;
virtual void visitPre(DocDotFile *) = 0;
virtual void visitPost(DocDotFile *) = 0;
virtual void visitPre(DocLink *) = 0;
virtual void visitPost(DocLink *) = 0;
virtual void visitPre(DocRef *) = 0;
virtual void visitPost(DocRef *) = 0;
virtual void visitPre(DocSecRefItem *) = 0;
virtual void visitPost(DocSecRefItem *) = 0;
virtual void visitPre(DocSecRefList *) = 0;
virtual void visitPost(DocSecRefList *) = 0;
virtual void visitPre(DocLanguage *) = 0;
virtual void visitPost(DocLanguage *) = 0;
};
#endif
......@@ -5988,9 +5988,9 @@ static void generatePageDocs()
if (!pi->title.isEmpty() && !pi->name.isEmpty() &&
(si=Doxygen::sectionDict.find(pi->name))!=0)
{
outputList->startSection(si->label,si->title,si->type==SectionInfo::Subsection);
outputList->startSection(si->label,si->title,si->type);
outputList->docify(si->title);
outputList->endSection(si->label,si->type==SectionInfo::Subsection);
outputList->endSection(si->label,si->type);
}
outputList->startTextBlock();
parseDoc(*outputList,pi->defFileName,pi->defLine,0,0,pi->doc);
......
......@@ -118,7 +118,7 @@ void FileDef::writeDetailedDocumentation(OutputList &ol)
ol.endGroupHeader();
if (!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF"))
{
parseDoc(ol,filepath,1,0,0,briefDescription());
parseDoc(ol,briefFile(),briefLine(),0,0,briefDescription());
}
if (!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF") &&
!documentation().isEmpty())
......@@ -129,7 +129,7 @@ void FileDef::writeDetailedDocumentation(OutputList &ol)
{
//if (doc.at(dl-1)!='.' && doc.at(dl-1)!='!' && doc.at(dl-1)!='?')
// doc+='.';
parseDoc(ol,filepath,1,0,0,documentation()+"\n");
parseDoc(ol,docFile(),docLine(),0,0,documentation()+"\n");
}
//printf("Writing source ref for file %s\n",name().data());
if (Config_getBool("SOURCE_BROWSER"))
......@@ -189,7 +189,7 @@ void FileDef::writeDocumentation(OutputList &ol)
}
else if (briefDescription())
{
parseDoc(ol,filepath,1,0,0,briefDescription());
parseDoc(ol,briefFile(),briefLine(),0,0,briefDescription());
ol.writeString(" \n");
ol.disableAllBut(OutputGenerator::Html);
ol.startTextLink(0,"_details");
......
This diff is collapsed.
This diff is collapsed.
......@@ -197,8 +197,8 @@ class HtmlGenerator : public OutputGenerator
void endParamList();
void endDescTitle() { t << "</b>"; }
void writeDescItem() { t << "<dd>" << endl; }
void startSection(const char *,const char *,bool);
void endSection(const char *,bool);
void startSection(const char *,const char *,SectionInfo::SectionType);
void endSection(const char *,SectionInfo::SectionType);
void writeSectionRef(const char *,const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *);
//void writeSectionRefAnchor(const char *,const char *,const char *);
......@@ -264,6 +264,9 @@ class HtmlGenerator : public OutputGenerator
void startLatexOnly() {}
void endLatexOnly() {}
void startSectionRefList();
void endSectionRefList();
private:
QCString lastTitle;
QCString lastFile;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -62,6 +62,9 @@ sub GenerateDep {
#$ GenerateDep("doc.cpp","doc.l");
$(LEX) -PdocYY -t doc.l >doc.cpp
#$ GenerateDep("doctokenizer.cpp","doctokenizer.l");
$(LEX) -PdoctokenizerYY -t doctokenizer.l >doctokenizer.cpp
#$ GenerateDep("commentcnv.cpp","commentcnv.l");
$(LEX) -PcommentcnvYY -t commentcnv.l >commentcnv.cpp
......
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