Commit 55d2ef84 authored by dimitri's avatar dimitri

Release-1.2.17-20020826

parent 17e35fd2
DOXYGEN Version 1.2.17-20020811 DOXYGEN Version 1.2.17-20020825
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (11 August 2002) Dimitri van Heesch (25 August 2002)
DOXYGEN Version 1.2.17_20020811 DOXYGEN Version 1.2.17_20020825
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) (11 August 2002) Dimitri van Heesch (dimitri@stack.nl) (25 August 2002)
1.2.17-20020811 1.2.17-20020825
...@@ -27,7 +27,7 @@ f_prefix=/usr ...@@ -27,7 +27,7 @@ f_prefix=/usr
f_insttool=NO f_insttool=NO
f_english=NO f_english=NO
f_wizard=NO f_wizard=NO
f_langs=nl,se,cz,fr,it,de,jp,es,fi,ru,hr,pl,pt,hu,kr,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr f_langs=nl,se,cz,fr,it,de,jp,es,fi,ru,hr,pl,pt,hu,kr,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca
while test -n "$1"; do while test -n "$1"; do
case $1 in case $1 in
...@@ -493,7 +493,7 @@ echo -n " Generating src/lang_cfg.h..." ...@@ -493,7 +493,7 @@ echo -n " Generating src/lang_cfg.h..."
echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>); echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>);
chomp @l; chomp @l;
@allowed=(NL,SE,CZ,FR,IT,DE,JP,ES,FI,RU,HR,PL,PT,HU,KR,RO,SI,CN,NO,BR, @allowed=(NL,SE,CZ,FR,IT,DE,JP,ES,FI,RU,HR,PL,PT,HU,KR,RO,SI,CN,NO,BR,
DK,SK,UA,GR,TW,SR); DK,SK,UA,GR,TW,SR,CA);
foreach my $elem (@l){ foreach my $elem (@l){
$elem =~ tr/a-z/A-Z/; $elem =~ tr/a-z/A-Z/;
$r=0; $r=0;
......
...@@ -116,6 +116,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -116,6 +116,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY \refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY
\refitem cfg_have_dot HAVE_DOT \refitem cfg_have_dot HAVE_DOT
\refitem cfg_hhc_location HHC_LOCATION \refitem cfg_hhc_location HHC_LOCATION
\refitem cfg_hide_friend_compounds HIDE_FRIEND_COMPOUNDS
\refitem cfg_hide_scope_names HIDE_SCOPE_NAMES \refitem cfg_hide_scope_names HIDE_SCOPE_NAMES
\refitem cfg_hide_undoc_classes HIDE_UNDOC_CLASSES \refitem cfg_hide_undoc_classes HIDE_UNDOC_CLASSES
\refitem cfg_hide_undoc_members HIDE_UNDOC_MEMBERS \refitem cfg_hide_undoc_members HIDE_UNDOC_MEMBERS
...@@ -278,6 +279,14 @@ followed by the descriptions of the tags grouped by category. ...@@ -278,6 +279,14 @@ followed by the descriptions of the tags grouped by category.
various overviews. various overviews.
This option has no effect if \c EXTRACT_ALL is enabled. This option has no effect if \c EXTRACT_ALL is enabled.
\anchor cfg_hide_friend_compounds
<dt>\c HIDE_FRIEND_COMPOUNDS <dd>
\addindex HIDE_FRIEND_COMPOUNDS
If the \c HIDE_FRIEND_COMPOUNDS tag is set to \c YES, Doxygen will hide all
friend (class|struct|union) declarations.
If set to \c NO (the default) these declarations will be included in the
documentation.
\anchor cfg_brief_member_desc \anchor cfg_brief_member_desc
<dt>\c BRIEF_MEMBER_DESC <dd> <dt>\c BRIEF_MEMBER_DESC <dd>
\addindex BRIEF_MEMBER_DESC \addindex BRIEF_MEMBER_DESC
......
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
<li>Many new commands (there are now more than 60!) to document <li>Many new commands (there are now more than 60!) to document
more entities, to make the documentation look nicer, and to include more entities, to make the documentation look nicer, and to include
examples or pieces of examples. examples or pieces of examples.
<li>Enum types, enum values, typedefs, #defines, and files can now be <li>Enum types, enum values, typedefs, \#defines, and files can now be
documented. documented.
<li>Completely new documentation, that is now generated by Doxygen. <li>Completely new documentation, that is now generated by Doxygen.
<li>A lot of small examples are now included. <li>A lot of small examples are now included.
......
...@@ -27,7 +27,7 @@ Version: $(VERSION) ...@@ -27,7 +27,7 @@ Version: $(VERSION)
<h2>Introduction</h2> <h2>Introduction</h2>
Doxygen is a documentation system for C++, C, Java, IDL Doxygen is a documentation system for C++, C, Java, IDL
(Corba, Microsoft, and KDE-DCOP flavors) and to some extend PHP. (Corba, Microsoft, and KDE-DCOP flavors) and to some extent PHP.
It can help you in three ways: It can help you in three ways:
<ol> <ol>
...@@ -179,8 +179,8 @@ Thanks go to: ...@@ -179,8 +179,8 @@ Thanks go to:
<li>Petr Prikryl for coordinating the internationalisation support. <li>Petr Prikryl for coordinating the internationalisation support.
All language maintainers for providing translations into many languages. All language maintainers for providing translations into many languages.
<li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a>, Mark <li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a>, Mark
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton and Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton,
Dwight Browne for donating money. Dwight Browne, and Andreas Fredriksson for donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating <li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a> an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a>
organizer! organizer!
......
...@@ -58,12 +58,12 @@ tools should be installed. ...@@ -58,12 +58,12 @@ tools should be installed.
\addindex Qt \addindex Qt
This is needed to build the GUI front-end. This is needed to build the GUI front-end.
<li>A \f$\mbox{\LaTeX}\f$ distribution: for instance <li>A \f$\mbox{\LaTeX}\f$ distribution: for instance
<a href="http://www.tug.org/">teTeX 1.0</a>.<br> <a href="http://www.tug.org/">teTeX 1.0</a>
\latexonly(see {\tt http://www.tug.org/})\endlatexonly. \latexonly \\par (see {\tt http://www.tug.org/})\endlatexonly.
This is needed for generating LaTeX, Postscript, and PDF output. This is needed for generating LaTeX, Postscript, and PDF output.
<li><a href="http://www.research.att.com/sw/tools/graphviz/"> <li><a href="http://www.research.att.com/sw/tools/graphviz/">
the Graph visualization toolkit version 1.5</a><br> the Graph visualization toolkit version 1.5</a>
\latexonly(see {\tt http://www.research.att.com/sw/tools/graphviz/})\endlatexonly. \latexonly \\par (see {\tt http://www.research.att.com/sw/tools/graphviz/})\endlatexonly.
Needed for the include dependency graphs, Needed for the include dependency graphs,
the graphical inheritance graphs, and the collaboration graphs. the graphical inheritance graphs, and the collaboration graphs.
If you compile graphviz yourself, make sure you do include If you compile graphviz yourself, make sure you do include
...@@ -142,17 +142,17 @@ Compilation is now done by performing the following steps: ...@@ -142,17 +142,17 @@ Compilation is now done by performing the following steps:
<code>index.html</code> in the <code>index.html</code> in the
html directory). html directory).
<li>Optional: Generate a PostScript and PDF version of the manual <li>Optional: Generate a PDF version of the manual
(you will need <code>latex</code> and <code>dvips</code> and (you will need <code>pdflatex</code>, <code>makeindex</code>, and
the ghostscript package for this). <code>egrep</code> for this).
\verbatim \verbatim
make pdf make pdf
\endverbatim \endverbatim
The PostScript manual <code>doxygen_manual.ps</code> will be located The PDF manual <code>doxygen_manual.pdf</code> will be located
in the latex directory of the distribution. Just send it to a in the latex directory of the distribution. Just
PostScript printer to print it or use <code>ghostview</code> to view it. view and print it via the acrobat reader.
</ol> </ol>
......
...@@ -25,14 +25,14 @@ Doxygen has built-in support for multiple languages. This means ...@@ -25,14 +25,14 @@ 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.17-20020804), 27 languages Currently (version 1.2.14-20020317), 28 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Chinese Traditional, Croatian, Czech, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Danish, Dutch, English, Finnish, French, Czech, Danish, Dutch, English, Finnish,
German, Greek, Hungarian, Italian, Japanese, French, German, Greek, Hungarian, Italian,
Korean, Norwegian, Polish, Portuguese, Romanian, Japanese, Korean, Norwegian, Polish, Portuguese,
Russian, Serbian, Slovak, Slovene, Spanish, Romanian, Russian, Serbian, Slovak, Slovene,
Swedish, and Ukrainian. Spanish, Swedish, and Ukrainian.
The table of information related to the supported languages follows. The table of information related to the supported languages follows.
It is sorted by language alphabetically. The <b>Status</b> column It is sorted by language alphabetically. The <b>Status</b> column
...@@ -57,6 +57,12 @@ when the translator was updated. ...@@ -57,6 +57,12 @@ when the translator was updated.
<TD>chino@NOSPAM.icmc.sc.usp.br</TD> <TD>chino@NOSPAM.icmc.sc.usp.br</TD>
<TD>up-to-date</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff">
<TD>Catalan</TD>
<TD>Albert Mora</TD>
<TD>amora@NOSPAM.iua.upf.es</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Chinese</TD> <TD>Chinese</TD>
<TD>Wei Liu<br>Wang Weihan</TD> <TD>Wei Liu<br>Wang Weihan</TD>
...@@ -157,7 +163,7 @@ when the translator was updated. ...@@ -157,7 +163,7 @@ 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>1.2.16</TD> <TD>1.2.17</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Portuguese</TD> <TD>Portuguese</TD>
...@@ -181,7 +187,7 @@ when the translator was updated. ...@@ -181,7 +187,7 @@ when the translator was updated.
<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>1.2.16</TD> <TD>1.2.17</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Slovak</TD> <TD>Slovak</TD>
...@@ -226,6 +232,8 @@ when the translator was updated. ...@@ -226,6 +232,8 @@ when the translator was updated.
\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} & up-to-date \\
\hline \hline
Catalan & Albert Mora & {\tt amora@iua.upf.es} & up-to-date \\
\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
...@@ -262,7 +270,7 @@ when the translator was updated. ...@@ -262,7 +270,7 @@ when the translator was updated.
\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} & 1.2.16 \\ Polish & Piotr Kaminski & {\tt Piotr.Kaminski@ctm.gdynia.pl} & 1.2.17 \\
& 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} & up-to-date \\
...@@ -271,7 +279,7 @@ when the translator was updated. ...@@ -271,7 +279,7 @@ when the translator was updated.
\hline \hline
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\ Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\
\hline \hline
Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.2.16 \\ Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.2.17 \\
\hline \hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt skudlac@pobox.sk} & up-to-date \\ Slovak & Stanislav Kudl\'{a}\v{c} & {\tt skudlac@pobox.sk} & up-to-date \\
\hline \hline
......
...@@ -62,8 +62,8 @@ Just follow these steps: ...@@ -62,8 +62,8 @@ Just follow these steps:
defines which language translators will be compiled into doxygen defines which language translators will be compiled into doxygen
executable. It is a kind of configuration file. If you are sure that executable. It is a kind of configuration file. If you are sure that
you do not need some of the languages, you can remove (comment out) you do not need some of the languages, you can remove (comment out)
definitions of symbols for the languages, or you can say \c #undef definitions of symbols for the languages, or you can say \c \#undef
instead of \c #define for them. instead of \c \#define for them.
<li>Edit language.cpp: <li>Edit language.cpp:
Add a Add a
\verbatim \verbatim
...@@ -93,7 +93,7 @@ Just follow these steps: ...@@ -93,7 +93,7 @@ Just follow these steps:
<li>Edit <code>translator_xx.h</code>: <li>Edit <code>translator_xx.h</code>:
<ul> <ul>
<li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code> <li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code>
twice (i.e. in the \c #ifndef and \c #define preprocessor commands at twice (i.e. in the \c \#ifndef and \c \#define preprocessor commands at
the beginning of the file). the beginning of the file).
<li>Rename TranslatorEnglish to TranslatorYourLanguage <li>Rename TranslatorEnglish to TranslatorYourLanguage
<li>In the member <code>idLanguage()</code> change "english" into the <li>In the member <code>idLanguage()</code> change "english" into the
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
Brazilian Brazilian
Fabio "FJTC" Jun Takada Chino: chino@icmc.sc.usp.br Fabio "FJTC" Jun Takada Chino: chino@icmc.sc.usp.br
Catalan
Albert Mora: amora@iua.upf.es
Chinese Chinese
Wei Liu: liuwei@asiainfo.com Wei Liu: liuwei@asiainfo.com
Wang Weihan: wangweihan@capinfo.com.cn Wang Weihan: wangweihan@capinfo.com.cn
......
...@@ -42,10 +42,10 @@ recursively scanned. ...@@ -42,10 +42,10 @@ recursively scanned.
To simplify the creation of a configuration file, doxygen can create a To simplify the creation of a configuration file, doxygen can create a
template configuration file for you. To do this call \c doxygen with the \c -g template configuration file for you. To do this call \c doxygen with the \c -g
option: option:
\verbatim \verbatim
doxygen -g <config-file> doxygen -g <config-file>
\endverbatim \endverbatim
where \<config-file\> is the name of the configuration file. If you omit where \<config-file\> is the name of the configuration file. If you omit
the file name, a file named \c Doxyfile will be created. If a file with the the file name, a file named \c Doxyfile will be created. If a file with the
name \<config-file\> already exists, doxygen will rename it to name \<config-file\> already exists, doxygen will rename it to
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.2.17_20020811 Version: 1.2.17_20020825
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
......
...@@ -433,11 +433,7 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -433,11 +433,7 @@ void ClassDef::internalInsertMember(MemberDef *md,
enumValMembers.append(md); enumValMembers.append(md);
break; break;
case MemberDef::Function: case MemberDef::Function:
if (md->name()==localName() || // constructor if (md->isConstructor() || md->isDestructor())
(md->name().find('~')!=-1 && // hack to detect destructor
md->name().find("operator")==-1
)
)
{ {
constructors.append(md); constructors.append(md);
} }
......
...@@ -1247,7 +1247,7 @@ void Config::create() ...@@ -1247,7 +1247,7 @@ void Config::create()
"documentation generated by doxygen is written. Doxygen will use this \n" "documentation generated by doxygen is written. Doxygen will use this \n"
"information to generate all constant output in the proper language. \n" "information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n" "The default language is English, other supported languages are: \n"
"Brazilian, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, \n" "Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, \n"
"Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en \n" "Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en \n"
"(Japanese with english messages), Korean, Norwegian, Polish, Portuguese, \n" "(Japanese with english messages), Korean, Norwegian, Polish, Portuguese, \n"
"Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian.\n", "Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian.\n",
...@@ -1256,6 +1256,9 @@ void Config::create() ...@@ -1256,6 +1256,9 @@ void Config::create()
#ifdef LANG_BR #ifdef LANG_BR
ce->addValue("Brazilian"); ce->addValue("Brazilian");
#endif #endif
#ifdef LANG_CA
ce->addValue("Catalan");
#endif
#ifdef LANG_CN #ifdef LANG_CN
ce->addValue("Chinese"); ce->addValue("Chinese");
#endif #endif
...@@ -1377,6 +1380,14 @@ void Config::create() ...@@ -1377,6 +1380,14 @@ void Config::create()
"overviews. This option has no effect if EXTRACT_ALL is enabled. \n", "overviews. This option has no effect if EXTRACT_ALL is enabled. \n",
FALSE FALSE
); );
cb = addBool(
"HIDE_FRIEND_COMPOUNDS",
"If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all \n"
"friend (class|struct|union) declarations. \n"
"If set to NO (the default) these declarations will be included in the \n"
"documentation. \n",
FALSE
);
cb = addBool( cb = addBool(
"BRIEF_MEMBER_DESC", "BRIEF_MEMBER_DESC",
"If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \n" "If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \n"
......
...@@ -55,7 +55,6 @@ Definition::Definition(const char *df,int dl, ...@@ -55,7 +55,6 @@ Definition::Definition(const char *df,int dl,
m_partOfGroups=0; m_partOfGroups=0;
m_specialListItems=0; m_specialListItems=0;
m_briefLine=1; m_briefLine=1;
m_docFile=1;
} }
Definition::~Definition() Definition::~Definition()
......
...@@ -982,7 +982,7 @@ static void checkArgName(const QCString &name,bool isParam) ...@@ -982,7 +982,7 @@ static void checkArgName(const QCString &name,bool isParam)
* @retval TRUE if name was found. * @retval TRUE if name was found.
* @retval FALSE if name was not found. * @retval FALSE if name was not found.
*/ */
bool findDocsForMemberOrCompound(const char *commandName, static bool findDocsForMemberOrCompound(const char *commandName,
QCString *pDoc, QCString *pDoc,
Definition **pDef) Definition **pDef)
{ {
...@@ -1919,11 +1919,16 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? ...@@ -1919,11 +1919,16 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
QCString secName=&yytext[8]; QCString secName=&yytext[8];
secName=secName.left(secName.length()-1); secName=secName.left(secName.length()-1);
SectionInfo *sec; SectionInfo *sec;
//printf("secName=%s\n",secName.data());
if ((sec=Doxygen::sectionDict[secName])) if ((sec=Doxygen::sectionDict[secName]))
{ {
//printf("writeAnchor %s_%s\n",sec->fileName.data(),sec->label.data()); //printf("writeAnchor %s_%s\n",sec->fileName.data(),sec->label.data());
outDoc->writeAnchor(sec->fileName,sec->label); outDoc->writeAnchor(sec->fileName,sec->label);
} }
else
{
//printf("Section %s not found!\n",secName.data());
}
} }
<DocScan>"\\_internalref"{B}+ { // for internal use only! <DocScan>"\\_internalref"{B}+ { // for internal use only!
internalRefFile.resize(0); internalRefFile.resize(0);
...@@ -2128,6 +2133,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? ...@@ -2128,6 +2133,7 @@ LINKMASK [a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))?
} }
<DocRtfImageOpt>\n { <DocRtfImageOpt>\n {
writeImage(IT_RTF,0); writeImage(IT_RTF,0);
BEGIN(DocScan);
} }
<DocRtfImageOpt>\"[^\n"]*\" { <DocRtfImageOpt>\"[^\n"]*\" {
curImageCaption=stripQuotes(yytext); curImageCaption=stripQuotes(yytext);
...@@ -2947,64 +2953,68 @@ void parseDoc(OutputDocInterface &od,const char *fileName,int startLine, ...@@ -2947,64 +2953,68 @@ void parseDoc(OutputDocInterface &od,const char *fileName,int startLine,
const char *clName,MemberDef *md,const QCString &docStr) const char *clName,MemberDef *md,const QCString &docStr)
{ {
//printf("parseDoc doc=`%s'\n",docStr.data());
if (Debug::isFlagSet(Debug::Validate)) if (Debug::isFlagSet(Debug::Validate))
{ {
od.parseDoc(fileName,startLine,clName,md,docStr); od.parseDoc(fileName,startLine,clName,md,docStr);
} }
else
strcpy(yyFileName,fileName);
yyLineNr = startLine;
QCString docString=docStr;
resolveCopyDocCommands(clName,docString);
yyLineNr = startLine;
//printf("parseDoc(file=`%s',line=%d)\n",fileName,startLine);
initParser();
initParseCodeContext();
exampleDoc=FALSE; // do not cross reference with member docs
className=clName;
memberDef = md;
hasParamCommand = FALSE;
paramsFound.setAutoDelete(FALSE);
paramsFound.clear();
parseDocument(od,docString);
if (md && hasParamCommand && Config_getBool("WARN_IF_UNDOCUMENTED"))
{ {
ArgumentList *al=memberDef->isDocsForDefinition() ? strcpy(yyFileName,fileName);
memberDef->argumentList() : yyLineNr = startLine;
memberDef->declArgumentList();
if (al) QCString docString=docStr;
resolveCopyDocCommands(clName,docString);
yyLineNr = startLine;
//printf("parseDoc(file=`%s',line=%d)\n",fileName,startLine);
initParser();
initParseCodeContext();
exampleDoc=FALSE; // do not cross reference with member docs
className=clName;
memberDef = md;
hasParamCommand = FALSE;
paramsFound.setAutoDelete(FALSE);
paramsFound.clear();
parseDocument(od,docString);
if (md && hasParamCommand && Config_getBool("WARN_IF_UNDOCUMENTED"))
{ {
ArgumentListIterator ali(*al); ArgumentList *al=memberDef->isDocsForDefinition() ?
Argument *a; memberDef->argumentList() :
bool found=FALSE; memberDef->declArgumentList();
for (ali.toFirst();(a=ali.current());++ali) if (al)
{
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)
{
found = TRUE;
break;
}
}
if (found)
{ {
QCString scope=memberDef->getScopeString(); ArgumentListIterator ali(*al);
if (!scope.isEmpty()) scope+="::"; else scope=""; Argument *a;
warn(memberDef->docFile(),memberDef->docLine(), bool found=FALSE;
"Warning: The following parameters of "
"%s%s%s are not documented:",
scope.data(),memberDef->name().data(),
argListToString(al).data());
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)
{ {
warn_cont( " parameter %s\n",argName.data()); found = TRUE;
break;
}
}
if (found)
{
QCString scope=memberDef->getScopeString();
if (!scope.isEmpty()) scope+="::"; else scope="";
warn(memberDef->docFile(),memberDef->docLine(),
"Warning: The following parameters of "
"%s%s%s are not documented:",
scope.data(),memberDef->name().data(),
argListToString(al).data());
for (ali.toFirst();(a=ali.current());++ali)
{
QCString argName = memberDef->isDefine() ? a->type : a->name;
if (!argName.isEmpty() && paramsFound.find(argName)==0)
{
warn_cont( " parameter %s\n",argName.data());
}
} }
} }
} }
......
This diff is collapsed.
This diff is collapsed.
...@@ -235,7 +235,11 @@ OPCAST {BLANK}+[^(\r\n.,]+ ...@@ -235,7 +235,11 @@ OPCAST {BLANK}+[^(\r\n.,]+
OPMASK ({BLANK}*{OPNORM}({FUNCARG}?))|({OPCAST}{FUNCARG}) OPMASK ({BLANK}*{OPNORM}({FUNCARG}?))|({OPCAST}{FUNCARG})
LNKWORD1 {SCOPEMASK}({FUNCARG}({BLANK}*("const"|"volatile"))?)? LNKWORD1 {SCOPEMASK}({FUNCARG}({BLANK}*("const"|"volatile"))?)?
LNKWORD2 {SCOPEPRE}*"operator"{OPMASK} LNKWORD2 {SCOPEPRE}*"operator"{OPMASK}
WORD [^ \t\n\r\\@<>&$#,.]+ WORD1 [^ \t\n\r\\@<>&$#,.]+
WORD2 "."|","
WORD1NQ [^ \t\n\r\\@<>&$#,."]+
WORD2NQ "."|","
HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
%option noyywrap %option noyywrap
%option yylineno %option yylineno
...@@ -243,6 +247,10 @@ WORD [^ \t\n\r\\@<>&$#,.]+ ...@@ -243,6 +247,10 @@ WORD [^ \t\n\r\\@<>&$#,.]+
%x St_Para %x St_Para
%x St_Comment %x St_Comment
%x St_Title %x St_Title
%x St_TitleN
%x St_TitleQ
%x St_TitleA
%x St_TitleV
%x St_Code %x St_Code
%x St_HtmlOnly %x St_HtmlOnly
%x St_LatexOnly %x St_LatexOnly
...@@ -317,13 +325,13 @@ WORD [^ \t\n\r\\@<>&$#,.]+ ...@@ -317,13 +325,13 @@ WORD [^ \t\n\r\\@<>&$#,.]+
g_token->text = tagName.mid(i+1,tagName.length()-i-2); g_token->text = tagName.mid(i+1,tagName.length()-i-2);
return TK_RCSTAG; return TK_RCSTAG;
} }
<St_Para>"$("{ID}")" { /* environment variable */ <St_Para,St_HtmlOnly>"$("{ID}")" { /* environment variable */
QCString name = &yytext[2]; QCString name = &yytext[2];
name = name.left(name.length()-1); name = name.left(name.length()-1);
QCString value = getenv(name); QCString value = getenv(name);
for (int i=value.length()-1;i>=0;i--) unput(value.at(i)); for (int i=value.length()-1;i>=0;i--) unput(value.at(i));
} }
<St_Para>"<"(("/")?){ID}({BLANK}+{ATTRIB})*">" { /* html tag */ <St_Para>{HTMLTAG} { /* html tag */
g_token->name = yytext; g_token->name = yytext;
int startNamePos=1; int startNamePos=1;
if (g_token->name.at(1)=='/') startNamePos++; if (g_token->name.at(1)=='/') startNamePos++;
...@@ -349,11 +357,8 @@ WORD [^ \t\n\r\\@<>&$#,.]+ ...@@ -349,11 +357,8 @@ WORD [^ \t\n\r\\@<>&$#,.]+
g_token->name = yytext; g_token->name = yytext;
return TK_LNKWORD; return TK_LNKWORD;
} }
<St_Para>"."|"," { <St_Para>{WORD1} |
g_token->name = yytext; <St_Para>{WORD2} { /* function call */
return TK_WORD;
}
<St_Para>{WORD} { /* function call */
g_token->name = yytext; g_token->name = yytext;
return TK_WORD; return TK_WORD;
...@@ -383,7 +388,7 @@ WORD [^ \t\n\r\\@<>&$#,.]+ ...@@ -383,7 +388,7 @@ WORD [^ \t\n\r\\@<>&$#,.]+
<St_HtmlOnly>{CMD}"endhtmlonly" { <St_HtmlOnly>{CMD}"endhtmlonly" {
return RetVal_OK; return RetVal_OK;
} }
<St_HtmlOnly>[^\\@\n]+ | <St_HtmlOnly>[^\\@\n$]+ |
<St_HtmlOnly>\n | <St_HtmlOnly>\n |
<St_HtmlOnly>. { <St_HtmlOnly>. {
g_token->verb+=yytext; g_token->verb+=yytext;
...@@ -404,26 +409,87 @@ WORD [^ \t\n\r\\@<>&$#,.]+ ...@@ -404,26 +409,87 @@ WORD [^ \t\n\r\\@<>&$#,.]+
<St_Verbatim>. { /* Verbatim text */ <St_Verbatim>. { /* Verbatim text */
g_token->verb+=yytext; g_token->verb+=yytext;
} }
<St_Title>"&"{ID}";" { /* symbol */ <St_Title>"\"" { // quoted title
BEGIN(St_TitleQ);
}
<St_Title>[ \t]+ {
g_token->chars=yytext;
return TK_WHITESPACE;
}
<St_Title>. { // non-quoted title
unput(*yytext);
BEGIN(St_TitleN);
}
<St_Title>\n {
return 0;
}
<St_TitleN>"&"{ID}";" { /* symbol */
g_token->name = yytext; g_token->name = yytext;
return TK_SYMBOL; return TK_SYMBOL;
} }
<St_Title>{SPCMD1} | <St_TitleN>{SPCMD1} |
<St_Title>{SPCMD2} { /* special command */ <St_TitleN>{SPCMD2} { /* special command */
g_token->name = yytext+1; g_token->name = yytext+1;
return TK_COMMAND; return TK_COMMAND;
} }
<St_Title>{WORD} { /* word */ <St_TitleN>{WORD1} |
<St_TitleN>{WORD2} { /* word */
g_token->name = yytext; g_token->name = yytext;
return TK_WORD; return TK_WORD;
} }
<St_Title>[ \t]+ { <St_TitleN>[ \t]+ {
g_token->chars=yytext;
return TK_WHITESPACE;
}
<St_TitleN>\n { /* new line => end of title */
unput(*yytext);
return 0;
}
<St_TitleQ>"&"{ID}";" { /* symbol */
g_token->name = yytext;
return TK_SYMBOL;
}
<St_TitleQ>{SPCMD1} |
<St_TitleQ>{SPCMD2} { /* special command */
g_token->name = yytext+1;
return TK_COMMAND;
}
<St_TitleQ>{WORD1NQ} |
<St_TitleQ>{WORD2NQ} { /* word */
g_token->name = yytext;
return TK_WORD;
}
<St_TitleQ>[ \t]+ {
g_token->chars=yytext; g_token->chars=yytext;
return TK_WHITESPACE; return TK_WHITESPACE;
} }
<St_Title>\n { /* new line => end of title */ <St_TitleQ>"\"" { /* closing quote => end of title */
BEGIN(St_TitleA);
return 0;
}
<St_TitleQ>\n { /* new line => end of title */
unput(*yytext);
return 0; return 0;
} }
<St_TitleA>{BLANK}*{ID}{BLANK}*"="{BLANK}* { // title attribute
g_token->name = yytext;
g_token->name = g_token->name.left(
g_token->name.find('=')).stripWhiteSpace();
BEGIN(St_TitleV);
}
<St_TitleV>[^ \t\r\n]+ { // attribute value
g_token->chars = yytext;
BEGIN(St_TitleN);
return TK_WORD;
}
<St_TitleV,St_TitleA>. {
unput(*yytext);
return 0;
}
<St_TitleV,St_TitleA>\n {
return 0;
}
<St_Ref>{ID} { <St_Ref>{ID} {
g_token->name=yytext; g_token->name=yytext;
return TK_WORD; return TK_WORD;
...@@ -458,8 +524,8 @@ WORD [^ \t\n\r\\@<>&$#,.]+ ...@@ -458,8 +524,8 @@ WORD [^ \t\n\r\\@<>&$#,.]+
g_token->name = yytext+1; g_token->name = yytext+1;
return TK_COMMAND; return TK_COMMAND;
} }
<St_Ref2>[^ \t\n\r\\@<&$"]+ | <St_Ref2>{WORD1NQ} |
<St_Ref2>[^ \t\n\r\\@<&$"]+"("[^\n")]*")"({BLANK}*("const"|"volatile"))? { <St_Ref2>{WORD2NQ} {
/* word */ /* word */
g_token->name = yytext; g_token->name = yytext;
return TK_WORD; return TK_WORD;
......
...@@ -51,7 +51,6 @@ class DocAnchor; ...@@ -51,7 +51,6 @@ class DocAnchor;
class DocIndexEntry; class DocIndexEntry;
class DocInternal; class DocInternal;
class DocHRef; class DocHRef;
class DocCopy;
class DocInclude; class DocInclude;
class DocIncOperator; class DocIncOperator;
class DocHtmlHeader; class DocHtmlHeader;
...@@ -67,6 +66,7 @@ class DocLinkedWord; ...@@ -67,6 +66,7 @@ class DocLinkedWord;
class DocParamSect; class DocParamSect;
class DocParamList; class DocParamList;
class DocInternalRef; class DocInternalRef;
class DocCopy;
/*! @brief Abstract visitor that participates in the visitor pattern. /*! @brief Abstract visitor that participates in the visitor pattern.
*/ */
...@@ -83,7 +83,6 @@ class DocVisitor ...@@ -83,7 +83,6 @@ class DocVisitor
virtual void visit(DocLineBreak *) = 0; virtual void visit(DocLineBreak *) = 0;
virtual void visit(DocHorRuler *) = 0; virtual void visit(DocHorRuler *) = 0;
virtual void visit(DocAnchor *) = 0; virtual void visit(DocAnchor *) = 0;
virtual void visit(DocCopy *) = 0;
virtual void visit(DocInclude *) = 0; virtual void visit(DocInclude *) = 0;
virtual void visit(DocIncOperator *) = 0; virtual void visit(DocIncOperator *) = 0;
virtual void visit(DocFormula *) = 0; virtual void visit(DocFormula *) = 0;
...@@ -158,6 +157,8 @@ class DocVisitor ...@@ -158,6 +157,8 @@ class DocVisitor
virtual void visitPost(DocXRefItem *) = 0; virtual void visitPost(DocXRefItem *) = 0;
virtual void visitPre(DocInternalRef *) = 0; virtual void visitPre(DocInternalRef *) = 0;
virtual void visitPost(DocInternalRef *) = 0; virtual void visitPost(DocInternalRef *) = 0;
virtual void visitPre(DocCopy *) = 0;
virtual void visitPost(DocCopy *) = 0;
}; };
#endif #endif
...@@ -16,6 +16,9 @@ ...@@ -16,6 +16,9 @@
* *
*/ */
#ifndef _DOT_H
#define _DOT_H
#include "qtbc.h" #include "qtbc.h"
#include <qlist.h> #include <qlist.h>
#include <qdict.h> #include <qdict.h>
...@@ -171,3 +174,4 @@ void generateGraphLegend(const char *path); ...@@ -171,3 +174,4 @@ void generateGraphLegend(const char *path);
void writeDotGraphFromFile(const char *inFile,const char *outDir, void writeDotGraphFromFile(const char *inFile,const char *outDir,
const char *outFile,GraphOutputFormat format); const char *outFile,GraphOutputFormat format);
#endif
This diff is collapsed.
...@@ -131,6 +131,7 @@ void GroupDef::addNamespace(const NamespaceDef *def) ...@@ -131,6 +131,7 @@ void GroupDef::addNamespace(const NamespaceDef *def)
void GroupDef::addPage(PageInfo *def) void GroupDef::addPage(PageInfo *def)
{ {
//printf("Making page %s part of a group\n",def->name.data());
pageDict->append(def->name,def); pageDict->append(def->name,def);
def->makePartOfGroup(this); def->makePartOfGroup(this);
} }
......
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#include "htmldocvisitor.h"
void HtmlDocVisitor::filter(const char *str)
{
if (str==0) return;
const char *p=str;
char c;
while (*p)
{
c=*p++;
switch(c)
{
case '<': m_t << "&lt;"; break;
case '>': m_t << "&gt;"; break;
case '&': m_t << "&amp;"; break;
default: m_t << c;
}
}
}
void HtmlDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor)
{
QCString *dest;
if (!ref.isEmpty()) // link to entity imported via tag file
{
m_t << "<a class=\"elRef\" ";
m_t << "doxygen=\"" << ref << ":";
if ((dest=Doxygen::tagDestinationDict[ref])) m_t << *dest << "/";
m_t << "\" ";
}
else // local link
{
m_t << "<a class=\"el\" ";
}
m_t << "href=\"";
if (!ref.isEmpty())
{
if ((dest=Doxygen::tagDestinationDict[ref])) m_t << *dest << "/";
}
if (!file.isEmpty()) m_t << file << Doxygen::htmlFileExtension;
if (!anchor.isEmpty()) m_t << "#" << anchor;
m_t << "\">";
}
void HtmlDocVisitor::endLink()
{
m_t << "</a>";
}
This diff is collapsed.
...@@ -1239,14 +1239,11 @@ void HtmlGenerator::endSectionRefList() ...@@ -1239,14 +1239,11 @@ void HtmlGenerator::endSectionRefList()
t << "</multicol>" << endl; t << "</multicol>" << endl;
} }
void HtmlGenerator::printDoc(DocNode *n) void HtmlGenerator::printDoc(DocNode *n)
{ {
#ifdef ENABLE_NEW_PARSER
HtmlDocVisitor *visitor = new HtmlDocVisitor(t,*this); HtmlDocVisitor *visitor = new HtmlDocVisitor(t,*this);
n->accept(visitor); n->accept(visitor);
delete visitor; delete visitor;
#else
n=n;
#endif
} }
...@@ -24,3 +24,4 @@ ...@@ -24,3 +24,4 @@
#define LANG_GR #define LANG_GR
#define LANG_TW #define LANG_TW
#define LANG_SR #define LANG_SR
#define LANG_CA
...@@ -100,6 +100,9 @@ ...@@ -100,6 +100,9 @@
#ifdef LANG_SR #ifdef LANG_SR
#include "translator_sr.h" #include "translator_sr.h"
#endif #endif
#ifdef LANG_CA
#include "translator_ca.h"
#endif
//#ifdef LANG_JS //#ifdef LANG_JS
//#include "translator_js.h" //#include "translator_js.h"
//#endif //#endif
......
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#include "latexdocvisitor.h"
#include "util.h"
void LatexDocVisitor::filter(const char *str)
{
filterLatexString(m_t,str,FALSE,m_insidePre);
}
void LatexDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor)
{
if (ref.isEmpty() && Config_getBool("PDF_HYPERLINKS"))
{
m_t << "\\hyperlink{";
if (!file.isEmpty()) m_t << file;
if (!file.isEmpty() && !anchor.isEmpty()) m_t << "_";
if (!anchor.isEmpty()) m_t << anchor;
m_t << "}{";
}
else
{
m_t << "{\\bf ";
}
}
void LatexDocVisitor::endLink()
{
m_t << "}";
}
This diff is collapsed.
This diff is collapsed.
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
* *
*/ */
#ifndef OUTPUT_H #ifndef LATEXGEN_H
#define OUTPUT_H #define LATEXGEN_H
#include "outputgen.h" #include "outputgen.h"
...@@ -42,6 +42,8 @@ class LatexGenerator : public OutputGenerator ...@@ -42,6 +42,8 @@ class LatexGenerator : public OutputGenerator
bool isEnabled(OutputType o) { return (o==Latex && active); } bool isEnabled(OutputType o) { return (o==Latex && active); }
OutputGenerator *get(OutputType o) { return (o==Latex) ? this : 0; } OutputGenerator *get(OutputType o) { return (o==Latex) ? this : 0; }
void printDoc(DocNode *);
void startFile(const char *name,const char *manName, void startFile(const char *name,const char *manName,
const char *title, bool external); const char *title, bool external);
void writeFooter(int,bool) {} void writeFooter(int,bool) {}
...@@ -287,7 +289,6 @@ class LatexGenerator : public OutputGenerator ...@@ -287,7 +289,6 @@ class LatexGenerator : public OutputGenerator
void writeCodeAnchor(const char *) {} void writeCodeAnchor(const char *) {}
private: private:
void latin2ToLatex(unsigned char);
LatexGenerator(const LatexGenerator &); LatexGenerator(const LatexGenerator &);
LatexGenerator &operator=(const LatexGenerator &); LatexGenerator &operator=(const LatexGenerator &);
int col; int col;
......
...@@ -22,12 +22,16 @@ HEADERS = bufstr.h \ ...@@ -22,12 +22,16 @@ HEADERS = bufstr.h \
cmdmapper.h \ cmdmapper.h \
code.h \ code.h \
commentcnv.h \ commentcnv.h \
config.h \
constexp.h \ constexp.h \
cppvalue.h \ cppvalue.h \
debug.h \ debug.h \
declinfo.h \
defargs.h \
defgen.h \ defgen.h \
doxygen.h \ define.h \
scanner.h \ definition.h \
diagram.h \
doc.h \ doc.h \
docparser.h \ docparser.h \
doctokenizer.h \ doctokenizer.h \
...@@ -41,12 +45,14 @@ HEADERS = bufstr.h \ ...@@ -41,12 +45,14 @@ HEADERS = bufstr.h \
formula.h \ formula.h \
ftvhelp.h \ ftvhelp.h \
groupdef.h \ groupdef.h \
htmldocvisitor.h \
htmlgen.h \ htmlgen.h \
htmlhelp.h \ htmlhelp.h \
image.h \ image.h \
index.h \ index.h \
instdox.h \ instdox.h \
language.h \ language.h \
latexdocvisitor.h \
latexgen.h \ latexgen.h \
logos.h \ logos.h \
mangen.h \ mangen.h \
...@@ -75,9 +81,11 @@ HEADERS = bufstr.h \ ...@@ -75,9 +81,11 @@ HEADERS = bufstr.h \
translator.h \ translator.h \
translator_adapter.h \ translator_adapter.h \
translator_br.h \ translator_br.h \
translator_ca.h \
translator_cn.h \ translator_cn.h \
translator_cz.h \ translator_cz.h \
translator_de.h \ translator_de.h \
translator_dk.h \
translator_en.h \ translator_en.h \
translator_es.h \ translator_es.h \
translator_fi.h \ translator_fi.h \
...@@ -96,6 +104,10 @@ HEADERS = bufstr.h \ ...@@ -96,6 +104,10 @@ HEADERS = bufstr.h \
translator_ru.h \ translator_ru.h \
translator_se.h \ translator_se.h \
translator_si.h \ translator_si.h \
translator_sk.h \
translator_sr.h \
translator_tw.h \
translator_ua.h \
treeview.h \ treeview.h \
unistd.h \ unistd.h \
util.h \ util.h \
...@@ -127,12 +139,14 @@ SOURCES = ce_lex.cpp \ ...@@ -127,12 +139,14 @@ SOURCES = ce_lex.cpp \
formula.cpp \ formula.cpp \
ftvhelp.cpp \ ftvhelp.cpp \
groupdef.cpp \ groupdef.cpp \
htmldocvisitor.cpp \
htmlgen.cpp \ htmlgen.cpp \
htmlhelp.cpp \ htmlhelp.cpp \
image.cpp \ image.cpp \
index.cpp \ index.cpp \
instdox.cpp \ instdox.cpp \
language.cpp \ language.cpp \
latexdocvisitor.cpp \
latexgen.cpp \ latexgen.cpp \
logos.cpp \ logos.cpp \
mangen.cpp \ mangen.cpp \
......
...@@ -552,6 +552,8 @@ ClassDef *MemberDef::getClassDefOfAnonymousType() ...@@ -552,6 +552,8 @@ ClassDef *MemberDef::getClassDefOfAnonymousType()
*/ */
bool MemberDef::isBriefSectionVisible() const bool MemberDef::isBriefSectionVisible() const
{ {
bool hasDocs = hasDocumentation();
// only include static members with file/namespace scope if // only include static members with file/namespace scope if
// explicitly enabled in the config file // explicitly enabled in the config file
bool visibleIfStatic = !(getClassDef()==0 && bool visibleIfStatic = !(getClassDef()==0 &&
...@@ -562,7 +564,7 @@ bool MemberDef::isBriefSectionVisible() const ...@@ -562,7 +564,7 @@ bool MemberDef::isBriefSectionVisible() const
// only include members is the are documented or // only include members is the are documented or
// HIDE_UNDOC_MEMBERS is NO in the config file // HIDE_UNDOC_MEMBERS is NO in the config file
bool visibleIfDocumented = (!Config_getBool("HIDE_UNDOC_MEMBERS") || bool visibleIfDocumented = (!Config_getBool("HIDE_UNDOC_MEMBERS") ||
hasDocumentation() || hasDocs ||
isDocumentedFriendClass() isDocumentedFriendClass()
); );
...@@ -574,6 +576,15 @@ bool MemberDef::isBriefSectionVisible() const ...@@ -574,6 +576,15 @@ bool MemberDef::isBriefSectionVisible() const
!Config_getBool("REPEAT_BRIEF") !Config_getBool("REPEAT_BRIEF")
); );
// Hide friend (class|struct|union) declarations if HIDE_FRIEND_COMPOUNDS is true
bool visibleIfFriendCompound = !(Config_getBool("HIDE_FRIEND_COMPOUNDS") &&
isFriend() &&
(type=="friend class" ||
type=="friend struct" ||
type=="friend union"
)
);
// only include members that are non-private unless EXTRACT_PRIVATE is // only include members that are non-private unless EXTRACT_PRIVATE is
// set to YES or the member is part of a group // set to YES or the member is part of a group
bool visibleIfPrivate = (protection()!=Private || bool visibleIfPrivate = (protection()!=Private ||
...@@ -581,8 +592,28 @@ bool MemberDef::isBriefSectionVisible() const ...@@ -581,8 +592,28 @@ bool MemberDef::isBriefSectionVisible() const
mtype==Friend mtype==Friend
); );
bool visible = visibleIfStatic && visibleIfDocumented && // hide member if it overrides a member in a superclass and has no
visibleIfEnabled && visibleIfPrivate && !annScope; // documentation
bool visibleIfDocVirtual = (reimplements() || hasDocs);
// true if this member is a constructor or destructor
bool cOrDTor = isConstructor() || isDestructor();
// hide default constructors or destructors (no args) without
// documentation
bool visibleIfNotDefaultCDTor = !(cOrDTor &&
defArgList &&
(defArgList->isEmpty() ||
defArgList->first()->type == "void"
) &&
!hasDocs
);
bool visible = visibleIfStatic && visibleIfDocumented &&
visibleIfEnabled && visibleIfPrivate &&
visibleIfDocVirtual && visibleIfNotDefaultCDTor &&
visibleIfFriendCompound &&
!annScope;
//printf("MemberDef::isBriefSectionVisible() %d\n",visible); //printf("MemberDef::isBriefSectionVisible() %d\n",visible);
return visible; return visible;
} }
...@@ -896,9 +927,11 @@ bool MemberDef::isDetailedSectionLinkable() const ...@@ -896,9 +927,11 @@ bool MemberDef::isDetailedSectionLinkable() const
// is documented enum value // is documented enum value
(mtype==EnumValue && !briefDescription().isEmpty()) || (mtype==EnumValue && !briefDescription().isEmpty()) ||
// has brief description that is part of the detailed description // has brief description that is part of the detailed description
(!briefDescription().isEmpty() && (!briefDescription().isEmpty() && // has brief docs
Config_getBool("ALWAYS_DETAILED_SEC") && (Config_getBool("ALWAYS_DETAILED_SEC") && // they or visible in
Config_getBool("REPEAT_BRIEF") Config_getBool("REPEAT_BRIEF") || // detailed section or
!Config_getBool("BRIEF_MEMBER_DESC") // they are explicitly not
) // shown in brief section
) || ) ||
// has a multi-line initialization block // has a multi-line initialization block
//(initLines>0 && initLines<maxInitLines) || //(initLines>0 && initLines<maxInitLines) ||
...@@ -1196,9 +1229,9 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1196,9 +1229,9 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
/* write brief description */ /* write brief description */
if (!brief.isEmpty() && if (!brief.isEmpty() &&
(Config_getBool("REPEAT_BRIEF") (Config_getBool("REPEAT_BRIEF") ||
/* || (!Config_getBool("BRIEF_MEMBER_DESC") && documentation().isEmpty())*/ !Config_getBool("BRIEF_MEMBER_DESC")
) /* || !annMemb */ )
) )
{ {
parseDoc(ol,briefFile(),briefLine(),scopeName,this,brief); parseDoc(ol,briefFile(),briefLine(),scopeName,this,brief);
...@@ -1493,10 +1526,15 @@ void MemberDef::warnIfUndocumented() ...@@ -1493,10 +1526,15 @@ void MemberDef::warnIfUndocumented()
else else
t="file", d=fd; t="file", d=fd;
if (d && d->isLinkable() && !isLinkable() && !isDocumentedFriendClass() if (d && d->isLinkable() && !isLinkable() &&
&& name().find('@')==-1) !isDocumentedFriendClass() &&
name().find('@')==-1 &&
(prot!=Private || Config_getBool("EXTRACT_PRIVATE"))
)
{
warn_undoc(m_defFileName,m_defLine,"Warning: Member %s of %s %s is not documented.", warn_undoc(m_defFileName,m_defLine,"Warning: Member %s of %s %s is not documented.",
name().data(),t,d->name().data()); name().data(),t,d->name().data());
}
} }
...@@ -1730,3 +1768,13 @@ Specifier MemberDef::virtualness() const ...@@ -1730,3 +1768,13 @@ Specifier MemberDef::virtualness() const
return v; return v;
} }
bool MemberDef::isConstructor() const
{
return classDef ? name()==classDef->localName() : FALSE;
}
bool MemberDef::isDestructor() const
{
return name().find('~')!=-1 && name().find("operator")==-1;
}
...@@ -120,6 +120,8 @@ class MemberDef : public Definition ...@@ -120,6 +120,8 @@ class MemberDef : public Definition
bool isExplicit() const { return (memSpec&Entry::Explicit)!=0; } bool isExplicit() const { return (memSpec&Entry::Explicit)!=0; }
bool isMutable() const { return (memSpec&Entry::Mutable)!=0; } bool isMutable() const { return (memSpec&Entry::Mutable)!=0; }
bool isExternal() const { return explExt; } bool isExternal() const { return explExt; }
bool isConstructor() const;
bool isDestructor() const;
bool hasOneLineInitializer() const; bool hasOneLineInitializer() const;
bool hasMultiLineInitializer() const; bool hasMultiLineInitializer() const;
......
...@@ -31,7 +31,8 @@ NamespaceDef::NamespaceDef(const char *df,int dl, ...@@ -31,7 +31,8 @@ NamespaceDef::NamespaceDef(const char *df,int dl,
const char *name,const char *lref) : const char *name,const char *lref) :
Definition(df,dl,name) Definition(df,dl,name)
{ {
fileName=(QCString)"namespace"+name; fileName="namespace";
fileName+=name;
classSDict = new ClassSDict(17); classSDict = new ClassSDict(17);
namespaceSDict = new NamespaceSDict(17); namespaceSDict = new NamespaceSDict(17);
m_innerCompounds = new SDict<Definition>(17); m_innerCompounds = new SDict<Definition>(17);
......
...@@ -120,15 +120,6 @@ class BaseOutputDocInterface : public BaseCodeDocInterface ...@@ -120,15 +120,6 @@ class BaseOutputDocInterface : public BaseCodeDocInterface
/*! Starts a new paragraph */ /*! Starts a new paragraph */
virtual void newParagraph() = 0; virtual void newParagraph() = 0;
/*! Starts a enumeration list: e.g. \c <ol> in html.
* writeListItem() is used for the items.
*/
virtual void startEnumList() = 0;
/*! Ends an enumeration list: e.g. \c </ol> in html.
*/
virtual void endEnumList() = 0;
/*! Writes a link to an object in the documentation. /*! Writes a link to an object in the documentation.
* \param ref If this is non-zero, the object is to be found in * \param ref If this is non-zero, the object is to be found in
* an external documentation file. * an external documentation file.
...@@ -150,10 +141,6 @@ class BaseOutputDocInterface : public BaseCodeDocInterface ...@@ -150,10 +141,6 @@ class BaseOutputDocInterface : public BaseCodeDocInterface
*/ */
virtual void endHtmlLink() = 0; virtual void endHtmlLink() = 0;
/*! Writes a (link to an) email address found in the documentation.
* \param url The email address, this is also used for the link text.
*/
virtual void writeMailLink(const char *url) = 0;
/*! Changes the text font to bold face. The bold section ends with /*! Changes the text font to bold face. The bold section ends with
* endBold() * endBold()
...@@ -190,21 +177,8 @@ class BaseOutputDocInterface : public BaseCodeDocInterface ...@@ -190,21 +177,8 @@ class BaseOutputDocInterface : public BaseCodeDocInterface
*/ */
virtual void endCodeFragment() = 0; virtual void endCodeFragment() = 0;
/*! Starts a fragment of preformatted text. This means that
* spacing, tabs and newlines should be kept in the output
*/
virtual void startPreFragment() = 0;
/*! Ends a preformatted text fragment. */
virtual void endPreFragment() = 0;
/*! Starts a fragment of verbatim test. This is preformatted text,
* without any special internal structure.
*/
virtual void startVerbatimFragment() = 0;
/*! Ends a verbatim text fragment. */
virtual void endVerbatimFragment() = 0;
/*! Writes a horizontal ruler to the output */ /*! Writes a horizontal ruler to the output */
virtual void writeRuler() = 0; virtual void writeRuler() = 0;
...@@ -224,14 +198,53 @@ class BaseOutputDocInterface : public BaseCodeDocInterface ...@@ -224,14 +198,53 @@ class BaseOutputDocInterface : public BaseCodeDocInterface
* description itself: e.g. \c <dd> in HTML. * description itself: e.g. \c <dd> in HTML.
*/ */
virtual void endDescItem() = 0; virtual void endDescItem() = 0;
virtual void startSubsection() = 0;
virtual void endSubsection() = 0;
virtual void startSubsubsection() = 0;
virtual void endSubsubsection() = 0;
virtual void startCenter() = 0; virtual void startCenter() = 0;
virtual void endCenter() = 0; virtual void endCenter() = 0;
virtual void startSmall() = 0; virtual void startSmall() = 0;
virtual void endSmall() = 0; virtual void endSmall() = 0;
virtual void startSimpleSect(SectionTypes t,const char *file,
const char *anchor,const char *title) = 0;
virtual void endSimpleSect() = 0;
virtual void startParamList(ParamListTypes t,const char *title) = 0;
virtual void endParamList() = 0;
virtual void writeDescItem() = 0;
virtual void startTitle() = 0;
virtual void endTitle() = 0;
virtual void writeAnchor(const char *fileName,const char *name) = 0;
virtual void startSection(const char *,const char *,SectionInfo::SectionType) = 0;
virtual void endSection(const char *,SectionInfo::SectionType) = 0;
virtual void lineBreak() = 0;
virtual void addIndexItem(const char *s1,const char *s2) = 0;
virtual void writeNonBreakableSpace(int) = 0;
virtual void startDescTable() = 0;
virtual void endDescTable() = 0;
virtual void startDescTableTitle() = 0;
virtual void endDescTableTitle() = 0;
virtual void startDescTableData() = 0;
virtual void endDescTableData() = 0;
virtual void startTextLink(const char *file,const char *anchor) = 0;
virtual void endTextLink() = 0;
virtual void startPageRef() = 0;
virtual void endPageRef(const char *,const char *) = 0;
/********************* Functions to remove *******************************/
virtual void writeMailLink(const char *url) = 0;
virtual void startPreFragment() = 0;
virtual void endPreFragment() = 0;
virtual void startVerbatimFragment() = 0;
virtual void endVerbatimFragment() = 0;
virtual void startSubsection() = 0;
virtual void endSubsection() = 0;
virtual void startSubsubsection() = 0;
virtual void endSubsubsection() = 0;
virtual void startSubscript() = 0; virtual void startSubscript() = 0;
virtual void endSubscript() = 0; virtual void endSubscript() = 0;
virtual void startSuperscript() = 0; virtual void startSuperscript() = 0;
...@@ -254,50 +267,26 @@ class BaseOutputDocInterface : public BaseCodeDocInterface ...@@ -254,50 +267,26 @@ class BaseOutputDocInterface : public BaseCodeDocInterface
virtual void writeRing(char) = 0; virtual void writeRing(char) = 0;
virtual void writeSharpS() = 0; virtual void writeSharpS() = 0;
virtual void writeCCedil(char) = 0; virtual void writeCCedil(char) = 0;
virtual void startSimpleSect(SectionTypes t,const char *file,
const char *anchor,const char *title) = 0;
virtual void endSimpleSect() = 0;
virtual void startParamList(ParamListTypes t,const char *title) = 0;
virtual void endParamList() = 0;
virtual void endDescTitle() = 0; virtual void endDescTitle() = 0;
virtual void writeDescItem() = 0;
virtual void startTitle() = 0;
virtual void endTitle() = 0;
virtual void writeAnchor(const char *fileName,const char *name) = 0;
virtual void startSection(const char *,const char *,SectionInfo::SectionType) = 0;
virtual void endSection(const char *,SectionInfo::SectionType) = 0;
virtual void writeSectionRef(const char *,const char *, virtual void writeSectionRef(const char *,const char *,
const char *,const char *) = 0; const char *,const char *) = 0;
virtual void writeSectionRefItem(const char *,const char *,const char *) = 0; virtual void writeSectionRefItem(const char *,const char *,const char *) = 0;
virtual void lineBreak() = 0; virtual void startEnumList() = 0;
virtual void addIndexItem(const char *s1,const char *s2) = 0;
virtual void writeFormula(const char *,const char *) = 0; virtual void endEnumList() = 0;
virtual void writeNonBreakableSpace(int) = 0;
virtual void startImage(const char *,const char *,bool) = 0; virtual void startImage(const char *,const char *,bool) = 0;
virtual void endImage(bool) = 0; virtual void endImage(bool) = 0;
virtual void startDotFile(const char *,bool) = 0; virtual void startDotFile(const char *,bool) = 0;
virtual void endDotFile(bool) = 0; virtual void endDotFile(bool) = 0;
virtual void startDescTable() = 0; virtual void writeFormula(const char *,const char *) = 0;
virtual void endDescTable() = 0;
virtual void startDescTableTitle() = 0;
virtual void endDescTableTitle() = 0;
virtual void startDescTableData() = 0;
virtual void endDescTableData() = 0;
virtual void startTextLink(const char *file,const char *anchor) = 0;
virtual void endTextLink() = 0;
virtual void startPageRef() = 0;
virtual void endPageRef(const char *,const char *) = 0;
virtual void startHtmlOnly() = 0; virtual void startHtmlOnly() = 0;
virtual void endHtmlOnly() = 0; virtual void endHtmlOnly() = 0;
virtual void startLatexOnly() = 0; virtual void startLatexOnly() = 0;
virtual void endLatexOnly() = 0; virtual void endLatexOnly() = 0;
virtual void startSectionRefList() = 0; virtual void startSectionRefList() = 0;
virtual void endSectionRefList() = 0; virtual void endSectionRefList() = 0;
/************************************************************************/
}; };
......
...@@ -147,11 +147,6 @@ class PrintDocVisitor : public DocVisitor ...@@ -147,11 +147,6 @@ class PrintDocVisitor : public DocVisitor
indent_leaf(); indent_leaf();
printf("<anchor name=\"%s\"/>",a->anchor().data()); printf("<anchor name=\"%s\"/>",a->anchor().data());
} }
void visit(DocCopy *c)
{
indent_leaf();
printf("<copy link=\"%s\"/>",c->link().data());
}
void visit(DocInclude *inc) void visit(DocInclude *inc)
{ {
indent_leaf(); indent_leaf();
...@@ -456,7 +451,14 @@ class PrintDocVisitor : public DocVisitor ...@@ -456,7 +451,14 @@ class PrintDocVisitor : public DocVisitor
void visitPre(DocImage *img) void visitPre(DocImage *img)
{ {
indent_pre(); indent_pre();
printf("<image src=\"%s\">\n",img->name().data()); printf("<image src=\"%s\" type=\"",img->name().data());
switch(img->type())
{
case DocImage::Html: printf("html"); break;
case DocImage::Latex: printf("latex"); break;
case DocImage::Rtf: printf("rtf"); break;
}
printf("\" width=%s height=%s>\n",img->width().data(),img->height().data());
} }
void visitPost(DocImage *) void visitPost(DocImage *)
{ {
...@@ -539,11 +541,12 @@ class PrintDocVisitor : public DocVisitor ...@@ -539,11 +541,12 @@ class PrintDocVisitor : public DocVisitor
{ {
printf("<param>%s</param>",s); printf("<param>%s</param>",s);
} }
printf("\n");
} }
void visitPost(DocParamList *) void visitPost(DocParamList *)
{ {
indent_post(); indent_post();
printf("</parameters>"); printf("</parameters>\n");
} }
void visitPre(DocParamSect *ps) void visitPre(DocParamSect *ps)
{ {
...@@ -556,23 +559,23 @@ class PrintDocVisitor : public DocVisitor ...@@ -556,23 +559,23 @@ class PrintDocVisitor : public DocVisitor
case DocParamSect::Exception: printf("exception"); break; case DocParamSect::Exception: printf("exception"); break;
case DocParamSect::Unknown: printf("unknown"); break; case DocParamSect::Unknown: printf("unknown"); break;
} }
printf(">"); printf(">\n");
} }
void visitPost(DocParamSect *) void visitPost(DocParamSect *)
{ {
indent_post(); indent_post();
printf("</paramsect>"); printf("</paramsect>\n");
} }
void visitPre(DocXRefItem *x) void visitPre(DocXRefItem *x)
{ {
indent_pre(); indent_pre();
printf("<xrefitem file=\"%s\" anchor=\"%s\" title=\"%s\"/>", printf("<xrefitem file=\"%s\" anchor=\"%s\" title=\"%s\"/>\n",
x->file().data(),x->anchor().data(),x->title().data()); x->file().data(),x->anchor().data(),x->title().data());
} }
void visitPost(DocXRefItem *) void visitPost(DocXRefItem *)
{ {
indent_post(); indent_post();
printf("<xrefitem/>"); printf("<xrefitem/>\n");
} }
void visitPre(DocInternalRef *r) void visitPre(DocInternalRef *r)
{ {
...@@ -584,6 +587,16 @@ class PrintDocVisitor : public DocVisitor ...@@ -584,6 +587,16 @@ class PrintDocVisitor : public DocVisitor
indent_post(); indent_post();
printf("</internalref>\n"); printf("</internalref>\n");
} }
void visitPre(DocCopy *c)
{
indent_pre();
printf("<copy link=\"%s\">\n",c->link().data());
}
void visitPost(DocCopy *)
{
indent_post();
printf("</copy>\n");
}
private: private:
// helper functions // helper functions
......
...@@ -383,7 +383,7 @@ static QCString extractName(const QCString &s) ...@@ -383,7 +383,7 @@ static QCString extractName(const QCString &s)
static void setContext() static void setContext()
{ {
QCString fileName = yyFileName; QCString fileName = yyFileName;
insideIDL = fileName.right(4)==".idl"; insideIDL = fileName.right(4)==".idl" || fileName.right(4)==".odl";
insideJava = fileName.right(5)==".java"; insideJava = fileName.right(5)==".java";
insidePHP = fileName.right(4)==".php" || fileName.right(4)==".inc"; insidePHP = fileName.right(4)==".php" || fileName.right(4)==".inc";
if ( insidePHP ) if ( insidePHP )
...@@ -461,9 +461,12 @@ static void addSpecialItem(const char *listName) ...@@ -461,9 +461,12 @@ static void addSpecialItem(const char *listName)
QCString cmdString; QCString cmdString;
cmdString.sprintf("\\%s %d\n",listName,itemId); cmdString.sprintf("\\%s %d\n",listName,itemId);
current->doc += cmdString; current->doc += cmdString;
QCString tmpName = current->name;
current->name = listName;
sectionType=SectionInfo::Anchor; sectionType=SectionInfo::Anchor;
sectionLabel=anchorLabel; sectionLabel=anchorLabel;
addSection(); addSection();
current->name = tmpName;
} }
current->brief = slString.copy(); // restore orginial brief desc. current->brief = slString.copy(); // restore orginial brief desc.
} }
...@@ -900,35 +903,59 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -900,35 +903,59 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN( CompoundName ); BEGIN( CompoundName );
} }
<FindMembers>{B}*"module"{BN}+ { <FindMembers>{B}*"module"{BN}+ {
isTypedef=FALSE;
current->section = Entry::NAMESPACE_SEC;
current->type = "module" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount(); lineCount();
BEGIN( CompoundName ); if (insideIDL)
{
isTypedef=FALSE;
current->section = Entry::NAMESPACE_SEC;
current->type = "module" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
BEGIN( CompoundName );
}
else
{
addType( current ) ;
current->name = QCString(yytext).stripWhiteSpace();
}
} }
<FindMembers>{B}*"library"{BN}+ { <FindMembers>{B}*"library"{BN}+ {
isTypedef=FALSE;
current->section = Entry::NAMESPACE_SEC;
current->type = "library" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount(); lineCount();
BEGIN( CompoundName ); if (insideIDL)
{
isTypedef=FALSE;
current->section = Entry::NAMESPACE_SEC;
current->type = "library" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
BEGIN( CompoundName );
}
else
{
addType( current ) ;
current->name = QCString(yytext).stripWhiteSpace();
}
} }
<FindMembers>{B}*((("disp")?"interface")|"valuetype"){BN}+ { // M$/Corba IDL interface <FindMembers>{B}*((("disp")?"interface")|"valuetype"){BN}+ { // M$/Corba IDL interface
isTypedef=FALSE;
current->section = Entry::INTERFACE_SEC;
addType( current ) ;
current->type += " interface" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount(); lineCount();
BEGIN( CompoundName ); if (insideIDL)
{
isTypedef=FALSE;
current->section = Entry::INTERFACE_SEC;
addType( current ) ;
current->type += " interface" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
BEGIN( CompoundName );
}
else
{
addType( current ) ;
current->name = QCString(yytext).stripWhiteSpace();
}
} }
<FindMembers>{B}*"exception"{BN}+ { // Corba IDL exception <FindMembers>{B}*"exception"{BN}+ { // Corba IDL exception
isTypedef=FALSE; isTypedef=FALSE;
...@@ -950,19 +977,31 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -950,19 +977,31 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
current->bodyLine = yyLineNr; current->bodyLine = yyLineNr;
//if (current->mtArgList) // transfer template arguments
//{
// if (current->tArgList)
// {
// delete current->tArgList;
// }
// current->tArgList = current->mtArgList;
// current->mtArgList = 0;
//}
lineCount() ; lineCount() ;
if (yytext[yyleng-1]=='{') unput('{'); if (yytext[yyleng-1]=='{') unput('{');
BEGIN( CompoundName ) ; BEGIN( CompoundName ) ;
} }
<FindMembers>{B}*"coclass"{BN}+ {
if (insideIDL)
{
isTypedef=FALSE;
current->section = Entry::CLASS_SEC;
addType( current ) ;
current->type += " coclass" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount() ;
BEGIN( CompoundName ) ;
}
else
{
addType(current);
current->name = yytext;
current->name = current->name.stripWhiteSpace();
lineCount();
}
}
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct{" | <FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct{" |
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct"/{BN}+ { <FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct"/{BN}+ {
isTypedef=((QCString)yytext).find("typedef")!=-1; isTypedef=((QCString)yytext).find("typedef")!=-1;
...@@ -4482,7 +4521,8 @@ static void parseCompounds(Entry *rt) ...@@ -4482,7 +4521,8 @@ static void parseCompounds(Entry *rt)
{ {
if (ce->fileName.right(5)==".java" || if (ce->fileName.right(5)==".java" ||
ce->fileName.right(4)==".php" || ce->fileName.right(4)==".php" ||
ce->fileName.right(4)==".inc") ce->fileName.right(4)==".inc"
)
current->protection = protection = Public ; // Actually this should be package scope! current->protection = protection = Public ; // Actually this should be package scope!
else else
current->protection = protection = Private ; current->protection = protection = Private ;
......
This diff is collapsed.
This diff is collapsed.
...@@ -199,6 +199,8 @@ void addRelatedPage(const char *name,const QCString &ptitle, ...@@ -199,6 +199,8 @@ void addRelatedPage(const char *name,const QCString &ptitle,
); );
QCString escapeCharsInString(const char *name,bool allowDots); QCString escapeCharsInString(const char *name,bool allowDots);
void addGroupListToTitle(OutputList &ol,Definition *d); void addGroupListToTitle(OutputList &ol,Definition *d);
void filterLatexString(QTextStream &t,const char *str,
bool insideTabbing=FALSE,bool insidePre=FALSE);
#endif #endif
...@@ -895,9 +895,9 @@ class XMLGenerator : public OutputDocInterface ...@@ -895,9 +895,9 @@ class XMLGenerator : public OutputDocInterface
{ {
XML_DB(("(endSectionRefList)\n")); XML_DB(("(endSectionRefList)\n"));
} }
void writeCodeAnchor(const char *anchor) void writeCodeAnchor(const char *)
{ {
XML_DB(("(writeCodeAnchor(%s))\n",anchor)); XML_DB(("(writeCodeAnchor)\n"));
} }
// Generator specific functions // Generator specific functions
......
...@@ -25,7 +25,7 @@ CFG=Doxygen - Win32 Debug ...@@ -25,7 +25,7 @@ CFG=Doxygen - Win32 Debug
# PROP AllowPerConfigDependencies 0 # PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName "Doxygen" # PROP Scc_ProjName "Doxygen"
# PROP Scc_LocalPath ".." # PROP Scc_LocalPath ".."
CPP=cwcl.exe CPP=xicl6.exe
RSC=rc.exe RSC=rc.exe
!IF "$(CFG)" == "Doxygen - Win32 Release" !IF "$(CFG)" == "Doxygen - Win32 Release"
...@@ -48,7 +48,7 @@ RSC=rc.exe ...@@ -48,7 +48,7 @@ RSC=rc.exe
BSC32=snBsc.exe BSC32=snBsc.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=cwlink.exe LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
...@@ -72,7 +72,7 @@ LINK32=cwlink.exe ...@@ -72,7 +72,7 @@ LINK32=cwlink.exe
BSC32=snBsc.exe BSC32=snBsc.exe
# ADD BASE BSC32 /nologo # ADD BASE BSC32 /nologo
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=cwlink.exe LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
...@@ -603,6 +603,10 @@ SOURCE=..\src\doc.h ...@@ -603,6 +603,10 @@ SOURCE=..\src\doc.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\src\docvisitor.h
# End Source File
# Begin Source File
SOURCE=..\src\dot.h SOURCE=..\src\dot.h
# End Source File # End Source File
# Begin Source File # Begin Source File
...@@ -763,6 +767,10 @@ SOURCE=..\src\pre.h ...@@ -763,6 +767,10 @@ SOURCE=..\src\pre.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\src\printdocvisitor.h
# End Source File
# Begin Source File
SOURCE=..\qtools\qarray.h SOURCE=..\qtools\qarray.h
# End Source File # End Source File
# Begin Source File # Begin Source File
...@@ -995,10 +1003,6 @@ SOURCE=..\src\translator_dk.h ...@@ -995,10 +1003,6 @@ SOURCE=..\src\translator_dk.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE="..\src\translator_en-old.h"
# End Source File
# Begin Source File
SOURCE=..\src\translator_en.h SOURCE=..\src\translator_en.h
# End Source File # End Source File
# Begin Source File # Begin Source File
......
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