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
(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.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
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
@epstopdf doxygen_logo.eps --outfile=../latex/doxygen_logo.pdf
clean:
rm -rf ../html ../latex *.bak translator_report.txt
rm -rf ../html ../latex *.bak
language: language.doc
......
......@@ -932,7 +932,7 @@ function's detailed documentation block.
<dt>\c HTML_FOOTER <dd>
\addindex HTML_FOOTER
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:
\verbatim
</BODY>
......@@ -940,7 +940,7 @@ function's detailed documentation block.
\endverbatim
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>\$doxygenversion</code>, <code>\$projectname</code>,
<code>\$projectnumber</code>.
......@@ -1412,7 +1412,9 @@ EXTRA_PACKAGES = times
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:
<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
<dt>\c EXPAND_AS_DEFINED <dd>
......
......@@ -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
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):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
......@@ -95,8 +95,8 @@ when the translator was updated.
<tr bgcolor="#ffffff">
<td>Danish</td>
<td>Erik S&oslash;e S&oslash;rensen</td>
<td>erik at mail dot nu</td>
<td>1.3.8</td>
<td>eriksoe+doxygen at daimi dot au dot dk</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Dutch</td>
......@@ -113,7 +113,7 @@ when the translator was updated.
<tr bgcolor="#ffffff">
<td>Finnish</td>
<td>Olli Korhonen</td>
<td>Olli.Korhonen at ccc dot fi</td>
<td>olli.korhonen lost at cyberspace</td>
<td>obsolete</td>
</tr>
<tr bgcolor="#ffffff">
......@@ -137,7 +137,7 @@ when the translator was updated.
<tr bgcolor="#ffffff">
<td>Hungarian</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>
</tr>
<tr bgcolor="#ffffff">
......@@ -220,8 +220,8 @@ when the translator was updated.
</tr>
<tr bgcolor="#ffffff">
<td>Slovene</td>
<td>Matjaz Ostroversnik</td>
<td>matjaz.ostroversnik at zrs-tk dot si</td>
<td>Matja&#x017e; Ostrover&#x0161;nik</td>
<td>matjaz.ostroversnik at ztm dot si</td>
<td>1.2.16</td>
</tr>
<tr bgcolor="#ffffff">
......@@ -239,7 +239,7 @@ when the translator was updated.
<tr bgcolor="#ffffff">
<td>Ukrainian</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>
</tr>
<!-- table content end -->
......@@ -273,13 +273,13 @@ when the translator was updated.
\hline
Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\
\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
Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline
English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline
Finnish & Olli Korhonen & {\tt\tiny Olli.Korhonen@ccc.fi} & obsolete \\
Finnish & Olli Korhonen & {\tt\tiny olli.korhonen lost@cyberspace} & obsolete \\
\hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\
\hline
......@@ -287,7 +287,7 @@ when the translator was updated.
\hline
Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
\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} & ~ \\
\hline
Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\
......@@ -322,13 +322,13 @@ when the translator was updated.
\hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\
\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
Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\
\hline
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.3.8 \\
\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
\end{tabular}
\endlatexonly
......
......@@ -33,7 +33,7 @@ TranslatorCzech
Petr P&rcaron;ikryl: prikrylp@skil.cz
TranslatorDanish
Erik S&oslash;e S&oslash;rensen: erik@mail.nu
Erik S&oslash;e S&oslash;rensen: eriksoe+doxygen@daimi.au.dk
TranslatorDutch
Dimitri van Heesch: dimitri@stack.nl
......@@ -42,7 +42,7 @@ TranslatorEnglish
Dimitri van Heesch: dimitri@stack.nl
TranslatorFinnish
Olli Korhonen: Olli.Korhonen@ccc.fi
Olli Korhonen: olli.korhonen lost@cyberspace
TranslatorFrench
Xavier Outhier: xouthier@yahoo.fr
......@@ -54,7 +54,7 @@ TranslatorGreek
Harry Kalogirou: harkal@rainbow.cs.unipi.gr
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
TranslatorItalian
......@@ -97,7 +97,7 @@ TranslatorSlovak
Stanislav Kudl&aacute;&ccaron;: skudlac@pobox.sk
TranslatorSlovene
Matjaz Ostroversnik: matjaz.ostroversnik@zrs-tk.si
Matja&zcaron; Ostrover&scaron;nik: matjaz.ostroversnik@ztm.si
TranslatorSpanish
Francisco Oltra Thennet: foltra@puc.cl
......@@ -106,5 +106,6 @@ TranslatorSwedish
Mikael Hallin: mikaelhallin@yahoo.se
TranslatorUkrainian
Olexij Tkatchenko: olexij.tkatchenko@gmx.de
Olexij Tkatchenko: olexij.tkatchenko@parcs.de
......@@ -41,7 +41,8 @@
- Plural not used for reporting a single missing method.
- Removal of not used translator adapters is suggested only
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
......@@ -1440,10 +1441,24 @@ class TrManager:
# i.e. all languages were checked against the needed translator
# adapters.
if not self.script_argLst:
to_remove = {}
for version, adaptClassId in self.adaptMethodsDic.values():
if version < adaptMinVersion:
f.write('\nNote: The %s class ' % adaptClassId)
f.write('is not used and can be removed.\n')
to_remove[adaptClassId] = True
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.
if self.EnBasedIdLst:
......
This diff is collapsed.
......@@ -71,6 +71,8 @@
<li>Version 1.8.6 of dot (and maybe earlier versions too) do not
generate proper map files, causing the graphs that doxygen generates
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>
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.8_20040803
Version: 1.3.8_20040812
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -955,7 +955,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE"))
{
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
Doxygen::searchIndex->addWord(localName().lower());
Doxygen::searchIndex->addWord(localName());
}
ol.startTextBlock();
......@@ -2823,6 +2823,8 @@ QCString ClassDef::className() const
void ClassDef::addListReferences()
{
if (!isLinkableInProject()) return;
//printf("ClassDef(%s)::addListReferences()\n",name().data());
addRefItem(xrefListItems(),
theTranslator->trClass(TRUE,TRUE),
getOutputFileBase(),displayName()
......
......@@ -243,12 +243,16 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
g_readLineCtx=YY_START;
BEGIN(ReadLine);
}
<SComment>^[ \t]*"//!"/.*\n {
<SComment>^[ \t]*"//!" | // just //!
<SComment>^[ \t]*"//!<"/.*\n | // or //!< something
<SComment>^[ \t]*"//!"[^<]/.*\n { // or //!something
replaceComment(0);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
}
<SComment>\n[ \t]*"//!"/.*\n {
<SComment>\n[ \t]*"//!" |
<SComment>\n[ \t]*"//!<"/.*\n |
<SComment>\n[ \t]*"//!"[^<]/.*\n {
replaceComment(1);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
......@@ -297,6 +301,7 @@ void replaceComment(int offset)
}
else
{
//printf("replaceComment(%s)\n",yytext);
int i=computeIndent(&yytext[offset]);
if (i==g_blockHeadCol)
{
......
......@@ -2521,7 +2521,9 @@ void Config::create()
"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"
"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 = addList(
......
......@@ -363,6 +363,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
QCString lineStr,anchorStr;
lineStr.sprintf("%d",m_startBodyLine);
anchorStr.sprintf("l%05d",m_startBodyLine);
ol.newParagraph();
if (lineMarkerPos<fileMarkerPos) // line marker before file marker
{
// write text left from linePos marker
......@@ -432,10 +433,6 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
{
err("Error: translation error: invalid markers in trDefinedInSourceFile()\n");
}
ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph();
ol.enableAll();
}
ol.popGeneratorState();
}
......
......@@ -441,7 +441,7 @@ static bool findDocsForMemberOrCompound(const char *commandName,
//printf("findDocsForMemberOrCompound(%s)\n",commandName);
*pDoc="";
*pDef=0;
QString cmdArg=commandName;
QString cmdArg=substitute(commandName,"#","::");
int l=cmdArg.length();
if (l==0) return FALSE;
......@@ -1236,7 +1236,7 @@ DocWord::DocWord(DocNode *parent,const QString &word) :
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
if (!g_searchUrl.isEmpty())
{
Doxygen::searchIndex->addWord(word.lower());
Doxygen::searchIndex->addWord(word);
}
}
......@@ -1251,7 +1251,7 @@ DocLinkedWord::DocLinkedWord(DocNode *parent,const QString &word,
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
if (!g_searchUrl.isEmpty())
{
Doxygen::searchIndex->addWord(word.lower());
Doxygen::searchIndex->addWord(word);
}
}
......@@ -1517,6 +1517,8 @@ bool DocXRefItem::parse()
m_file = refList->listName();
m_anchor = item->listAnchor;
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())
{
......
......@@ -283,7 +283,8 @@ URLCHAR [a-z_A-Z0-9\!\~\:\;\'\$\?\@\&\%\#\.\-\+\/\=]
URLMASK (([a-z_A-Z][^\>\"\n]*{URLCHAR})|({URLCHAR}+))([({]{URLCHAR}*[)}])?
FILESCHAR [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"))?
SPCMD1 {CMD}[a-z_A-Z0-9]+
SPCMD2 {CMD}[\\@<>&$#%~]
......
This diff is collapsed.
......@@ -222,7 +222,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE"))
{
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
Doxygen::searchIndex->addWord(localName().lower());
Doxygen::searchIndex->addWord(localName());
}
if (!Config_getString("GENERATE_TAGFILE").isEmpty())
......
......@@ -16,6 +16,7 @@
*/
#include <ctype.h>
#include <qregexp.h>
#include "qtbc.h"
#include "groupdef.h"
#include "classdef.h"
......@@ -457,14 +458,20 @@ void GroupDef::writeDocumentation(OutputList &ol)
//ol.disable(OutputGenerator::Man);
startFile(ol,getOutputFileBase(),name(),title);
startTitle(ol,getOutputFileBase());
ol.docify(title);
ol.parseText(title);
addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),title);
if (Config_getBool("SEARCHENGINE"))
{
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"))
......
......@@ -26,9 +26,8 @@
#include "dot.h"
#include "message.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)
{
......@@ -872,7 +871,7 @@ void HtmlDocVisitor::visitPost(DocParamSect *)
void HtmlDocVisitor::visitPre(DocParamList *pl)
{
if (m_hide) return;
m_t << " <tr><td>";
m_t << " <tr><td valign=\"top\">";
if (pl->direction()!=DocParamSect::Unspecified)
{
m_t << "<tt>[";
......@@ -890,7 +889,7 @@ void HtmlDocVisitor::visitPre(DocParamList *pl)
}
m_t << "]</tt>&nbsp;";
}
m_t << "</td><td valign=top><em>";
m_t << "</td><td valign=\"top\"><em>";
QStrListIterator li(pl->parameters());
const char *s;
bool first=TRUE;
......
......@@ -42,12 +42,11 @@
#define DBG_HTML(x)
static const char *defaultStyleSheet =
"H1 {\n"
" text-align: center;\n"
"BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n"
"}\n"
"H2 {\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n"
"H1 {\n"
" text-align: center;\n"
"}\n"
"CAPTION { font-weight: bold }\n"
"DIV.qindex {\n"
......@@ -93,10 +92,15 @@ static const char *defaultStyleSheet =
"A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }\n"
"A.el { text-decoration: none; font-weight: bold }\n"
"A.elRef { font-weight: bold }\n"
"A.code { text-decoration: none; font-weight: normal; color: #1A419D}\n"
"A.codeRef { font-weight: normal; color: #1A419D}\n"
"A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}\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"
"DL.el { margin-left: -1cm }\n"
".fragment {\n"
" font-family: monospace\n"
"}\n"
"PRE.fragment {\n"
" border: 1px solid #CCCCCC;\n"
" background-color: #f5f5f5;\n"
......@@ -109,11 +113,12 @@ static const char *defaultStyleSheet =
" padding-top: 4px;\n"
" padding-bottom: 4px;\n"
"}\n"
"DIV.fragment {\n"
" border: 1px solid #CCCCCC;\n"
" background-color: #f5f5f5;\n"
" padding: 6px;\n"
"}\n"
//"DIV.fragment {\n"
//" font-family: monospace\n"
//" border: 1px solid #CCCCCC;\n"
//" background-color: #f5f5f5;\n"
//" padding: 6px;\n"
//"}\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.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }\n"
......@@ -123,7 +128,6 @@ static const char *defaultStyleSheet =
" margin-top: 12px;\n"
" margin-bottom: 6px;\n"
" font-weight: bold;\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n"
"}\n"
"DIV.groupText { margin-left: 16px; font-style: italic; font-size: 14px }\n"
"BODY {\n"
......@@ -216,7 +220,6 @@ static const char *defaultStyleSheet =
" border-bottom-style: none;\n"
" border-left-style: none;\n"
" background-color: #FAFAFA;\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n"
" font-size: 12px;\n"
"}\n"
".memItemRight {\n"
......@@ -235,7 +238,6 @@ static const char *defaultStyleSheet =
" border-bottom-style: none;\n"
" border-left-style: none;\n"
" background-color: #FAFAFA;\n"
" font-family: Geneva, Arial, Helvetica, sans-serif;\n"
" font-size: 13px;\n"
"}\n"
".search { color: #003399;\n"
......@@ -1535,7 +1537,7 @@ void HtmlGenerator::writeSearchPage()
t << "\n";
t << "function report_matches()\n";
t << "{\n";
t << " return \"" << theTranslator->trSearchMatches() << " \";\n";
t << " return \"" << theTranslator->trSearchMatches() << " \";\n";
t << "}\n";
t << "\n";
t << search_script;
......
......@@ -21,6 +21,9 @@
#include "qtbc.h"
#include "outputgen.h"
#define PREFRAG_START "<div class=\"fragment\"><pre class=\"fragment\">"
#define PREFRAG_END "</pre></div>"
class QFile;
class HtmlGenerator : public OutputGenerator
......@@ -112,8 +115,8 @@ class HtmlGenerator : public OutputGenerator
void writeRuler() { t << "<hr>"; }
void writeAnchor(const char *,const char *name)
{ t << "<a name=\"" << name <<"\"></a>"; }
void startCodeFragment() { t << "<pre class=\"fragment\"><div>"; }
void endCodeFragment() { t << "</div></pre>"; }
void startCodeFragment() { t << PREFRAG_START; }
void endCodeFragment() { t << PREFRAG_END; }
void writeLineNumber(const char *,const char *,const char *,int);
void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); }
......
......@@ -460,6 +460,7 @@ void ManDocVisitor::visitPre(DocSimpleList *)
{
if (m_hide) return;
m_indent+=2;
if (!m_firstCol) m_t << endl;
m_t << ".PD 0" << endl;
}
......@@ -507,6 +508,7 @@ void ManDocVisitor::visitPre(DocHtmlList *)
{
if (m_hide) return;
m_indent+=2;
if (!m_firstCol) m_t << endl;
m_t << ".PD 0" << endl;
}
......@@ -514,6 +516,7 @@ void ManDocVisitor::visitPost(DocHtmlList *)
{
if (m_hide) return;
m_indent-=2;
if (!m_firstCol) m_t << endl;
m_t << ".PP" << endl;
}
......@@ -741,6 +744,7 @@ void ManDocVisitor::visitPost(DocSecRefList *)
{
if (m_hide) return;
m_indent-=2;
if (!m_firstCol) m_t << endl;
m_t << ".PP" << endl;
}
......
......@@ -343,6 +343,7 @@ MemberDef::MemberDef(const char *df,int dl,
section=0;
groupAlias=0;
explExt=FALSE;
tspec=FALSE;
cachedAnonymousType=0;
maxInitLines=Config_getInt("MAX_INITIALIZER_LINES");
userInitLines=-1;
......@@ -834,8 +835,8 @@ void MemberDef::writeDeclaration(OutputList &ol,
if (Config_getBool("SEARCHENGINE"))
{
Doxygen::searchIndex->setCurrentDoc(qualifiedName(),getOutputFileBase(),anchor());
Doxygen::searchIndex->addWord(localName().lower());
Doxygen::searchIndex->addWord(qualifiedName().lower());
Doxygen::searchIndex->addWord(localName());
Doxygen::searchIndex->addWord(qualifiedName());
}
Definition *d=0;
......@@ -1248,7 +1249,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
htmlHelp->addIndexItem(cname,name(),cfname,anchor());
}
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef.left(i));
//ol+=*vmd->enumDecl();
vmd->writeEnumDeclaration(ol,getClassDef(),getNamespaceDef(),getFileDef(),getGroupDef());
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef.right(ldef.length()-i-l));
......@@ -1310,7 +1310,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
else // definition gets it template parameters from its class
// (since no definition was found)
{
if (cd)
if (cd && !isTemplateSpecialization())
{
QList<ArgumentList> tempParamLists;
cd->getTemplateParameterLists(tempParamLists);
......@@ -1670,7 +1670,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol.parseText(reimplFromLine.right(
reimplFromLine.length()-markerPos-2)); // text right from marker
ol.newParagraph();
}
else
{
......@@ -1751,7 +1750,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
index=newIndex+matchLen;
}
ol.parseText(reimplInLine.right(reimplInLine.length()-index));
ol.newParagraph();
}
}
// write the list of examples that use this member
......@@ -2003,9 +2001,14 @@ void MemberDef::addListReference(Definition *)
}
}
}
//printf("*** addListReference %s todo=%d test=%d bug=%d\n",name().data(),todoId(),testId(),bugId());
addRefItem(xrefListItems(),memLabel,
getOutputFileBase()+"#"+anchor(),memName,argsString());
if (xrefListItems())
{
addRefItem(xrefListItems(),memLabel,
getOutputFileBase()+"#"+anchor(),memName,argsString());
}
else
{
}
}
MemberList *MemberDef::getSectionList(Definition *d) const
......
......@@ -134,6 +134,7 @@ class MemberDef : public Definition
bool isWritable() const { return (memSpec&Entry::Writable)!=0; }
bool isImplementation() const { return m_implOnly; }
bool isExternal() const { return explExt; }
bool isTemplateSpecialization() const { return tspec; }
bool isObjCMethod() const;
bool isConstructor() const;
bool isDestructor() const;
......@@ -151,22 +152,23 @@ class MemberDef : public Definition
bool isDocumentedFriendClass() const;
// set functions
void setMemberType(MemberType t) { mtype=t; }
void setDefinition(const char *d) { def=d; }
void setFileDef(FileDef *fd) { fileDef=fd; }
void setMemberType(MemberType t) { mtype=t; }
void setDefinition(const char *d) { def=d; }
void setFileDef(FileDef *fd) { fileDef=fd; }
void setAnchor(const char *a);
void setProtection(Protection p) { prot=p; }
void setMemberSpecifiers(int s) { memSpec=s; }
void mergeMemberSpecifiers(int s) { memSpec|=s; }
void setProtection(Protection p) { prot=p; }
void setMemberSpecifiers(int s) { memSpec=s; }
void mergeMemberSpecifiers(int s) { memSpec|=s; }
void setInitializer(const char *i);
void setBitfields(const char *s) { bitfields = s; }
void setMaxInitLines(int lines) { userInitLines=lines; }
void setBitfields(const char *s) { bitfields = s; }
void setMaxInitLines(int lines) { userInitLines=lines; }
void setMemberClass(ClassDef *cd);
void setSectionList(Definition *d,MemberList *sl);
void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs);
void setExplicitExternal(bool b) { explExt=b; }
void setReadAccessor(const char *r) { read=r; }
void setWriteAccessor(const char *w) { write=w; }
void setExplicitExternal(bool b) { explExt=b; }
void setReadAccessor(const char *r) { read=r; }
void setWriteAccessor(const char *w) { write=w; }
void setTemplateSpecialization(bool b) { tspec=b; }
void makeRelated() { related=TRUE; }
......@@ -348,6 +350,7 @@ class MemberDef : public Definition
GroupDef *group; // group in which this member is in
bool explExt; // member was explicitly declared external
bool tspec; // member is a template specialization
ClassDef *cachedAnonymousType; // if the member has an anonymous compound
// as its type then this is computed by
......
......@@ -286,14 +286,14 @@ void MemberList::writePlainDeclarations(OutputList &ol,
{
if (md->fromAnonymousScope() && !md->anonymousDeclShown())
{
md->setFromAnonymousScope(FALSE);
//printf("anonymous compound members\n");
if (md->isBriefSectionVisible())
{
if (first) ol.startMemberList(),first=FALSE;
md->setFromAnonymousScope(FALSE);
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
md->setFromAnonymousScope(TRUE);
}
md->setFromAnonymousScope(TRUE);
}
}
}
......
......@@ -275,15 +275,14 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
}
startFile(ol,getOutputFileBase(),name(),pageTitle);
startTitle(ol,getOutputFileBase());
//ol.docify(pageTitle);
//ol.parseText(pageTitle);
ol.parseText(pageTitle);
addGroupListToTitle(ol,this);
endTitle(ol,getOutputFileBase(),displayName());
if (Config_getBool("SEARCHENGINE"))
{
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
Doxygen::searchIndex->addWord(localName().lower());
Doxygen::searchIndex->addWord(localName());
}
if (!Config_getString("GENERATE_TAGFILE").isEmpty())
......
......@@ -194,7 +194,7 @@ static FILE *checkAndOpenFile(const QCString &absName)
QCString filterName = getFileFilter(absName);
if (!filterName.isEmpty())
{
QCString cmd = filterName+" "+absName;
QCString cmd = filterName+" \""+absName+"\"";
f=popen(cmd,"r");
if (!f) err("Error: could not execute filter %s\n",cmd.data());
}
......@@ -1486,6 +1486,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
Define *def;
if ((def=isDefined(yytext))
/*&& !def->isPredefined*/
&& !def->nonRecursive
)
{
//printf("undefining %s\n",yytext);
......
......@@ -37,8 +37,8 @@
#include "rtfdocvisitor.h"
#include "docparser.h"
#define DBG_RTF(x) x;
//#define DBG_RTF(x)
//#define DBG_RTF(x) x;
#define DBG_RTF(x)
static QCString dateToRTFDateString()
{
......
......@@ -2589,9 +2589,21 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
{
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",
// varEntry->type.data(),varEntry->name.data(),varEntry->args.data());
//printf("Add: type=`%s',name=`%s',args=`%s' brief=%s doc=%s\n",
// varEntry->type.data(),varEntry->name.data(),
// varEntry->args.data(),varEntry->brief.data(),varEntry->doc.data());
current_root->addSubEntry(varEntry);
}
if (*yytext==';')
......
......@@ -14,9 +14,9 @@ function readString($file)
function readHeader($file)
{
$header =fgetc($file); $header.=fgetc($file);
$header.=fgetc($file); $header.=fgetc($file);
return $header;
$header =fgetc($file); $header.=fgetc($file);
$header.=fgetc($file); $header.=fgetc($file);
return $header;
}
function computeIndex($word)
......@@ -284,7 +284,7 @@ function main()
if (!in_array($word,$foundWords))
{
$foundWords[]=$word;
search($file,$word,$results);
search($file,strtolower($word),$results);
}
$word=strtok(" ");
}
......
......@@ -14,9 +14,9 @@
"\n"
"function readHeader($file)\n"
"{\n"
" $header =fgetc($file); $header.=fgetc($file);\n"
" $header.=fgetc($file); $header.=fgetc($file);\n"
" return $header;\n"
" $header =fgetc($file); $header.=fgetc($file);\n"
" $header.=fgetc($file); $header.=fgetc($file);\n"
" return $header;\n"
"}\n"
"\n"
"function computeIndex($word)\n"
......@@ -284,7 +284,7 @@
" if (!in_array($word,$foundWords))\n"
" {\n"
" $foundWords[]=$word;\n"
" search($file,$word,$results);\n"
" search($file,strtolower($word),$results);\n"
" }\n"
" $word=strtok(\" \");\n"
" }\n"
......
......@@ -81,12 +81,14 @@ static int charsToIndex(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)
{
int idx=charsToIndex(word);
int idx=charsToIndex(wStr);
if (idx<0) return;
w = new IndexWord(word);
w = new IndexWord(wStr);
//fprintf(stderr,"addWord(%s) at index %d\n",word,idx);
m_index[idx]->append(w);
m_words.insert(word,w);
......
......@@ -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
......@@ -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
* scope. If neither or both have a namespace scope, t1 and t2 remain
* unchanged.
......@@ -2086,6 +2087,7 @@ static void trimNamespaceScope(QCString &t1,QCString &t2,const QCString &nsName)
p2 = QMAX(i2-2,0);
}
}
#endif
/*! According to the C++ spec and Ivan Vecerina:
......@@ -2227,7 +2229,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
//srcAType=stripTemplateSpecifiersFromScope(srcAType,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());
if (srcA->array!=dstA->array) // nomatch for char[] against char
......@@ -2240,7 +2242,9 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
// remove a namespace scope that is only in one type
// (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 dstScope;
......@@ -2268,6 +2272,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
srcAType=trimScope(namespaceName,srcAType);
dstAType=trimScope(namespaceName,dstAType);
}
//printf("#usingNamespace=%d\n",usingNamespaces->count());
if (usingNamespaces && usingNamespaces->count()>0)
{
NamespaceSDict::Iterator nli(*usingNamespaces);
......@@ -2278,6 +2283,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
dstAType=trimScope(nd->name(),dstAType);
}
}
//printf("#usingClasses=%d\n",usingClasses->count());
if (usingClasses && usingClasses->count()>0)
{
SDict<Definition>::Iterator cli(*usingClasses);
......@@ -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());
if (!srcA->name.isEmpty() && !dstA->type.isEmpty() &&
......@@ -4200,7 +4206,8 @@ QList<ArgumentList> *copyArgumentLists(const QList<ArgumentList> *srcLists)
* strip both unless A<T> or B<S> are specialized template classes.
*/
QCString stripTemplateSpecifiersFromScope(const QCString &fullName,
bool parentOnly)
bool parentOnly,
QCString *pLastScopeStripped)
{
QCString result;
int p=0;
......@@ -4237,6 +4244,10 @@ QCString stripTemplateSpecifiersFromScope(const QCString &fullName,
result+=fullName.mid(i,e-i);
//printf("2:result+=%s\n",fullName.mid(i,e-i-1).data());
}
else if (pLastScopeStripped)
{
*pLastScopeStripped=fullName.mid(i,e-i);
}
p=e;
i=fullName.find('<',p);
}
......@@ -4420,7 +4431,7 @@ void addRefItem(const QList<ListItemInfo> *sli,
const char *prefix,
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)
{
QListIterator<ListItemInfo> slii(*sli);
......@@ -4440,8 +4451,8 @@ void addRefItem(const QList<ListItemInfo> *sli,
{
RefItem *item = refList->getRefItem(lii->itemId);
ASSERT(item!=0);
if (item->written) return;
//printf("anchor=%s\n",item->listAnchor.data());
if (item->written) return;
QCString doc(1000);
doc = "\\anchor ";
......
......@@ -190,7 +190,8 @@ QCString substituteTemplateArgumentsInString(
ArgumentList *copyArgumentList(const ArgumentList *src);
QList<ArgumentList> *copyArgumentLists(const QList<ArgumentList> *srcLists);
QCString stripTemplateSpecifiersFromScope(const QCString &fullName,
bool parentOnly=TRUE);
bool parentOnly=TRUE,
QCString *lastScopeStripped=0);
QCString resolveTypeDef(Definition *d,const QCString &name,
Definition **typedefContext=0);
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