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

Release-1.3.8-20040812

parent f4bab88a
DOXYGEN Version 1.3.8-20040803 DOXYGEN Version 1.3.8-20040812
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (03 August 2004) Dimitri van Heesch (12 August 2004)
DOXYGEN Version 1.3.8_20040803 DOXYGEN Version 1.3.8_20040812
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) (03 August 2004) Dimitri van Heesch (dimitri@stack.nl) (12 August 2004)
1.3.8-20040803 1.3.8-20040812
...@@ -26,7 +26,7 @@ all: language FORCE ...@@ -26,7 +26,7 @@ all: language FORCE
@epstopdf doxygen_logo.eps --outfile=../latex/doxygen_logo.pdf @epstopdf doxygen_logo.eps --outfile=../latex/doxygen_logo.pdf
clean: clean:
rm -rf ../html ../latex *.bak translator_report.txt rm -rf ../html ../latex *.bak
language: language.doc language: language.doc
......
...@@ -932,7 +932,7 @@ function's detailed documentation block. ...@@ -932,7 +932,7 @@ function's detailed documentation block.
<dt>\c HTML_FOOTER <dd> <dt>\c HTML_FOOTER <dd>
\addindex HTML_FOOTER \addindex HTML_FOOTER
The \c HTML_FOOTER tag can be used to specify a user-defined HTML footer for The \c HTML_FOOTER tag can be used to specify a user-defined HTML footer for
each generated HTML page. To get valid HTML the header file should contain each generated HTML page. To get valid HTML the footer file should contain
at least a \c \</BODY\> and a \c \</HTML\> tag. A minimal example: at least a \c \</BODY\> and a \c \</HTML\> tag. A minimal example:
\verbatim \verbatim
</BODY> </BODY>
...@@ -940,7 +940,7 @@ function's detailed documentation block. ...@@ -940,7 +940,7 @@ function's detailed documentation block.
\endverbatim \endverbatim
If the tag is left blank doxygen will generate a standard footer. If the tag is left blank doxygen will generate a standard footer.
The following commands have a special meaning inside the header: The following commands have a special meaning inside the footer:
<code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>, <code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>,
<code>\$doxygenversion</code>, <code>\$projectname</code>, <code>\$doxygenversion</code>, <code>\$projectname</code>,
<code>\$projectnumber</code>. <code>\$projectnumber</code>.
...@@ -1412,7 +1412,9 @@ EXTRA_PACKAGES = times ...@@ -1412,7 +1412,9 @@ EXTRA_PACKAGES = times
are defined before the preprocessor is started (similar to the -D option of are defined before the preprocessor is started (similar to the -D option of
gcc). The argument of the tag is a list of macros of the form: gcc). The argument of the tag is a list of macros of the form:
<code>name</code> or <code>name=definition</code> (no spaces). <code>name</code> or <code>name=definition</code> (no spaces).
If the definition and the "=" are omitted, "=1" is assumed. If the definition and the "=" are omitted, "=1" is assumed. To prevent
a macro definition from being undefined via #undef or recursively expanded
use the := operator instead of the = operator.
\anchor cfg_expand_as_defined \anchor cfg_expand_as_defined
<dt>\c EXPAND_AS_DEFINED <dd> <dt>\c EXPAND_AS_DEFINED <dd>
......
...@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other ...@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile). configuration file (with default name and known as Doxyfile).
Currently (version 1.3.8), 30 languages Currently (version 1.3.8-20040803), 30 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French, Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
...@@ -95,8 +95,8 @@ when the translator was updated. ...@@ -95,8 +95,8 @@ when the translator was updated.
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Danish</td> <td>Danish</td>
<td>Erik S&oslash;e S&oslash;rensen</td> <td>Erik S&oslash;e S&oslash;rensen</td>
<td>erik at mail dot nu</td> <td>eriksoe+doxygen at daimi dot au dot dk</td>
<td>1.3.8</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Dutch</td> <td>Dutch</td>
...@@ -113,7 +113,7 @@ when the translator was updated. ...@@ -113,7 +113,7 @@ when the translator was updated.
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Finnish</td> <td>Finnish</td>
<td>Olli Korhonen</td> <td>Olli Korhonen</td>
<td>Olli.Korhonen at ccc dot fi</td> <td>olli.korhonen lost at cyberspace</td>
<td>obsolete</td> <td>obsolete</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
...@@ -137,7 +137,7 @@ when the translator was updated. ...@@ -137,7 +137,7 @@ when the translator was updated.
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Hungarian</td> <td>Hungarian</td>
<td>F&ouml;ldv&aacute;ri Gy&ouml;rgy<br>&Aacute;kos Kiss</td> <td>F&ouml;ldv&aacute;ri Gy&ouml;rgy<br>&Aacute;kos Kiss</td>
<td>foldvari at diatronltd dot com<br>akiss at users dot sourceforge dot net</td> <td>foldvari lost at cyberspace<br>akiss at users dot sourceforge dot net</td>
<td>1.3.8</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
...@@ -220,8 +220,8 @@ when the translator was updated. ...@@ -220,8 +220,8 @@ when the translator was updated.
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Slovene</td> <td>Slovene</td>
<td>Matjaz Ostroversnik</td> <td>Matja&#x017e; Ostrover&#x0161;nik</td>
<td>matjaz.ostroversnik at zrs-tk dot si</td> <td>matjaz.ostroversnik at ztm dot si</td>
<td>1.2.16</td> <td>1.2.16</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
...@@ -239,7 +239,7 @@ when the translator was updated. ...@@ -239,7 +239,7 @@ when the translator was updated.
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Ukrainian</td> <td>Ukrainian</td>
<td>Olexij Tkatchenko</td> <td>Olexij Tkatchenko</td>
<td>olexij.tkatchenko at gmx dot de</td> <td>olexij.tkatchenko at parcs dot de</td>
<td>1.2.11</td> <td>1.2.11</td>
</tr> </tr>
<!-- table content end --> <!-- table content end -->
...@@ -273,13 +273,13 @@ when the translator was updated. ...@@ -273,13 +273,13 @@ when the translator was updated.
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\ Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\
\hline \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny erik@mail.nu} & 1.3.8 \\ Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & up-to-date \\
\hline \hline
Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline \hline
English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline \hline
Finnish & Olli Korhonen & {\tt\tiny Olli.Korhonen@ccc.fi} & obsolete \\ Finnish & Olli Korhonen & {\tt\tiny olli.korhonen lost@cyberspace} & obsolete \\
\hline \hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\ French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\
\hline \hline
...@@ -287,7 +287,7 @@ when the translator was updated. ...@@ -287,7 +287,7 @@ when the translator was updated.
\hline \hline
Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\ Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
\hline \hline
Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari@diatronltd.com} & 1.3.8 \\ Hungarian & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny foldvari lost@cyberspace} & 1.3.8 \\
~ & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & ~ \\ ~ & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & ~ \\
\hline \hline
Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\ Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\
...@@ -322,13 +322,13 @@ when the translator was updated. ...@@ -322,13 +322,13 @@ when the translator was updated.
\hline \hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\ Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\
\hline \hline
Slovene & Matjaz Ostroversnik & {\tt\tiny matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\ Slovene & Matja\v{z} Ostrover\v{s}nik & {\tt\tiny matjaz.ostroversnik@ztm.si} & 1.2.16 \\
\hline \hline
Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\ Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\
\hline \hline
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.3.8 \\ Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.3.8 \\
\hline \hline
Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@gmx.de} & 1.2.11 \\ Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@parcs.de} & 1.2.11 \\
\hline \hline
\end{tabular} \end{tabular}
\endlatexonly \endlatexonly
......
...@@ -33,7 +33,7 @@ TranslatorCzech ...@@ -33,7 +33,7 @@ TranslatorCzech
Petr P&rcaron;ikryl: prikrylp@skil.cz Petr P&rcaron;ikryl: prikrylp@skil.cz
TranslatorDanish TranslatorDanish
Erik S&oslash;e S&oslash;rensen: erik@mail.nu Erik S&oslash;e S&oslash;rensen: eriksoe+doxygen@daimi.au.dk
TranslatorDutch TranslatorDutch
Dimitri van Heesch: dimitri@stack.nl Dimitri van Heesch: dimitri@stack.nl
...@@ -42,7 +42,7 @@ TranslatorEnglish ...@@ -42,7 +42,7 @@ TranslatorEnglish
Dimitri van Heesch: dimitri@stack.nl Dimitri van Heesch: dimitri@stack.nl
TranslatorFinnish TranslatorFinnish
Olli Korhonen: Olli.Korhonen@ccc.fi Olli Korhonen: olli.korhonen lost@cyberspace
TranslatorFrench TranslatorFrench
Xavier Outhier: xouthier@yahoo.fr Xavier Outhier: xouthier@yahoo.fr
...@@ -54,7 +54,7 @@ TranslatorGreek ...@@ -54,7 +54,7 @@ TranslatorGreek
Harry Kalogirou: harkal@rainbow.cs.unipi.gr Harry Kalogirou: harkal@rainbow.cs.unipi.gr
TranslatorHungarian TranslatorHungarian
F&ouml;ldv&aacute;ri Gy&ouml;rgy: foldvari@diatronltd.com F&ouml;ldv&aacute;ri Gy&ouml;rgy: foldvari lost@cyberspace
&Aacute;kos Kiss: akiss@users.sourceforge.net &Aacute;kos Kiss: akiss@users.sourceforge.net
TranslatorItalian TranslatorItalian
...@@ -97,7 +97,7 @@ TranslatorSlovak ...@@ -97,7 +97,7 @@ TranslatorSlovak
Stanislav Kudl&aacute;&ccaron;: skudlac@pobox.sk Stanislav Kudl&aacute;&ccaron;: skudlac@pobox.sk
TranslatorSlovene TranslatorSlovene
Matjaz Ostroversnik: matjaz.ostroversnik@zrs-tk.si Matja&zcaron; Ostrover&scaron;nik: matjaz.ostroversnik@ztm.si
TranslatorSpanish TranslatorSpanish
Francisco Oltra Thennet: foltra@puc.cl Francisco Oltra Thennet: foltra@puc.cl
...@@ -106,5 +106,6 @@ TranslatorSwedish ...@@ -106,5 +106,6 @@ TranslatorSwedish
Mikael Hallin: mikaelhallin@yahoo.se Mikael Hallin: mikaelhallin@yahoo.se
TranslatorUkrainian TranslatorUkrainian
Olexij Tkatchenko: olexij.tkatchenko@gmx.de Olexij Tkatchenko: olexij.tkatchenko@parcs.de
...@@ -41,7 +41,8 @@ ...@@ -41,7 +41,8 @@
- Plural not used for reporting a single missing method. - Plural not used for reporting a single missing method.
- Removal of not used translator adapters is suggested only - Removal of not used translator adapters is suggested only
when the report is not restricted to selected languages when the report is not restricted to selected languages
explicitly via script arguments explicitly via script arguments.
2004/07/26 - Better reporting of not-needed adapters.
""" """
from __future__ import generators from __future__ import generators
...@@ -1440,10 +1441,24 @@ class TrManager: ...@@ -1440,10 +1441,24 @@ class TrManager:
# i.e. all languages were checked against the needed translator # i.e. all languages were checked against the needed translator
# adapters. # adapters.
if not self.script_argLst: if not self.script_argLst:
to_remove = {}
for version, adaptClassId in self.adaptMethodsDic.values(): for version, adaptClassId in self.adaptMethodsDic.values():
if version < adaptMinVersion: if version < adaptMinVersion:
f.write('\nNote: The %s class ' % adaptClassId) to_remove[adaptClassId] = True
f.write('is not used and can be removed.\n')
if to_remove:
lst = to_remove.keys()
lst.sort()
plural = len(lst) > 1
note = 'Note: The adapter class'
if plural: note += 'es'
note += ' ' + ', '.join(lst)
if not plural:
note += ' is'
else:
note += ' are'
note += ' not used and can be removed.'
f.write('\n' + fill(note) + '\n')
# Write the list of the English-based classes. # Write the list of the English-based classes.
if self.EnBasedIdLst: if self.EnBasedIdLst:
......
This diff is collapsed.
...@@ -71,6 +71,8 @@ ...@@ -71,6 +71,8 @@
<li>Version 1.8.6 of dot (and maybe earlier versions too) do not <li>Version 1.8.6 of dot (and maybe earlier versions too) do not
generate proper map files, causing the graphs that doxygen generates generate proper map files, causing the graphs that doxygen generates
not to be properly clickable. not to be properly clickable.
<li>PHP only: Doxygen requires that all PHP statements (i.e. code) is
wrapped in a functions/methods, otherwise you may run into parse problems.
</ul> </ul>
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.8_20040803 Version: 1.3.8_20040812
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
......
...@@ -955,7 +955,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -955,7 +955,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE")) if (Config_getBool("SEARCHENGINE"))
{ {
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()); Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
Doxygen::searchIndex->addWord(localName().lower()); Doxygen::searchIndex->addWord(localName());
} }
ol.startTextBlock(); ol.startTextBlock();
...@@ -2823,6 +2823,8 @@ QCString ClassDef::className() const ...@@ -2823,6 +2823,8 @@ QCString ClassDef::className() const
void ClassDef::addListReferences() void ClassDef::addListReferences()
{ {
if (!isLinkableInProject()) return;
//printf("ClassDef(%s)::addListReferences()\n",name().data());
addRefItem(xrefListItems(), addRefItem(xrefListItems(),
theTranslator->trClass(TRUE,TRUE), theTranslator->trClass(TRUE,TRUE),
getOutputFileBase(),displayName() getOutputFileBase(),displayName()
......
...@@ -243,12 +243,16 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -243,12 +243,16 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
g_readLineCtx=YY_START; g_readLineCtx=YY_START;
BEGIN(ReadLine); BEGIN(ReadLine);
} }
<SComment>^[ \t]*"//!"/.*\n { <SComment>^[ \t]*"//!" | // just //!
<SComment>^[ \t]*"//!<"/.*\n | // or //!< something
<SComment>^[ \t]*"//!"[^<]/.*\n { // or //!something
replaceComment(0); replaceComment(0);
g_readLineCtx=YY_START; g_readLineCtx=YY_START;
BEGIN(ReadLine); BEGIN(ReadLine);
} }
<SComment>\n[ \t]*"//!"/.*\n { <SComment>\n[ \t]*"//!" |
<SComment>\n[ \t]*"//!<"/.*\n |
<SComment>\n[ \t]*"//!"[^<]/.*\n {
replaceComment(1); replaceComment(1);
g_readLineCtx=YY_START; g_readLineCtx=YY_START;
BEGIN(ReadLine); BEGIN(ReadLine);
...@@ -297,6 +301,7 @@ void replaceComment(int offset) ...@@ -297,6 +301,7 @@ void replaceComment(int offset)
} }
else else
{ {
//printf("replaceComment(%s)\n",yytext);
int i=computeIndent(&yytext[offset]); int i=computeIndent(&yytext[offset]);
if (i==g_blockHeadCol) if (i==g_blockHeadCol)
{ {
......
...@@ -2521,7 +2521,9 @@ void Config::create() ...@@ -2521,7 +2521,9 @@ void Config::create()
"are defined before the preprocessor is started (similar to the -D option of \n" "are defined before the preprocessor is started (similar to the -D option of \n"
"gcc). The argument of the tag is a list of macros of the form: name \n" "gcc). The argument of the tag is a list of macros of the form: name \n"
"or name=definition (no spaces). If the definition and the = are \n" "or name=definition (no spaces). If the definition and the = are \n"
"omitted =1 is assumed. \n" "omitted =1 is assumed. To prevent a macro definition from being \n"
"undefined via #undef or recursively expanded use the := operator \n"
"instead of the = operator.\n"
); );
cl->addDependency("ENABLE_PREPROCESSING"); cl->addDependency("ENABLE_PREPROCESSING");
cl = addList( cl = addList(
......
...@@ -363,6 +363,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -363,6 +363,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
QCString lineStr,anchorStr; QCString lineStr,anchorStr;
lineStr.sprintf("%d",m_startBodyLine); lineStr.sprintf("%d",m_startBodyLine);
anchorStr.sprintf("l%05d",m_startBodyLine); anchorStr.sprintf("l%05d",m_startBodyLine);
ol.newParagraph();
if (lineMarkerPos<fileMarkerPos) // line marker before file marker if (lineMarkerPos<fileMarkerPos) // line marker before file marker
{ {
// write text left from linePos marker // write text left from linePos marker
...@@ -432,10 +433,6 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -432,10 +433,6 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
{ {
err("Error: translation error: invalid markers in trDefinedInSourceFile()\n"); err("Error: translation error: invalid markers in trDefinedInSourceFile()\n");
} }
ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph();
ol.enableAll();
} }
ol.popGeneratorState(); ol.popGeneratorState();
} }
......
...@@ -441,7 +441,7 @@ static bool findDocsForMemberOrCompound(const char *commandName, ...@@ -441,7 +441,7 @@ static bool findDocsForMemberOrCompound(const char *commandName,
//printf("findDocsForMemberOrCompound(%s)\n",commandName); //printf("findDocsForMemberOrCompound(%s)\n",commandName);
*pDoc=""; *pDoc="";
*pDef=0; *pDef=0;
QString cmdArg=commandName; QString cmdArg=substitute(commandName,"#","::");
int l=cmdArg.length(); int l=cmdArg.length();
if (l==0) return FALSE; if (l==0) return FALSE;
...@@ -1236,7 +1236,7 @@ DocWord::DocWord(DocNode *parent,const QString &word) : ...@@ -1236,7 +1236,7 @@ DocWord::DocWord(DocNode *parent,const QString &word) :
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data()); //printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
if (!g_searchUrl.isEmpty()) if (!g_searchUrl.isEmpty())
{ {
Doxygen::searchIndex->addWord(word.lower()); Doxygen::searchIndex->addWord(word);
} }
} }
...@@ -1251,7 +1251,7 @@ DocLinkedWord::DocLinkedWord(DocNode *parent,const QString &word, ...@@ -1251,7 +1251,7 @@ DocLinkedWord::DocLinkedWord(DocNode *parent,const QString &word,
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data()); //printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
if (!g_searchUrl.isEmpty()) if (!g_searchUrl.isEmpty())
{ {
Doxygen::searchIndex->addWord(word.lower()); Doxygen::searchIndex->addWord(word);
} }
} }
...@@ -1517,6 +1517,8 @@ bool DocXRefItem::parse() ...@@ -1517,6 +1517,8 @@ bool DocXRefItem::parse()
m_file = refList->listName(); m_file = refList->listName();
m_anchor = item->listAnchor; m_anchor = item->listAnchor;
m_title = refList->sectionTitle(); m_title = refList->sectionTitle();
//printf("DocXRefItem: file=%s anchor=%s title=%s\n",
// m_file.data(),m_anchor.data(),m_title.data());
if (!item->text.isEmpty()) if (!item->text.isEmpty())
{ {
......
...@@ -283,7 +283,8 @@ URLCHAR [a-z_A-Z0-9\!\~\:\;\'\$\?\@\&\%\#\.\-\+\/\=] ...@@ -283,7 +283,8 @@ URLCHAR [a-z_A-Z0-9\!\~\:\;\'\$\?\@\&\%\#\.\-\+\/\=]
URLMASK (([a-z_A-Z][^\>\"\n]*{URLCHAR})|({URLCHAR}+))([({]{URLCHAR}*[)}])? URLMASK (([a-z_A-Z][^\>\"\n]*{URLCHAR})|({URLCHAR}+))([({]{URLCHAR}*[)}])?
FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+] FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+]
FILEECHAR [a-z_A-Z0-9\-\+] FILEECHAR [a-z_A-Z0-9\-\+]
FILEMASK {FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)* HFILEMASK ("."{FILESCHAR}*{FILEECHAR}+)*
FILEMASK ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|{HFILEMASK}
LINKMASK [^ \t\n\r\\@<&${}]+("("[^\n)]*")")?({BLANK}*("const"|"volatile"))? LINKMASK [^ \t\n\r\\@<&${}]+("("[^\n)]*")")?({BLANK}*("const"|"volatile"))?
SPCMD1 {CMD}[a-z_A-Z0-9]+ SPCMD1 {CMD}[a-z_A-Z0-9]+
SPCMD2 {CMD}[\\@<>&$#%~] SPCMD2 {CMD}[\\@<>&$#%~]
......
This diff is collapsed.
...@@ -222,7 +222,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -222,7 +222,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE")) if (Config_getBool("SEARCHENGINE"))
{ {
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()); Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
Doxygen::searchIndex->addWord(localName().lower()); Doxygen::searchIndex->addWord(localName());
} }
if (!Config_getString("GENERATE_TAGFILE").isEmpty()) if (!Config_getString("GENERATE_TAGFILE").isEmpty())
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
*/ */
#include <ctype.h> #include <ctype.h>
#include <qregexp.h>
#include "qtbc.h" #include "qtbc.h"
#include "groupdef.h" #include "groupdef.h"
#include "classdef.h" #include "classdef.h"
...@@ -457,14 +458,20 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -457,14 +458,20 @@ void GroupDef::writeDocumentation(OutputList &ol)
//ol.disable(OutputGenerator::Man); //ol.disable(OutputGenerator::Man);
startFile(ol,getOutputFileBase(),name(),title); startFile(ol,getOutputFileBase(),name(),title);
startTitle(ol,getOutputFileBase()); startTitle(ol,getOutputFileBase());
ol.docify(title); ol.parseText(title);
addGroupListToTitle(ol,this); addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),title); endTitle(ol,getOutputFileBase(),title);
if (Config_getBool("SEARCHENGINE")) if (Config_getBool("SEARCHENGINE"))
{ {
Doxygen::searchIndex->setCurrentDoc(title,getOutputFileBase()); Doxygen::searchIndex->setCurrentDoc(title,getOutputFileBase());
Doxygen::searchIndex->addWord(localName().lower()); static QRegExp we("[a-zA-Z_][a-zA-Z_0-9]*");
int i=0,p=0,l=0;
while ((i=we.match(title,p,&l))!=-1) // foreach word in the title
{
Doxygen::searchIndex->addWord(title.mid(i,l));
p=i+l;
}
} }
if (Config_getBool("DETAILS_AT_TOP")) if (Config_getBool("DETAILS_AT_TOP"))
......
...@@ -26,9 +26,8 @@ ...@@ -26,9 +26,8 @@
#include "dot.h" #include "dot.h"
#include "message.h" #include "message.h"
#include "config.h" #include "config.h"
#include "htmlgen.h"
#define PREFRAG_START "<div class=\"fragment\"><pre>"
#define PREFRAG_END "</pre></div>"
static QString htmlAttribsToString(const HtmlAttribList &attribs) static QString htmlAttribsToString(const HtmlAttribList &attribs)
{ {
...@@ -872,7 +871,7 @@ void HtmlDocVisitor::visitPost(DocParamSect *) ...@@ -872,7 +871,7 @@ void HtmlDocVisitor::visitPost(DocParamSect *)
void HtmlDocVisitor::visitPre(DocParamList *pl) void HtmlDocVisitor::visitPre(DocParamList *pl)
{ {
if (m_hide) return; if (m_hide) return;
m_t << " <tr><td>"; m_t << " <tr><td valign=\"top\">";
if (pl->direction()!=DocParamSect::Unspecified) if (pl->direction()!=DocParamSect::Unspecified)
{ {
m_t << "<tt>["; m_t << "<tt>[";
...@@ -890,7 +889,7 @@ void HtmlDocVisitor::visitPre(DocParamList *pl) ...@@ -890,7 +889,7 @@ void HtmlDocVisitor::visitPre(DocParamList *pl)
} }
m_t << "]</tt>&nbsp;"; m_t << "]</tt>&nbsp;";
} }
m_t << "</td><td valign=top><em>"; m_t << "</td><td valign=\"top\"><em>";
QStrListIterator li(pl->parameters()); QStrListIterator li(pl->parameters());
const char *s; const char *s;
bool first=TRUE; bool first=TRUE;
......
...@@ -42,12 +42,11 @@ ...@@ -42,12 +42,11 @@
#define DBG_HTML(x) #define DBG_HTML(x)
static const char *defaultStyleSheet = static const char *defaultStyleSheet =
"H1 {\n" "BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {\n"
" text-align: center;\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n" " font-family: Geneva, Arial, Helvetica, sans-serif;\n"
"}\n" "}\n"
"H2 {\n" "H1 {\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n" " text-align: center;\n"
"}\n" "}\n"
"CAPTION { font-weight: bold }\n" "CAPTION { font-weight: bold }\n"
"DIV.qindex {\n" "DIV.qindex {\n"
...@@ -93,10 +92,15 @@ static const char *defaultStyleSheet = ...@@ -93,10 +92,15 @@ static const char *defaultStyleSheet =
"A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }\n" "A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }\n"
"A.el { text-decoration: none; font-weight: bold }\n" "A.el { text-decoration: none; font-weight: bold }\n"
"A.elRef { font-weight: bold }\n" "A.elRef { font-weight: bold }\n"
"A.code { text-decoration: none; font-weight: normal; color: #1A419D}\n" "A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}\n"
"A.codeRef { font-weight: normal; color: #1A419D}\n" "A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}\n"
"A.codeRef:link { font-weight: normal; color: #0000FF}\n"
"A.codeRef:visited { font-weight: normal; color: #0000FF}\n"
"A:hover { text-decoration: none; background-color: #f2f2ff }\n" "A:hover { text-decoration: none; background-color: #f2f2ff }\n"
"DL.el { margin-left: -1cm }\n" "DL.el { margin-left: -1cm }\n"
".fragment {\n"
" font-family: monospace\n"
"}\n"
"PRE.fragment {\n" "PRE.fragment {\n"
" border: 1px solid #CCCCCC;\n" " border: 1px solid #CCCCCC;\n"
" background-color: #f5f5f5;\n" " background-color: #f5f5f5;\n"
...@@ -109,11 +113,12 @@ static const char *defaultStyleSheet = ...@@ -109,11 +113,12 @@ static const char *defaultStyleSheet =
" padding-top: 4px;\n" " padding-top: 4px;\n"
" padding-bottom: 4px;\n" " padding-bottom: 4px;\n"
"}\n" "}\n"
"DIV.fragment {\n" //"DIV.fragment {\n"
" border: 1px solid #CCCCCC;\n" //" font-family: monospace\n"
" background-color: #f5f5f5;\n" //" border: 1px solid #CCCCCC;\n"
" padding: 6px;\n" //" background-color: #f5f5f5;\n"
"}\n" //" padding: 6px;\n"
//"}\n"
"DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }\n" "DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }\n"
"TD.md { background-color: #F4F4FB; font-weight: bold; }\n" "TD.md { background-color: #F4F4FB; font-weight: bold; }\n"
"TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }\n" "TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }\n"
...@@ -123,7 +128,6 @@ static const char *defaultStyleSheet = ...@@ -123,7 +128,6 @@ static const char *defaultStyleSheet =
" margin-top: 12px;\n" " margin-top: 12px;\n"
" margin-bottom: 6px;\n" " margin-bottom: 6px;\n"
" font-weight: bold;\n" " font-weight: bold;\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n"
"}\n" "}\n"
"DIV.groupText { margin-left: 16px; font-style: italic; font-size: 14px }\n" "DIV.groupText { margin-left: 16px; font-style: italic; font-size: 14px }\n"
"BODY {\n" "BODY {\n"
...@@ -216,7 +220,6 @@ static const char *defaultStyleSheet = ...@@ -216,7 +220,6 @@ static const char *defaultStyleSheet =
" border-bottom-style: none;\n" " border-bottom-style: none;\n"
" border-left-style: none;\n" " border-left-style: none;\n"
" background-color: #FAFAFA;\n" " background-color: #FAFAFA;\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n"
" font-size: 12px;\n" " font-size: 12px;\n"
"}\n" "}\n"
".memItemRight {\n" ".memItemRight {\n"
...@@ -235,7 +238,6 @@ static const char *defaultStyleSheet = ...@@ -235,7 +238,6 @@ static const char *defaultStyleSheet =
" border-bottom-style: none;\n" " border-bottom-style: none;\n"
" border-left-style: none;\n" " border-left-style: none;\n"
" background-color: #FAFAFA;\n" " background-color: #FAFAFA;\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n"
" font-size: 13px;\n" " font-size: 13px;\n"
"}\n" "}\n"
".search { color: #003399;\n" ".search { color: #003399;\n"
...@@ -1535,7 +1537,7 @@ void HtmlGenerator::writeSearchPage() ...@@ -1535,7 +1537,7 @@ void HtmlGenerator::writeSearchPage()
t << "\n"; t << "\n";
t << "function report_matches()\n"; t << "function report_matches()\n";
t << "{\n"; t << "{\n";
t << " return \"" << theTranslator->trSearchMatches() << " \";\n"; t << " return \"" << theTranslator->trSearchMatches() << " \";\n";
t << "}\n"; t << "}\n";
t << "\n"; t << "\n";
t << search_script; t << search_script;
......
...@@ -21,6 +21,9 @@ ...@@ -21,6 +21,9 @@
#include "qtbc.h" #include "qtbc.h"
#include "outputgen.h" #include "outputgen.h"
#define PREFRAG_START "<div class=\"fragment\"><pre class=\"fragment\">"
#define PREFRAG_END "</pre></div>"
class QFile; class QFile;
class HtmlGenerator : public OutputGenerator class HtmlGenerator : public OutputGenerator
...@@ -112,8 +115,8 @@ class HtmlGenerator : public OutputGenerator ...@@ -112,8 +115,8 @@ class HtmlGenerator : public OutputGenerator
void writeRuler() { t << "<hr>"; } void writeRuler() { t << "<hr>"; }
void writeAnchor(const char *,const char *name) void writeAnchor(const char *,const char *name)
{ t << "<a name=\"" << name <<"\"></a>"; } { t << "<a name=\"" << name <<"\"></a>"; }
void startCodeFragment() { t << "<pre class=\"fragment\"><div>"; } void startCodeFragment() { t << PREFRAG_START; }
void endCodeFragment() { t << "</div></pre>"; } void endCodeFragment() { t << PREFRAG_END; }
void writeLineNumber(const char *,const char *,const char *,int); void writeLineNumber(const char *,const char *,const char *,int);
void startCodeLine() { col=0; } void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); } void endCodeLine() { codify("\n"); }
......
...@@ -460,6 +460,7 @@ void ManDocVisitor::visitPre(DocSimpleList *) ...@@ -460,6 +460,7 @@ void ManDocVisitor::visitPre(DocSimpleList *)
{ {
if (m_hide) return; if (m_hide) return;
m_indent+=2; m_indent+=2;
if (!m_firstCol) m_t << endl;
m_t << ".PD 0" << endl; m_t << ".PD 0" << endl;
} }
...@@ -507,6 +508,7 @@ void ManDocVisitor::visitPre(DocHtmlList *) ...@@ -507,6 +508,7 @@ void ManDocVisitor::visitPre(DocHtmlList *)
{ {
if (m_hide) return; if (m_hide) return;
m_indent+=2; m_indent+=2;
if (!m_firstCol) m_t << endl;
m_t << ".PD 0" << endl; m_t << ".PD 0" << endl;
} }
...@@ -514,6 +516,7 @@ void ManDocVisitor::visitPost(DocHtmlList *) ...@@ -514,6 +516,7 @@ void ManDocVisitor::visitPost(DocHtmlList *)
{ {
if (m_hide) return; if (m_hide) return;
m_indent-=2; m_indent-=2;
if (!m_firstCol) m_t << endl;
m_t << ".PP" << endl; m_t << ".PP" << endl;
} }
...@@ -741,6 +744,7 @@ void ManDocVisitor::visitPost(DocSecRefList *) ...@@ -741,6 +744,7 @@ void ManDocVisitor::visitPost(DocSecRefList *)
{ {
if (m_hide) return; if (m_hide) return;
m_indent-=2; m_indent-=2;
if (!m_firstCol) m_t << endl;
m_t << ".PP" << endl; m_t << ".PP" << endl;
} }
......
...@@ -343,6 +343,7 @@ MemberDef::MemberDef(const char *df,int dl, ...@@ -343,6 +343,7 @@ MemberDef::MemberDef(const char *df,int dl,
section=0; section=0;
groupAlias=0; groupAlias=0;
explExt=FALSE; explExt=FALSE;
tspec=FALSE;
cachedAnonymousType=0; cachedAnonymousType=0;
maxInitLines=Config_getInt("MAX_INITIALIZER_LINES"); maxInitLines=Config_getInt("MAX_INITIALIZER_LINES");
userInitLines=-1; userInitLines=-1;
...@@ -834,8 +835,8 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -834,8 +835,8 @@ void MemberDef::writeDeclaration(OutputList &ol,
if (Config_getBool("SEARCHENGINE")) if (Config_getBool("SEARCHENGINE"))
{ {
Doxygen::searchIndex->setCurrentDoc(qualifiedName(),getOutputFileBase(),anchor()); Doxygen::searchIndex->setCurrentDoc(qualifiedName(),getOutputFileBase(),anchor());
Doxygen::searchIndex->addWord(localName().lower()); Doxygen::searchIndex->addWord(localName());
Doxygen::searchIndex->addWord(qualifiedName().lower()); Doxygen::searchIndex->addWord(qualifiedName());
} }
Definition *d=0; Definition *d=0;
...@@ -1248,7 +1249,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1248,7 +1249,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
htmlHelp->addIndexItem(cname,name(),cfname,anchor()); htmlHelp->addIndexItem(cname,name(),cfname,anchor());
} }
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef.left(i)); linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef.left(i));
//ol+=*vmd->enumDecl();
vmd->writeEnumDeclaration(ol,getClassDef(),getNamespaceDef(),getFileDef(),getGroupDef()); vmd->writeEnumDeclaration(ol,getClassDef(),getNamespaceDef(),getFileDef(),getGroupDef());
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef.right(ldef.length()-i-l)); linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef.right(ldef.length()-i-l));
...@@ -1310,7 +1310,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1310,7 +1310,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
else // definition gets it template parameters from its class else // definition gets it template parameters from its class
// (since no definition was found) // (since no definition was found)
{ {
if (cd) if (cd && !isTemplateSpecialization())
{ {
QList<ArgumentList> tempParamLists; QList<ArgumentList> tempParamLists;
cd->getTemplateParameterLists(tempParamLists); cd->getTemplateParameterLists(tempParamLists);
...@@ -1670,7 +1670,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1670,7 +1670,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol.parseText(reimplFromLine.right( ol.parseText(reimplFromLine.right(
reimplFromLine.length()-markerPos-2)); // text right from marker reimplFromLine.length()-markerPos-2)); // text right from marker
ol.newParagraph();
} }
else else
{ {
...@@ -1751,7 +1750,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1751,7 +1750,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
index=newIndex+matchLen; index=newIndex+matchLen;
} }
ol.parseText(reimplInLine.right(reimplInLine.length()-index)); ol.parseText(reimplInLine.right(reimplInLine.length()-index));
ol.newParagraph();
} }
} }
// write the list of examples that use this member // write the list of examples that use this member
...@@ -2003,9 +2001,14 @@ void MemberDef::addListReference(Definition *) ...@@ -2003,9 +2001,14 @@ void MemberDef::addListReference(Definition *)
} }
} }
} }
//printf("*** addListReference %s todo=%d test=%d bug=%d\n",name().data(),todoId(),testId(),bugId()); if (xrefListItems())
addRefItem(xrefListItems(),memLabel, {
getOutputFileBase()+"#"+anchor(),memName,argsString()); addRefItem(xrefListItems(),memLabel,
getOutputFileBase()+"#"+anchor(),memName,argsString());
}
else
{
}
} }
MemberList *MemberDef::getSectionList(Definition *d) const MemberList *MemberDef::getSectionList(Definition *d) const
......
...@@ -134,6 +134,7 @@ class MemberDef : public Definition ...@@ -134,6 +134,7 @@ class MemberDef : public Definition
bool isWritable() const { return (memSpec&Entry::Writable)!=0; } bool isWritable() const { return (memSpec&Entry::Writable)!=0; }
bool isImplementation() const { return m_implOnly; } bool isImplementation() const { return m_implOnly; }
bool isExternal() const { return explExt; } bool isExternal() const { return explExt; }
bool isTemplateSpecialization() const { return tspec; }
bool isObjCMethod() const; bool isObjCMethod() const;
bool isConstructor() const; bool isConstructor() const;
bool isDestructor() const; bool isDestructor() const;
...@@ -151,22 +152,23 @@ class MemberDef : public Definition ...@@ -151,22 +152,23 @@ class MemberDef : public Definition
bool isDocumentedFriendClass() const; bool isDocumentedFriendClass() const;
// set functions // set functions
void setMemberType(MemberType t) { mtype=t; } void setMemberType(MemberType t) { mtype=t; }
void setDefinition(const char *d) { def=d; } void setDefinition(const char *d) { def=d; }
void setFileDef(FileDef *fd) { fileDef=fd; } void setFileDef(FileDef *fd) { fileDef=fd; }
void setAnchor(const char *a); void setAnchor(const char *a);
void setProtection(Protection p) { prot=p; } void setProtection(Protection p) { prot=p; }
void setMemberSpecifiers(int s) { memSpec=s; } void setMemberSpecifiers(int s) { memSpec=s; }
void mergeMemberSpecifiers(int s) { memSpec|=s; } void mergeMemberSpecifiers(int s) { memSpec|=s; }
void setInitializer(const char *i); void setInitializer(const char *i);
void setBitfields(const char *s) { bitfields = s; } void setBitfields(const char *s) { bitfields = s; }
void setMaxInitLines(int lines) { userInitLines=lines; } void setMaxInitLines(int lines) { userInitLines=lines; }
void setMemberClass(ClassDef *cd); void setMemberClass(ClassDef *cd);
void setSectionList(Definition *d,MemberList *sl); void setSectionList(Definition *d,MemberList *sl);
void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs); void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs);
void setExplicitExternal(bool b) { explExt=b; } void setExplicitExternal(bool b) { explExt=b; }
void setReadAccessor(const char *r) { read=r; } void setReadAccessor(const char *r) { read=r; }
void setWriteAccessor(const char *w) { write=w; } void setWriteAccessor(const char *w) { write=w; }
void setTemplateSpecialization(bool b) { tspec=b; }
void makeRelated() { related=TRUE; } void makeRelated() { related=TRUE; }
...@@ -348,6 +350,7 @@ class MemberDef : public Definition ...@@ -348,6 +350,7 @@ class MemberDef : public Definition
GroupDef *group; // group in which this member is in GroupDef *group; // group in which this member is in
bool explExt; // member was explicitly declared external bool explExt; // member was explicitly declared external
bool tspec; // member is a template specialization
ClassDef *cachedAnonymousType; // if the member has an anonymous compound ClassDef *cachedAnonymousType; // if the member has an anonymous compound
// as its type then this is computed by // as its type then this is computed by
......
...@@ -286,14 +286,14 @@ void MemberList::writePlainDeclarations(OutputList &ol, ...@@ -286,14 +286,14 @@ void MemberList::writePlainDeclarations(OutputList &ol,
{ {
if (md->fromAnonymousScope() && !md->anonymousDeclShown()) if (md->fromAnonymousScope() && !md->anonymousDeclShown())
{ {
md->setFromAnonymousScope(FALSE);
//printf("anonymous compound members\n"); //printf("anonymous compound members\n");
if (md->isBriefSectionVisible()) if (md->isBriefSectionVisible())
{ {
if (first) ol.startMemberList(),first=FALSE; if (first) ol.startMemberList(),first=FALSE;
md->setFromAnonymousScope(FALSE);
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup); md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
md->setFromAnonymousScope(TRUE);
} }
md->setFromAnonymousScope(TRUE);
} }
} }
} }
......
...@@ -275,15 +275,14 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ...@@ -275,15 +275,14 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
} }
startFile(ol,getOutputFileBase(),name(),pageTitle); startFile(ol,getOutputFileBase(),name(),pageTitle);
startTitle(ol,getOutputFileBase()); startTitle(ol,getOutputFileBase());
//ol.docify(pageTitle); ol.parseText(pageTitle);
//ol.parseText(pageTitle);
addGroupListToTitle(ol,this); addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),displayName()); endTitle(ol,getOutputFileBase(),displayName());
if (Config_getBool("SEARCHENGINE")) if (Config_getBool("SEARCHENGINE"))
{ {
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()); Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
Doxygen::searchIndex->addWord(localName().lower()); Doxygen::searchIndex->addWord(localName());
} }
if (!Config_getString("GENERATE_TAGFILE").isEmpty()) if (!Config_getString("GENERATE_TAGFILE").isEmpty())
......
...@@ -194,7 +194,7 @@ static FILE *checkAndOpenFile(const QCString &absName) ...@@ -194,7 +194,7 @@ static FILE *checkAndOpenFile(const QCString &absName)
QCString filterName = getFileFilter(absName); QCString filterName = getFileFilter(absName);
if (!filterName.isEmpty()) if (!filterName.isEmpty())
{ {
QCString cmd = filterName+" "+absName; QCString cmd = filterName+" \""+absName+"\"";
f=popen(cmd,"r"); f=popen(cmd,"r");
if (!f) err("Error: could not execute filter %s\n",cmd.data()); if (!f) err("Error: could not execute filter %s\n",cmd.data());
} }
...@@ -1486,6 +1486,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1486,6 +1486,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
Define *def; Define *def;
if ((def=isDefined(yytext)) if ((def=isDefined(yytext))
/*&& !def->isPredefined*/ /*&& !def->isPredefined*/
&& !def->nonRecursive
) )
{ {
//printf("undefining %s\n",yytext); //printf("undefining %s\n",yytext);
......
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
#include "rtfdocvisitor.h" #include "rtfdocvisitor.h"
#include "docparser.h" #include "docparser.h"
#define DBG_RTF(x) x; //#define DBG_RTF(x) x;
//#define DBG_RTF(x) #define DBG_RTF(x)
static QCString dateToRTFDateString() static QCString dateToRTFDateString()
{ {
......
...@@ -2589,9 +2589,21 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -2589,9 +2589,21 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
{ {
varEntry->groups->append(new Grouping(*g)); varEntry->groups->append(new Grouping(*g));
} }
if (current->sli) // copy special list items
{
QListIterator<ListItemInfo> li(*current->sli);
ListItemInfo *lii;
for (li.toFirst();(lii=li.current());++li)
{
varEntry->addSpecialListItem(lii->type,lii->itemId);
}
//delete current->sli;
//current->sli = 0;
}
//printf("Add: type=`%s',name=`%s',args=`%s'\n", //printf("Add: type=`%s',name=`%s',args=`%s' brief=%s doc=%s\n",
// varEntry->type.data(),varEntry->name.data(),varEntry->args.data()); // varEntry->type.data(),varEntry->name.data(),
// varEntry->args.data(),varEntry->brief.data(),varEntry->doc.data());
current_root->addSubEntry(varEntry); current_root->addSubEntry(varEntry);
} }
if (*yytext==';') if (*yytext==';')
......
...@@ -14,9 +14,9 @@ function readString($file) ...@@ -14,9 +14,9 @@ function readString($file)
function readHeader($file) function readHeader($file)
{ {
$header =fgetc($file); $header.=fgetc($file); $header =fgetc($file); $header.=fgetc($file);
$header.=fgetc($file); $header.=fgetc($file); $header.=fgetc($file); $header.=fgetc($file);
return $header; return $header;
} }
function computeIndex($word) function computeIndex($word)
...@@ -284,7 +284,7 @@ function main() ...@@ -284,7 +284,7 @@ function main()
if (!in_array($word,$foundWords)) if (!in_array($word,$foundWords))
{ {
$foundWords[]=$word; $foundWords[]=$word;
search($file,$word,$results); search($file,strtolower($word),$results);
} }
$word=strtok(" "); $word=strtok(" ");
} }
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
"\n" "\n"
"function readHeader($file)\n" "function readHeader($file)\n"
"{\n" "{\n"
" $header =fgetc($file); $header.=fgetc($file);\n" " $header =fgetc($file); $header.=fgetc($file);\n"
" $header.=fgetc($file); $header.=fgetc($file);\n" " $header.=fgetc($file); $header.=fgetc($file);\n"
" return $header;\n" " return $header;\n"
"}\n" "}\n"
"\n" "\n"
"function computeIndex($word)\n" "function computeIndex($word)\n"
...@@ -284,7 +284,7 @@ ...@@ -284,7 +284,7 @@
" if (!in_array($word,$foundWords))\n" " if (!in_array($word,$foundWords))\n"
" {\n" " {\n"
" $foundWords[]=$word;\n" " $foundWords[]=$word;\n"
" search($file,$word,$results);\n" " search($file,strtolower($word),$results);\n"
" }\n" " }\n"
" $word=strtok(\" \");\n" " $word=strtok(\" \");\n"
" }\n" " }\n"
......
...@@ -81,12 +81,14 @@ static int charsToIndex(const char *word) ...@@ -81,12 +81,14 @@ static int charsToIndex(const char *word)
void SearchIndex::addWord(const char *word) void SearchIndex::addWord(const char *word)
{ {
IndexWord *w = m_words[word]; QString wStr=QString(word).lower();
if (wStr.isEmpty()) return;
IndexWord *w = m_words[wStr];
if (w==0) if (w==0)
{ {
int idx=charsToIndex(word); int idx=charsToIndex(wStr);
if (idx<0) return; if (idx<0) return;
w = new IndexWord(word); w = new IndexWord(wStr);
//fprintf(stderr,"addWord(%s) at index %d\n",word,idx); //fprintf(stderr,"addWord(%s) at index %d\n",word,idx);
m_index[idx]->append(w); m_index[idx]->append(w);
m_words.insert(word,w); m_words.insert(word,w);
......
...@@ -152,204 +152,5 @@ class TranslatorAdapter_1_2_11 : public TranslatorAdapter_1_2_13 ...@@ -152,204 +152,5 @@ class TranslatorAdapter_1_2_11 : public TranslatorAdapter_1_2_13
}; };
class TranslatorAdapter_1_2_7 : public TranslatorAdapter_1_2_11
{
public:
virtual QCString updateNeededMessage()
{ return createUpdateNeededMessage(idLanguage(),"release 1.2.7"); }
/*! These are the default implementations of the obsolete methods
* for introducing author/authors (possibly localized).
*/
virtual QCString trAuthors()
{ return "Author(s)"; }
virtual QCString trAuthor()
{ return "Author"; }
/*! This is the localized implementation of newer equivalent
* using the obsolete methods trAuthors() and trAuthor().
*/
virtual QCString trAuthor(bool first_capital, bool singular)
{
if (first_capital)
return (singular) ? trAuthor() : trAuthors(); // possibly localized
else
return english.trAuthor(first_capital, singular);
}
};
/*! \brief Translator adapter class for release 1.2.6
*
* Translator adapter for dealing with translator changes since
* release 1.2.6
*/
class TranslatorAdapter_1_2_6 : public TranslatorAdapter_1_2_7
{
public:
virtual QCString updateNeededMessage()
{ return createUpdateNeededMessage(idLanguage(),"release 1.2.6"); }
/*! Used as ansicpg for RTF file */
virtual QCString trRTFansicp()
{
return "1252";
}
/*! Used as ansicpg for RTF fcharset */
virtual QCString trRTFCharSet()
{
return "0";
}
/*! Used as header RTF general index */
virtual QCString trRTFGeneralIndex()
{
return "Index";
}
//////////////////////////////////////////////////////////////////
// The following methods were replaced by newer equivalent, but
// the obsolete method may be localized. Let's use the localized
// result if possible.
/*! This is the default implementation of the obsolete method
* used in the documentation of a group before the list of
* links to documented files. This is possibly localized.
*/
virtual QCString trFiles()
{ return "Files"; }
/*! This is the localized implementation of newer equivalent
* using the obsolete method trFiles().
*/
virtual QCString trFile(bool first_capital, bool singular)
{
if (first_capital && !singular)
return trFiles(); // possibly localized
else
return english.trFile(first_capital, singular);
}
/*! The latexBabelPackage() was superceeded by
* latexLanguageSupportCommand(). The default implementation
* of the obsolete method follows.
*/
virtual QCString latexBabelPackage()
{ return ""; }
/*! Default implementation of the newer method. */
virtual QCString latexLanguageSupportCommand()
{
QCString result(latexBabelPackage());
if (!result.isEmpty())
{
result = "\\usepackage[" + result;
result += "]{babel}\n";
}
return result;
}
virtual QCString idLanguageCharset()
{ return english.idLanguageCharset(); }
virtual QCString trClass(bool first_capital, bool singular)
{ return english.trClass(first_capital,singular); }
virtual QCString trNamespace(bool first_capital, bool singular)
{ return english.trNamespace(first_capital,singular); }
virtual QCString trGroup(bool first_capital, bool singular)
{ return english.trGroup(first_capital,singular); }
virtual QCString trPage(bool first_capital, bool singular)
{ return english.trPage(first_capital,singular); }
virtual QCString trMember(bool first_capital, bool singular)
{ return english.trMember(first_capital,singular); }
virtual QCString trField(bool first_capital, bool singular)
{ return english.trField(first_capital,singular); }
virtual QCString trGlobal(bool first_capital, bool singular)
{ return english.trGlobal(first_capital,singular); }
};
/*! \brief Translator adapter class for release 1.2.5
*
* Translator adapter for dealing with translator changes since
* release 1.2.5
*/
class TranslatorAdapter_1_2_5 : public TranslatorAdapter_1_2_6
{
public:
virtual QCString updateNeededMessage()
{ return createUpdateNeededMessage(idLanguage(),"release 1.2.5"); }
virtual QCString trBug()
{ return english.trBug(); }
virtual QCString trBugList()
{ return english.trBugList(); }
};
/*! \brief Translator adapter class for release 1.2.4
*
* Translator adapter for dealing with translator changes since
* release 1.2.4
*/
class TranslatorAdapter_1_2_4 : public TranslatorAdapter_1_2_5
{
public:
virtual QCString updateNeededMessage()
{ return createUpdateNeededMessage(idLanguage(),"release 1.2.4"); }
virtual QCString trInterfaces()
{ return english.trInterfaces(); }
virtual QCString trClasses()
{ return english.trClasses(); }
virtual QCString trPackage(const char *name)
{ return english.trPackage(name); }
virtual QCString trPackageList()
{ return english.trPackageList(); }
virtual QCString trPackageListDescription()
{ return english.trPackageListDescription(); }
virtual QCString trPackages()
{ return english.trPackages(); }
virtual QCString trPackageDocumentation()
{ return english.trPackageDocumentation(); }
virtual QCString trDefineValue()
{ return english.trDefineValue(); }
};
/*! \brief Translator adapter class for release 1.2.2
*
* Translator adapter for dealing with translator changes since
* release 1.2.2
*/
class TranslatorAdapter_1_2_2 : public TranslatorAdapter_1_2_4
{
public:
virtual QCString updateNeededMessage()
{ return createUpdateNeededMessage(idLanguage(),"release 1.2.2"); }
virtual QCString trProperties()
{ return english.trProperties(); }
virtual QCString trPropertyDocumentation()
{ return english.trPropertyDocumentation(); }
};
#endif #endif
...@@ -2012,6 +2012,7 @@ void trimBaseClassScope(BaseClassList *bcl,QCString &s,int level=0) ...@@ -2012,6 +2012,7 @@ void trimBaseClassScope(BaseClassList *bcl,QCString &s,int level=0)
} }
} }
#if 0
/*! if either t1 or t2 contains a namespace scope, then remove that /*! if either t1 or t2 contains a namespace scope, then remove that
* scope. If neither or both have a namespace scope, t1 and t2 remain * scope. If neither or both have a namespace scope, t1 and t2 remain
* unchanged. * unchanged.
...@@ -2086,6 +2087,7 @@ static void trimNamespaceScope(QCString &t1,QCString &t2,const QCString &nsName) ...@@ -2086,6 +2087,7 @@ static void trimNamespaceScope(QCString &t1,QCString &t2,const QCString &nsName)
p2 = QMAX(i2-2,0); p2 = QMAX(i2-2,0);
} }
} }
#endif
/*! According to the C++ spec and Ivan Vecerina: /*! According to the C++ spec and Ivan Vecerina:
...@@ -2227,7 +2229,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA, ...@@ -2227,7 +2229,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
//srcAType=stripTemplateSpecifiersFromScope(srcAType,FALSE); //srcAType=stripTemplateSpecifiersFromScope(srcAType,FALSE);
//dstAType=stripTemplateSpecifiersFromScope(dstAType,FALSE); //dstAType=stripTemplateSpecifiersFromScope(dstAType,FALSE);
//printf("srcA=%s:%s dstA=%s:%s\n",srcAType.data(),srcA->name.data(), //printf("srcA=%s|%s dstA=%s|%s\n",srcAType.data(),srcA->name.data(),
// dstAType.data(),dstA->name.data()); // dstAType.data(),dstA->name.data());
if (srcA->array!=dstA->array) // nomatch for char[] against char if (srcA->array!=dstA->array) // nomatch for char[] against char
...@@ -2240,7 +2242,9 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA, ...@@ -2240,7 +2242,9 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
// remove a namespace scope that is only in one type // remove a namespace scope that is only in one type
// (assuming a using statement was used) // (assuming a using statement was used)
trimNamespaceScope(srcAType,dstAType,namespaceName); //printf("Trimming %s<->%s: %s\n",srcAType.data(),dstAType.data(),namespaceName.data());
//trimNamespaceScope(srcAType,dstAType,namespaceName);
//printf("After Trimming %s<->%s\n",srcAType.data(),dstAType.data());
//QCString srcScope; //QCString srcScope;
//QCString dstScope; //QCString dstScope;
...@@ -2268,6 +2272,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA, ...@@ -2268,6 +2272,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
srcAType=trimScope(namespaceName,srcAType); srcAType=trimScope(namespaceName,srcAType);
dstAType=trimScope(namespaceName,dstAType); dstAType=trimScope(namespaceName,dstAType);
} }
//printf("#usingNamespace=%d\n",usingNamespaces->count());
if (usingNamespaces && usingNamespaces->count()>0) if (usingNamespaces && usingNamespaces->count()>0)
{ {
NamespaceSDict::Iterator nli(*usingNamespaces); NamespaceSDict::Iterator nli(*usingNamespaces);
...@@ -2278,6 +2283,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA, ...@@ -2278,6 +2283,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
dstAType=trimScope(nd->name(),dstAType); dstAType=trimScope(nd->name(),dstAType);
} }
} }
//printf("#usingClasses=%d\n",usingClasses->count());
if (usingClasses && usingClasses->count()>0) if (usingClasses && usingClasses->count()>0)
{ {
SDict<Definition>::Iterator cli(*usingClasses); SDict<Definition>::Iterator cli(*usingClasses);
...@@ -2289,7 +2295,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA, ...@@ -2289,7 +2295,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
} }
} }
//printf("2. srcA=%s:%s dstA=%s:%s\n",srcAType.data(),srcA->name.data(), //printf("2. srcA=%s|%s dstA=%s|%s\n",srcAType.data(),srcA->name.data(),
// dstAType.data(),dstA->name.data()); // dstAType.data(),dstA->name.data());
if (!srcA->name.isEmpty() && !dstA->type.isEmpty() && if (!srcA->name.isEmpty() && !dstA->type.isEmpty() &&
...@@ -4200,7 +4206,8 @@ QList<ArgumentList> *copyArgumentLists(const QList<ArgumentList> *srcLists) ...@@ -4200,7 +4206,8 @@ QList<ArgumentList> *copyArgumentLists(const QList<ArgumentList> *srcLists)
* strip both unless A<T> or B<S> are specialized template classes. * strip both unless A<T> or B<S> are specialized template classes.
*/ */
QCString stripTemplateSpecifiersFromScope(const QCString &fullName, QCString stripTemplateSpecifiersFromScope(const QCString &fullName,
bool parentOnly) bool parentOnly,
QCString *pLastScopeStripped)
{ {
QCString result; QCString result;
int p=0; int p=0;
...@@ -4237,6 +4244,10 @@ QCString stripTemplateSpecifiersFromScope(const QCString &fullName, ...@@ -4237,6 +4244,10 @@ QCString stripTemplateSpecifiersFromScope(const QCString &fullName,
result+=fullName.mid(i,e-i); result+=fullName.mid(i,e-i);
//printf("2:result+=%s\n",fullName.mid(i,e-i-1).data()); //printf("2:result+=%s\n",fullName.mid(i,e-i-1).data());
} }
else if (pLastScopeStripped)
{
*pLastScopeStripped=fullName.mid(i,e-i);
}
p=e; p=e;
i=fullName.find('<',p); i=fullName.find('<',p);
} }
...@@ -4420,7 +4431,7 @@ void addRefItem(const QList<ListItemInfo> *sli, ...@@ -4420,7 +4431,7 @@ void addRefItem(const QList<ListItemInfo> *sli,
const char *prefix, const char *prefix,
const char *name,const char *title,const char *args) const char *name,const char *title,const char *args)
{ {
//printf("addRefItem(%s,%s,%s,%s)\n",prefix,name,title,args); //printf("addRefItem(prefix=%s,name=%s,title=%s,args=%s)\n",prefix,name,title,args);
if (sli) if (sli)
{ {
QListIterator<ListItemInfo> slii(*sli); QListIterator<ListItemInfo> slii(*sli);
...@@ -4440,8 +4451,8 @@ void addRefItem(const QList<ListItemInfo> *sli, ...@@ -4440,8 +4451,8 @@ void addRefItem(const QList<ListItemInfo> *sli,
{ {
RefItem *item = refList->getRefItem(lii->itemId); RefItem *item = refList->getRefItem(lii->itemId);
ASSERT(item!=0); ASSERT(item!=0);
if (item->written) return;
//printf("anchor=%s\n",item->listAnchor.data()); //printf("anchor=%s\n",item->listAnchor.data());
if (item->written) return;
QCString doc(1000); QCString doc(1000);
doc = "\\anchor "; doc = "\\anchor ";
......
...@@ -190,7 +190,8 @@ QCString substituteTemplateArgumentsInString( ...@@ -190,7 +190,8 @@ QCString substituteTemplateArgumentsInString(
ArgumentList *copyArgumentList(const ArgumentList *src); ArgumentList *copyArgumentList(const ArgumentList *src);
QList<ArgumentList> *copyArgumentLists(const QList<ArgumentList> *srcLists); QList<ArgumentList> *copyArgumentLists(const QList<ArgumentList> *srcLists);
QCString stripTemplateSpecifiersFromScope(const QCString &fullName, QCString stripTemplateSpecifiersFromScope(const QCString &fullName,
bool parentOnly=TRUE); bool parentOnly=TRUE,
QCString *lastScopeStripped=0);
QCString resolveTypeDef(Definition *d,const QCString &name, QCString resolveTypeDef(Definition *d,const QCString &name,
Definition **typedefContext=0); Definition **typedefContext=0);
QCString mergeScopes(const QCString &leftScope,const QCString &rightScope); QCString mergeScopes(const QCString &leftScope,const QCString &rightScope);
......
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