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. 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. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, 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 @@ ...@@ -30,12 +30,12 @@
The next sections show how to generate links to the various documented The next sections show how to generate links to the various documented
entities in a source file. 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 Doxygen will automatically replace any URLs and mail addresses found in the
documentation by links (in HTML). 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 All words in the documentation that correspond to a documented class
will automatically be replaced by a link to the page containing the will automatically be replaced by a link to the page containing the
...@@ -43,14 +43,14 @@ ...@@ -43,14 +43,14 @@
that corresponds to a documented class is replaced by a link you that corresponds to a documented class is replaced by a link you
should put a \% in front of the word. 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 All words that contain a dot (<tt>.</tt>) that is not the last character
in the word are considered to be file names. in the word are considered to be file names.
If the word is indeed the name of a documented input file, a link will If the word is indeed the name of a documented input file, a link will
automatically be created to the documentation of that file. 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 Links to functions are created if one of the following patterns is
encountered: encountered:
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
that matches the pattern. that matches the pattern.
</ol> </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 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 previous section. For sake of clarity it is advised to only use
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
for the corresponding HTML documentation that is generated by Doxygen. for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly \endhtmlonly
\subsection resolving typedefs. \section resolving typedefs.
Typedefs that involve classes, structs and unions, like Typedefs that involve classes, structs and unions, like
\verbatim \verbatim
......
This diff is collapsed.
This diff is collapsed.
...@@ -20,8 +20,8 @@ ...@@ -20,8 +20,8 @@
classes. classes.
Doxygen can use the "dot" tool from graphviz 1.5 to generate Doxygen can use the "dot" tool from graphviz 1.5 to generate
more advanced diagrams & graphs. Graphviz is an open-sourced, more advanced diagrams and graphs. Graphviz is an "open-sourced",
cross-platform graph drawing toolkit from AT&T and Lucent Bell Labs and 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/ 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 If you have the "dot" tool available in the path, you can set
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
graph is drawn for each documented class and struct that shows: graph is drawn for each documented class and struct that shows:
<ul> <ul>
<li> the inheritance relations with base classes. <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 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). \c A has an arrow to \c B with \c m_a as label).
</ul> </ul>
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
*/ */
/*! \page docblocks Documenting the code /*! \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 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 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: ...@@ -95,7 +95,7 @@ documentation. For this purpose you can use the following:
For the brief description there are also several posibilities: For the brief description there are also several posibilities:
<ol> <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, above comment blocks. This command ends at the end of a paragraph,
so the detailed description follows after an empty line. so the detailed description follows after an empty line.
...@@ -215,7 +215,7 @@ implementer of the members more direct access to the documentation. ...@@ -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 As a compromise the brief description could be placed before the
declaration and the detailed description before the member definition. 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, 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, 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: ...@@ -272,7 +272,7 @@ Here is an example of the use of these comment blocks:
commands mentioned in the next section commands mentioned in the next section
(like <code>\\class</code>) are ignored inside these comment blocks. (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 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 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: ...@@ -303,20 +303,20 @@ in the input that is read by doxygen:
*/ */
\endverbatim \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. comment block contains documentation for the class \c Test.
Other structural commands are: Other structural commands are:
<ul> <ul>
<li>\c \struct to document a C-struct. <li>\c \\struct to document a C-struct.
<li>\c \union to document a union. <li>\c \\union to document a union.
<li>\c \enum to document an enumeration type. <li>\c \\enum to document an enumeration type.
<li>\c \fn to document a function. <li>\c \\fn to document a function.
<li>\c \var to document a variable or typedef or enum value. <li>\c \\var to document a variable or typedef or enum value.
<li>\c \def to document a \#define. <li>\c \\def to document a \#define.
<li>\c \file to document a file. <li>\c \\file to document a file.
<li>\c \namespace to document a namespace. <li>\c \\namespace to document a namespace.
<li>\c \package to document a Java package. <li>\c \\package to document a Java package.
<li>\c \interface to document an IDL interface. <li>\c \\interface to document an IDL interface.
</ul> </ul>
See section \ref commands for detailed information about these and many other See section \ref commands for detailed information about these and many other
commands. commands.
......
...@@ -48,9 +48,8 @@ by typing: ...@@ -48,9 +48,8 @@ by typing:
g++ doxysearch.cpp -o doxysearch g++ doxysearch.cpp -o doxysearch
\endverbatim \endverbatim
<a name="se"> <a name="se"></a>
<h3>Generating the search engine</h3> <h3>Generating the search engine</h3>
</a>
To include a search engine in the documentation generated by doxygen To include a search engine in the documentation generated by doxygen
follow these steps: follow these steps:
...@@ -121,7 +120,7 @@ the Qt documentation, without needing the sources! ...@@ -121,7 +120,7 @@ the Qt documentation, without needing the sources!
This can be done by carefully following these steps: This can be done by carefully following these steps:
<ol> <ol>
<li>Go to the html directory of the Qt-distribution: <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: <li>Generate the search index by typing:
<pre>doxytag -s search.idx</pre> <pre>doxytag -s search.idx</pre>
in the directory where the HTML files are located. in the directory where the HTML files are located.
......
...@@ -104,7 +104,7 @@ You can document your class like ...@@ -104,7 +104,7 @@ You can document your class like
To make doxygen put <br><br> To make doxygen put <br><br>
<code> <code>
#include <path/include.h> #include \<path/include.h\>
</code> </code>
in the documentation of the class MyClassName regardless of the name of the actual 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. ...@@ -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, The other mechanism works within a member list of some compound entity,
and is refered to as a "member group". 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 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. 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> ...@@ -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. for the corresponding HTML documentation that is generated by Doxygen.
\endhtmlonly \endhtmlonly
\subsection memgroup Member Groups \section memgroup Member Groups
If a compound (e.g. a class or file) has many members, it is often If a compound (e.g. a class or file) has many members, it is often
desired to group them together. Doxygen already automatically groups desired to group them together. Doxygen already automatically groups
...@@ -149,8 +149,8 @@ comments. Note that the members of the group should be ...@@ -149,8 +149,8 @@ comments. Note that the members of the group should be
physcially inside the member group's body. physcially inside the member group's body.
Before the opening marker of a block a separate comment block may be Before the opening marker of a block a separate comment block may be
placed. This block should contain the \ref cmdname "@name" placed. This block should contain the \ref cmdname "@@name"
(or \ref cmdname "\name") command and is used to specify the header (or \ref cmdname "\\name") command and is used to specify the header
of the group. Optionally, the comment block may also contain more of the group. Optionally, the comment block may also contain more
detailed information about the group. detailed information about the group.
......
...@@ -17,11 +17,11 @@ ...@@ -17,11 +17,11 @@
/*! \page history Doxygen History /*! \page history Doxygen History
<h3>Version 1.2.0</h3> <h2>Version 1.2.0</h2>
<h4>Major new features:</h4> <h3>Major new features:</h3>
<ul> <ul>
<li>Support for RTF output. <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 generate inheritance diagrams, collaboration diagrams, include
dependency graphs, included by graphs and graphical inheritance overviews. dependency graphs, included by graphs and graphical inheritance overviews.
<li>Function arguments can now be documented with separate comment blocks. <li>Function arguments can now be documented with separate comment blocks.
...@@ -46,26 +46,26 @@ ...@@ -46,26 +46,26 @@
The colors can be changed using cascading style sheets. The colors can be changed using cascading style sheets.
</ul> </ul>
<h3>Version 1.0.0</h3> <h2>Version 1.0.0</h2>
<h4>Major new features:</h4> <h3>Major new features:</h3>
<ul> <ul>
<li>Support for templates and namespaces. <li>Support for templates and namespaces.
<li>Internationalization support. Currently supported languages are: <li>Internationalization support. Currently supported languages are:
English, Czech, German, Spanish, Finnish, French, Italian, Japanese, English, Czech, German, Spanish, Finnish, French, Italian, Japanese,
Dutch, and Swedish. 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>Support for man page, compressed HTML help, and hyperlinked PDF output.
<li>Cross-referencing documentation with source code and source inlining. <li>Cross-referencing documentation with source code and source inlining.
<li>LaTeX formulas can be included in the documentation. <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>Images can be included in the documentation.
<li>Improved parsing & preprocessing. <li>Improved parsing and preprocessing.
</ul> </ul>
<h3>Version 0.4</h3> <h2>Version 0.4</h2>
<h4>Major new features:</h4> <h3>Major new features:</h3>
<ul> <ul>
<li>LaTeX output generation. <li>LaTeX output generation.
<li>Full JavaDoc support. <li>Full JavaDoc support.
...@@ -82,8 +82,8 @@ ...@@ -82,8 +82,8 @@
<li>A lot of small examples are now included. <li>A lot of small examples are now included.
</ul> </ul>
<h3>Version 0.3</h3> <h2>Version 0.3</h2>
<h4>Major new features:</h4> <h3>Major new features:</h3>
<ul> <ul>
<li>A search engine <a href="doxysearch_usage.html">doxysearch</a>, <li>A search engine <a href="doxysearch_usage.html">doxysearch</a>,
that allows you to search through the generated documentation. that allows you to search through the generated documentation.
...@@ -99,8 +99,8 @@ ...@@ -99,8 +99,8 @@
documentation. documentation.
</ul> </ul>
<h3>Version 0.2</h3> <h2>Version 0.2</h2>
<h4>Major new features:</h4> <h3>Major new features:</h3>
<ul> <ul>
<li>Blocks of code are now parsed. Function calls and variables are <li>Blocks of code are now parsed. Function calls and variables are
replaced by links to their documentation if possible. replaced by links to their documentation if possible.
...@@ -120,7 +120,7 @@ ...@@ -120,7 +120,7 @@
instead of only the used ones. instead of only the used ones.
</ul> </ul>
<h3>Version 0.1</h3> <h2>Version 0.1</h2>
Initial version. Initial version.
*/ */
...@@ -23,96 +23,96 @@ documentation. Note that all attributes of a HTML tag are ignored ...@@ -23,96 +23,96 @@ documentation. Note that all attributes of a HTML tag are ignored
<ul> <ul>
<li><tt>\<A HREF="..."\></tt> Starts a HTML hyper-link (HTML only). <li><tt>\<A HREF="..."\></tt> Starts a HTML hyper-link (HTML only).
<li><tt>\<A NAME="..."\></tt> Starts an named anchor (HTML only). <li><tt>\<A NAME="..."\></tt> Starts an named anchor (HTML only).
<li>\c </A> Ends a link or anchor (HTML only). <li><tt>\</A></tt> Ends a link or anchor (HTML only).
<li>\c <B> Starts a piece of text displayed in a bold font. <li><tt>\<B></tt> Starts a piece of text displayed in a bold font.
<li>\c </B> Ends a \c <B> section. <li><tt>\</B></tt> Ends a <tt>\<B\></tt> section.
<li>\c <BODY> Does not generate any output. <li><tt>\<BODY></tt> Does not generate any output.
<li>\c </BODY> Does not generate any output. <li><tt>\</BODY></tt> Does not generate any output.
<li>\c <BR> Forces a line break. <li><tt>\<BR></tt> Forces a line break.
<li>\c <CENTER> starts a section of centered text. <li><tt>\<CENTER></tt> starts a section of centered text.
<li>\c </CENTER> ends a section of centered text. <li><tt>\</CENTER></tt> ends a section of centered text.
<li>\c <CAPTION> Starts a caption. Use within a table only. <li><tt>\<CAPTION></tt> Starts a caption. Use within a table only.
<li>\c </CAPTION> Ends a caption. Use within a table only. <li><tt>\</CAPTION></tt> Ends a caption. Use within a table only.
<li>\c <CODE> Starts a piece of text displayed in a typewriter font. <li><tt>\<CODE></tt> Starts a piece of text displayed in a typewriter font.
<li>\c </CODE> End a \c <CODE> section. <li><tt>\</CODE></tt> End a <tt>\<CODE\></tt> section.
<li>\c <DD> Starts an item description. <li><tt>\<DD></tt> Starts an item description.
<li>\c <DFN> Starts a piece of text displayed in a typewriter font. <li><tt>\<DFN></tt> Starts a piece of text displayed in a typewriter font.
<li>\c </DFN> Ends a \c <DFN> section. <li><tt>\</DFN></tt> Ends a <tt>\<DFN\></tt> section.
<li>\c <DL> Starts a description list. <li><tt>\<DL></tt> Starts a description list.
<li>\c </DL> Ends a description list. <li><tt>\</DL></tt> Ends a description list.
<li>\c <DT> Starts an item title. <li><tt>\<DT></tt> Starts an item title.
<li>\c </DT> Ends an item title. <li><tt>\</DT></tt> Ends an item title.
<li>\c <EM> Starts a piece of text displayed in an italic font. <li><tt>\<EM></tt> Starts a piece of text displayed in an italic font.
<li>\c </EM> Ends a \c <EM> section. <li><tt>\</EM></tt> Ends a <tt>\<EM\></tt> section.
<li>\c <FORM> Does not generate any output. <li><tt>\<FORM></tt> Does not generate any output.
<li>\c </FORM> Does not generate any output. <li><tt>\</FORM></tt> Does not generate any output.
<li>\c <HR> Writes a horizontal ruler. <li><tt>\<HR></tt> Writes a horizontal ruler.
<li>\c <H1> Starts an unnumbered section. <li><tt>\<H1></tt> Starts an unnumbered section.
<li>\c </H1> Ends an unnumberd section. <li><tt>\</H1></tt> Ends an unnumberd section.
<li>\c <H2> Starts an unnumbered subsection. <li><tt>\<H2></tt> Starts an unnumbered subsection.
<li>\c </H2> Ends an unnumbered subsection. <li><tt>\</H2></tt> 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><tt>\<H3></tt> Starts an unnumbered subsubsection.
<li>\c </H?> Where ? is one of {3,4,5,6}, ends an unnumbered subsubsection using \c <H3> in HTML. <li><tt>\</H3></tt> Ends an unnumbered subsubsection.
<li>\c <I> Starts a piece of text displayed in an italic font. <li><tt>\<I></tt> Starts a piece of text displayed in an italic font.
<li>\c <INPUT> Does not generate any output. <li><tt>\<INPUT></tt> Does not generate any output.
<li>\c </I> Ends a \c <I> section. <li><tt>\</I></tt> Ends a <tt>\<I\></tt> section.
<li>\c <IMG> This command is written with attributes to the HTML output only. <li><tt>\<IMG></tt> This command is written with attributes to the HTML output only.
<li>\c <LI> Starts a new list item. <li><tt>\<LI></tt> Starts a new list item.
<li>\c </LI> Ends a list item. <li><tt>\</LI></tt> Ends a list item.
<li>\c <META> Does not generate any output. <li><tt>\<META></tt> Does not generate any output.
<li>\c <MULTICOL> ignored by doxygen. <li><tt>\<MULTICOL></tt> ignored by doxygen.
<li>\c </MUTLICOL> ignored by doxygen. <li><tt>\</MUTLICOL></tt> ignored by doxygen.
<li>\c <OL> Starts a numbered item list. <li><tt>\<OL></tt> Starts a numbered item list.
<li>\c </OL> Ends a numbered item list. <li><tt>\</OL></tt> Ends a numbered item list.
<li>\c <P> Starts a new paragraph. <li><tt>\<P></tt> Starts a new paragraph.
<li>\c </P> Ends a paragraph. <li><tt>\</P></tt> Ends a paragraph.
<li>\c <PRE> Starts a preformatted fragment. <li><tt>\<PRE></tt> Starts a preformatted fragment.
<li>\c </PRE> Ends a preformatted fragment. <li><tt>\</PRE></tt> Ends a preformatted fragment.
<li>\c <SMALL> Starts a section of text displayed in a smaller font. <li><tt>\<SMALL></tt> Starts a section of text displayed in a smaller font.
<li>\c </SMALL> Ends a \c <SMALL> section. <li><tt>\</SMALL></tt> Ends a <tt>\<SMALL\></tt> section.
<li>\c <STRONG> Starts a section of bold text. <li><tt>\<STRONG></tt> Starts a section of bold text.
<li>\c </STRONG> Ends a section of bold text. <li><tt>\</STRONG></tt> Ends a section of bold text.
<li>\c <SUB> Starts a piece of text displayed in subscript. <li><tt>\<SUB></tt> Starts a piece of text displayed in subscript.
<li>\c </SUB> Ends a \c <SUB> section. <li><tt>\</SUB></tt> Ends a <tt>\<SUB\></tt> section.
<li>\c <SUP> Starts a piece of text displayed in superscript. <li><tt>\<SUP></tt> Starts a piece of text displayed in superscript.
<li>\c </SUP> Ends a \c </SUP> section. <li><tt>\</SUP></tt> Ends a <tt>\</SUP\></tt> section.
<li>\c <TABLE> starts a table. <li><tt>\<TABLE></tt> starts a table.
<li>\c </TABLE> ends a table. <li><tt>\</TABLE></tt> ends a table.
<li>\c <TD> Starts a new table data element. <li><tt>\<TD></tt> Starts a new table data element.
<li>\c </TD> Ends a table data element. <li><tt>\</TD></tt> Ends a table data element.
<li>\c <TR> Starts a new table row. <li><tt>\<TR></tt> Starts a new table row.
<li>\c </TR> Ends a table row. <li><tt>\</TR></tt> Ends a table row.
<li>\c <TT> Starts a piece of text displayed in a typewriter font. <li><tt>\<TT></tt> Starts a piece of text displayed in a typewriter font.
<li>\c </TT> Ends a \c <TT> section. <li><tt>\</TT></tt> Ends a <tt>\<TT\></tt> section.
<li>\c <KBD> Starts a piece of text displayed in a typewriter font. <li><tt>\<KBD></tt> Starts a piece of text displayed in a typewriter font.
<li>\c </KBD> Ends a \c <KBD> section. <li><tt>\</KBD></tt> Ends a <tt>\<KBD\></tt> section.
<li>\c <UL> Starts an unnumbered item list. <li><tt>\<UL></tt> Starts an unnumbered item list.
<li>\c </UL> Ends an unnumbered item list. <li><tt>\</UL></tt> Ends an unnumbered item list.
<li>\c <VAR> Starts a piece of text displayed in an italic font. <li><tt>\<VAR></tt> Starts a piece of text displayed in an italic font.
<li>\c </VAR> Ends a \c </VAR> section. <li><tt>\</VAR></tt> Ends a <tt>\</VAR\></tt> section.
</ul> </ul>
The special HTML character entities that are recognized by Doxygen: The special HTML character entities that are recognized by Doxygen:
<ul> <ul>
<li>\c &copy; the copyright symbol <li><tt>\&copy;</tt> the copyright symbol
<li>\c &quot; a double quote <li><tt>\&quot;</tt> a double quote
<li>\c &?uml; where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y}, <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;). 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;). 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;). 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;). 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;). writes a character with a tilde accent (like &atilde;).
<li>\c &szlig; write a sharp s (i.e. &szlig;) to the output. <li><tt>\&szlig;</tt> write a sharp s (i.e. &szlig;) to the output.
<li>\c &?cedil; where ? is one of {c,C}, <li><tt>\&?cedil;</tt> where ? is one of {c,C},
writes a c-cedille (like &ccedil;). writes a c-cedille (like &ccedil;).
<li>\c &?ring; where ? is one of {a,A}, <li><tt>\&?ring;</tt> where ? is one of {a,A},
writes an \c a with a ring (like &aring;). writes an <tt>a</tt> with a ring (like &aring;).
<li>\c &nbsp; a non breakable space. <li><tt>\&nbsp;</tt> a non breakable space.
</ul> </ul>
Finally, to put invisible comments inside comment blocks, HTML style Finally, to put invisible comments inside comment blocks, HTML style
......
...@@ -155,8 +155,8 @@ of possible and/or requested enhancements. ...@@ -155,8 +155,8 @@ of possible and/or requested enhancements.
\addindex acknowledgements \addindex acknowledgements
Thanks go to: Thanks go to:
<ul> <ul>
\addindex Doc++ <li>\addindex Doc++
<li>Malte Z&ouml;ckler and Roland Wunderling, authors of 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++. 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 Although I have rewritten practically all code since then, DOC++ has still
given me a good start in writing doxygen. given me a good start in writing doxygen.
...@@ -182,7 +182,7 @@ Thanks go to: ...@@ -182,7 +182,7 @@ Thanks go to:
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton and Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton and
Dwight Browne for donating money. Dwight Browne for donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating <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! organizer!
<li>The band <a href="http://www.porcupinetree.com">Porcupine Tree</a> for <li>The band <a href="http://www.porcupinetree.com">Porcupine Tree</a> for
providing hours of great music to listen to while coding. providing hours of great music to listen to while coding.
......
...@@ -22,7 +22,7 @@ First go to the ...@@ -22,7 +22,7 @@ First go to the
\latexonly({\tt http://www.doxygen.org/download.html})\endlatexonly \latexonly({\tt http://www.doxygen.org/download.html})\endlatexonly
to get the latest distribution, if you did not have it already. 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> <ul>
<li>\ref install_src_unix "Compiling from source on Unix" <li>\ref install_src_unix "Compiling from source on Unix"
<li>\ref install_bin_unix "Installating the binaries on Unix" <li>\ref install_bin_unix "Installating the binaries on Unix"
...@@ -32,7 +32,7 @@ This section is divided into the following subsections: ...@@ -32,7 +32,7 @@ This section is divided into the following subsections:
<li>\ref build_tools "Tools used to develop doxygen" <li>\ref build_tools "Tools used to develop doxygen"
</ul> </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 If you downloaded the source distribution, you need at least the
following to build the executable: following to build the executable:
...@@ -43,7 +43,7 @@ following to build the executable: ...@@ -43,7 +43,7 @@ following to build the executable:
\addindex bison \addindex bison
\addindex make \addindex make
<li>In order to generate a Makefile for your platform, you need <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. \latexonly(see {\tt http://www.perl.com/})\endlatexonly.
\addindex perl \addindex perl
</ul> </ul>
...@@ -156,7 +156,7 @@ Compilation is now done by performing the following steps: ...@@ -156,7 +156,7 @@ Compilation is now done by performing the following steps:
</ol> </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> After the compilation of the source code do a <code>make install</code>
to install doxygen. If you downloaded the binary distribution for Unix, to install doxygen. If you downloaded the binary distribution for Unix,
...@@ -187,7 +187,7 @@ Compilation is now done by performing the following steps: ...@@ -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 If you have a RPM or DEP package, then please follow the
standard installation procedure that is required for these packages. 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> <b>Qt problems</b>
...@@ -205,7 +205,7 @@ The solution: go to the root of the doxygen distribution and do: ...@@ -205,7 +205,7 @@ The solution: go to the root of the doxygen distribution and do:
export QTDIR=$PWD export QTDIR=$PWD
\endverbatim \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. instead of the <code>export</code> command above.
Now install doxygen as described above. Now install doxygen as described above.
...@@ -228,7 +228,7 @@ your distribution does not have it please select another paper type ...@@ -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 in the config file (see the \ref cfg_paper_type "PAPER_TYPE" tag in the
config file). 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: If you are compiling for HP-UX with aCC and you get this error:
\verbatim \verbatim
...@@ -357,11 +357,11 @@ or omit the -O2 for the particular files in the Makefile. ...@@ -357,11 +357,11 @@ or omit the -O2 for the particular files in the Makefile.
<b>Dot problems</b> <b>Dot problems</b>
Due to a change in the way image maps are generated, older versions 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 of doxygen (\<=1.2.17) will not work correctly with newer versions of
graphviz (>=1.8.8). The effect of this incompatibility is that graphviz (\>=1.8.8). The effect of this incompatibility is that
generated graphs in HTML are not properly clickable. 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 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 Visual C++ (version 6.0). For other compilers you may need to edit the
...@@ -459,8 +459,10 @@ Here is what is required: ...@@ -459,8 +459,10 @@ Here is what is required:
to produce PDF output instead of DVI, or the PDF can be produced to produce PDF output instead of DVI, or the PDF can be produced
from PostScript using the utility <code>ps2pdf</code>. from PostScript using the utility <code>ps2pdf</code>.
If you want to use MikTeX then you need to download the If you want to use MikTeX then you need to select at least the
fancyhdr package separately. You can find it at: 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/ ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/supported/fancyhdr/
<li>If you want to generate compressed HTML help <li>If you want to generate compressed HTML help
...@@ -526,15 +528,15 @@ Compilation is now done by performing the following steps: ...@@ -526,15 +528,15 @@ Compilation is now done by performing the following steps:
nmake nmake
\endverbatim \endverbatim
The generated HTML docs are located in the <code>..\html</code> The generated HTML docs are located in the <code>..\\html</code>
subdirectory. 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 subdirectory. From those sources, the DVI, PostScript, and PDF
documentation can be generated. documentation can be generated.
</ol> </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 There is no fancy installation procedure at the moment (if anyone can
add it in a location independent way please let me know). 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 ...@@ -549,7 +551,7 @@ the Qt library first. This library can be downloaded from
http://www.trolltech.com/products/download/qt-win-noncomm.html 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 Doxygen was developed and tested under Linux using the following
open-source tools: open-source tools:
......
...@@ -42,7 +42,7 @@ The following options are available: ...@@ -42,7 +42,7 @@ The following options are available:
an absolute path or a URL. an absolute path or a URL.
\par Note: \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. file, not including the path.
<dt><b>-q</b><dd> <dt><b>-q</b><dd>
......
...@@ -55,7 +55,7 @@ when the translator was updated. ...@@ -55,7 +55,7 @@ when the translator was updated.
<TD>Brazilian Portuguese</TD> <TD>Brazilian Portuguese</TD>
<TD>Fabio "FJTC" Jun Takada Chino</TD> <TD>Fabio "FJTC" Jun Takada Chino</TD>
<TD>chino@NOSPAM.icmc.sc.usp.br</TD> <TD>chino@NOSPAM.icmc.sc.usp.br</TD>
<TD>1.2.17</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Chinese</TD> <TD>Chinese</TD>
...@@ -73,13 +73,13 @@ when the translator was updated. ...@@ -73,13 +73,13 @@ when the translator was updated.
<TD>Croatian</TD> <TD>Croatian</TD>
<TD>Boris Bralo</TD> <TD>Boris Bralo</TD>
<TD>boris.bralo@NOSPAM.zg.tel.hr</TD> <TD>boris.bralo@NOSPAM.zg.tel.hr</TD>
<TD>1.2.17</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Czech</TD> <TD>Czech</TD>
<TD>Petr P&#x0159;ikryl</TD> <TD>Petr P&#x0159;ikryl</TD>
<TD>prikrylp@NOSPAM.skil.cz</TD> <TD>prikrylp@NOSPAM.skil.cz</TD>
<TD>1.2.17</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Danish</TD> <TD>Danish</TD>
...@@ -163,7 +163,7 @@ when the translator was updated. ...@@ -163,7 +163,7 @@ when the translator was updated.
<TD>Portuguese</TD> <TD>Portuguese</TD>
<TD>Rui Godinho Lopes</TD> <TD>Rui Godinho Lopes</TD>
<TD>ruiglopes@NOSPAM.yahoo.com</TD> <TD>ruiglopes@NOSPAM.yahoo.com</TD>
<TD>1.2.17</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Romanian</TD> <TD>Romanian</TD>
...@@ -187,7 +187,7 @@ when the translator was updated. ...@@ -187,7 +187,7 @@ when the translator was updated.
<TD>Slovak</TD> <TD>Slovak</TD>
<TD>Stanislav Kudl&aacute;&#x010d;</TD> <TD>Stanislav Kudl&aacute;&#x010d;</TD>
<TD>skudlac@NOSPAM.pobox.sk</TD> <TD>skudlac@NOSPAM.pobox.sk</TD>
<TD>1.2.13</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Slovene</TD> <TD>Slovene</TD>
...@@ -224,16 +224,16 @@ when the translator was updated. ...@@ -224,16 +224,16 @@ when the translator was updated.
{\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\ {\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\
\hline \hline
\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 \hline
Chinese & Wei Liu & {\tt liuwei@asiainfo.com} & 1.2.13 \\ Chinese & Wei Liu & {\tt liuwei@asiainfo.com} & 1.2.13 \\
& Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\ & Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\
\hline \hline
Chinese Traditional & Gary Lee & {\tt garylee@ecosine.com.tw} & 1.2.16 \\ Chinese Traditional & Gary Lee & {\tt garylee@ecosine.com.tw} & 1.2.16 \\
\hline \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 \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 \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & 1.2.7 \\ Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & 1.2.7 \\
\hline \hline
...@@ -265,7 +265,7 @@ when the translator was updated. ...@@ -265,7 +265,7 @@ when the translator was updated.
Polish & Piotr Kaminski & {\tt Piotr.Kaminski@ctm.gdynia.pl} & 1.2.16 \\ Polish & Piotr Kaminski & {\tt Piotr.Kaminski@ctm.gdynia.pl} & 1.2.16 \\
& Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & \\ & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & \\
\hline \hline
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & 1.2.17 \\ Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & up-to-date \\
\hline \hline
Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.16 \\ Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.16 \\
\hline \hline
...@@ -273,7 +273,7 @@ when the translator was updated. ...@@ -273,7 +273,7 @@ when the translator was updated.
\hline \hline
Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.2.16 \\ Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.2.16 \\
\hline \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 \hline
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\ Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\
\hline \hline
...@@ -305,26 +305,49 @@ Just follow these steps: ...@@ -305,26 +305,49 @@ Just follow these steps:
is already working on support for that language, you will be is already working on support for that language, you will be
assigned as the maintainer for the language. assigned as the maintainer for the language.
<li>Create a copy of translator_en.h and name it <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. 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: <li>Edit language.cpp:
Add a Add a
\verbatim \verbatim
#ifdef LANG_xx
#include<translator_xx.h> #include<translator_xx.h>
#endif
\endverbatim \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 \verbatim
#ifdef LANG_xx
else if (L_EQUAL("your_language_name")) else if (L_EQUAL("your_language_name"))
{ {
theTranslator = new TranslatorYourLanguage; theTranslator = new TranslatorYourLanguage;
} }
#endif
\endverbatim \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 <li>Edit libdoxygen.pro.in and add \c translator_xx.h to
the \c HEADERS line. the \c HEADERS line.
<li>Edit <code>translator_xx.h</code>: <li>Edit <code>translator_xx.h</code>:
<ul> <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>Rename TranslatorEnglish to TranslatorYourLanguage
<li>In the member <code>idLanguage()</code> change "english" into the <li>In the member <code>idLanguage()</code> change "english" into the
name of your language (use lower case characters only). Depending name of your language (use lower case characters only). Depending
......
...@@ -52,26 +52,49 @@ Just follow these steps: ...@@ -52,26 +52,49 @@ Just follow these steps:
is already working on support for that language, you will be is already working on support for that language, you will be
assigned as the maintainer for the language. assigned as the maintainer for the language.
<li>Create a copy of translator_en.h and name it <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. 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: <li>Edit language.cpp:
Add a Add a
\verbatim \verbatim
#ifdef LANG_xx
#include<translator_xx.h> #include<translator_xx.h>
#endif
\endverbatim \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 \verbatim
#ifdef LANG_xx
else if (L_EQUAL("your_language_name")) else if (L_EQUAL("your_language_name"))
{ {
theTranslator = new TranslatorYourLanguage; theTranslator = new TranslatorYourLanguage;
} }
#endif
\endverbatim \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 <li>Edit libdoxygen.pro.in and add \c translator_xx.h to
the \c HEADERS line. the \c HEADERS line.
<li>Edit <code>translator_xx.h</code>: <li>Edit <code>translator_xx.h</code>:
<ul> <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>Rename TranslatorEnglish to TranslatorYourLanguage
<li>In the member <code>idLanguage()</code> change "english" into the <li>In the member <code>idLanguage()</code> change "english" into the
name of your language (use lower case characters only). Depending 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 ...@@ -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 with KDoc, doxygen has two commands that can be used to create simple
unnested lists. 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 \htmlonly
Go to the <a href="grouping.html">next</a> section or return to the Go to the <a href="grouping.html">next</a> section or return to the
......
...@@ -157,8 +157,8 @@ for class QList is to define: ...@@ -157,8 +157,8 @@ for class QList is to define:
PREDEFINED = QListT:=QList PREDEFINED = QListT:=QList
\endverbatim \endverbatim
Here is an example provided by Valter Minute & Reyes Ponce that helps 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 doxygen to wade through the boilerplate code in Microsoft's ATL \& MFC
libraries: libraries:
\verbatim \verbatim
......
...@@ -32,7 +32,7 @@ engine. See section \ref doxysearch_usage for more detailed usage information. ...@@ -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 Optionally, the executable \c doxywizard is a GUI front-end for editing
the configuration files that are used by doxygen. 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. Doxygen uses a configuration file to determine all of its settings.
Each project should get its own configuration file. A project can consist 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 ...@@ -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 \ref cfg_inline_sources "INLINE_SOURCES" to \c YES (this can be handy for
code reviews for instance). code reviews for instance).
\subsection step2 Step 2: Running doxygen \section step2 Step 2: Running doxygen
To generate the documentation you can now enter: To generate the documentation you can now enter:
\verbatim \verbatim
...@@ -159,7 +159,7 @@ environment variable). Note that there are some limitations to the ...@@ -159,7 +159,7 @@ environment variable). Note that there are some limitations to the
capabilities of the man page format, so some information capabilities of the man page format, so some information
(like class diagrams, cross references and formulas) will be lost. (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 Although documenting the source is presented as step 3, in a new project
this should of course be step 1. Here I assume this should of course be step 1. Here I assume
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.2.17 Version: 1.2.17_20020804
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz 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 ...@@ -53,6 +53,6 @@ clean: Makefile.libdoxygen Makefile.doxygen Makefile.doxytag Makefile.doxysearch
distclean: clean distclean: clean
-$(RM) scanner.cpp doc.cpp code.cpp config.cpp pre.cpp ce_lex.cpp \ -$(RM) scanner.cpp doc.cpp code.cpp config.cpp pre.cpp ce_lex.cpp \
ce_parse.cpp ce_parse.h doxytag.cpp tag.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: FORCE:
...@@ -725,7 +725,7 @@ void ClassDef::writeDetailedDescription(OutputList &ol, OutputList &briefOutput, ...@@ -725,7 +725,7 @@ void ClassDef::writeDetailedDescription(OutputList &ol, OutputList &briefOutput,
ol.disableAllBut(OutputGenerator::RTF); ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph(); ol.newParagraph();
ol.popGeneratorState(); ol.popGeneratorState();
parseDoc(ol,m_defFileName,m_defLine,name(),0,documentation()+"\n"); parseDoc(ol,docFile(),docLine(),name(),0,documentation()+"\n");
} }
// write examples // write examples
if (exampleFlag) if (exampleFlag)
...@@ -773,7 +773,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -773,7 +773,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
OutputList briefOutput(&ol); OutputList briefOutput(&ol);
if (!briefDescription().isEmpty()) 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")) if (!Config_getBool("DETAILS_AT_TOP"))
{ {
ol+=briefOutput; ol+=briefOutput;
...@@ -2466,7 +2466,7 @@ void ClassDef::addListReferences() ...@@ -2466,7 +2466,7 @@ void ClassDef::addListReferences()
{ {
addRefItem(specialListItems(), addRefItem(specialListItems(),
theTranslator->trClass(TRUE,TRUE), theTranslator->trClass(TRUE,TRUE),
getOutputFileBase(),name() getOutputFileBase(),displayName()
); );
MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
......
...@@ -117,7 +117,7 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f ...@@ -117,7 +117,7 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
if (!cd->briefDescription().isEmpty()) if (!cd->briefDescription().isEmpty())
{ {
ol.startMemberDescription(); 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")) || if ((!cd->briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) ||
!cd->documentation().isEmpty()) !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,...) ...@@ -38,18 +38,23 @@ void Debug::print(DebugMask mask,int prio,const char *fmt,...)
static int labelToEnumValue(const char *l) static int labelToEnumValue(const char *l)
{ {
QCString label=l; QCString label=l;
if (label=="FindMembers") label=label.lower();
if (label=="findmembers")
return Debug::FindMembers; return Debug::FindMembers;
else if (label=="Functions") else if (label=="functions")
return Debug::Functions; return Debug::Functions;
else if (label=="Variables") else if (label=="variables")
return Debug::Variables; return Debug::Variables;
else if (label=="Preprocessor") else if (label=="preprocessor")
return Debug::Preprocessor; return Debug::Preprocessor;
else if (label=="Classes") else if (label=="classes")
return Debug::Classes; return Debug::Classes;
else if (label=="CommentCnv") else if (label=="commentcnv")
return Debug::CommentCnv; return Debug::CommentCnv;
else if (label=="validate")
return Debug::Validate;
else if (label=="printtree")
return Debug::PrintTree;
else else
return 0; return 0;
} }
......
...@@ -28,7 +28,9 @@ class Debug ...@@ -28,7 +28,9 @@ class Debug
Variables = 0x00000004, Variables = 0x00000004,
Preprocessor = 0x00000008, Preprocessor = 0x00000008,
Classes = 0x00000010, Classes = 0x00000010,
CommentCnv = 0x00000020 CommentCnv = 0x00000020,
Validate = 0x00000040,
PrintTree = 0x00000080
}; };
static void print(DebugMask mask,int prio,const char *fmt,...); static void print(DebugMask mask,int prio,const char *fmt,...);
static void setFlag(const char *label); static void setFlag(const char *label);
......
...@@ -54,6 +54,8 @@ Definition::Definition(const char *df,int dl, ...@@ -54,6 +54,8 @@ Definition::Definition(const char *df,int dl,
m_outerScope=Doxygen::globalScope; m_outerScope=Doxygen::globalScope;
m_partOfGroups=0; m_partOfGroups=0;
m_specialListItems=0; m_specialListItems=0;
m_briefLine=1;
m_docFile=1;
} }
Definition::~Definition() Definition::~Definition()
...@@ -109,6 +111,8 @@ void Definition::writeDocAnchorsToTagFile() ...@@ -109,6 +111,8 @@ void Definition::writeDocAnchorsToTagFile()
void Definition::setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace) 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) if (stripWhiteSpace)
m_doc=((QCString)d).stripWhiteSpace(); m_doc=((QCString)d).stripWhiteSpace();
else else
...@@ -119,6 +123,8 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine, ...@@ -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) 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(); m_brief=QCString(b).stripWhiteSpace();
int bl=m_brief.length(); int bl=m_brief.length();
if (bl>0) // add puntuation if needed if (bl>0) // add puntuation if needed
......
...@@ -30,6 +30,10 @@ ...@@ -30,6 +30,10 @@
#include <qstack.h> #include <qstack.h>
#include <qregexp.h> #include <qregexp.h>
// new experimental parser
#include "docparser.h"
#include "debug.h"
#include "doc.h" #include "doc.h"
#include "code.h" #include "code.h"
#include "message.h" #include "message.h"
...@@ -103,6 +107,8 @@ static QCString curDotFileCaption; ...@@ -103,6 +107,8 @@ static QCString curDotFileCaption;
static QCString internalRefFile; static QCString internalRefFile;
static QCString internalRefAnchor; static QCString internalRefAnchor;
static QCString caption; static QCString caption;
static QCString refItemText;
static QCString addIndexWord;
static QStack<char> currentListIndent; // indent stack of all list items static QStack<char> currentListIndent; // indent stack of all list items
static bool insideItemList = FALSE; static bool insideItemList = FALSE;
...@@ -1438,6 +1444,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? ...@@ -1438,6 +1444,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
); );
} }
<DocScan>{CMD}"addindex"{B}+ { <DocScan>{CMD}"addindex"{B}+ {
addIndexWord.resize(0);
BEGIN(DocIndexWord); BEGIN(DocIndexWord);
} }
<DocScan>"\\form#"[0-9]+ { <DocScan>"\\form#"[0-9]+ {
...@@ -1449,9 +1456,17 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? ...@@ -1449,9 +1456,17 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
outDoc->writeFormula(formName,formula->getFormulaText()); 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); //printf("Adding %s to index\n",yytext);
outDoc->addIndexItem(yytext,0); outDoc->addIndexItem(addIndexWord,0);
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocScan>{CMD}("arg"|"li")/{BN} { <DocScan>{CMD}("arg"|"li")/{BN} {
...@@ -1768,7 +1783,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? ...@@ -1768,7 +1783,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
if (inBlock()) endBlock(); if (inBlock()) endBlock();
inReturnBlock=TRUE; inReturnBlock=TRUE;
currentListIndent.push("P"); currentListIndent.push("P");
outDoc->startSimpleSect(BaseOutputDocInterface::Return,0,0,theTranslator->trReturns()+" :"); outDoc->startSimpleSect(BaseOutputDocInterface::Return,0,0,theTranslator->trReturns()+":");
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
} }
...@@ -1881,7 +1896,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? ...@@ -1881,7 +1896,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
outDoc->startDescTableData(); outDoc->startDescTableData();
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocScan>{CMD}"section "{ID}"\n" { <DocScan>{CMD}"section "{ID}" " {
QCString secName=&yytext[9]; // skip "\section " QCString secName=&yytext[9]; // skip "\section "
secName=secName.left(secName.length()-1); // remove \n secName=secName.left(secName.length()-1); // remove \n
//printf("SectionName %s found\n",secName.data()); //printf("SectionName %s found\n",secName.data());
...@@ -1889,18 +1904,16 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? ...@@ -1889,18 +1904,16 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
if ((sec=Doxygen::sectionDict[secName])) if ((sec=Doxygen::sectionDict[secName]))
{ {
//printf("Title %s\n",sec->title.data()); //printf("Title %s\n",sec->title.data());
outDoc->startSection(sec->label,sec->title, outDoc->startSection(sec->label,sec->title,sec->type);
sec->type==SectionInfo::Subsection);
scanString(sec->title); scanString(sec->title);
outDoc->endSection(sec->label, outDoc->endSection(sec->label,sec->type);
sec->type==SectionInfo::Subsection);
} }
else else
{ {
warn(yyFileName,yyLineNr,"Warning: reference to unknown section %s in the documentation of this entity!",yytext); 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]; QCString secName=&yytext[8];
secName=secName.left(secName.length()-1); secName=secName.left(secName.length()-1);
SectionInfo *sec; SectionInfo *sec;
...@@ -1934,6 +1947,12 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? ...@@ -1934,6 +1947,12 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
<DocScan>{CMD}"ref"/{BN} { <DocScan>{CMD}"ref"/{BN} {
BEGIN(DocRefName); BEGIN(DocRefName);
} }
<DocScan>{CMD}"secreflist"/{BN} {
outDoc->startSectionRefList();
}
<DocScan>{CMD}"endsecreflist"/{BN} {
outDoc->endSectionRefList();
}
<DocScan>{CMD}"refitem"/{BN} { <DocScan>{CMD}"refitem"/{BN} {
BEGIN(DocRefItem); BEGIN(DocRefItem);
} }
...@@ -2036,14 +2055,22 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? ...@@ -2036,14 +2055,22 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
} }
<DocRefItem>{ID} { <DocRefItem>{ID} {
sectionRef=yytext; sectionRef=yytext;
refItemText.resize(0);
BEGIN(DocRefItemName); 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; SectionInfo *sec;
QCString text=yytext;
if ((sec=Doxygen::sectionDict[sectionRef])) if ((sec=Doxygen::sectionDict[sectionRef]))
{ {
outDoc->writeSectionRefItem(sec->fileName,sec->label,text.stripWhiteSpace()); outDoc->writeSectionRefItem(sec->fileName,sec->label,refItemText.stripWhiteSpace());
} }
else else
{ {
...@@ -2917,6 +2944,12 @@ void resolveCopyDocCommands(const char *scope,QCString &docString) ...@@ -2917,6 +2944,12 @@ void resolveCopyDocCommands(const char *scope,QCString &docString)
void parseDoc(OutputDocInterface &od,const char *fileName,int startLine, void parseDoc(OutputDocInterface &od,const char *fileName,int startLine,
const char *clName,MemberDef *md,const QCString &docStr) const char *clName,MemberDef *md,const QCString &docStr)
{ {
if (Debug::isFlagSet(Debug::Validate))
{
validatingParseDoc(fileName,startLine,docStr);
}
strcpy(yyFileName,fileName); strcpy(yyFileName,fileName);
yyLineNr = startLine; 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() ...@@ -5988,9 +5988,9 @@ static void generatePageDocs()
if (!pi->title.isEmpty() && !pi->name.isEmpty() && if (!pi->title.isEmpty() && !pi->name.isEmpty() &&
(si=Doxygen::sectionDict.find(pi->name))!=0) (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->docify(si->title);
outputList->endSection(si->label,si->type==SectionInfo::Subsection); outputList->endSection(si->label,si->type);
} }
outputList->startTextBlock(); outputList->startTextBlock();
parseDoc(*outputList,pi->defFileName,pi->defLine,0,0,pi->doc); parseDoc(*outputList,pi->defFileName,pi->defLine,0,0,pi->doc);
......
...@@ -118,7 +118,7 @@ void FileDef::writeDetailedDocumentation(OutputList &ol) ...@@ -118,7 +118,7 @@ void FileDef::writeDetailedDocumentation(OutputList &ol)
ol.endGroupHeader(); ol.endGroupHeader();
if (!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) 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") && if (!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF") &&
!documentation().isEmpty()) !documentation().isEmpty())
...@@ -129,7 +129,7 @@ void FileDef::writeDetailedDocumentation(OutputList &ol) ...@@ -129,7 +129,7 @@ void FileDef::writeDetailedDocumentation(OutputList &ol)
{ {
//if (doc.at(dl-1)!='.' && doc.at(dl-1)!='!' && doc.at(dl-1)!='?') //if (doc.at(dl-1)!='.' && doc.at(dl-1)!='!' && doc.at(dl-1)!='?')
// doc+='.'; // 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()); //printf("Writing source ref for file %s\n",name().data());
if (Config_getBool("SOURCE_BROWSER")) if (Config_getBool("SOURCE_BROWSER"))
...@@ -189,7 +189,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -189,7 +189,7 @@ void FileDef::writeDocumentation(OutputList &ol)
} }
else if (briefDescription()) else if (briefDescription())
{ {
parseDoc(ol,filepath,1,0,0,briefDescription()); parseDoc(ol,briefFile(),briefLine(),0,0,briefDescription());
ol.writeString(" \n"); ol.writeString(" \n");
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
ol.startTextLink(0,"_details"); ol.startTextLink(0,"_details");
......
This diff is collapsed.
This diff is collapsed.
...@@ -197,8 +197,8 @@ class HtmlGenerator : public OutputGenerator ...@@ -197,8 +197,8 @@ class HtmlGenerator : public OutputGenerator
void endParamList(); void endParamList();
void endDescTitle() { t << "</b>"; } void endDescTitle() { t << "</b>"; }
void writeDescItem() { t << "<dd>" << endl; } void writeDescItem() { t << "<dd>" << endl; }
void startSection(const char *,const char *,bool); void startSection(const char *,const char *,SectionInfo::SectionType);
void endSection(const char *,bool); void endSection(const char *,SectionInfo::SectionType);
void writeSectionRef(const char *,const char *,const char *,const char *); void writeSectionRef(const char *,const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *); void writeSectionRefItem(const char *,const char *,const char *);
//void writeSectionRefAnchor(const char *,const char *,const char *); //void writeSectionRefAnchor(const char *,const char *,const char *);
...@@ -264,6 +264,9 @@ class HtmlGenerator : public OutputGenerator ...@@ -264,6 +264,9 @@ class HtmlGenerator : public OutputGenerator
void startLatexOnly() {} void startLatexOnly() {}
void endLatexOnly() {} void endLatexOnly() {}
void startSectionRefList();
void endSectionRefList();
private: private:
QCString lastTitle; QCString lastTitle;
QCString lastFile; QCString lastFile;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -62,6 +62,9 @@ sub GenerateDep { ...@@ -62,6 +62,9 @@ sub GenerateDep {
#$ GenerateDep("doc.cpp","doc.l"); #$ GenerateDep("doc.cpp","doc.l");
$(LEX) -PdocYY -t doc.l >doc.cpp $(LEX) -PdocYY -t doc.l >doc.cpp
#$ GenerateDep("doctokenizer.cpp","doctokenizer.l");
$(LEX) -PdoctokenizerYY -t doctokenizer.l >doctokenizer.cpp
#$ GenerateDep("commentcnv.cpp","commentcnv.l"); #$ GenerateDep("commentcnv.cpp","commentcnv.l");
$(LEX) -PcommentcnvYY -t commentcnv.l >commentcnv.cpp $(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