Commit 7e4d434c authored by Dimitri van Heesch's avatar Dimitri van Heesch

Doxygen-1.2.12-20011209

parent 79959c79
DOXYGEN Version 1.2.12-20011125 DOXYGEN Version 1.2.12-20011209
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (25 November 2001) Dimitri van Heesch (09 December 2001)
DOXYGEN Version 1.2.12_20011125 DOXYGEN Version 1.2.12_20011209
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) (25 November 2001) Dimitri van Heesch (dimitri@stack.nl) (09 December 2001)
1.2.12-20011125 1.2.12-20011209
...@@ -216,27 +216,29 @@ if test "$f_plf_auto" = NO; then ...@@ -216,27 +216,29 @@ if test "$f_plf_auto" = NO; then
fi fi
#- check for qt -------------------------------------------------------------- #- check for qt --------------------------------------------------------------
#
# echo -n " Checking for Qt..." if test "$f_wizard" = YES; then
# if test -z "$QTDIR"; then echo -n " Checking for Qt..."
# echo "QTDIR not set!" if test -z "$QTDIR"; then
# echo echo "QTDIR not set!"
# echo "tmake requires the QTDIR environment variable to be set." echo
# echo "check your Qt installation!" echo "tmake requires the QTDIR environment variable to be set."
# exit 2 echo "check your Qt installation!"
# else exit 2
# if test ! -d "$QTDIR/lib"; then else
# echo "QTDIR is set, but library directory does not exist!" if test ! -d "$QTDIR/lib"; then
# exit 2 echo "QTDIR is set, but library directory does not exist!"
# fi exit 2
# if test ! -d "$QTDIR/include"; then fi
# echo "QTDIR is set, but include directory does not exist!" if test ! -d "$QTDIR/include"; then
# exit 2 echo "QTDIR is set, but include directory does not exist!"
# fi exit 2
# echo " headers $QTDIR/include," fi
# echo " libraries $QTDIR/lib" echo " headers $QTDIR/include,"
# fi echo " libraries $QTDIR/lib"
# fi
fi
# - check for make ------------------------------------------------------------ # - check for make ------------------------------------------------------------
echo -n " Checking for GNU make tool... " echo -n " Checking for GNU make tool... "
...@@ -275,9 +277,11 @@ if test "$f_insttool" = NO; then ...@@ -275,9 +277,11 @@ if test "$f_insttool" = NO; then
for i in $install_names; do for i in $install_names; do
for j in $install_dirs; do for j in $install_dirs; do
if test -x "$j/$i"; then if test -x "$j/$i"; then
install_found=YES if test -n "`$j/$i --version 2>/dev/null | grep fileutils`"; then
install_prog="$j/$i" install_found=YES
break 2 install_prog="$j/$i"
break 2
fi
fi fi
done done
done done
......
...@@ -377,8 +377,10 @@ doxygen. Unrecognized commands are treated as normal text. ...@@ -377,8 +377,10 @@ doxygen. Unrecognized commands are treated as normal text.
\subsection cmdinternal \internal \subsection cmdinternal \internal
\addindex \internal \addindex \internal
This command writes the message `For internal use only' to the output. This command writes the message `For internal use only' to the output and
All text after a \c \internal command is ignored. all text \e after a \c \\internal command is ignored.
You can use \ref cfg_internal_docs "INTERNAL_DOCS" in the config file
to show or hide the internal documentation.
<hr> <hr>
\subsection cmdmainpage \mainpage [(title)] \subsection cmdmainpage \mainpage [(title)]
......
...@@ -318,7 +318,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -318,7 +318,7 @@ followed by the descriptions of the tags grouped by category.
<dt>\c INTERNAL_DOCS <dd> <dt>\c INTERNAL_DOCS <dd>
\addindex INTERNAL_DOCS \addindex INTERNAL_DOCS
The \c INTERNAL_DOCS tag determines if documentation The \c INTERNAL_DOCS tag determines if documentation
that is typed after a \\internal command is included. If the tag is set that is typed after a \ref cmdinternal "\\internal" command is included. If the tag is set
to \c NO (the default) then the documentation will be excluded. to \c NO (the default) then the documentation will be excluded.
Set it to \c YES to include the internal documentation. Set it to \c YES to include the internal documentation.
...@@ -540,7 +540,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -540,7 +540,7 @@ followed by the descriptions of the tags grouped by category.
Separate the files or directories with spaces.<br> Separate the files or directories with spaces.<br>
\b Note: \b Note:
This tag (and only this tag) is \e required. If this tag is empty the current directory is searched.
\anchor cfg_file_patterns \anchor cfg_file_patterns
<dt>\c FILE_PATTERNS <dd> <dt>\c FILE_PATTERNS <dd>
...@@ -1090,7 +1090,7 @@ EXTRA_PACKAGES = times ...@@ -1090,7 +1090,7 @@ EXTRA_PACKAGES = times
\anchor cfg_expand_as_defined \anchor cfg_expand_as_defined
<dt>\c EXPAND_AS_DEFINED <dd> <dt>\c EXPAND_AS_DEFINED <dd>
\addindex EXPAND_AS_DEFINED \addindex EXPAND_AS_DEFINED
If the \c MACRO_EXPANSION and \c EXPAND_PREDEF_ONLY tags are set to \c YES then If the \c MACRO_EXPANSION and \c EXPAND_ONLY_PREDEF tags are set to \c YES then
this tag can be used to specify a list of macro names that should be expanded. this tag can be used to specify a list of macro names that should be expanded.
The macro definition that is found in the sources will be used. The macro definition that is found in the sources will be used.
Use the \c PREDEFINED tag if you want to use a different macro definition. Use the \c PREDEFINED tag if you want to use a different macro definition.
......
...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means ...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. languages other than English (the default) at configuration time.
Currently (version 1.2.11-20011111), 24 languages Currently (version 1.2.12-20011125), 24 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Croatian, Czech, Danish, Brazilian Portuguese, Chinese, Croatian, Czech, Danish,
Dutch, English, Finnish, French, German, Dutch, English, Finnish, French, German,
...@@ -53,8 +53,8 @@ when the translator was updated. ...@@ -53,8 +53,8 @@ when the translator was updated.
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Brazilian</TD> <TD>Brazilian</TD>
<TD>Fabio "FJTC" Jun Takada Chino</TD> <TD>Fabio "FJTC" Jun Takada Chino</TD>
<TD>chino@NOSPAM.grad.icmc.sc.usp.br</TD> <TD>chino@NOSPAM.icmc.sc.usp.br</TD>
<TD>1.2.11</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Chinese</TD> <TD>Chinese</TD>
...@@ -66,7 +66,7 @@ when the translator was updated. ...@@ -66,7 +66,7 @@ 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.11</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Czech</TD> <TD>Czech</TD>
...@@ -84,7 +84,7 @@ when the translator was updated. ...@@ -84,7 +84,7 @@ when the translator was updated.
<TD>Dutch</TD> <TD>Dutch</TD>
<TD>Dimitri van Heesch</TD> <TD>Dimitri van Heesch</TD>
<TD>dimitri@NOSPAM.stack.nl</TD> <TD>dimitri@NOSPAM.stack.nl</TD>
<TD>1.2.11</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>English</TD> <TD>English</TD>
...@@ -102,13 +102,13 @@ when the translator was updated. ...@@ -102,13 +102,13 @@ when the translator was updated.
<TD>French</TD> <TD>French</TD>
<TD>Xavier Outhier</TD> <TD>Xavier Outhier</TD>
<TD>xouthier@NOSPAM.yahoo.fr</TD> <TD>xouthier@NOSPAM.yahoo.fr</TD>
<TD>1.2.11</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>German</TD> <TD>German</TD>
<TD>Jens Seidel<br>Jens Breitenstein</TD> <TD>Jens Seidel<br>Jens Breitenstein</TD>
<TD>jensseidel@NOSPAM.users.sf.net<br>Jens.Breitenstein@NOSPAM.tlc.de</TD> <TD>jensseidel@NOSPAM.users.sf.net<br>Jens.Breitenstein@NOSPAM.tlc.de</TD>
<TD>1.2.11</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Hungarian</TD> <TD>Hungarian</TD>
...@@ -120,7 +120,7 @@ when the translator was updated. ...@@ -120,7 +120,7 @@ when the translator was updated.
<TD>Italian</TD> <TD>Italian</TD>
<TD>Ahmed Aldo Faisal<br>Alessandro Falappa</TD> <TD>Ahmed Aldo Faisal<br>Alessandro Falappa</TD>
<TD>aaf23@NOSPAM.cam.ac.uk<br>a.falappa@NOSPAM.flashnet.it</TD> <TD>aaf23@NOSPAM.cam.ac.uk<br>a.falappa@NOSPAM.flashnet.it</TD>
<TD>1.2.11</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Japanese</TD> <TD>Japanese</TD>
...@@ -132,7 +132,7 @@ when the translator was updated. ...@@ -132,7 +132,7 @@ when the translator was updated.
<TD>Korean</TD> <TD>Korean</TD>
<TD>Richard Kim</TD> <TD>Richard Kim</TD>
<TD>ryk@NOSPAM.dspwiz.com</TD> <TD>ryk@NOSPAM.dspwiz.com</TD>
<TD>1.1.0</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Norwegian</TD> <TD>Norwegian</TD>
...@@ -150,7 +150,7 @@ when the translator was updated. ...@@ -150,7 +150,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.11</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Romanian</TD> <TD>Romanian</TD>
...@@ -174,7 +174,7 @@ when the translator was updated. ...@@ -174,7 +174,7 @@ when the translator was updated.
<TD>Slovene</TD> <TD>Slovene</TD>
<TD>Matjaz Ostroversnik</TD> <TD>Matjaz Ostroversnik</TD>
<TD>matjaz.ostroversnik@NOSPAM.zrs-tk.si</TD> <TD>matjaz.ostroversnik@NOSPAM.zrs-tk.si</TD>
<TD>1.2.11</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Spanish</TD> <TD>Spanish</TD>
...@@ -184,8 +184,8 @@ when the translator was updated. ...@@ -184,8 +184,8 @@ when the translator was updated.
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Swedish</TD> <TD>Swedish</TD>
<TD>Samuel H&auml;agglund<br>XeT Erixon</TD> <TD>XeT Erixon</TD>
<TD>sahag96@NOSPAM.nts.mh.se<br>xet@NOSPAM.hem.passagen.se</TD> <TD>xet@NOSPAM.hem.passagen.se</TD>
<TD>1.0.0</TD> <TD>1.0.0</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
...@@ -205,42 +205,42 @@ when the translator was updated. ...@@ -205,42 +205,42 @@ 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 & Fabio "FJTC" Jun Takada Chino & {\tt chino@grad.icmc.sc.usp.br} & 1.2.11 \\ Brazilian & 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.11 \\ Chinese & Wei Liu & {\tt liuwei@asiainfo.com} & 1.2.11 \\
& Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\ & Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\
\hline \hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & 1.2.11 \\ Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\ 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
Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} & 1.2.11 \\ Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} & up-to-date \\
\hline \hline
English & Dimitri van Heesch & {\tt dimitri@stack.nl} & up-to-date \\ English & Dimitri van Heesch & {\tt dimitri@stack.nl} & up-to-date \\
\hline \hline
Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & 1.0.0 \\ Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & 1.0.0 \\
\hline \hline
French & Xavier Outhier & {\tt xouthier@yahoo.fr} & 1.2.11 \\ French & Xavier Outhier & {\tt xouthier@yahoo.fr} & up-to-date \\
\hline \hline
German & Jens Seidel & {\tt jensseidel@users.sf.net} & 1.2.11 \\ German & Jens Seidel & {\tt jensseidel@users.sf.net} & up-to-date \\
& Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\ & Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\
\hline \hline
Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt foldvari@diatronltd.com} & 1.2.1 \\ Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt foldvari@diatronltd.com} & 1.2.1 \\
\hline \hline
Italian & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & 1.2.11 \\ Italian & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & up-to-date \\
& Alessandro Falappa & {\tt a.falappa@flashnet.it} & \\ & Alessandro Falappa & {\tt a.falappa@flashnet.it} & \\
\hline \hline
Japanese & Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & 1.2.5 \\ Japanese & Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & 1.2.5 \\
\hline \hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} & 1.1.0 \\ Korean & Richard Kim & {\tt ryk@dspwiz.com} & up-to-date \\
\hline \hline
Norwegian & Lars Erik Jordet & {\tt larsej@stud.ifd.hibu.no} & 1.2.2 \\ Norwegian & Lars Erik Jordet & {\tt larsej@stud.ifd.hibu.no} & 1.2.2 \\
\hline \hline
Polish & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & 1.2.1 \\ Polish & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & 1.2.1 \\
\hline \hline
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & 1.2.11 \\ Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & up-to-date \\
\hline \hline
Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.1 \\ Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.1 \\
\hline \hline
...@@ -248,12 +248,11 @@ when the translator was updated. ...@@ -248,12 +248,11 @@ when the translator was updated.
\hline \hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt qwerty1@pobox.sk} & 1.2.11 \\ Slovak & Stanislav Kudl\'{a}\v{c} & {\tt qwerty1@pobox.sk} & 1.2.11 \\
\hline \hline
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & 1.2.11 \\ Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & up-to-date \\
\hline \hline
Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} & 1.2.7 \\ Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} & 1.2.7 \\
\hline \hline
Swedish & Samuel H\"{a}agglund & {\tt sahag96@nts.mh.se} & 1.0.0 \\ Swedish & XeT Erixon & {\tt xet@hem.passagen.se} & 1.0.0 \\
& XeT Erixon & {\tt xet@hem.passagen.se} & \\
\hline \hline
Ukrainian & Olexij Tkatchenko & {\tt olexij.tkatchenko@gmx.de} & 1.2.11 \\ Ukrainian & Olexij Tkatchenko & {\tt olexij.tkatchenko@gmx.de} & 1.2.11 \\
\hline \hline
......
...@@ -37,8 +37,8 @@ Hungarian ...@@ -37,8 +37,8 @@ Hungarian
F&ouml;ldv&aacute;ri Gy&ouml;rgy: foldvari@diatronltd.com F&ouml;ldv&aacute;ri Gy&ouml;rgy: foldvari@diatronltd.com
Italian Italian
Alessandro Falappa: alessandro@falappa.net
Ahmed Aldo Faisal: aaf23@cam.ac.uk Ahmed Aldo Faisal: aaf23@cam.ac.uk
Alessandro Falappa: a.falappa@flashnet.it
Japanese Japanese
Kenji Nagamatsu: naga@joyful.club.ne.jp Kenji Nagamatsu: naga@joyful.club.ne.jp
...@@ -71,7 +71,6 @@ Spanish ...@@ -71,7 +71,6 @@ Spanish
Francisco Oltra Thennet: foltra@puc.cl Francisco Oltra Thennet: foltra@puc.cl
Swedish Swedish
Samuel H&auml;agglund: sahag96@nts.mh.se
XeT Erixon: xet@hem.passagen.se XeT Erixon: xet@hem.passagen.se
Ukrainian Ukrainian
......
...@@ -61,20 +61,20 @@ Makefile. It contains of a number of assignments (tags) of the form: ...@@ -61,20 +61,20 @@ Makefile. It contains of a number of assignments (tags) of the form:
<tt>TAGNAME = VALUE1 VALUE2 ... </tt><br> <tt>TAGNAME = VALUE1 VALUE2 ... </tt><br>
You can probably leave the values of most tags in a generated template You can probably leave the values of most tags in a generated template
configuration file to their default value. configuration file to their default value. See section \ref config for
more details about the configuration file.
The \ref cfg_input "INPUT" tag is the only tag for which you are required to For a small project consisting of a few C and/or C++ source
provide a value. See section \ref config for more details about the and header files, you can leave
configuration file. For a small project consisting of a few C and/or C++ source \ref cfg_input "INPUT" tag empty and doxygen will search for sources in
and header files, you can add the names of the files after the the current directory.
\ref cfg_input "INPUT" tag.
If you have a larger project consisting of a source directory or tree
If you have a larger project consisting of a source directory or tree this may you should put the root directory or
become tiresome. In this case you should put the root directory or
directories after the \ref cfg_input "INPUT" tag, and add one or more file directories after the \ref cfg_input "INPUT" tag, and add one or more file
patterns to the \ref cfg_file_patterns "FILE_PATTERNS" tag patterns to the \ref cfg_file_patterns "FILE_PATTERNS" tag
(for instance <code>*.cpp *.h</code>). Only files that match one of the (for instance <code>*.cpp *.h</code>). Only files that match one of the
patterns will be parsed (if the patterns are omitted all files will be parsed). patterns will be parsed (if the patterns are omitted a list of
source extensions is used).
For recursive parsing of a source tree you must set For recursive parsing of a source tree you must set
the \ref cfg_recursive "RECURSIVE" tag to \c YES. To further fine-tune the the \ref cfg_recursive "RECURSIVE" tag to \c YES. To further fine-tune the
list of files that is parsed the \ref cfg_exclude "EXCLUDE" and list of files that is parsed the \ref cfg_exclude "EXCLUDE" and
...@@ -85,8 +85,9 @@ documentation that doxygen is aware of), you can still get an idea of ...@@ -85,8 +85,9 @@ documentation that doxygen is aware of), you can still get an idea of
what the documented result would be. To do so, you must set what the documented result would be. To do so, you must set
the \ref cfg_extract_all "EXTRACT_ALL" tag in the configuration file the \ref cfg_extract_all "EXTRACT_ALL" tag in the configuration file
to \c YES. Then, doxygen will pretend everything in your sources is documented. to \c YES. Then, doxygen will pretend everything in your sources is documented.
Please note that warnings of undocumented members will not be generated as Please note that as a consequence warnings about undocumented members
long as \ref cfg_extract_all "EXTRACT_ALL" is set to \c YES. will not be generated as long as \ref cfg_extract_all "EXTRACT_ALL" is
set to \c YES.
To analyse an existing piece of software it is useful to cross-reference To analyse an existing piece of software it is useful to cross-reference
a (documented) entity with its definition in the source files. Doxygen will a (documented) entity with its definition in the source files. Doxygen will
......
Name: doxygen Name: doxygen
Version: 1.2.12_20011125 Version: 1.2.12_20011209
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 4 Release: 4
Source: doxygen-%{version}.src.tar.gz Source: doxygen-%{version}.src.tar.gz
......
/**************************************************************************** /****************************************************************************
** $Id$ **
** **
** QArray class documentation ** QArray class documentation
** **
......
/**************************************************************************** /****************************************************************************
** $Id$ **
** **
** QDict and QDictIterator class documentation ** QDict and QDictIterator class documentation
** **
......
/**************************************************************************** /****************************************************************************
** $Id$ **
** **
** QIntDict and QIntDictIterator class documentation ** QIntDict and QIntDictIterator class documentation
** **
......
/**************************************************************************** /****************************************************************************
** $Id$ **
** **
** QList and QListIterator class documentation ** QList and QListIterator class documentation
** **
......
/**************************************************************************** /****************************************************************************
** $Id$ **
** **
** QPtrDict and QPtrDictIterator class documentation ** QPtrDict and QPtrDictIterator class documentation
** **
......
/**************************************************************************** /****************************************************************************
** $Id$ **
** **
** QSortedList documentation ** QSortedList documentation
** **
......
/**************************************************************************** /****************************************************************************
** $Id$ **
** **
** QStack class documentation ** QStack class documentation
** **
......
/**************************************************************************** /****************************************************************************
** $Id$ **
*****************************************************************************/ *****************************************************************************/
//typedef QListIterator<char> QStrListIterator; //typedef QListIterator<char> QStrListIterator;
/**************************************************************************** /****************************************************************************
** $Id$ **
** **
** Qt template library classes documentation ** Qt template library classes documentation
** **
......
/**************************************************************************** /****************************************************************************
** $Id$ **
** **
** QValueList and QValueListIterator class documentation ** QValueList and QValueListIterator class documentation
** **
......
/**************************************************************************** /****************************************************************************
** $Id$ **
** **
** QVector class documentation ** QVector class documentation
** **
......
...@@ -1219,6 +1219,7 @@ void ClassDef::writeDocumentationForInnerClasses(OutputList &ol) ...@@ -1219,6 +1219,7 @@ void ClassDef::writeDocumentationForInnerClasses(OutputList &ol)
innerCd->writeDocumentation(ol); innerCd->writeDocumentation(ol);
innerCd->writeMemberList(ol); innerCd->writeMemberList(ol);
} }
innerCd->writeDocumentationForInnerClasses(ol);
} }
} }
} }
......
...@@ -298,6 +298,8 @@ class ClassDef : public Definition ...@@ -298,6 +298,8 @@ class ClassDef : public Definition
const char *ref=0,const char *fName=0); const char *ref=0,const char *fName=0);
/*! Destroys a compound definition. */ /*! Destroys a compound definition. */
~ClassDef(); ~ClassDef();
ClassSDict *getInnerClasses() { return m_innerClasses; }
bool visited; bool visited;
......
...@@ -699,9 +699,11 @@ static bool getLink(const char *className, ...@@ -699,9 +699,11 @@ static bool getLink(const char *className,
g_anchorCount++; g_anchorCount++;
} }
} }
Definition *d=0; //Definition *d=0;
if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd; //if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope();
if (d && d->isLinkable()) if (d && d->isLinkable())
{ {
g_theCallContext.setClass(stripClassName(md->typeString())); g_theCallContext.setClass(stripClassName(md->typeString()));
......
...@@ -1527,7 +1527,7 @@ void Config::create() ...@@ -1527,7 +1527,7 @@ void Config::create()
"If the value of the INPUT tag contains directories, you can use the \n" "If the value of the INPUT tag contains directories, you can use the \n"
"FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \n" "FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \n"
"and *.h) to filter out the source-files in the directories. If left \n" "and *.h) to filter out the source-files in the directories. If left \n"
"blank file matching one of the following patterns are included: \n" "blank the following patterns are tested: \n"
"*.c *.cc *.cxx *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp \n" "*.c *.cc *.cxx *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp \n"
"*.h++ *.idl \n" "*.h++ *.idl \n"
); );
...@@ -1931,11 +1931,11 @@ void Config::create() ...@@ -1931,11 +1931,11 @@ void Config::create()
cs->addDependency("GENERATE_MAN"); cs->addDependency("GENERATE_MAN");
cb = addBool( cb = addBool(
"MAN_LINKS", "MAN_LINKS",
"If the MAN_LINKS tag is set to YES and Doxygen generates man output,\n" "If the MAN_LINKS tag is set to YES and Doxygen generates man output, \n"
"then it will generate one additional man file for each entity\n" "then it will generate one additional man file for each entity \n"
"documented in the real man page(s). These additional files\n" "documented in the real man page(s). These additional files \n"
"only source the real man page, but without them the man command\n" "only source the real man page, but without them the man command \n"
"would be unable to find the correct page. The default is NO.\n", "would be unable to find the correct page. The default is NO. \n",
FALSE FALSE
); );
cb->addDependency("GENERATE_MAN"); cb->addDependency("GENERATE_MAN");
...@@ -1951,6 +1951,18 @@ void Config::create() ...@@ -1951,6 +1951,18 @@ void Config::create()
"moment. \n", "moment. \n",
FALSE FALSE
); );
//--------------------------------------------------------------------------
addInfo( "DEF","configuration options for the AutoGen Definitions output");
//--------------------------------------------------------------------------
cb = addBool("GENERATE_AUTOGEN_DEF",
"If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will \n"
"generate an AutoGen Definitions (see autogen.sf.net) file \n"
"that captures the structure of the code including all \n"
"documentation. Note that this feature is still experimental \n"
"and incomplete at the moment. \n",
FALSE );
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
addInfo( "Preprocessor","Configuration options related to the preprocessor "); addInfo( "Preprocessor","Configuration options related to the preprocessor ");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
......
This diff is collapsed.
/******************************************************************************
*
*
*
* Copyright (C) 1997-2001 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.
*
*/
#ifndef DEFGEN_H
#define DEFGEN_H
void generateDEF();
#endif
This diff is collapsed.
...@@ -490,6 +490,70 @@ void DotNode::writeXML(QTextStream &t) ...@@ -490,6 +490,70 @@ void DotNode::writeXML(QTextStream &t)
} }
void DotNode::writeDEF(QTextStream &t)
{
char* nodePrefix = " node-";
t << " node = {" << endl;
t << nodePrefix << "id = " << m_number << ';' << endl;
t << nodePrefix << "label = '" << m_label << "';" << endl;
if (!m_url.isEmpty())
{
QCString url(m_url);
char *refPtr = url.data();
char *urlPtr = strchr(url.data(),'$');
if (urlPtr)
{
*urlPtr++='\0';
t << nodePrefix << "link = {" << endl << " "
<< nodePrefix << "link-id = '" << urlPtr << "';" << endl;
if (*refPtr!='\0')
{
t << " " << nodePrefix << "link-external = '"
<< refPtr << "';" << endl;
}
t << " };" << endl;
}
}
if (m_children)
{
QListIterator<DotNode> nli(*m_children);
QListIterator<EdgeInfo> eli(*m_edgeInfo);
DotNode *childNode;
EdgeInfo *edgeInfo;
for (;(childNode=nli.current());++nli,++eli)
{
edgeInfo=eli.current();
t << " node-child = {" << endl;
t << " child-id = '" << childNode->m_number << "';" << endl;
t << " relation = ";
switch(edgeInfo->m_color)
{
case EdgeInfo::Blue: t << "public-inheritance"; break;
case EdgeInfo::Green: t << "protected-inheritance"; break;
case EdgeInfo::Red: t << "private-inheritance"; break;
case EdgeInfo::Purple: t << "usage"; break;
case EdgeInfo::Orange: t << "template-instance"; break;
case EdgeInfo::Grey: ASSERT(0); break;
}
t << ';' << endl;
if (!edgeInfo->m_label.isEmpty())
{
t << " edgelabel = <<_EnD_oF_dEf_TeXt_" << endl
<< edgeInfo->m_label << endl
<< "_EnD_oF_dEf_TeXt_;" << endl;
}
t << " }; /* node-child */" << endl;
} /* for (;childNode...) */
}
t << " }; /* node */" << endl;
}
void DotNode::clearWriteFlag() void DotNode::clearWriteFlag()
{ {
m_written=FALSE; m_written=FALSE;
...@@ -1313,6 +1377,16 @@ void DotClassGraph::writeXML(QTextStream &t) ...@@ -1313,6 +1377,16 @@ void DotClassGraph::writeXML(QTextStream &t)
} }
} }
void DotClassGraph::writeDEF(QTextStream &t)
{
QDictIterator<DotNode> dni(*m_usedNodes);
DotNode *node;
for (;(node=dni.current());++dni)
{
node->writeDEF(t);
}
}
//-------------------------------------------------------------------- //--------------------------------------------------------------------
int DotInclDepGraph::m_curNodeNumber; int DotInclDepGraph::m_curNodeNumber;
......
...@@ -77,6 +77,7 @@ class DotNode ...@@ -77,6 +77,7 @@ class DotNode
int m_subgraphId; int m_subgraphId;
void clearWriteFlag(); void clearWriteFlag();
void writeXML(QTextStream &t); void writeXML(QTextStream &t);
void writeDEF(QTextStream &t);
private: private:
void colorConnectedNodes(int curColor); void colorConnectedNodes(int curColor);
...@@ -126,6 +127,7 @@ class DotClassGraph ...@@ -126,6 +127,7 @@ class DotClassGraph
bool TBRank=TRUE,bool imageMap=TRUE); bool TBRank=TRUE,bool imageMap=TRUE);
void writeXML(QTextStream &t); void writeXML(QTextStream &t);
void writeDEF(QTextStream &t);
QCString diskName() const; QCString diskName() const;
private: private:
......
This diff is collapsed.
...@@ -41,7 +41,7 @@ Entry::Entry() ...@@ -41,7 +41,7 @@ Entry::Entry()
//mtArgList = 0; //mtArgList = 0;
mGrpId = -1; mGrpId = -1;
tagInfo = 0; tagInfo = 0;
groupdoctype = GROUPDOC_NORMAL; groupDocType = GROUPDOC_NORMAL;
reset(); reset();
} }
...@@ -93,7 +93,7 @@ Entry::Entry(const Entry &e) ...@@ -93,7 +93,7 @@ Entry::Entry(const Entry &e)
//printf("Entry::Entry(copy) tArgList=0\n"); //printf("Entry::Entry(copy) tArgList=0\n");
tArgLists = 0; tArgLists = 0;
//mtArgList = 0; //mtArgList = 0;
groupdoctype = e.groupdoctype; groupDocType = e.groupDocType;
// deep copy of the child entry list // deep copy of the child entry list
QListIterator<Entry> eli(*e.sublist); QListIterator<Entry> eli(*e.sublist);
...@@ -210,8 +210,8 @@ void Entry::reset() ...@@ -210,8 +210,8 @@ void Entry::reset()
brief.resize(0); brief.resize(0);
inside.resize(0); inside.resize(0);
fileName.resize(0); fileName.resize(0);
scopeSpec.resize(0); //scopeSpec.resize(0);
memberSpec.resize(0); //memberSpec.resize(0);
initializer.resize(0); initializer.resize(0);
initLines = -1; initLines = -1;
startLine = 1; startLine = 1;
...@@ -230,7 +230,7 @@ void Entry::reset() ...@@ -230,7 +230,7 @@ void Entry::reset()
memSpec = 0; memSpec = 0;
subGrouping = TRUE; subGrouping = TRUE;
protection = Public; protection = Public;
groupdoctype = GROUPDOC_NORMAL; groupDocType = GROUPDOC_NORMAL;
sublist->clear(); sublist->clear();
extends->clear(); extends->clear();
groups->clear(); groups->clear();
......
...@@ -254,10 +254,8 @@ class Entry ...@@ -254,10 +254,8 @@ class Entry
QCString bitfields; //!< member's bit fields QCString bitfields; //!< member's bit fields
ArgumentList *argList; //!< member arguments as a list ArgumentList *argList; //!< member arguments as a list
QList<ArgumentList> *tArgLists; //!< template argument declarations QList<ArgumentList> *tArgLists; //!< template argument declarations
//ArgumentList *tArgList; //!< template argument lists (for each scope) //QCString scopeSpec; //!< template specialization of the scope
//ArgumentList *mtArgList; //!< member template argument list //QCString memberSpec; //!< template specialization of the member
QCString scopeSpec; //!< template specialization of the scope
QCString memberSpec; //!< template specialization of the member
QCString program; //!< the program text QCString program; //!< the program text
QCString initializer; //!< initial value (for variables) QCString initializer; //!< initial value (for variables)
QCString includeFile; //!< include file (2 arg of \class, must be unique) QCString includeFile; //!< include file (2 arg of \class, must be unique)
...@@ -281,32 +279,36 @@ class Entry ...@@ -281,32 +279,36 @@ class Entry
int bugId; //!< id of the bug list item of this entry int bugId; //!< id of the bug list item of this entry
TagInfo *tagInfo; //!< tag file info TagInfo *tagInfo; //!< tag file info
static int num; //!< counts the total number of entries static int num; //!< counts the total number of entries
enum { enum
GROUPDOC_NORMAL, //<! @defgroup {
GROUPDOC_ADD, //<! @addgroup GROUPDOC_NORMAL, //<! defgroup
GROUPDOC_WEAK //<! @weakgroup GROUPDOC_ADD, //<! addgroup
} groupdoctype; //!< kind of group GROUPDOC_WEAK //<! weakgroup
} groupDocType; //!< kind of group
/// return the command name used to define GROUPDOC_SEC /// return the command name used to define GROUPDOC_SEC
const char *groupdoccmd() const const char *groupDocCmd() const
{ {
switch( this->groupdoctype ) { switch( groupDocType )
case GROUPDOC_NORMAL: return "\\defgroup"; break; {
case GROUPDOC_ADD: return "\\addgroup"; break; case GROUPDOC_NORMAL: return "\\defgroup"; break;
case GROUPDOC_WEAK: return "\\weakgroup"; break; case GROUPDOC_ADD: return "\\addgroup"; break;
default: return "unknown group command"; case GROUPDOC_WEAK: return "\\weakgroup"; break;
} default: return "unknown group command";
}
} }
Grouping::GroupPri_t groupingpri() const Grouping::GroupPri_t groupingPri() const
{ {
if( this->section != GROUPDOC_SEC ) { if( section != GROUPDOC_SEC )
return Grouping::GROUPING_LOWEST; {
} return Grouping::GROUPING_LOWEST;
switch( this->groupdoctype ) { }
case GROUPDOC_NORMAL: return Grouping::GROUPING_AUTO_DEF; break; switch( groupDocType )
case GROUPDOC_ADD: return Grouping::GROUPING_AUTO_ADD; break; {
case GROUPDOC_WEAK: return Grouping::GROUPING_AUTO_WEAK; break; case GROUPDOC_NORMAL: return Grouping::GROUPING_AUTO_DEF; break;
default: return Grouping::GROUPING_LOWEST; case GROUPDOC_ADD: return Grouping::GROUPING_AUTO_ADD; break;
} case GROUPDOC_WEAK: return Grouping::GROUPING_AUTO_WEAK; break;
default: return Grouping::GROUPING_LOWEST;
}
} }
private: private:
Entry &operator=(const Entry &); Entry &operator=(const Entry &);
......
...@@ -51,8 +51,7 @@ FileDef::FileDef(const char *p,const char *nm,const char *lref) ...@@ -51,8 +51,7 @@ FileDef::FileDef(const char *p,const char *nm,const char *lref)
includedByList = new QList<IncludeInfo>; includedByList = new QList<IncludeInfo>;
includedByList->setAutoDelete(TRUE); includedByList->setAutoDelete(TRUE);
includedByDict = new QDict<IncludeInfo>(61); includedByDict = new QDict<IncludeInfo>(61);
namespaceList = new NamespaceList; namespaceSDict = new NamespaceSDict;
namespaceDict = new NamespaceDict(7);
srcDefDict = 0; srcDefDict = 0;
srcMemberDict = 0; srcMemberDict = 0;
usingDirList = 0; usingDirList = 0;
...@@ -74,8 +73,7 @@ FileDef::~FileDef() ...@@ -74,8 +73,7 @@ FileDef::~FileDef()
delete classSDict; delete classSDict;
delete includeDict; delete includeDict;
delete includeList; delete includeList;
delete namespaceList; delete namespaceSDict;
delete namespaceDict;
delete srcDefDict; delete srcDefDict;
delete srcMemberDict; delete srcMemberDict;
delete usingDirList; delete usingDirList;
...@@ -267,11 +265,12 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -267,11 +265,12 @@ void FileDef::writeDocumentation(OutputList &ol)
ol.startMemberSections(); ol.startMemberSections();
if (namespaceList->count()>0) if (namespaceSDict->count()>0)
{ {
NamespaceDef *nd=namespaceList->first(); NamespaceSDict::Iterator ndi(*namespaceSDict);
NamespaceDef *nd;
bool found=FALSE; bool found=FALSE;
while (nd) for (ndi.toFirst();(nd=ndi.current());++ndi)
{ {
if (nd->name().find('@')==-1) if (nd->name().find('@')==-1)
{ {
...@@ -306,7 +305,6 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -306,7 +305,6 @@ void FileDef::writeDocumentation(OutputList &ol)
} }
ol.endMemberItem(FALSE); ol.endMemberItem(FALSE);
} }
nd=namespaceList->next();
} }
if (found) ol.endMemberList(); if (found) ol.endMemberList();
} }
...@@ -533,13 +531,12 @@ void FileDef::insertClass(ClassDef *cd) ...@@ -533,13 +531,12 @@ void FileDef::insertClass(ClassDef *cd)
/*! Adds namespace definition \a nd to the list of all compounds of this file */ /*! Adds namespace definition \a nd to the list of all compounds of this file */
void FileDef::insertNamespace(NamespaceDef *nd) void FileDef::insertNamespace(NamespaceDef *nd)
{ {
if (!nd->name().isEmpty() && namespaceDict->find(nd->name())==0) if (!nd->name().isEmpty() && namespaceSDict->find(nd->name())==0)
{ {
if (Config_getBool("SORT_MEMBER_DOCS")) if (Config_getBool("SORT_MEMBER_DOCS"))
namespaceList->inSort(nd); namespaceSDict->inSort(nd->name(),nd);
else else
namespaceList->append(nd); namespaceSDict->append(nd->name(),nd);
namespaceDict->insert(nd->name(),nd);
} }
} }
......
...@@ -35,8 +35,7 @@ class ClassList; ...@@ -35,8 +35,7 @@ class ClassList;
class MemberDef; class MemberDef;
class OutputList; class OutputList;
class NamespaceDef; class NamespaceDef;
class NamespaceList; class NamespaceSDict;
class NamespaceDict;
class MemberGroupSDict; class MemberGroupSDict;
class PackageDef; class PackageDef;
...@@ -171,15 +170,15 @@ class FileDef : public Definition ...@@ -171,15 +170,15 @@ class FileDef : public Definition
/* user defined member groups */ /* user defined member groups */
MemberGroupSDict *memberGroupSDict; MemberGroupSDict *memberGroupSDict;
NamespaceSDict *namespaceSDict;
ClassSDict *classSDict;
private: private:
ClassSDict *classSDict;
QDict<IncludeInfo> *includeDict; QDict<IncludeInfo> *includeDict;
QList<IncludeInfo> *includeList; QList<IncludeInfo> *includeList;
QDict<IncludeInfo> *includedByDict; QDict<IncludeInfo> *includedByDict;
QList<IncludeInfo> *includedByList; QList<IncludeInfo> *includedByList;
NamespaceDict *namespaceDict;
NamespaceList *namespaceList;
NamespaceList *usingDirList; NamespaceList *usingDirList;
ClassList *usingDeclList; ClassList *usingDeclList;
//DefineList *defineList; //DefineList *defineList;
......
...@@ -309,10 +309,10 @@ bool GroupDef::containsGroup(const GroupDef *def) ...@@ -309,10 +309,10 @@ bool GroupDef::containsGroup(const GroupDef *def)
void GroupDef::addGroup(const GroupDef *def) void GroupDef::addGroup(const GroupDef *def)
{ {
if (Config_getBool("SORT_MEMBER_DOCS")) //if (Config_getBool("SORT_MEMBER_DOCS"))
groupList->inSort(def); // groupList->inSort(def);
else //else
groupList->append(def); groupList->append(def);
} }
void GroupDef::addParentGroup(const GroupDef *def) void GroupDef::addParentGroup(const GroupDef *def)
...@@ -382,6 +382,8 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -382,6 +382,8 @@ void GroupDef::writeDocumentation(OutputList &ol)
} }
ol.startMemberSections(); ol.startMemberSections();
// write list of files
if (fileList->count()>0) if (fileList->count()>0)
{ {
ol.startMemberHeader(); ol.startMemberHeader();
...@@ -411,6 +413,8 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -411,6 +413,8 @@ void GroupDef::writeDocumentation(OutputList &ol)
} }
ol.endMemberList(); ol.endMemberList();
} }
// write list of namespaces
if (namespaceList->count()>0) if (namespaceList->count()>0)
{ {
ol.startMemberHeader(); ol.startMemberHeader();
...@@ -440,6 +444,8 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -440,6 +444,8 @@ void GroupDef::writeDocumentation(OutputList &ol)
} }
ol.endMemberList(); ol.endMemberList();
} }
// write list of groups
if (groupList->count()>0) if (groupList->count()>0)
{ {
ol.startMemberHeader(); ol.startMemberHeader();
...@@ -469,8 +475,10 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -469,8 +475,10 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol.endMemberList(); ol.endMemberList();
} }
// write list of classes
classSDict->writeDeclaration(ol); classSDict->writeDeclaration(ol);
// write list of members
if (allMemberList->count()>0) if (allMemberList->count()>0)
{ {
/* write user defined member groups */ /* write user defined member groups */
......
...@@ -100,6 +100,12 @@ class GroupDef : public Definition ...@@ -100,6 +100,12 @@ class GroupDef : public Definition
/* user defined member groups */ /* user defined member groups */
MemberGroupSDict *memberGroupSDict; MemberGroupSDict *memberGroupSDict;
FileList * getFiles() const { return fileList; }
ClassSDict * getClasses() const { return classSDict; }
NamespaceList * getNamespaces() const { return namespaceList; }
GroupList * getSubGroups() const { return groupList; }
PageSDict * getPages() const { return pageDict; }
protected: protected:
void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const); void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
......
...@@ -2338,14 +2338,14 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel) ...@@ -2338,14 +2338,14 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
// write subgroups // write subgroups
if (hasSubGroups) if (hasSubGroups)
{ {
ol.startItemList(); ol.startIndexList();
QListIterator<GroupDef> gli(*gd->groupList); QListIterator<GroupDef> gli(*gd->groupList);
GroupDef *subgd = 0; GroupDef *subgd = 0;
for (gli.toLast();(subgd=gli.current());--gli) for (gli.toLast();(subgd=gli.current());--gli)
{ {
writeGroupTreeNode(ol,subgd,TRUE); writeGroupTreeNode(ol,subgd,TRUE);
} }
ol.endItemList(); ol.endIndexList();
} }
...@@ -2544,14 +2544,14 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel) ...@@ -2544,14 +2544,14 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
void writeGroupHierarchy(OutputList &ol) void writeGroupHierarchy(OutputList &ol)
{ {
ol.startItemList(); ol.startIndexList();
GroupSDict::Iterator gli(Doxygen::groupSDict); GroupSDict::Iterator gli(Doxygen::groupSDict);
GroupDef *gd; GroupDef *gd;
for (gli.toFirst();(gd=gli.current());++gli) for (gli.toFirst();(gd=gli.current());++gli)
{ {
writeGroupTreeNode(ol,gd,FALSE); writeGroupTreeNode(ol,gd,FALSE);
} }
ol.endItemList(); ol.endIndexList();
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
......
...@@ -23,6 +23,7 @@ HEADERS = bufstr.h \ ...@@ -23,6 +23,7 @@ HEADERS = bufstr.h \
constexp.h \ constexp.h \
cppvalue.h \ cppvalue.h \
debug.h \ debug.h \
defgen.h \
doxygen.h \ doxygen.h \
scanner.h \ scanner.h \
doc.h \ doc.h \
...@@ -92,7 +93,7 @@ HEADERS = bufstr.h \ ...@@ -92,7 +93,7 @@ HEADERS = bufstr.h \
unistd.h \ unistd.h \
util.h \ util.h \
version.h \ version.h \
xmlgen.h xmlgen.h
SOURCES = ce_lex.cpp \ SOURCES = ce_lex.cpp \
ce_parse.cpp \ ce_parse.cpp \
classdef.cpp \ classdef.cpp \
...@@ -100,6 +101,7 @@ SOURCES = ce_lex.cpp \ ...@@ -100,6 +101,7 @@ SOURCES = ce_lex.cpp \
code.cpp \ code.cpp \
cppvalue.cpp \ cppvalue.cpp \
debug.cpp \ debug.cpp \
defgen.cpp \
declinfo.cpp \ declinfo.cpp \
defargs.cpp \ defargs.cpp \
define.cpp \ define.cpp \
...@@ -143,7 +145,7 @@ SOURCES = ce_lex.cpp \ ...@@ -143,7 +145,7 @@ SOURCES = ce_lex.cpp \
translator.cpp \ translator.cpp \
util.cpp \ util.cpp \
version.cpp \ version.cpp \
xmlgen.cpp xmlgen.cpp
win32:TMAKE_CXXFLAGS += -DQT_NODLL win32:TMAKE_CXXFLAGS += -DQT_NODLL
win32-msvc:TMAKE_CXXFLAGS += -Zm200 win32-msvc:TMAKE_CXXFLAGS += -Zm200
......
...@@ -73,6 +73,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -73,6 +73,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
const QCString &scopeName,MemberDef *md) const QCString &scopeName,MemberDef *md)
{ {
ArgumentList *argList=md->argumentList(); ArgumentList *argList=md->argumentList();
//printf("writeDefArgumentList `%s' %p\n",md->name().data(),argList);
if (argList==0) return; // member has no function like argument list if (argList==0) return; // member has no function like argument list
if (!md->isDefine()) ol.docify(" "); if (!md->isDefine()) ol.docify(" ");
...@@ -442,28 +443,6 @@ QCString MemberDef::getOutputFileBase() const ...@@ -442,28 +443,6 @@ QCString MemberDef::getOutputFileBase() const
return "dummy"; return "dummy";
} }
//void MemberDef::setScopeDefTemplateArguments(ArgumentList *tal)
//{
// // copy function arguments (if any)
// if (tal)
// {
// scopeTAL = new ArgumentList;
// scopeTAL->setAutoDelete(TRUE);
// copyArgumentList(tal,scopeTAL);
// }
//}
//
//void MemberDef::setMemberDefTemplateArguments(ArgumentList *tal)
//{
// // copy function arguments (if any)
// if (tal)
// {
// membTAL = new ArgumentList;
// membTAL->setAutoDelete(TRUE);
// copyArgumentList(tal,membTAL);
// }
//}
void MemberDef::setDefinitionTemplateParameterLists(QList<ArgumentList> *lists) void MemberDef::setDefinitionTemplateParameterLists(QList<ArgumentList> *lists)
{ {
if (lists) if (lists)
...@@ -962,6 +941,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -962,6 +941,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if (scopeName) doxyName.prepend((QCString)scopeName+"::"); if (scopeName) doxyName.prepend((QCString)scopeName+"::");
QCString ldef = definition(); QCString ldef = definition();
//printf("member `%s' def=`%s'\n",name().data(),ldef.data());
if (isEnumerate()) if (isEnumerate())
{ {
if (name().at(0)=='@') if (name().at(0)=='@')
...@@ -1090,10 +1070,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1090,10 +1070,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol.startMemberDocName(); ol.startMemberDocName();
linkifyText(TextGeneratorOLImpl(ol),scopeName,name(),ldef); linkifyText(TextGeneratorOLImpl(ol),scopeName,name(),ldef);
writeDefArgumentList(ol,cd,scopeName,this); writeDefArgumentList(ol,cd,scopeName,this);
if (hasOneLineInitializer() if (hasOneLineInitializer()) // add initializer
//!init.isEmpty() && initLines==0 && // one line initializer
// ((maxInitLines>0 && userInitLines==-1) || userInitLines>0) // enabled by default or explicitly
) // add initializer
{ {
if (!isDefine()) if (!isDefine())
{ {
...@@ -1566,19 +1543,6 @@ QCString MemberDef::getScopeString() const ...@@ -1566,19 +1543,6 @@ QCString MemberDef::getScopeString() const
return result; return result;
} }
//Definition *MemberDef::getCompoundDef() const
//{
// NamespaceDef *nd=getNamespaceDef();
// ClassDef *cd=getClassDef();
// FileDef *fd=getFileDef();
// GroupDef *gd=getGroupDef();
// Definition *d = 0;
// if (cd) d=cd; else if (nd) d=nd; else if (gd) d=gd; else d=fd;
// ASSERT(d!=0);
// return d;
//}
QCString MemberDef::anchor() const QCString MemberDef::anchor() const
{ {
if (m_templateMaster) return m_templateMaster->anchor(); if (m_templateMaster) return m_templateMaster->anchor();
...@@ -1649,7 +1613,7 @@ MemberDef *MemberDef::createTemplateInstanceMember( ...@@ -1649,7 +1613,7 @@ MemberDef *MemberDef::createTemplateInstanceMember(
); );
imd->argList = actualArgList; imd->argList = actualArgList;
imd->def = substituteTemplateArgumentsInString(def,formalArgs,actualArgs); imd->def = substituteTemplateArgumentsInString(def,formalArgs,actualArgs);
// TODO: init other member variables. // TODO: init other member variables (if needed).
return imd; return imd;
} }
...@@ -1690,7 +1654,16 @@ void MemberDef::addListReference(Definition *d) ...@@ -1690,7 +1654,16 @@ void MemberDef::addListReference(Definition *d)
{ {
memLabel=theTranslator->trMember(TRUE,TRUE); memLabel=theTranslator->trMember(TRUE,TRUE);
} }
QCString memName = name();
if (!Config_getBool("HIDE_SCOPE_NAMES"))
{
Definition *pd=getOuterScope();
if (pd && pd!=Doxygen::globalScope)
{
memName.prepend(pd->name()+"::");
}
}
addRefItem(todoId(),testId(),bugId(),memLabel, addRefItem(todoId(),testId(),bugId(),memLabel,
d->getOutputFileBase()+":"+anchor(),name(),argsString()); d->getOutputFileBase()+":"+anchor(),memName,argsString());
} }
...@@ -196,10 +196,6 @@ class MemberDef : public Definition ...@@ -196,10 +196,6 @@ class MemberDef : public Definition
argList = al; argList = al;
} }
ArgumentList *templateArguments() const { return tArgList; } ArgumentList *templateArguments() const { return tArgList; }
//void setScopeDefTemplateArguments(ArgumentList *t);
//ArgumentList *scopeDefTemplateArguments() const { return scopeTAL; }
//void setMemberDefTemplateArguments(ArgumentList *t);
//ArgumentList *memberDefTemplateArguments() const { return membTAL; }
void setDefinitionTemplateParameterLists(QList<ArgumentList> *lists); void setDefinitionTemplateParameterLists(QList<ArgumentList> *lists);
QList<ArgumentList> *definitionTemplateParameterLists() const QList<ArgumentList> *definitionTemplateParameterLists() const
{ return m_defTmpArgLists; } { return m_defTmpArgLists; }
......
...@@ -91,13 +91,6 @@ class MemberGroupListIterator : public QListIterator<MemberGroup> ...@@ -91,13 +91,6 @@ class MemberGroupListIterator : public QListIterator<MemberGroup>
QListIterator<MemberGroup>(l) {} QListIterator<MemberGroup>(l) {}
}; };
class MemberGroupDict : public QIntDict<MemberGroup>
{
public:
MemberGroupDict(int size) : QIntDict<MemberGroup>(size) {}
~MemberGroupDict() {}
};
class MemberGroupSDict : public SIntDict<MemberGroup> class MemberGroupSDict : public SIntDict<MemberGroup>
{ {
public: public:
...@@ -105,12 +98,19 @@ class MemberGroupSDict : public SIntDict<MemberGroup> ...@@ -105,12 +98,19 @@ class MemberGroupSDict : public SIntDict<MemberGroup>
~MemberGroupSDict() {} ~MemberGroupSDict() {}
}; };
class MemberGroupDictIterator : public QIntDictIterator<MemberGroup> //class MemberGroupDict : public QIntDict<MemberGroup>
{ //{
public: // public:
MemberGroupDictIterator(const MemberGroupDict &d) : // MemberGroupDict(int size) : QIntDict<MemberGroup>(size) {}
QIntDictIterator<MemberGroup>(d) {} // ~MemberGroupDict() {}
~MemberGroupDictIterator() {} //};
};
//class MemberGroupDictIterator : public QIntDictIterator<MemberGroup>
//{
// public:
// MemberGroupDictIterator(const MemberGroupDict &d) :
// QIntDictIterator<MemberGroup>(d) {}
// ~MemberGroupDictIterator() {}
//};
#endif #endif
...@@ -147,7 +147,7 @@ class NamespaceDict : public QDict<NamespaceDef> ...@@ -147,7 +147,7 @@ class NamespaceDict : public QDict<NamespaceDef>
class NamespaceSDict : public SDict<NamespaceDef> class NamespaceSDict : public SDict<NamespaceDef>
{ {
public: public:
NamespaceSDict(int size) : SDict<NamespaceDef>(size) {} NamespaceSDict(int size=17) : SDict<NamespaceDef>(size) {}
~NamespaceSDict() {} ~NamespaceSDict() {}
int compareItems(GCI item1,GCI item2) int compareItems(GCI item1,GCI item2)
{ {
......
...@@ -272,7 +272,7 @@ class BaseOutputDocInterface ...@@ -272,7 +272,7 @@ class BaseOutputDocInterface
class OutputGenerator : public BaseOutputDocInterface class OutputGenerator : public BaseOutputDocInterface
{ {
public: public:
enum OutputType { Html, Latex, Man, RTF, XML }; enum OutputType { Html, Latex, Man, RTF, XML, DEF };
OutputGenerator(); OutputGenerator();
virtual ~OutputGenerator(); virtual ~OutputGenerator();
......
...@@ -832,6 +832,8 @@ Define *newDefine() ...@@ -832,6 +832,8 @@ Define *newDefine()
void addDefine() void addDefine()
{ {
//printf("addDefine %s %s\n",g_defName.data(),g_defArgsStr.data()); //printf("addDefine %s %s\n",g_defName.data(),g_defArgsStr.data());
//ArgumentList *al = new ArgumentList;
//stringToArgumentList(g_defArgsStr,al);
MemberDef *md=new MemberDef( MemberDef *md=new MemberDef(
g_yyFileName,g_yyLineNr, g_yyFileName,g_yyLineNr,
"#define",g_defName,g_defArgsStr,0, "#define",g_defName,g_defArgsStr,0,
......
...@@ -76,6 +76,7 @@ static int lastInitializerContext; ...@@ -76,6 +76,7 @@ static int lastInitializerContext;
static int lastClassTemplSpecContext; static int lastClassTemplSpecContext;
static int lastSkipHtmlCommentContext; static int lastSkipHtmlCommentContext;
static int lastIfContext; static int lastIfContext;
static int lastInternalDocContext;
static int nextDefContext; static int nextDefContext;
static int overloadContext; static int overloadContext;
static Protection protection; static Protection protection;
...@@ -135,7 +136,7 @@ static QCString *copyArgString; ...@@ -135,7 +136,7 @@ static QCString *copyArgString;
static QCString fullArgString; static QCString fullArgString;
static ArgumentList *currentArgumentList; static ArgumentList *currentArgumentList;
static QCString *currentTemplateSpec; //static QCString *currentTemplateSpec;
static char lastCopyArgChar; static char lastCopyArgChar;
static QCString *pCopyRoundString; static QCString *pCopyRoundString;
static QCString *pCopyCurlyString; static QCString *pCopyCurlyString;
...@@ -525,6 +526,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -525,6 +526,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
%x ClassDocBrief %x ClassDocBrief
%x ClassDocOverload %x ClassDocOverload
%x ClassDefineArgs %x ClassDefineArgs
%x DocInternal
%x DocInternalLine
%x DocBaseClass %x DocBaseClass
%x CppQuote %x CppQuote
%x EndCppQuote %x EndCppQuote
...@@ -1034,15 +1037,10 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1034,15 +1037,10 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
sharpCount=0; sharpCount=0;
lineCount(); lineCount();
addType( current ); addType( current );
//if (current->mtArgList && current->tArgList==0)
//{
// current->tArgList=current->mtArgList;
// current->mtArgList=0;
//}
current->name=yytext; current->name=yytext;
current->name=current->name.stripWhiteSpace(); current->name=current->name.stripWhiteSpace();
current->scopeSpec.resize(0); //current->scopeSpec.resize(0);
currentTemplateSpec = &current->scopeSpec; // currentTemplateSpec = &current->scopeSpec;
if (nameIsOperator(current->name)) if (nameIsOperator(current->name))
BEGIN( Operator ); BEGIN( Operator );
else else
...@@ -1052,8 +1050,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1052,8 +1050,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
sharpCount=0; sharpCount=0;
lineCount(); lineCount();
current->name+=((QCString)yytext).stripWhiteSpace(); current->name+=((QCString)yytext).stripWhiteSpace();
current->memberSpec.resize(0); //current->memberSpec.resize(0);
currentTemplateSpec = &current->memberSpec; // currentTemplateSpec = &current->memberSpec;
if (nameIsOperator(current->name)) if (nameIsOperator(current->name))
BEGIN( Operator ); BEGIN( Operator );
else else
...@@ -1061,20 +1059,20 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1061,20 +1059,20 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
<EndTemplate>"<<" { <EndTemplate>"<<" {
current->name+=yytext; current->name+=yytext;
*currentTemplateSpec+=yytext; // *currentTemplateSpec+=yytext;
} }
<EndTemplate>"<" { <EndTemplate>"<" {
current->name+='<'; current->name+='<';
*currentTemplateSpec+='<'; // *currentTemplateSpec+='<';
sharpCount++; sharpCount++;
} }
<EndTemplate>">>" { <EndTemplate>">>" {
current->name+=yytext; current->name+=yytext;
*currentTemplateSpec+=yytext; // *currentTemplateSpec+=yytext;
} }
<EndTemplate>">" { <EndTemplate>">" {
current->name+='>'; current->name+='>';
*currentTemplateSpec+='>'; // *currentTemplateSpec+='>';
if (--sharpCount<=0) if (--sharpCount<=0)
{ {
//printf("Found %s\n",current->name.data()); //printf("Found %s\n",current->name.data());
...@@ -1084,7 +1082,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1084,7 +1082,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<EndTemplate>">"{BN}*"(" { <EndTemplate>">"{BN}*"(" {
lineCount(); lineCount();
current->name+='>'; current->name+='>';
*currentTemplateSpec+='>'; // *currentTemplateSpec+='>';
if (--sharpCount<=0) if (--sharpCount<=0)
{ {
current->args = "("; current->args = "(";
...@@ -1098,7 +1096,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1098,7 +1096,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<EndTemplate>">"{BN}*/"::" { <EndTemplate>">"{BN}*/"::" {
lineCount(); lineCount();
current->name+='>'; current->name+='>';
*currentTemplateSpec+='>'; // *currentTemplateSpec+='>';
if (--sharpCount<=0) if (--sharpCount<=0)
{ {
BEGIN(FindMemberName); BEGIN(FindMemberName);
...@@ -1106,7 +1104,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1106,7 +1104,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
<EndTemplate>. { <EndTemplate>. {
current->name+=*yytext; current->name+=*yytext;
*currentTemplateSpec+=*yytext; // *currentTemplateSpec+=*yytext;
} }
<FindMembers,FindMemberName>{SCOPENAME} { <FindMembers,FindMemberName>{SCOPENAME} {
lineCount(); lineCount();
...@@ -1203,11 +1201,17 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1203,11 +1201,17 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<SkipCPP>[\r]*\n[\r]* { yyLineNr++ ; <SkipCPP>[\r]*\n[\r]* { yyLineNr++ ;
BEGIN( lastCPPContext) ; BEGIN( lastCPPContext) ;
} }
<Define>{ID}/"(" { <Define>{ID}{B}*"(" {
current->bodyLine = yyLineNr;
current->name = yytext; current->name = yytext;
BEGIN( DefineArg ); current->name = current->name.left(current->name.length()-1).stripWhiteSpace();
current->args = "(";
current->bodyLine = yyLineNr;
currentArgumentContext = DefineEnd;
fullArgString=current->args.copy();
copyArgString=&current->args;
BEGIN( ReadFuncArgType ) ;
} }
/*
<DefineArg>")" { <DefineArg>")" {
//printf("Define with args\n"); //printf("Define with args\n");
current->args += ')'; current->args += ')';
...@@ -1216,6 +1220,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1216,6 +1220,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<DefineArg>. { <DefineArg>. {
current->args += *yytext; current->args += *yytext;
} }
*/
<Define>{ID} { <Define>{ID} {
//printf("Define `%s' without args\n",yytext); //printf("Define `%s' without args\n",yytext);
current->bodyLine = yyLineNr; current->bodyLine = yyLineNr;
...@@ -2849,21 +2854,21 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -2849,21 +2854,21 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->section = Entry::GROUPDOC_SEC; current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
current->groupdoctype = Entry::GROUPDOC_NORMAL; current->groupDocType = Entry::GROUPDOC_NORMAL;
BEGIN( GroupDocArg1 ); BEGIN( GroupDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"addtogroup"{B}+ { <Doc,JavaDoc>{B}*{CMD}"addtogroup"{B}+ {
current->section = Entry::GROUPDOC_SEC; current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
current->groupdoctype = Entry::GROUPDOC_ADD; current->groupDocType = Entry::GROUPDOC_ADD;
BEGIN( GroupDocArg1 ); BEGIN( GroupDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"weakgroup"{B}+ { <Doc,JavaDoc>{B}*{CMD}"weakgroup"{B}+ {
current->section = Entry::GROUPDOC_SEC; current->section = Entry::GROUPDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
current->groupdoctype = Entry::GROUPDOC_WEAK; current->groupDocType = Entry::GROUPDOC_WEAK;
BEGIN( GroupDocArg1 ); BEGIN( GroupDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"namespace"{B}+ { <Doc,JavaDoc>{B}*{CMD}"namespace"{B}+ {
...@@ -3139,7 +3144,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3139,7 +3144,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<GroupDocArg1>{ID}(".html"?) { <GroupDocArg1>{ID}(".html"?) {
current->name = yytext; current->name = yytext;
lastDefGroup.groupname = yytext; lastDefGroup.groupname = yytext;
lastDefGroup.pri = current->groupingpri(); lastDefGroup.pri = current->groupingPri();
// the .html stuff is for Qt compatibility // the .html stuff is for Qt compatibility
if (current->name.right(5)==".html") if (current->name.right(5)==".html")
current->name=current->name.left(current->name.length()-5); current->name=current->name.left(current->name.length()-5);
...@@ -3149,7 +3154,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3149,7 +3154,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<GroupDocArg1>"\n" { <GroupDocArg1>"\n" {
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: missing group name after %s", "Warning: missing group name after %s",
current->groupdoccmd() current->groupDocCmd()
); );
yyLineNr++; yyLineNr++;
BEGIN( Doc ); BEGIN( Doc );
...@@ -3165,7 +3170,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3165,7 +3170,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->type = current->type.stripWhiteSpace(); current->type = current->type.stripWhiteSpace();
} }
<GroupDocArg2>"\n" { <GroupDocArg2>"\n" {
if( current->groupdoctype == Entry::GROUPDOC_NORMAL && if( current->groupDocType == Entry::GROUPDOC_NORMAL &&
current->type.length() == 0 ) current->type.length() == 0 )
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: missing title after " "Warning: missing title after "
...@@ -3417,7 +3422,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3417,7 +3422,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
if (current->section==Entry::GROUPDOC_SEC ) if (current->section==Entry::GROUPDOC_SEC )
{ {
autoGroupStack.push(new Grouping(current->name, autoGroupStack.push(new Grouping(current->name,
current->groupingpri() current->groupingPri()
)); ));
} }
else if (current->section == Entry::MEMBERGRP_SEC) else if (current->section == Entry::MEMBERGRP_SEC)
...@@ -3899,12 +3904,42 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3899,12 +3904,42 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN(lastAfterDocContext); BEGIN(lastAfterDocContext);
} }
<AfterDocBrief>"."/{BN} { BEGIN(AfterDoc); } <AfterDocBrief>"."/{BN} { BEGIN(AfterDoc); }
<LineDoc,AfterDocBrief,AfterDocLine>{CMD}"internal" { <LineDoc,AfterDocLine>{CMD}"internal" {
current->brief+="\\internal"; if (!Config_getBool("INTERNAL_DOCS"))
{
lastInternalDocContext = YY_START;
BEGIN( DocInternalLine );
}
else
{
current->doc+="\\internal";
}
} }
<Doc,AfterDoc>{CMD}"internal" { <Doc,JavaDoc,ExampleDoc,PageDoc,ClassDoc,AfterDoc>{CMD}"internal" {
current->doc+="\\internal"; if (!Config_getBool("INTERNAL_DOCS"))
{
lastInternalDocContext = YY_START;
BEGIN( DocInternal );
}
else
{
current->doc+="\\internal";
}
} }
<DocInternal>.
<DocInternal>\n { yyLineNr++; }
<DocInternal>"/*"|"//"
<DocInternal>"*/" {
unput('/');
unput('*');
BEGIN( lastInternalDocContext );
}
<DocInternalLine>.
<DocInternalLine>\n {
yyLineNr++;
unput('\n');
BEGIN( lastInternalDocContext );
}
<AfterDoc>{CMD}"brief" { BEGIN(AfterDocBrief); } <AfterDoc>{CMD}"brief" { BEGIN(AfterDocBrief); }
<AfterDoc>"/*"|"//" { current->doc+=yytext; } <AfterDoc>"/*"|"//" { current->doc+=yytext; }
<AfterDoc>^{B}*"*"+/[^/] <AfterDoc>^{B}*"*"+/[^/]
......
This diff is collapsed.
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
* *
* VERSION HISTORY * VERSION HISTORY
* --------------- * ---------------
* 003 23 november 2001
* - Removed some obsolete methods (latexBabelPackage, trAuthor, trAuthors and trFiles)
* 002 19 november 2001 * 002 19 november 2001
* ! Updated for doxygen v1.2.12 * ! Updated for doxygen v1.2.12
* 001 20 july 2001 * 001 20 july 2001
...@@ -61,10 +63,6 @@ class TranslatorPortuguese : public Translator ...@@ -61,10 +63,6 @@ class TranslatorPortuguese : public Translator
virtual QCString latexLanguageSupportCommand() virtual QCString latexLanguageSupportCommand()
{ return "Portuguese"; } { return "Portuguese"; }
/*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage()
{ return "portuguese"; }
/*! return the language charset. This will be used for the HTML output */ /*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset() virtual QCString idLanguageCharset()
{ return "iso-8859-1"; } { return "iso-8859-1"; }
...@@ -449,10 +447,6 @@ class TranslatorPortuguese : public Translator ...@@ -449,10 +447,6 @@ class TranslatorPortuguese : public Translator
QCString trEnumerationValues() QCString trEnumerationValues()
{ return "Valores da enumeração"; } { return "Valores da enumeração"; }
/*! This is used in man pages as the author section. */
QCString trAuthor()
{ return "Autor"; }
/*! This is used in the documentation of a file before the list of /*! This is used in the documentation of a file before the list of
* documentation blocks for defines * documentation blocks for defines
*/ */
...@@ -510,12 +504,6 @@ class TranslatorPortuguese : public Translator ...@@ -510,12 +504,6 @@ class TranslatorPortuguese : public Translator
} }
} }
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
QCString trFiles()
{ return "Ficheiros"; }
/*! This is used in the standard footer of each page and indicates when /*! This is used in the standard footer of each page and indicates when
* the page was generated * the page was generated
*/ */
...@@ -564,10 +552,6 @@ class TranslatorPortuguese : public Translator ...@@ -564,10 +552,6 @@ class TranslatorPortuguese : public Translator
QCString trDate() QCString trDate()
{ return "Data"; } { return "Data"; }
/*! this text is generated when the \\author command is used. */
QCString trAuthors()
{ return "Autor(es)"; }
/*! this text is generated when the \\return command is used. */ /*! this text is generated when the \\return command is used. */
QCString trReturns() QCString trReturns()
{ return "Retorna"; } { return "Retorna"; }
......
...@@ -842,7 +842,7 @@ QCString argListToString(ArgumentList *al) ...@@ -842,7 +842,7 @@ QCString argListToString(ArgumentList *al)
QCString tempArgListToString(ArgumentList *al) QCString tempArgListToString(ArgumentList *al)
{ {
QCString result; QCString result;
if (!al || al->count()==0) return result; if (al==0) return result;
result="<"; result="<";
Argument *a=al->first(); Argument *a=al->first();
while (a) while (a)
......
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
#include "doc.h" #include "doc.h"
#include "dot.h" #include "dot.h"
#include "code.h" #include "code.h"
#include "page.h"
#include "filename.h"
#include <qdir.h> #include <qdir.h>
#include <qfile.h> #include <qfile.h>
...@@ -164,6 +166,7 @@ template<class T> class ValStack ...@@ -164,6 +166,7 @@ template<class T> class ValStack
* Its methods are called when some XML text or markup * Its methods are called when some XML text or markup
* needs to be written. * needs to be written.
*/ */
// TODO: htmlonly, latexonly
class XMLGenerator : public OutputDocInterface class XMLGenerator : public OutputDocInterface
{ {
public: public:
...@@ -228,7 +231,8 @@ class XMLGenerator : public OutputDocInterface ...@@ -228,7 +231,8 @@ class XMLGenerator : public OutputDocInterface
void writeString(const char *text) void writeString(const char *text)
{ {
startParMode(); startParMode();
m_t << text; //m_t << text;
docify(text);
} }
void startItemList() void startItemList()
{ {
...@@ -823,6 +827,8 @@ static void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def) ...@@ -823,6 +827,8 @@ static void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def)
// + source references // + source references
// + source referenced by // + source referenced by
// - body code // - body code
// - template arguments
// (templateArguments(), definitionTemplateParameterLists())
if (md->memberType()==MemberDef::EnumValue) return; if (md->memberType()==MemberDef::EnumValue) return;
...@@ -1115,11 +1121,11 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t) ...@@ -1115,11 +1121,11 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t)
// + detailed description // + detailed description
// - template arguments // - template arguments
// - include file // - include file
// - member groups // + member groups
// + inheritance diagram // + inheritance diagram
// + list of direct super classes // + list of direct super classes
// + list of direct sub classes // + list of direct sub classes
// - list of inner classes // + list of inner classes
// + collaboration diagram // + collaboration diagram
// - list of all members // - list of all members
// + user defined member sections // + user defined member sections
...@@ -1188,6 +1194,17 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t) ...@@ -1188,6 +1194,17 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t)
} }
} }
ClassSDict *cl = cd->getInnerClasses();
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict); MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
...@@ -1247,9 +1264,9 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t) ...@@ -1247,9 +1264,9 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t)
static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &t) static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &t)
{ {
// - contained class definitions // + contained class definitions
// - contained namespace definitions // + contained namespace definitions
// - member groups // + member groups
// + normal members // + normal members
// + brief desc // + brief desc
// + detailed desc // + detailed desc
...@@ -1263,6 +1280,28 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &t) ...@@ -1263,6 +1280,28 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &t)
writeXMLString(t,nd->name()); writeXMLString(t,nd->name());
t << "</compoundname>" << endl; t << "</compoundname>" << endl;
ClassSDict *cl = nd->classSDict;
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
NamespaceSDict *nl = nd->namespaceSDict;
if (nl)
{
NamespaceSDict::Iterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli)
{
t << " <innernamespace refid=\"" << nd->getOutputFileBase()
<< "\">" << convertToXML(nd->name()) << "</innernamespace>" << endl;
}
}
MemberGroupSDict::Iterator mgli(*nd->memberGroupSDict); MemberGroupSDict::Iterator mgli(*nd->memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
...@@ -1295,9 +1334,9 @@ static void generateXMLForFile(FileDef *fd,QTextStream &t) ...@@ -1295,9 +1334,9 @@ static void generateXMLForFile(FileDef *fd,QTextStream &t)
// + includedby files // + includedby files
// + include graph // + include graph
// + included by graph // + included by graph
// - contained class definitions // + contained class definitions
// - contained namespace definitions // + contained namespace definitions
// - member groups // + member groups
// + normal members // + normal members
// + brief desc // + brief desc
// + detailed desc // + detailed desc
...@@ -1356,6 +1395,29 @@ static void generateXMLForFile(FileDef *fd,QTextStream &t) ...@@ -1356,6 +1395,29 @@ static void generateXMLForFile(FileDef *fd,QTextStream &t)
t << " </invincdepgraph>" << endl; t << " </invincdepgraph>" << endl;
} }
ClassSDict *cl = fd->classSDict;
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
NamespaceSDict *nl = fd->namespaceSDict;
if (nl)
{
NamespaceSDict::Iterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli)
{
t << " <innernamespace refid=\"" << nd->getOutputFileBase()
<< "\">" << convertToXML(nd->name()) << "</innernamespace>" << endl;
}
}
MemberGroupSDict::Iterator mgli(*fd->memberGroupSDict); MemberGroupSDict::Iterator mgli(*fd->memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
...@@ -1383,6 +1445,113 @@ static void generateXMLForFile(FileDef *fd,QTextStream &t) ...@@ -1383,6 +1445,113 @@ static void generateXMLForFile(FileDef *fd,QTextStream &t)
t << " </compounddef>" << endl; t << " </compounddef>" << endl;
} }
static void generateXMLForGroup(GroupDef *gd,QTextStream &t)
{
// + members
// + member groups
// + files
// + classes
// + namespaces
// - packages
// + pages
// + child groups
// - examples
// + brief description
// + detailed description
t << " <compounddef id=\""
<< gd->getOutputFileBase() << "\" kind=\"group\">" << endl;
t << " <name>" << convertToXML(gd->name()) << "</name>" << endl;
t << " <title>" << convertToXML(gd->groupTitle()) << "</title>" << endl;
FileList *fl = gd->getFiles();
if (fl)
{
QListIterator<FileDef> fli(*fl);
FileDef *fd = fl->first();
for (fli.toFirst();(fd=fli.current());++fli)
{
t << " <innerfile refid=\"" << fd->getOutputFileBase()
<< "\">" << convertToXML(fd->name()) << "</innerfile>" << endl;
}
}
ClassSDict *cl = gd->getClasses();
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
NamespaceList *nl = gd->getNamespaces();
if (nl)
{
NamespaceListIterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli)
{
t << " <innernamespace refid=\"" << nd->getOutputFileBase()
<< "\">" << convertToXML(nd->name()) << "</innernamespace>" << endl;
}
}
PageSDict *pl = gd->getPages();
if (pl)
{
PageSDict::Iterator pli(*pl);
PageInfo *pi;
for (pli.toFirst();(pi=pli.current());++pli)
{
t << " <innerpage refid=\"" << pi->getOutputFileBase()
<< "\"/>" << convertToXML(pi->title) << "</innerpage>" << endl;
}
}
MemberGroupSDict::Iterator mgli(*gd->memberGroupSDict);
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
{
generateXMLSection(gd,t,mg->members(),"user-defined",mg->header());
}
generateXMLSection(gd,t,&gd->decDefineMembers,"define");
generateXMLSection(gd,t,&gd->decProtoMembers,"prototype");
generateXMLSection(gd,t,&gd->decTypedefMembers,"typedef");
generateXMLSection(gd,t,&gd->decEnumMembers,"enum");
generateXMLSection(gd,t,&gd->decFuncMembers,"func");
generateXMLSection(gd,t,&gd->decVarMembers,"var");
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,gd->getDefFileName(),gd->getDefLine(),0,0,gd->briefDescription());
t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,gd->getDefFileName(),gd->getDefLine(),0,0,gd->documentation());
t << " </detaileddescription>" << endl;
t << " </compounddef>" << endl;
}
static void generateXMLForPage(PageInfo *pi,QTextStream &t)
{
// + name
// + title
// + documentation
t << " <compounddef id=\"";
if (Config_getBool("CASE_SENSE_NAMES")) t << pi->name; else t << pi->name.lower();
t << "\">" << endl;
t << " <name>" << pi->name << "</name>" << endl;
SectionInfo *si = Doxygen::sectionDict.find(pi->name);
if (si)
{
t << " <title>" << si->title << "</title>" << endl;
}
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,pi->defFileName,pi->defLine,0,0,pi->doc);
t << " </detaileddescription>" << endl;
t << " </compounddef>" << endl;
}
void generateXML() void generateXML()
{ {
...@@ -1391,8 +1560,9 @@ void generateXML() ...@@ -1391,8 +1560,9 @@ void generateXML()
// + namespaces // + namespaces
// + files // + files
// - packages // - packages
// - groups // + groups
// - related pages // + related pages
// - examples
QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY"); QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY");
if (outputDirectory.isEmpty()) if (outputDirectory.isEmpty())
...@@ -1475,6 +1645,19 @@ void generateXML() ...@@ -1475,6 +1645,19 @@ void generateXML()
generateXMLForFile(fd,t); generateXMLForFile(fd,t);
} }
} }
GroupSDict::Iterator gli(Doxygen::groupSDict);
GroupDef *gd;
for (;(gd=gli.current());++gli)
{
generateXMLForGroup(gd,t);
}
PageSDict::Iterator pdi(*Doxygen::pageSDict);
PageInfo *pi=0;
for (pdi.toFirst();(pi=pdi.current());++pdi)
{
generateXMLForPage(pi,t);
}
//t << " </compoundlist>" << endl; //t << " </compoundlist>" << endl;
} }
t << "</doxygen>" << endl; t << "</doxygen>" << endl;
......
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