Commit 457ca5c2 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.16-20020707

parent 977ad9d3
DOXYGEN Version 1.2.16-20020630 DOXYGEN Version 1.2.16-20020707
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (30 June 2002) Dimitri van Heesch (07 July 2002)
DOXYGEN Version 1.2.16_20020630 DOXYGEN Version 1.2.16_20020707
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) (30 June 2002) Dimitri van Heesch (dimitri@stack.nl) (07 July 2002)
1.2.16-20020630 1.2.16-20020707
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "graphhandler.h" #include "graphhandler.h"
#include "debug.h" #include "debug.h"
class ErrorHandler : public QXmlErrorHandler class ErrorHandler : public QXmlErrorHandler
{ {
public: public:
......
...@@ -240,6 +240,10 @@ if test "$f_wizard" = YES; then ...@@ -240,6 +240,10 @@ if test "$f_wizard" = YES; then
echo "QTDIR is set, but include directory does not exist!" echo "QTDIR is set, but include directory does not exist!"
exit 2 exit 2
fi fi
if test ! -x "$QTDIR/bin/moc"; then
echo "QTDIR is set, but the moc tool could not be found in $QTDIR/bin!"
exit 2
fi
echo " headers $QTDIR/include," echo " headers $QTDIR/include,"
echo " libraries $QTDIR/lib" echo " libraries $QTDIR/lib"
fi fi
...@@ -411,6 +415,12 @@ EOF ...@@ -411,6 +415,12 @@ EOF
EOF EOF
fi fi
fi fi
if test "$f_wizard" = YES; then
cat >> .tmakeconfig <<EOF
TMAKE_MOC = $QTDIR/bin/moc
EOF
fi
#if test "$f_platform" = "win32-g++"; then #if test "$f_platform" = "win32-g++"; then
# cat >> .tmakeconfig <<EOF # cat >> .tmakeconfig <<EOF
......
...@@ -325,14 +325,21 @@ doxygen. Unrecognized commands are treated as normal text. ...@@ -325,14 +325,21 @@ doxygen. Unrecognized commands are treated as normal text.
\addindex \fn \addindex \fn
Indicates that a comment block contains documentation for a function Indicates that a comment block contains documentation for a function
(either global or as a member of a class). This command is needed if a (either global or as a member of a class). This command is \em only
comment block is \e not placed in front of the function declaration needed if a comment block is \e not placed in front (or behind)
or definition. If your comment block \e is in front of the function the function declaration or definition.
If your comment block \e is in front of the function
declaration or definition this command can (and to avoid redundancy declaration or definition this command can (and to avoid redundancy
should) be ommitted. should) be ommitted.
A full function declaration should be specified after the A full function declaration including arguments should be specified after the
\\fn command. The argument ends at the end of the line. \\fn command on a \e single line, since the argument ends at the end
of the line!
\warning Do not use this command
if it is not absolutely needed, since it will lead to duplication of
information and thus to errors.
\par Example: \par Example:
\verbinclude func.h \verbinclude func.h
...@@ -341,6 +348,7 @@ doxygen. Unrecognized commands are treated as normal text. ...@@ -341,6 +348,7 @@ doxygen. Unrecognized commands are treated as normal text.
for the corresponding HTML documentation that is generated by doxygen. for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly \endhtmlonly
\sa section \ref cmdvar "\\var" and \ref cmdtypedef "\\typedef". \sa section \ref cmdvar "\\var" and \ref cmdtypedef "\\typedef".
<hr> <hr>
......
...@@ -73,6 +73,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -73,6 +73,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_case_sense_names CASE_SENSE_NAMES <li> \refitem cfg_case_sense_names CASE_SENSE_NAMES
<li> \refitem cfg_cgi_name CGI_NAME <li> \refitem cfg_cgi_name CGI_NAME
<li> \refitem cfg_cgi_url CGI_URL <li> \refitem cfg_cgi_url CGI_URL
<li> \refitem cfg_chm_file CHM_FILE
<li> \refitem cfg_class_diagrams CLASS_DIAGRAMS <li> \refitem cfg_class_diagrams CLASS_DIAGRAMS
<li> \refitem cfg_class_graph CLASS_GRAPH <li> \refitem cfg_class_graph CLASS_GRAPH
<li> \refitem cfg_collaboration_graph COLLABORATION_GRAPH <li> \refitem cfg_collaboration_graph COLLABORATION_GRAPH
...@@ -122,6 +123,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -122,6 +123,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_generate_treeview GENERATE_TREEVIEW <li> \refitem cfg_generate_treeview GENERATE_TREEVIEW
<li> \refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY <li> \refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY
<li> \refitem cfg_have_dot HAVE_DOT <li> \refitem cfg_have_dot HAVE_DOT
<li> \refitem cfg_hhc_location HHC_LOCATION
<li> \refitem cfg_hide_scope_names HIDE_SCOPE_NAMES <li> \refitem cfg_hide_scope_names HIDE_SCOPE_NAMES
<li> \refitem cfg_hide_undoc_classes HIDE_UNDOC_CLASSES <li> \refitem cfg_hide_undoc_classes HIDE_UNDOC_CLASSES
<li> \refitem cfg_hide_undoc_members HIDE_UNDOC_MEMBERS <li> \refitem cfg_hide_undoc_members HIDE_UNDOC_MEMBERS
...@@ -864,6 +866,22 @@ followed by the descriptions of the tags grouped by category. ...@@ -864,6 +866,22 @@ followed by the descriptions of the tags grouped by category.
(which basically renders \c doxysearch obsolete on Windows). (which basically renders \c doxysearch obsolete on Windows).
The HTML workshop also contains a viewer for compressed HTML files. The HTML workshop also contains a viewer for compressed HTML files.
\anchor cfg_chm_file
<dt>\c CHM_FILE <dd>
\addindex CHM_FILE
If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c CHM_FILE tag can
be used to specify the file name of the resulting .chm file. You
can add a path in front of the file if the result should not be
written to the html output dir.
\anchor cfg_hhc_location
<dt>\c HHC_LOCATION <dd>
\addindex HHC_LOCATION
If the \c GENERATE_HTMLHELP tag is set to \c YES, the \c HHC_LOCATION tag can
be used to specify the location (absolute path including file name) of
the HTML help compiler (hhc.exe). If non empty doxygen will try to run
the html help compiler on the generated index.hhp.
\anchor cfg_generate_chi \anchor cfg_generate_chi
<dt>\c GENERATE_CHI <dd> <dt>\c GENERATE_CHI <dd>
\addindex GENERATE_CHI \addindex GENERATE_CHI
......
...@@ -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.16-20020616), 27 languages Currently (version 1.2.14-20020317), 27 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Chinese Traditional, Croatian, Czech, Brazilian Portuguese, Chinese, Chinese Traditional, Croatian, Czech,
Danish, Dutch, English, Finnish, French, Danish, Dutch, English, Finnish, French,
...@@ -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>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Chinese</TD> <TD>Chinese</TD>
...@@ -67,19 +67,19 @@ when the translator was updated. ...@@ -67,19 +67,19 @@ when the translator was updated.
<TD>Chinese Traditional</TD> <TD>Chinese Traditional</TD>
<TD>Gary Lee</TD> <TD>Gary Lee</TD>
<TD>garylee@NOSPAM.ecosine.com.tw</TD> <TD>garylee@NOSPAM.ecosine.com.tw</TD>
<TD>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<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>up-to-date</TD> <TD>1.2.16</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>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Danish</TD> <TD>Danish</TD>
...@@ -109,13 +109,13 @@ when the translator was updated. ...@@ -109,13 +109,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>up-to-date</TD> <TD>1.2.16</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>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Greek</TD> <TD>Greek</TD>
...@@ -133,13 +133,13 @@ when the translator was updated. ...@@ -133,13 +133,13 @@ when the translator was updated.
<TD>Italian</TD> <TD>Italian</TD>
<TD>Alessandro Falappa<br>Ahmed Aldo Faisal</TD> <TD>Alessandro Falappa<br>Ahmed Aldo Faisal</TD>
<TD>alessandro@NOSPAM.falappa.net<br>aaf23@NOSPAM.cam.ac.uk</TD> <TD>alessandro@NOSPAM.falappa.net<br>aaf23@NOSPAM.cam.ac.uk</TD>
<TD>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Japanese</TD> <TD>Japanese</TD>
<TD>Ryunosuke Sato<br>Kenji Nagamatsu</TD> <TD>Ryunosuke Sato<br>Kenji Nagamatsu</TD>
<TD>puyo@NOSPAM.mint.freemail.ne.jp<br>naga@NOSPAM.joyful.club.ne.jp</TD> <TD>puyo@NOSPAM.mint.freemail.ne.jp<br>naga@NOSPAM.joyful.club.ne.jp</TD>
<TD>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Korean</TD> <TD>Korean</TD>
...@@ -157,31 +157,31 @@ when the translator was updated. ...@@ -157,31 +157,31 @@ when the translator was updated.
<TD>Polish</TD> <TD>Polish</TD>
<TD>Piotr Kaminski<br>Grzegorz Kowal</TD> <TD>Piotr Kaminski<br>Grzegorz Kowal</TD>
<TD>Piotr.Kaminski@NOSPAM.ctm.gdynia.pl<br>g_kowal@NOSPAM.poczta.onet.pl</TD> <TD>Piotr.Kaminski@NOSPAM.ctm.gdynia.pl<br>g_kowal@NOSPAM.poczta.onet.pl</TD>
<TD>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<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>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Romanian</TD> <TD>Romanian</TD>
<TD>Alexandru Iosup</TD> <TD>Alexandru Iosup</TD>
<TD>aiosup@NOSPAM.yahoo.com</TD> <TD>aiosup@NOSPAM.yahoo.com</TD>
<TD>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Russian</TD> <TD>Russian</TD>
<TD>Alexandr Chelpanov</TD> <TD>Alexandr Chelpanov</TD>
<TD>cav@NOSPAM.cryptopro.ru</TD> <TD>cav@NOSPAM.cryptopro.ru</TD>
<TD>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Serbian</TD> <TD>Serbian</TD>
<TD>Dejan Milosavljevic</TD> <TD>Dejan Milosavljevic</TD>
<TD>dmilos@NOSPAM.email.com</TD> <TD>dmilos@NOSPAM.email.com</TD>
<TD>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Slovak</TD> <TD>Slovak</TD>
...@@ -193,7 +193,7 @@ when the translator was updated. ...@@ -193,7 +193,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>up-to-date</TD> <TD>1.2.16</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Spanish</TD> <TD>Spanish</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} & up-to-date \\ Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt chino@icmc.sc.usp.br} & 1.2.16 \\
\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} & up-to-date \\ Chinese Traditional & Gary Lee & {\tt garylee@ecosine.com.tw} & 1.2.16 \\
\hline \hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\ Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & 1.2.16 \\
\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} & 1.2.16 \\
\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
...@@ -243,39 +243,39 @@ when the translator was updated. ...@@ -243,39 +243,39 @@ when the translator was updated.
\hline \hline
Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & obsolete \\ Finnish & Olli Korhonen & {\tt Olli.Korhonen@ccc.fi} & obsolete \\
\hline \hline
French & Xavier Outhier & {\tt xouthier@yahoo.fr} & up-to-date \\ French & Xavier Outhier & {\tt xouthier@yahoo.fr} & 1.2.16 \\
\hline \hline
German & Jens Seidel & {\tt jensseidel@users.sf.net} & up-to-date \\ German & Jens Seidel & {\tt jensseidel@users.sf.net} & 1.2.16 \\
& Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\ & Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} & \\
\hline \hline
Greek & Harry Kalogirou & {\tt harkal@rainbow.cs.unipi.gr} & 1.2.11 \\ Greek & Harry Kalogirou & {\tt harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
\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 & Alessandro Falappa & {\tt alessandro@falappa.net} & up-to-date \\ Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & 1.2.16 \\
& Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\ & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\
\hline \hline
Japanese & Ryunosuke Sato & {\tt puyo@mint.freemail.ne.jp} & up-to-date \\ Japanese & Ryunosuke Sato & {\tt puyo@mint.freemail.ne.jp} & 1.2.16 \\
& Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & \\ & Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & \\
\hline \hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} & 1.2.13 \\ Korean & Richard Kim & {\tt ryk@dspwiz.com} & 1.2.13 \\
\hline \hline
Norwegian & Lars Erik Jordet & {\tt lej@circuitry.no} & 1.2.2 \\ Norwegian & Lars Erik Jordet & {\tt lej@circuitry.no} & 1.2.2 \\
\hline \hline
Polish & Piotr Kaminski & {\tt Piotr.Kaminski@ctm.gdynia.pl} & up-to-date \\ 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} & up-to-date \\ Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & 1.2.16 \\
\hline \hline
Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & up-to-date \\ Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.16 \\
\hline \hline
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\ Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & 1.2.16 \\
\hline \hline
Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & up-to-date \\ 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} & 1.2.13 \\
\hline \hline
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & up-to-date \\ Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\
\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
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.2.16_20020630 Version: 1.2.16_20020707
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
......
...@@ -163,6 +163,8 @@ class ClassDef : public Definition ...@@ -163,6 +163,8 @@ class ClassDef : public Definition
*/ */
ClassDef *templateMaster() const { return m_templateMaster; } ClassDef *templateMaster() const { return m_templateMaster; }
IncludeInfo *includeInfo() const { return m_incInfo; }
UsesClassDict *usedImplementationClasses() const UsesClassDict *usedImplementationClasses() const
{ {
return m_usesImplClassDict; return m_usesImplClassDict;
......
...@@ -662,6 +662,7 @@ static void generateClassOrGlobalLink(OutputDocInterface &ol,char *clName,int *c ...@@ -662,6 +662,7 @@ static void generateClassOrGlobalLink(OutputDocInterface &ol,char *clName,int *c
{ {
Definition *d = md->getOuterScope()==Doxygen::globalScope ? Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope(); md->getBodyDef() : md->getOuterScope();
if (md->getGroupDef()) d = md->getGroupDef();
if (d && d->isLinkable() && md->isLinkable()) if (d && d->isLinkable() && md->isLinkable())
{ {
writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(),md->getBodyAnchor(),clName); writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(),md->getBodyAnchor(),clName);
...@@ -718,6 +719,7 @@ static bool getLink(const char *className, ...@@ -718,6 +719,7 @@ static bool getLink(const char *className,
Definition *d = md->getOuterScope()==Doxygen::globalScope ? Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope(); md->getBodyDef() : md->getOuterScope();
if (md->getGroupDef()) d = md->getGroupDef();
if (d && d->isLinkable()) if (d && d->isLinkable())
{ {
g_theCallContext.setClass(stripClassName(md->typeString())); g_theCallContext.setClass(stripClassName(md->typeString()));
...@@ -774,6 +776,7 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c ...@@ -774,6 +776,7 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c
Definition *xd = xmd->getOuterScope()==Doxygen::globalScope ? Definition *xd = xmd->getOuterScope()==Doxygen::globalScope ?
xmd->getBodyDef() : xmd->getOuterScope(); xmd->getBodyDef() : xmd->getOuterScope();
if (xmd->getGroupDef()) xd = xmd->getGroupDef();
if (xd) if (xd)
{ {
......
...@@ -1857,6 +1857,22 @@ void Config::create() ...@@ -1857,6 +1857,22 @@ void Config::create()
FALSE FALSE
); );
cb->addDependency("GENERATE_HTML"); cb->addDependency("GENERATE_HTML");
cs = addString(
"CHM_FILE",
"If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can \n"
"be used to specify the file name of the resulting .chm file. You \n"
"can add a path in front of the file if the result should not be \n"
"written to the html output dir. \n"
);
cs->addDependency("GENERATE_HTML");
cs = addString(
"HHC_LOCATION",
"If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can \n"
"be used to specify the location (absolute path including file name) of \n"
"the HTML help compiler (hhc.exe). If non empty doxygen will try to run \n"
"the html help compiler on the generated index.hhp.\n"
);
cs->addDependency("GENERATE_HTML");
cb = addBool( cb = addBool(
"GENERATE_CHI", "GENERATE_CHI",
"If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag \n" "If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag \n"
......
...@@ -256,7 +256,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* ...@@ -256,7 +256,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
if (l>0) if (l>0)
{ {
int i=l-1; int i=l-1;
while (i>=0 && isspace(g_curArgTypeName.at(i))) i--; while (i>=0 && (isspace(g_curArgTypeName.at(i)) || g_curArgTypeName.at(i)=='.')) i--;
while (i>=0 && isId(g_curArgTypeName.at(i))) i--; while (i>=0 && isId(g_curArgTypeName.at(i))) i--;
//printf("g_curArgTypeName=`%s' i=%d\n",g_curArgTypeName.data(),i); //printf("g_curArgTypeName=`%s' i=%d\n",g_curArgTypeName.data(),i);
Argument *a = new Argument; Argument *a = new Argument;
......
...@@ -30,7 +30,7 @@ class MemberSDict; ...@@ -30,7 +30,7 @@ class MemberSDict;
class MemberDef; class MemberDef;
class GroupDef; class GroupDef;
class GroupList; class GroupList;
class ListItemInfo; struct ListItemInfo;
/*! The common base class of all entity definitions found in the sources. */ /*! The common base class of all entity definitions found in the sources. */
class Definition class Definition
......
...@@ -940,6 +940,7 @@ static void checkArgName(const QCString &name,bool isParam) ...@@ -940,6 +940,7 @@ static void checkArgName(const QCString &name,bool isParam)
for (ali.toFirst();(a=ali.current());++ali) for (ali.toFirst();(a=ali.current());++ali)
{ {
QCString argName = memberDef->isDefine() ? a->type : a->name; QCString argName = memberDef->isDefine() ? a->type : a->name;
if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
if (aName==argName) if (aName==argName)
{ {
//printf("adding `%s'\n",aName.data()); //printf("adding `%s'\n",aName.data());
...@@ -2938,6 +2939,7 @@ void parseDoc(OutputDocInterface &od,const char *fileName,int startLine, ...@@ -2938,6 +2939,7 @@ void parseDoc(OutputDocInterface &od,const char *fileName,int startLine,
for (ali.toFirst();(a=ali.current());++ali) for (ali.toFirst();(a=ali.current());++ali)
{ {
QCString argName = memberDef->isDefine() ? a->type : a->name; QCString argName = memberDef->isDefine() ? a->type : a->name;
if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
if (!argName.isEmpty() && paramsFound.find(argName)==0) if (!argName.isEmpty() && paramsFound.find(argName)==0)
{ {
found = TRUE; found = TRUE;
......
...@@ -1613,7 +1613,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1613,7 +1613,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
convertMapFile(tmpout,baseName+".map"); convertMapFile(tmpout,baseName+".map");
if (!tmpstr.isEmpty()) if (!tmpstr.isEmpty())
{ {
out << "<map name=\"" << mapName << "\">" << endl; out << "<map name=\"" << mapName << "_map\">" << endl;
out << tmpstr; out << tmpstr;
out << "</map>" << endl; out << "</map>" << endl;
} }
......
...@@ -1441,6 +1441,56 @@ static int findFunctionPtr(const QCString &type,int *pLength=0) ...@@ -1441,6 +1441,56 @@ static int findFunctionPtr(const QCString &type,int *pLength=0)
} }
} }
/*! Returns TRUE iff \a type is a class within scope \a context.
* Used to detect variable declarations that look like function prototypes.
*/
static bool isVarWithConstructor(Entry *root)
{
static QRegExp initChars("[0-9\"'&*!^]+");
static QRegExp idChars("[a-z_A-Z][a-z_A-Z0-9]*");
if (root->type.isEmpty()) return FALSE;
Definition *ctx = 0;
//printf("isVarWithConstructor(%s,%s)\n",root->parent->name.data(),
// root->type.data());
if (root->parent->name) ctx=Doxygen::namespaceSDict.find(root->parent->name);
bool typeIsClass=getResolvedClass(ctx,root->type)!=0;
if (typeIsClass) // now we still have to check if the arguments are
// types or values. Since we do not have complete type info
// we need to rely on heuristics :-(
{
//printf("typeIsClass\n");
ArgumentList *al = root->argList;
if (al==0) return FALSE; // empty arg list -> function prototype.
ArgumentListIterator ali(*al);
Argument *a;
for (ali.toFirst();(a=ali.current());++ali)
{
//printf("a->name=%s a->type=%s\n",a->name.data(),a->type.data());
if (!a->name.isEmpty() || !a->defval.isEmpty()) return FALSE; // arg has (type,name) pair -> function prototype
if (a->type.isEmpty() || getResolvedClass(ctx,a->type)!=0) return FALSE; // arg type is a known type
if (a->type.find(initChars)==0) return TRUE; // argument type starts with typical initializer char
QCString resType=resolveTypeDef(ctx,a->type);
if (resType.isEmpty()) resType=a->type;
int len;
if (idChars.match(resType,0,&len)==0) // resType starts with identifier
{
resType=resType.left(len);
//printf("resType=%s\n",resType.data());
if (resType=="int" || resType=="long" || resType=="float" ||
resType=="double" || resType=="char" || resType=="signed" ||
resType=="const" || resType=="unsigned")
{
return FALSE; // type keyword -> function prototype
}
}
}
return TRUE;
}
// return type not a class -> function prototype
return FALSE;
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// Searches the Entry tree for Variable documentation sections. // Searches the Entry tree for Variable documentation sections.
// If found they are stored in their class or in the global list. // If found they are stored in their class or in the global list.
...@@ -1454,6 +1504,9 @@ void buildVarList(Entry *root) ...@@ -1454,6 +1504,9 @@ void buildVarList(Entry *root)
) || ) ||
(root->section==Entry::FUNCTION_SEC && // or maybe a function pointer variable (root->section==Entry::FUNCTION_SEC && // or maybe a function pointer variable
findFunctionPtr(root->type)!=-1 findFunctionPtr(root->type)!=-1
) ||
(root->section==Entry::FUNCTION_SEC && // class variable initialized by constructor
isVarWithConstructor(root)
) )
) )
) // documented variable ) // documented variable
...@@ -7662,5 +7715,16 @@ void generateOutput() ...@@ -7662,5 +7715,16 @@ void generateOutput()
msg("Generating AutoGen DEF output...\n"); msg("Generating AutoGen DEF output...\n");
generateDEF(); generateDEF();
} }
if (Config_getBool("GENERATE_HTMLHELP") && !Config_getString("HHC_LOCATION").isEmpty())
{
msg("Running html help compiler...\n");
QString oldDir = QDir::currentDirPath();
QDir::setCurrent(Config_getString("HTML_OUTPUT"));
if (iSystem(Config_getString("HHC_LOCATION"), "index.hhp", FALSE))
{
err("Error: failed to run html help compiler on index.hhp");
}
QDir::setCurrent(oldDir);
}
} }
...@@ -387,8 +387,12 @@ void HtmlHelp::createProjectFile() ...@@ -387,8 +387,12 @@ void HtmlHelp::createProjectFile()
QCString indexName="index"+htmlFileExtension; QCString indexName="index"+htmlFileExtension;
if (Config_getBool("GENERATE_TREEVIEW")) indexName="main"+htmlFileExtension; if (Config_getBool("GENERATE_TREEVIEW")) indexName="main"+htmlFileExtension;
t << "[OPTIONS]\n" t << "[OPTIONS]\n";
"Compatibility=1.1\n" if (!Config_getString("CHM_FILE").isEmpty())
{
t << "Compiled file=" << Config_getString("CHM_FILE") << "\n";
}
t << "Compatibility=1.1\n"
"Full-text search=Yes\n" "Full-text search=Yes\n"
"Contents file=index.hhc\n" "Contents file=index.hhc\n"
"Default Window=main\n" "Default Window=main\n"
......
...@@ -930,7 +930,11 @@ void writeFileIndex(OutputList &ol) ...@@ -930,7 +930,11 @@ void writeFileIndex(OutputList &ol)
path=stripFromPath(fd->getPath().copy()); path=stripFromPath(fd->getPath().copy());
} }
QCString fullName=fd->name(); QCString fullName=fd->name();
if (!path.isEmpty()) fullName.prepend(path+"/"); if (!path.isEmpty())
{
if (path.at(path.length()-1)!='/') fullName.prepend("/");
fullName.prepend(path);
}
// --------------- LaTeX/RTF only ------------------------- // --------------- LaTeX/RTF only -------------------------
#if 0 #if 0
......
...@@ -32,7 +32,16 @@ struct RefItem ...@@ -32,7 +32,16 @@ struct RefItem
bool written; bool written;
}; };
/*! Singleton for the one and only RefList */ /*! @brief List of cross-referenced items
*
* This class represents a list of items that are put
* at a certain point in the documentation by some special command
* and are collected in a list. The items cross-reference the
* documentation and the list.
*
* Examples are the todo list, the test list and the bug list,
* introduced by the \\todo, \\test, and \\bug commands respectively.
*/
class RefList class RefList
{ {
public: public:
...@@ -63,8 +72,4 @@ class RefList ...@@ -63,8 +72,4 @@ class RefList
BaseOutputDocInterface::SectionTypes m_type; BaseOutputDocInterface::SectionTypes m_type;
}; };
//extern RefList todoList;
//extern RefList testList;
//extern RefList bugList;
#endif #endif
...@@ -839,7 +839,7 @@ void RTFGenerator::beginRTFDocument() ...@@ -839,7 +839,7 @@ void RTFGenerator::beginRTFDocument()
void RTFGenerator::beginRTFChapter() void RTFGenerator::beginRTFChapter()
{ {
t <<"\n"; t <<"\n";
DBG_RTF(t << "{\\comment Begin Chapter}\n") DBG_RTF(t << "{\\comment BeginRTFChapter}\n")
t << Rtf_Style_Reset; t << Rtf_Style_Reset;
// if we are compact, no extra page breaks... // if we are compact, no extra page breaks...
...@@ -859,7 +859,7 @@ void RTFGenerator::beginRTFChapter() ...@@ -859,7 +859,7 @@ void RTFGenerator::beginRTFChapter()
void RTFGenerator::beginRTFSection() void RTFGenerator::beginRTFSection()
{ {
t <<"\n"; t <<"\n";
DBG_RTF(t << "{\\comment Begin Section}\n") DBG_RTF(t << "{\\comment BeginRTFSection}\n")
t << Rtf_Style_Reset; t << Rtf_Style_Reset;
// if we are compact, no extra page breaks... // if we are compact, no extra page breaks...
...@@ -896,11 +896,13 @@ void RTFGenerator::endFile() ...@@ -896,11 +896,13 @@ void RTFGenerator::endFile()
void RTFGenerator::startProjectNumber() void RTFGenerator::startProjectNumber()
{ {
DBG_RTF(t <<"{\\comment startProjectNumber }" << endl)
t << " "; t << " ";
} }
void RTFGenerator::endProjectNumber() void RTFGenerator::endProjectNumber()
{ {
DBG_RTF(t <<"{\\comment endProjectNumber }" << endl)
} }
void RTFGenerator::startIndexSection(IndexSections is) void RTFGenerator::startIndexSection(IndexSections is)
...@@ -1093,7 +1095,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -1093,7 +1095,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << Rtf_Style_Reset << Rtf_Style["SubTitle"]->reference << endl; // set to title style t << Rtf_Style_Reset << Rtf_Style["SubTitle"]->reference << endl; // set to title style
t << "\\vertalc\\qc\\par\\par\\par\\par\\par\\par\\par"; t << "\\vertalc\\qc\\par\\par\\par\\par\\par\\par\\par\n";
if (logoFilename) if (logoFilename)
{ {
t << "{\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE " << logoFilename; t << "{\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE " << logoFilename;
...@@ -1131,14 +1133,23 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -1131,14 +1133,23 @@ void RTFGenerator::endIndexSection(IndexSections is)
DBG_RTF(t << "{\\comment Table of contents}\n") DBG_RTF(t << "{\\comment Table of contents}\n")
t << "\\vertalt\n"; t << "\\vertalt\n";
t << Rtf_Style_Reset << endl; t << Rtf_Style_Reset << endl;
t << Rtf_Style["Heading1"]->reference;
t << theTranslator->trRTFTableOfContents() << "\\par"<< endl;
t << Rtf_Style_Reset << "\\par" << endl;
t << "{\\field\\fldedit {\\*\\fldinst TOC \\\\f \\\\*MERGEFORMAT}{\\fldrslt Table of contents}}\\par\n"; t << "{\\field\\fldedit {\\*\\fldinst TOC \\\\f \\\\*MERGEFORMAT}{\\fldrslt Table of contents}}\\par\n";
t << Rtf_Style_Reset << endl; t << Rtf_Style_Reset << endl;
} }
break; break;
case isMainPage: case isMainPage:
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style_Reset << endl;
t << "{\\tc \\v " << theTranslator->trMainPage() << "}"<< endl; if (!Doxygen::mainPage || Doxygen::mainPage->title.isEmpty())
{
t << "{\\tc \\v " << theTranslator->trMainPage() << "}"<< endl;
}
else
{
t << "{\\tc \\v " << substitute(Doxygen::mainPage->title,"%","") << "}"<< endl;
}
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
if (Config_getBool("GENERATE_TREEVIEW")) t << "main"; else t << "index"; if (Config_getBool("GENERATE_TREEVIEW")) t << "main"; else t << "index";
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -1369,10 +1380,10 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -1369,10 +1380,10 @@ void RTFGenerator::endIndexSection(IndexSections is)
void RTFGenerator::lastIndexPage() void RTFGenerator::lastIndexPage()
{ {
DBG_RTF(t <<"{\\comment Begining Body of RTF Document}\n") DBG_RTF(t <<"{\\comment Beginning Body of RTF Document}\n")
// end page and setup for rest of document // end page and setup for rest of document
t <<"\\sect \\sbkpage \\pgnrestart\n"; t <<"\\sect \\sbkpage \\pgndec \\pgnrestart\n";
t <<"\\sect \\sectd \\sbknone \\pgndec\n"; t <<"\\sect \\sectd \\sbknone\n";
// set footer // set footer
t <<"{\\footer "<< Rtf_Style["Footer"]->reference << "{\\chpgn}}\n"; t <<"{\\footer "<< Rtf_Style["Footer"]->reference << "{\\chpgn}}\n";
...@@ -1386,9 +1397,8 @@ void RTFGenerator::writeStyleInfo(int) ...@@ -1386,9 +1397,8 @@ void RTFGenerator::writeStyleInfo(int)
void RTFGenerator::lineBreak() void RTFGenerator::lineBreak()
{ {
DBG_RTF(t << "{\\comment (lineBreak)}" << endl)
t << "\\par" << endl; t << "\\par" << endl;
//newParagraph();
//t << "\\line" << endl;
} }
void RTFGenerator::writeString(const char *text) void RTFGenerator::writeString(const char *text)
...@@ -1403,7 +1413,6 @@ void RTFGenerator::startIndexList() ...@@ -1403,7 +1413,6 @@ void RTFGenerator::startIndexList()
incrementIndentLevel(); incrementIndentLevel();
t << Rtf_Style_Reset << Rtf_LCList_DepthStyle() << endl; t << Rtf_Style_Reset << Rtf_LCList_DepthStyle() << endl;
newParagraph(); newParagraph();
m_omitParagraph=TRUE;
} }
void RTFGenerator::endIndexList() void RTFGenerator::endIndexList()
...@@ -1412,7 +1421,6 @@ void RTFGenerator::endIndexList() ...@@ -1412,7 +1421,6 @@ void RTFGenerator::endIndexList()
newParagraph(); newParagraph();
t << "}"; t << "}";
decrementIndentLevel(); decrementIndentLevel();
m_omitParagraph=TRUE;
} }
/*! start bullet list */ /*! start bullet list */
...@@ -1431,7 +1439,6 @@ void RTFGenerator::endItemList() ...@@ -1431,7 +1439,6 @@ void RTFGenerator::endItemList()
DBG_RTF(t << "{\\comment (endItemList level=" << m_listLevel << ")}" << endl) DBG_RTF(t << "{\\comment (endItemList level=" << m_listLevel << ")}" << endl)
t << "}"; t << "}";
decrementIndentLevel(); decrementIndentLevel();
m_omitParagraph=TRUE;
} }
/*! start enumeration list */ /*! start enumeration list */
...@@ -1442,10 +1449,6 @@ void RTFGenerator::startEnumList() // starts an enumeration list ...@@ -1442,10 +1449,6 @@ void RTFGenerator::startEnumList() // starts an enumeration list
incrementIndentLevel(); incrementIndentLevel();
listItemInfo[m_listLevel].isEnum = TRUE; listItemInfo[m_listLevel].isEnum = TRUE;
listItemInfo[m_listLevel].number = 1; listItemInfo[m_listLevel].number = 1;
//t << Rtf_Style_Reset << Rtf_EList_DepthStyle() << endl;
//newParagraph();
//m_omitParagraph=TRUE;
} }
/*! end enumeration list */ /*! end enumeration list */
...@@ -1455,7 +1458,6 @@ void RTFGenerator::endEnumList() ...@@ -1455,7 +1458,6 @@ void RTFGenerator::endEnumList()
DBG_RTF(t << "{\\comment (endEnumList)}" << endl) DBG_RTF(t << "{\\comment (endEnumList)}" << endl)
t << "}"; t << "}";
decrementIndentLevel(); decrementIndentLevel();
m_omitParagraph=TRUE;
} }
/*! write bullet or enum item */ /*! write bullet or enum item */
...@@ -1474,7 +1476,6 @@ void RTFGenerator::writeListItem() ...@@ -1474,7 +1476,6 @@ void RTFGenerator::writeListItem()
{ {
t << Rtf_BList_DepthStyle() << endl; t << Rtf_BList_DepthStyle() << endl;
} }
m_omitParagraph=TRUE;
} }
void RTFGenerator::writeIndexItem(const char *ref,const char *fn, void RTFGenerator::writeIndexItem(const char *ref,const char *fn,
...@@ -1494,7 +1495,6 @@ void RTFGenerator::writeIndexItem(const char *ref,const char *fn, ...@@ -1494,7 +1495,6 @@ void RTFGenerator::writeIndexItem(const char *ref,const char *fn,
t << endl; t << endl;
} }
newParagraph(); newParagraph();
m_omitParagraph=TRUE;
} }
//void RTFGenerator::writeIndexFileItem(const char *,const char *text) //void RTFGenerator::writeIndexFileItem(const char *,const char *text)
...@@ -1914,6 +1914,7 @@ void RTFGenerator::endMemberDoc() ...@@ -1914,6 +1914,7 @@ void RTFGenerator::endMemberDoc()
void RTFGenerator::startDoxyAnchor(const char *,const char *, void RTFGenerator::startDoxyAnchor(const char *,const char *,
const char *,const char *) const char *,const char *)
{ {
DBG_RTF(t << "{\\comment startDoxyAnchor}" << endl)
} }
void RTFGenerator::endDoxyAnchor(const char *fName,const char *anchor) void RTFGenerator::endDoxyAnchor(const char *fName,const char *anchor)
...@@ -1929,6 +1930,7 @@ void RTFGenerator::endDoxyAnchor(const char *fName,const char *anchor) ...@@ -1929,6 +1930,7 @@ void RTFGenerator::endDoxyAnchor(const char *fName,const char *anchor)
ref+=anchor; ref+=anchor;
} }
DBG_RTF(t << "{\\comment endDoxyAnchor}" << endl)
t << "{\\bkmkstart "; t << "{\\bkmkstart ";
t << formatBmkStr(ref); t << formatBmkStr(ref);
t << "}" << endl; t << "}" << endl;
...@@ -2050,7 +2052,6 @@ void RTFGenerator::endDescList() ...@@ -2050,7 +2052,6 @@ void RTFGenerator::endDescList()
DBG_RTF(t << "{\\comment (endDescList)}" << endl) DBG_RTF(t << "{\\comment (endDescList)}" << endl)
newParagraph(); newParagraph();
decrementIndentLevel(); decrementIndentLevel();
m_omitParagraph = TRUE;
t << "}"; t << "}";
} }
...@@ -2082,6 +2083,7 @@ void RTFGenerator::startSection(const char *,const char *title,bool sub) ...@@ -2082,6 +2083,7 @@ void RTFGenerator::startSection(const char *,const char *title,bool sub)
void RTFGenerator::endSection(const char *lab,bool) void RTFGenerator::endSection(const char *lab,bool)
{ {
DBG_RTF(t << "{\\comment (endSection)}" << endl)
newParagraph(); newParagraph();
// make bookmark // make bookmark
writeAnchor(0,lab); writeAnchor(0,lab);
...@@ -2269,6 +2271,7 @@ void RTFGenerator::endMemberItem(bool) ...@@ -2269,6 +2271,7 @@ void RTFGenerator::endMemberItem(bool)
void RTFGenerator::writeAnchor(const char *fileName,const char *name) void RTFGenerator::writeAnchor(const char *fileName,const char *name)
{ {
DBG_RTF(t <<"{\\comment writeAncheor }" << endl)
t << "{\\bkmkstart "; t << "{\\bkmkstart ";
if (fileName) t << formatBmkStr(fileName); if (fileName) t << formatBmkStr(fileName);
if (fileName && name) t << "_"; if (fileName && name) t << "_";
...@@ -2300,7 +2303,6 @@ void RTFGenerator::endCodeFragment() ...@@ -2300,7 +2303,6 @@ void RTFGenerator::endCodeFragment()
//t << Rtf_Style_Reset << styleStack.top() << endl; //t << Rtf_Style_Reset << styleStack.top() << endl;
DBG_RTF(t << "{\\comment (endCodeFragment) }" << endl) DBG_RTF(t << "{\\comment (endCodeFragment) }" << endl)
t << "}" << endl; t << "}" << endl;
m_omitParagraph = TRUE;
} }
void RTFGenerator::writeNonBreakableSpace(int) void RTFGenerator::writeNonBreakableSpace(int)
...@@ -2418,7 +2420,6 @@ void RTFGenerator::endDescTableData() ...@@ -2418,7 +2420,6 @@ void RTFGenerator::endDescTableData()
{ {
DBG_RTF(t << "{\\comment (endDescTableData) }" << endl) DBG_RTF(t << "{\\comment (endDescTableData) }" << endl)
newParagraph(); newParagraph();
m_omitParagraph=TRUE;
} }
// a style for list formatted as a "bulleted list" // a style for list formatted as a "bulleted list"
...@@ -2485,7 +2486,7 @@ const char * RTFGenerator::Rtf_Code_DepthStyle() ...@@ -2485,7 +2486,7 @@ const char * RTFGenerator::Rtf_Code_DepthStyle()
void RTFGenerator::startTextBlock(bool dense) void RTFGenerator::startTextBlock(bool dense)
{ {
DBG_RTF(t << "{\\comment Start TextBlock}" << endl) DBG_RTF(t << "{\\comment startTextBlock}" << endl)
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset; t << Rtf_Style_Reset;
if (dense) // no spacing between "paragraphs" if (dense) // no spacing between "paragraphs"
...@@ -2501,15 +2502,16 @@ void RTFGenerator::startTextBlock(bool dense) ...@@ -2501,15 +2502,16 @@ void RTFGenerator::startTextBlock(bool dense)
void RTFGenerator::endTextBlock() void RTFGenerator::endTextBlock()
{ {
newParagraph(); newParagraph();
DBG_RTF(t << "{\\comment End TextBlock}" << endl) DBG_RTF(t << "{\\comment endTextBlock}" << endl)
t << "}" << endl; t << "}" << endl;
m_omitParagraph = TRUE;
} }
void RTFGenerator::newParagraph() void RTFGenerator::newParagraph()
{ {
DBG_RTF(t << "{\\comment (newParagraph)}" << endl)
if (!m_omitParagraph) t << "\\par" << endl; if (!m_omitParagraph) t << "\\par" << endl;
m_omitParagraph = FALSE; // Suppress multiple paragraphs in a row
m_omitParagraph = TRUE;
} }
void RTFGenerator::startMemberSubtitle() void RTFGenerator::startMemberSubtitle()
...@@ -2936,7 +2938,6 @@ void RTFGenerator::endParamList() ...@@ -2936,7 +2938,6 @@ void RTFGenerator::endParamList()
DBG_RTF(t << "{\\comment (endParamList)}" << endl) DBG_RTF(t << "{\\comment (endParamList)}" << endl)
newParagraph(); newParagraph();
decrementIndentLevel(); decrementIndentLevel();
m_omitParagraph = TRUE;
t << "}"; t << "}";
} }
...@@ -2148,7 +2148,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -2148,7 +2148,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
/*- Function argument reading rules ---------------------------------------*/ /*- Function argument reading rules ---------------------------------------*/
<ReadFuncArgType>[^ \/\r\t\n\)\(\"\']+ { *copyArgString+=yytext; <ReadFuncArgType>[^ \/\r\t\n\)\(\"\']+ { *copyArgString+=yytext;
fullArgString+=yytext; fullArgString+=yytext;
} }
<CopyArgString>[^\n\\\"\']+ { *copyArgString+=yytext; <CopyArgString>[^\n\\\"\']+ { *copyArgString+=yytext;
...@@ -2183,7 +2183,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -2183,7 +2183,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN( currentArgumentContext ); BEGIN( currentArgumentContext );
} }
/* a special comment */ /* a special comment */
<ReadFuncArgType>("/*"[*!]|"//"[/!])("<"?) { <ReadFuncArgType,ReadTempArgs>("/*"[*!]|"//"[/!])("<"?) {
if (currentArgumentContext==DefineEnd) if (currentArgumentContext==DefineEnd)
{ {
// for defines we interpret a comment // for defines we interpret a comment
...@@ -3934,7 +3934,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3934,7 +3934,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN( lastBriefContext ); BEGIN( lastBriefContext );
} }
<ClassDocBrief>{BS}{CMD}("brief"|"short"){BN}+ { <ClassDocBrief>{BS}{CMD}("brief"|"short"){BN}+ {
lastBriefContext=YY_START; //lastBriefContext=YY_START;
} }
<ClassDocBrief>. { current->brief += *yytext; } <ClassDocBrief>. { current->brief += *yytext; }
<ClassDocDefine>{ID}/"(" { <ClassDocDefine>{ID}/"(" {
......
...@@ -371,6 +371,12 @@ class Translator ...@@ -371,6 +371,12 @@ class Translator
virtual QCString trImplementedFromList(int numEntries) = 0; virtual QCString trImplementedFromList(int numEntries) = 0;
virtual QCString trImplementedInList(int numEntries) = 0; virtual QCString trImplementedInList(int numEntries) = 0;
//////////////////////////////////////////////////////////////////////////
// new since 1.2.16
//////////////////////////////////////////////////////////////////////////
virtual QCString trRTFTableOfContents() = 0;
}; };
#endif #endif
...@@ -40,7 +40,17 @@ class TranslatorAdapterBase : public Translator ...@@ -40,7 +40,17 @@ class TranslatorAdapterBase : public Translator
}; };
class TranslatorAdapter_1_2_13 : public TranslatorAdapterBase class TranslatorAdapter_1_2_16 : public TranslatorAdapterBase
{
public:
virtual QCString updateNeededMessage()
{ return createUpdateNeededMessage(idLanguage(),"release 1.2.16"); }
virtual QCString trRTFTableOfContents()
{ return english.trRTFTableOfContents(); }
};
class TranslatorAdapter_1_2_13 : public TranslatorAdapter_1_2_16
{ {
public: public:
virtual QCString updateNeededMessage() virtual QCString updateNeededMessage()
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#ifndef TRANSLATOR_BR_H #ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H #define TRANSLATOR_BR_H
class TranslatorBrazilian: public Translator class TranslatorBrazilian: public TranslatorAdapter_1_2_16
{ {
public: public:
......
...@@ -157,7 +157,7 @@ ...@@ -157,7 +157,7 @@
// probably slightly faster. // probably slightly faster.
class TranslatorCzech : public Translator class TranslatorCzech : public TranslatorAdapter_1_2_16
{ {
private: private:
/*! The decode() inline assumes the source written in the /*! The decode() inline assumes the source written in the
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
#ifndef TRANSLATOR_DE_H #ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H #define TRANSLATOR_DE_H
class TranslatorGerman : public Translator class TranslatorGerman : public TranslatorAdapter_1_2_16
{ {
public: public:
......
...@@ -638,7 +638,7 @@ class TranslatorEnglish : public Translator ...@@ -638,7 +638,7 @@ class TranslatorEnglish : public Translator
ClassDef::CompoundType compType, ClassDef::CompoundType compType,
bool isTemplate) bool isTemplate)
{ {
QCString result=(QCString)clName+" "; QCString result=(QCString)clName;
switch(compType) switch(compType)
{ {
case ClassDef::Class: result+=" Class"; break; case ClassDef::Class: result+=" Class"; break;
...@@ -1392,6 +1392,18 @@ class TranslatorEnglish : public Translator ...@@ -1392,6 +1392,18 @@ class TranslatorEnglish : public Translator
return "Implemented in "+trWriteList(numEntries)+"."; return "Implemented in "+trWriteList(numEntries)+".";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.16
//////////////////////////////////////////////////////////////////////////
/*! used in RTF documentation as a heading for the Table
* of Contents.
*/
virtual QCString trRTFTableOfContents()
{
return "Table of Contents";
}
}; };
#endif #endif
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#ifndef TRANSLATOR_FR_H #ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H #define TRANSLATOR_FR_H
class TranslatorFrench : public Translator class TranslatorFrench : public TranslatorAdapter_1_2_16
{ {
public: public:
QCString idLanguage() QCString idLanguage()
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
#ifndef TRANSLATOR_HR_H #ifndef TRANSLATOR_HR_H
#define TRANSLATOR_HR_H #define TRANSLATOR_HR_H
class TranslatorCroatian : public Translator class TranslatorCroatian : public TranslatorAdapter_1_2_16
{ {
private: private:
/*! to avoid macro redefinition from translator_cz.h */ /*! to avoid macro redefinition from translator_cz.h */
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
* *
* Revision history * Revision history
* *
* 2002/07: modified trRelatedPagesDescription() method
* correct typo in trInclByDepGraph() method
* 2002/01: translated new items used since version 1.2.13 * 2002/01: translated new items used since version 1.2.13
* updated e-mail address * updated e-mail address
* 2001/11: corrected the translation fixing the issues reported by the translator.pl script * 2001/11: corrected the translation fixing the issues reported by the translator.pl script
...@@ -62,7 +64,7 @@ ...@@ -62,7 +64,7 @@
#ifndef TRANSLATOR_IT_H #ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H #define TRANSLATOR_IT_H
class TranslatorItalian : public Translator class TranslatorItalian : public TranslatorAdapter_1_2_16
{ {
public: public:
...@@ -333,7 +335,7 @@ class TranslatorItalian : public Translator ...@@ -333,7 +335,7 @@ class TranslatorItalian : public Translator
/*! This is an introduction to the page with the list of related pages */ /*! This is an introduction to the page with the list of related pages */
QCString trRelatedPagesDescription() QCString trRelatedPagesDescription()
{ return "Questa è la lista di tutte le pagine di documentazione collegate fra loro:"; } { return "Questa è la lista di tutte le pagine di documentazione generale:"; }
/*! This is an introduction to the page with the list of class/file groups */ /*! This is an introduction to the page with the list of class/file groups */
QCString trModulesDescription() QCString trModulesDescription()
...@@ -1011,7 +1013,7 @@ class TranslatorItalian : public Translator ...@@ -1011,7 +1013,7 @@ class TranslatorItalian : public Translator
} }
virtual QCString trInclByDepGraph() virtual QCString trInclByDepGraph()
{ {
return "Queato grafo mostra quali file includono direttamente o indirettamente questo file:"; return "Questo grafo mostra quali altri file includono direttamente o indirettamente questo file:";
} }
virtual QCString trSince() virtual QCString trSince()
{ {
......
...@@ -61,7 +61,7 @@ class TranslatorJapaneseEn : public TranslatorEnglish ...@@ -61,7 +61,7 @@ class TranslatorJapaneseEn : public TranslatorEnglish
} }
}; };
class TranslatorJapanese : public Translator class TranslatorJapanese : public TranslatorAdapter_1_2_16
{ {
private: private:
/*! The decode() can change euc into sjis */ /*! The decode() can change euc into sjis */
......
...@@ -272,7 +272,7 @@ class TranslatorDutch : public Translator ...@@ -272,7 +272,7 @@ class TranslatorDutch : public Translator
bool isTemplate) bool isTemplate)
// used as the title of the HTML page of a class/struct/union // used as the title of the HTML page of a class/struct/union
{ {
QCString result=(QCString)clName+" "; QCString result=(QCString)clName;
if (isTemplate) result+=" Template"; if (isTemplate) result+=" Template";
switch(compType) switch(compType)
{ {
...@@ -975,6 +975,10 @@ class TranslatorDutch : public Translator ...@@ -975,6 +975,10 @@ class TranslatorDutch : public Translator
return "Gebruikt"; return "Gebruikt";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of /*! used in member documentation blocks to produce a list of
* members that are implemented by this one. * members that are implemented by this one.
*/ */
...@@ -990,6 +994,14 @@ class TranslatorDutch : public Translator ...@@ -990,6 +994,14 @@ class TranslatorDutch : public Translator
{ {
return "Wordt ge&iuml;mplementeerd door "+trWriteList(numEntries)+"."; return "Wordt ge&iuml;mplementeerd door "+trWriteList(numEntries)+".";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.16
//////////////////////////////////////////////////////////////////////////
virtual QCString trRTFTableOfContents()
{ return "Inhoudsopgave"; }
}; };
#endif #endif
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#include "translator_adapter.h" #include "translator_adapter.h"
class TranslatorPolish : public Translator class TranslatorPolish : public TranslatorAdapter_1_2_16
{ {
public: public:
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
#ifndef TRANSLATOR_PT_H #ifndef TRANSLATOR_PT_H
#define TRANSLATOR_PT_H #define TRANSLATOR_PT_H
class TranslatorPortuguese : public Translator class TranslatorPortuguese : public TranslatorAdapter_1_2_16
{ {
public: public:
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
#define TRANSLATOR_RO_H #define TRANSLATOR_RO_H
class TranslatorRomanian: public Translator class TranslatorRomanian: public TranslatorAdapter_1_2_16
{ {
public: public:
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
#ifndef TRANSLATOR_RU_H #ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H #define TRANSLATOR_RU_H
class TranslatorRussian : public Translator class TranslatorRussian : public TranslatorAdapter_1_2_16
{ {
private: private:
/*! The Decode() inline assumes the source written in the /*! The Decode() inline assumes the source written in the
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#define TRANSLATOR_SI_H #define TRANSLATOR_SI_H
class TranslatorSlovene : public Translator class TranslatorSlovene : public TranslatorAdapter_1_2_16
{ {
public: public:
QCString idLanguage() QCString idLanguage()
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
// translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu> // translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu>
class TranslatorSerbian : public Translator class TranslatorSerbian : public TranslatorAdapter_1_2_16
{ {
QCString decode(const QCString& sInput) QCString decode(const QCString& sInput)
{ {
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
// Translator class (by the local maintainer) when the localized // Translator class (by the local maintainer) when the localized
// translator is made up-to-date again. // translator is made up-to-date again.
class TranslatorChinesetraditional : public Translator class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{ {
public: public:
......
...@@ -43,7 +43,7 @@ class MemberGroupSDict; ...@@ -43,7 +43,7 @@ class MemberGroupSDict;
class Definition; class Definition;
struct TagInfo; struct TagInfo;
class MemberNameInfoSDict; class MemberNameInfoSDict;
class ListItemInfo; struct ListItemInfo;
//-------------------------------------------------------------------- //--------------------------------------------------------------------
......
...@@ -1508,6 +1508,25 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -1508,6 +1508,25 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl; << "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
} }
} }
IncludeInfo *ii=cd->includeInfo();
if (ii)
{
QCString nm = ii->includeName;
if (nm.isEmpty() && ii->fileDef) nm = ii->fileDef->docName();
if (!nm.isEmpty())
{
t << " <includes";
if (ii->fileDef && !ii->fileDef->isReference()) // TODO: support external references
{
t << " id=\"" << ii->fileDef->getOutputFileBase() << "\"";
}
t << " local=\"" << (ii->local ? "yes" : "no") << "\"";
t << nm;
t << "</includes>" << endl;
}
}
writeTemplateList(cd,t); writeTemplateList(cd,t);
writeListOfAllMembers(cd,t); writeListOfAllMembers(cd,t);
MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict); MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict);
......
This diff is collapsed.
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "Doxygen"=".\Doxygen.dsp" - Package Owner=<4>
Package=<5>
{{{
begin source code control
Doxygen
..
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
The files Doxygen.dsw and Doxygen.dsp can
be used to build doxygen from within
Microsoft's Developer Studio 6.0.
These files are created and maintained by
Simon Goodwin <simon.goodwin@atd.co.uk>.
Please contact him in case of question or
problems with these files.
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