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

Release-1.2.16-20020707

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