Commit e6a16d09 authored by dimitri's avatar dimitri

Release-1.3.4-20031019

parent a139a433
DOXYGEN Version 1.3.4-20031005 DOXYGEN Version 1.3.4-20031019
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 (05 October 2003) Dimitri van Heesch (19 October 2003)
DOXYGEN Version 1.3.4_20031005 DOXYGEN Version 1.3.4_20031019
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) (05 October 2003) Dimitri van Heesch (dimitri@stack.nl) (19 October 2003)
1.3.4-20031005 1.3.4-20031019
...@@ -55,6 +55,7 @@ Below is an alphabetical index of the tags that are recognized ...@@ -55,6 +55,7 @@ Below is an alphabetical index of the tags that are recognized
followed by the descriptions of the tags grouped by category. followed by the descriptions of the tags grouped by category.
\secreflist \secreflist
\refitem cfg_abbreviate_brief ABBREVIATE_BRIEF
\refitem cfg_aliases ALIASES \refitem cfg_aliases ALIASES
\refitem cfg_allexternals ALLEXTERNALS \refitem cfg_allexternals ALLEXTERNALS
\refitem cfg_alphabetical_index ALPHABETICAL_INDEX \refitem cfg_alphabetical_index ALPHABETICAL_INDEX
...@@ -200,7 +201,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -200,7 +201,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_warnings WARNINGS \refitem cfg_warnings WARNINGS
\refitem cfg_xml_dtd XML_DTD \refitem cfg_xml_dtd XML_DTD
\refitem cfg_xml_output XML_OUTPUT \refitem cfg_xml_output XML_OUTPUT
\refitem cfg_xml_programlising XML_PROGRAMLISTING \refitem cfg_xml_programlisting XML_PROGRAMLISTING
\refitem cfg_xml_schema XML_SCHEMA \refitem cfg_xml_schema XML_SCHEMA
\endsecreflist \endsecreflist
...@@ -272,6 +273,18 @@ followed by the descriptions of the tags grouped by category. ...@@ -272,6 +273,18 @@ followed by the descriptions of the tags grouped by category.
If both \c HIDE_UNDOC_MEMBERS and \c BRIEF_MEMBER_DESC are set to \c NO, the If both \c HIDE_UNDOC_MEMBERS and \c BRIEF_MEMBER_DESC are set to \c NO, the
brief descriptions will be completely suppressed. brief descriptions will be completely suppressed.
\anchor cfg_abbreviate_brief
<dt>\c ABBREVIATE_BRIEF <dd>
\addindex ABBREVIATE_BRIEF
This tag implements a quasi-intelligent brief description abbreviator
that is used to form the text in various listings. Each string
in this list, if found as the leading text of the brief description, will be
stripped from the text and the result after processing the whole list, is used
as the annotated text. Otherwise, the brief description is used as-is. If left
blank, the following values are used ("\$name" is automatically replaced with the
name of the entity): "The $name class" "The $name widget" "The $name file"
"is" "provides" "specifies" "contains" "represents" "a" "an" "the".
\anchor cfg_always_detailed_sec \anchor cfg_always_detailed_sec
<dt>\c ALWAYS_DETAILED_SEC <dd> <dt>\c ALWAYS_DETAILED_SEC <dd>
\addindex ALWAYS_DETAILED_SEC \addindex ALWAYS_DETAILED_SEC
......
...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means ...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. languages other than English (the default) at configuration time.
Currently (version unknown), 29 languages Currently (version 1.3.3), 29 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish, Czech, Danish, Dutch, English, Finnish,
...@@ -73,7 +73,7 @@ when the translator was updated. ...@@ -73,7 +73,7 @@ when the translator was updated.
<TD>Chinese Traditional</TD> <TD>Chinese Traditional</TD>
<TD>Daniel YC Lin<br>Gary Lee</TD> <TD>Daniel YC Lin<br>Gary Lee</TD>
<TD>daniel@NOSPAM.twpda.com<br>garylee@NOSPAM.ecosine.com.tw</TD> <TD>daniel@NOSPAM.twpda.com<br>garylee@NOSPAM.ecosine.com.tw</TD>
<TD>1.3.3</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Croatian</TD> <TD>Croatian</TD>
...@@ -91,7 +91,7 @@ when the translator was updated. ...@@ -91,7 +91,7 @@ when the translator was updated.
<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@NOSPAM.mail.nu</TD> <TD>erik@NOSPAM.mail.nu</TD>
<TD>strange</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Dutch</TD> <TD>Dutch</TD>
...@@ -187,7 +187,7 @@ when the translator was updated. ...@@ -187,7 +187,7 @@ when the translator was updated.
<TD>Russian</TD> <TD>Russian</TD>
<TD>Alexandr Chelpanov</TD> <TD>Alexandr Chelpanov</TD>
<TD>cav@NOSPAM.cryptopro.ru</TD> <TD>cav@NOSPAM.cryptopro.ru</TD>
<TD>strange</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Serbian</TD> <TD>Serbian</TD>
...@@ -243,14 +243,14 @@ when the translator was updated. ...@@ -243,14 +243,14 @@ when the translator was updated.
Chinese & Wei Liu & {\tt liuwei@asiainfo.com} & 1.2.13 \\ Chinese & Wei Liu & {\tt liuwei@asiainfo.com} & 1.2.13 \\
& Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\ & Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\
\hline \hline
Chinese Traditional & Daniel YC Lin & {\tt daniel@twpda.com} & 1.3.3 \\ Chinese Traditional & Daniel YC Lin & {\tt daniel@twpda.com} & up-to-date \\
& Gary Lee & {\tt garylee@ecosine.com.tw} & \\ & Gary Lee & {\tt garylee@ecosine.com.tw} & \\
\hline \hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\ Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\ Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\
\hline \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & strange \\ Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & up-to-date \\
\hline \hline
Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} & up-to-date \\ Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} & up-to-date \\
\hline \hline
...@@ -285,7 +285,7 @@ when the translator was updated. ...@@ -285,7 +285,7 @@ when the translator was updated.
\hline \hline
Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.16 \\ Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.16 \\
\hline \hline
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & strange \\ Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\
\hline \hline
Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.3.3 \\ Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.3.3 \\
\hline \hline
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.4_20031005 Version: 1.3.4_20031019
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
......
...@@ -72,6 +72,7 @@ class ClassDef : public Definition ...@@ -72,6 +72,7 @@ class ClassDef : public Definition
QCString getSourceFileBase() const; QCString getSourceFileBase() const;
QCString getReference() const; QCString getReference() const;
bool isReference() const; bool isReference() const;
bool isLocal() const { return m_isLocal; }
bool hasDocumentation() const; bool hasDocumentation() const;
......
...@@ -71,7 +71,11 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f ...@@ -71,7 +71,11 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
) )
{ {
bool isLink = cd->isLinkable(); bool isLink = cd->isLinkable();
if (isLink || !Config_getBool("HIDE_UNDOC_CLASSES")) if (isLink ||
(!Config_getBool("HIDE_UNDOC_CLASSES") &&
(!cd->isLocal() || Config_getBool("EXTRACT_LOCAL_CLASSES"))
)
)
{ {
if (!found) if (!found)
{ {
...@@ -127,8 +131,10 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f ...@@ -127,8 +131,10 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
ol.startMemberDescription(); ol.startMemberDescription();
ol.parseDoc(cd->briefFile(),cd->briefLine(),cd,0, ol.parseDoc(cd->briefFile(),cd->briefLine(),cd,0,
cd->briefDescription(),FALSE,FALSE); cd->briefDescription(),FALSE,FALSE);
if ((!cd->briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) || if (//(!cd->briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) ||
!cd->documentation().isEmpty()) //!cd->documentation().isEmpty())
cd->isLinkableInProject()
)
{ {
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
......
...@@ -1245,6 +1245,22 @@ void Config::check() ...@@ -1245,6 +1245,22 @@ void Config::check()
Config_getBool("INLINE_INFO")=FALSE; Config_getBool("INLINE_INFO")=FALSE;
} }
// add default words if needed
QStrList &annotationFromBrief = Config_getList("ABBREVIATE_BRIEF");
if (annotationFromBrief.isEmpty())
{
annotationFromBrief.append("The $name class");
annotationFromBrief.append("The $name widget");
annotationFromBrief.append("The $name file");
annotationFromBrief.append("is");
annotationFromBrief.append("provides");
annotationFromBrief.append("specifies");
annotationFromBrief.append("contains");
annotationFromBrief.append("represents");
annotationFromBrief.append("a");
annotationFromBrief.append("an");
annotationFromBrief.append("the");
}
} }
void Config::init() void Config::init()
...@@ -1419,6 +1435,17 @@ void Config::create() ...@@ -1419,6 +1435,17 @@ void Config::create()
"brief descriptions will be completely suppressed. \n", "brief descriptions will be completely suppressed. \n",
TRUE TRUE
); );
cl = addList(
"ABBREVIATE_BRIEF",
"This tag implements a quasi-intelligent brief description abbreviator \n"
"that is used to form the text in various listings. Each string \n"
"in this list, if found as the leading text of the brief description, will be \n"
"stripped from the text and the result after processing the whole list, is used \n"
"as the annotated text. Otherwise, the brief description is used as-is. If left \n"
"blank, the following values are used (\"$name\" is automatically replaced with the \n"
"name of the entity): \"The $name class\" \"The $name widget\" \"The $name file\" \n"
"\"is\" \"provides\" \"specifies\" \"contains\" \"represents\" \"a\" \"an\" \"the\"\n"
);
cb = addBool( cb = addBool(
"ALWAYS_DETAILED_SEC", "ALWAYS_DETAILED_SEC",
"If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then \n" "If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then \n"
......
...@@ -1218,6 +1218,8 @@ DocAnchor::DocAnchor(DocNode *parent,const QString &id,bool newAnchor) ...@@ -1218,6 +1218,8 @@ DocAnchor::DocAnchor(DocNode *parent,const QString &id,bool newAnchor)
else else
{ {
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Invalid anchor id `%s'",id.data()); warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Invalid anchor id `%s'",id.data());
m_anchor = "invalid";
m_file = "invalid";
} }
} }
} }
...@@ -4730,7 +4732,7 @@ void DocRoot::parse() ...@@ -4730,7 +4732,7 @@ void DocRoot::parse()
} }
else else
{ {
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Invalid anchor id `%s'; ignoring section",g_token->sectionId.data()); warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Invalid section id `%s'; ignoring section",g_token->sectionId.data());
retval = 0; retval = 0;
} }
} }
......
...@@ -248,9 +248,9 @@ class DirEntry ...@@ -248,9 +248,9 @@ class DirEntry
{ {
public: public:
enum EntryKind { Dir, File }; enum EntryKind { Dir, File };
DirEntry::DirEntry(DirEntry *parent,FileDef *fd) DirEntry(DirEntry *parent,FileDef *fd)
: m_parent(parent), m_kind(File), m_fd(fd), m_isLast(FALSE) { } : m_parent(parent), m_kind(File), m_fd(fd), m_isLast(FALSE) { }
DirEntry::DirEntry(DirEntry *parent) DirEntry(DirEntry *parent)
: m_parent(parent), m_kind(Dir), m_fd(0), m_isLast(FALSE) { } : m_parent(parent), m_kind(Dir), m_fd(0), m_isLast(FALSE) { }
virtual ~DirEntry() { } virtual ~DirEntry() { }
EntryKind kind() const { return m_kind; } EntryKind kind() const { return m_kind; }
......
...@@ -749,7 +749,7 @@ void FTVHelp::generateTreeView() ...@@ -749,7 +749,7 @@ void FTVHelp::generateTreeView()
t << " </script>\n"; t << " </script>\n";
t << " </head>\n"; t << " </head>\n";
t << "\n"; t << "\n";
t << " <body bgcolor=\"#ffffff\">\n"; t << " <body>\n";
t << " <div class=\"directory\">\n"; t << " <div class=\"directory\">\n";
t << " <h3>"; t << " <h3>";
QCString &projName = Config_getString("PROJECT_NAME"); QCString &projName = Config_getString("PROJECT_NAME");
......
...@@ -205,7 +205,8 @@ bool GroupDef::insertMember(MemberDef *md,bool docOnly) ...@@ -205,7 +205,8 @@ bool GroupDef::insertMember(MemberDef *md,bool docOnly)
(srcMd->getOuterScope()->definitionType()==Definition::TypeFile && (srcMd->getOuterScope()->definitionType()==Definition::TypeFile &&
md->getOuterScope()->definitionType()==Definition::TypeFile); md->getOuterScope()->definitionType()==Definition::TypeFile);
if (matchArguments(srcMd->argumentList(),md->argumentList()) && if (srcMd->isFunction() && md->isFunction() &&
matchArguments(srcMd->argumentList(),md->argumentList()) &&
sameScope sameScope
) )
{ {
...@@ -690,7 +691,8 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup) ...@@ -690,7 +691,8 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup)
/*! Add a member to the group with the highest priority */ /*! Add a member to the group with the highest priority */
void addMemberToGroups(Entry *root,MemberDef *md) void addMemberToGroups(Entry *root,MemberDef *md)
{ {
//printf(" Root %p = %s, md %p=%s groups=%d\n", root, root->name.data(), md, md->name().data(), root->groups->count() ); //printf("addMemberToGroups: Root %p = %s, md %p=%s groups=%d\n",
// root, root->name.data(), md, md->name().data(), root->groups->count() );
QListIterator<Grouping> gli(*root->groups); QListIterator<Grouping> gli(*root->groups);
Grouping *g; Grouping *g;
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <qtextstream.h> #include <qtextstream.h>
#include <qdatetime.h> #include <qdatetime.h>
#include <qdir.h> #include <qdir.h>
#include <qregexp.h>
#include "message.h" #include "message.h"
#include "index.h" #include "index.h"
...@@ -136,34 +137,28 @@ bool stripWord(QCString &s,QCString w) ...@@ -136,34 +137,28 @@ bool stripWord(QCString &s,QCString w)
// some quasi intelligent brief description abbreviator :^) // some quasi intelligent brief description abbreviator :^)
QCString abbreviate(const char *s,const char *name) QCString abbreviate(const char *s,const char *name)
{ {
QCString scopelessName=name;
int i=scopelessName.findRev("::");
if (i!=-1) scopelessName=scopelessName.mid(i);
QCString result=s; QCString result=s;
QCString start1=(QCString)"The "+name+" class ";
QCString start2=(QCString)"The "+name+" widget ";
QCString start3=(QCString)"The "+name+" file ";
result=result.stripWhiteSpace(); result=result.stripWhiteSpace();
// strip trailing . // strip trailing .
if (!result.isEmpty() && result.at(result.length()-1)=='.') if (!result.isEmpty() && result.at(result.length()-1)=='.')
result=result.left(result.length()-1); result=result.left(result.length()-1);
bool found=FALSE;
found = found || stripWord(result,start1); // strip any predefined prefix
found = found || stripWord(result,start2); QStrList &briefDescAbbrev = Config_getList("ANNOTATION_FROM_BRIEF");
found = found || stripWord(result,start3); const char *p = briefDescAbbrev.first();
if (found) while (p)
{ {
bool found=FALSE; QCString s = p;
found = found || stripWord(result,"is "); s.replace(QRegExp("\\$name"), scopelessName); // replace $name with entity name
found = found || stripWord(result,"provides "); s += " ";
found = found || stripWord(result,"specifies "); stripWord(result,s);
found = found || stripWord(result,"contains "); p = briefDescAbbrev.next();
found = found || stripWord(result,"represents ");
found = found || stripWord(result,"implements ");
if (found)
{
stripWord(result,"a ");
stripWord(result,"an ");
stripWord(result,"the ");
}
} }
// capitalize first word
if (!result.isEmpty()) if (!result.isEmpty())
{ {
int c=result[0]; int c=result[0];
...@@ -1320,13 +1315,13 @@ void writeAnnotatedClassList(OutputList &ol) ...@@ -1320,13 +1315,13 @@ void writeAnnotatedClassList(OutputList &ol)
void writeAlphabeticalClassList(OutputList &ol) void writeAlphabeticalClassList(OutputList &ol)
{ {
//ol.startAlphabeticalIndexList(); //ol.startAlphabeticalIndexList();
ol.writeString("<table align=center width=\"95%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
// first count the number of headers // first count the number of headers
ClassSDict::Iterator cli(Doxygen::classSDict); ClassSDict::Iterator cli(Doxygen::classSDict);
ClassDef *cd; ClassDef *cd;
char startLetter=0; char startLetter=0;
int headerItems=0; int headerItems=0;
QCString alphaLinks = "<p><div class=\"qindex\">";
for (;(cd=cli.current());++cli) for (;(cd=cli.current());++cli)
{ {
if (cd->isLinkableInProject() && cd->templateMaster()==0) if (cd->isLinkableInProject() && cd->templateMaster()==0)
...@@ -1336,10 +1331,18 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -1336,10 +1331,18 @@ void writeAlphabeticalClassList(OutputList &ol)
if (toupper(cd->className().at(index))!=startLetter) // new begin letter => new header if (toupper(cd->className().at(index))!=startLetter) // new begin letter => new header
{ {
startLetter=toupper(cd->className().at(index)); startLetter=toupper(cd->className().at(index));
if (headerItems) alphaLinks += "&nbsp;|&nbsp;";
headerItems++; headerItems++;
alphaLinks += (QCString)"<a class=\"qindex\" href=\"#letter_" +
startLetter + "\">" +
startLetter + "</a>";
} }
} }
} }
alphaLinks += "</div><p>\n";
ol.writeString(alphaLinks);
ol.writeString("<table align=center width=\"95%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
// the number of columns in the table // the number of columns in the table
const int columns = Config_getInt("COLS_IN_ALPHA_INDEX"); const int columns = Config_getInt("COLS_IN_ALPHA_INDEX");
...@@ -1419,6 +1422,9 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -1419,6 +1422,9 @@ void writeAlphabeticalClassList(OutputList &ol)
startLetter=toupper(cd->className().at(index)); startLetter=toupper(cd->className().at(index));
char s[2]; s[0]=startLetter; s[1]=0; char s[2]; s[0]=startLetter; s[1]=0;
//ol.writeIndexHeading(s); //ol.writeIndexHeading(s);
ol.writeString("<a name=\"letter_");
ol.writeString(s);
ol.writeString("\"></a>");
ol.writeString("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" ol.writeString("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
"<tr>" "<tr>"
"<td><div class=\"ah\">&nbsp;&nbsp;"); "<td><div class=\"ah\">&nbsp;&nbsp;");
...@@ -1476,6 +1482,8 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -1476,6 +1482,8 @@ void writeAlphabeticalClassList(OutputList &ol)
} }
//ol.endAlphabeticalIndexList(); //ol.endAlphabeticalIndexList();
ol.writeString("</table>"); ol.writeString("</table>");
ol.writeString(alphaLinks);
// release the temporary memory // release the temporary memory
for (i=0;i<columns;i++) for (i=0;i<columns;i++)
......
This diff is collapsed.
...@@ -1739,14 +1739,14 @@ void MemberDef::warnIfUndocumented() ...@@ -1739,14 +1739,14 @@ void MemberDef::warnIfUndocumented()
// "isDocumentedFriendClass()=%d name()=%s prot=%d\n", // "isDocumentedFriendClass()=%d name()=%s prot=%d\n",
// d->isLinkable(),isLinkable(),isDocumentedFriendClass(), // d->isLinkable(),isLinkable(),isDocumentedFriendClass(),
// name().data(),prot); // name().data(),prot);
if (/*d && d->isLinkable() &&*/ !isLinkable() && if (!isLinkable() &&
!isDocumentedFriendClass() && !isDocumentedFriendClass() &&
name().find('@')==-1 && name().find('@')==-1 && d->name().find('@')==-1 &&
(prot!=Private || Config_getBool("EXTRACT_PRIVATE")) (prot!=Private || Config_getBool("EXTRACT_PRIVATE"))
) )
{ {
warn_undoc(m_defFileName,m_defLine,"Warning: Member %s%s of %s %s is not documented.", warn_undoc(m_defFileName,m_defLine,"Warning: Member %s%s of %s %s is not documented.",
name().data(),argsString()?argsString():"",t,d->name().data()); name().data(),argsString()?argsString():"",t,d->name().data());
} }
} }
......
...@@ -1669,7 +1669,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1669,7 +1669,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
BEGIN(SkipCComment); BEGIN(SkipCComment);
} }
<SkipCComment,SkipVerbatim>[^*\n\/]+ { <SkipCComment,SkipVerbatim>[^*\x06\n\/]+ {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
} }
<SkipCComment,SkipVerbatim>\n { <SkipCComment,SkipVerbatim>\n {
...@@ -1682,7 +1682,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1682,7 +1682,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<RemoveCComment>"*/" { BEGIN(g_lastCContext); } <RemoveCComment>"*/" { BEGIN(g_lastCContext); }
<RemoveCComment>"//" <RemoveCComment>"//"
<RemoveCComment>"/*" <RemoveCComment>"/*"
<RemoveCComment>[^*\n]+ <RemoveCComment>[^*\x06\n]+
<RemoveCComment>\n { g_yyLineNr++; outputChar('\n'); } <RemoveCComment>\n { g_yyLineNr++; outputChar('\n'); }
<RemoveCComment>. <RemoveCComment>.
<SkipCPPComment,RemoveCPPComment>\n { <SkipCPPComment,RemoveCPPComment>\n {
...@@ -1695,7 +1695,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1695,7 +1695,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<SkipCPPComment>"//" { <SkipCPPComment>"//" {
outputChar('/');outputChar('/'); outputChar('/');outputChar('/');
} }
<SkipCPPComment>[^\n]+ { <SkipCPPComment>[^\x06\n]+ {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
} }
<SkipCPPComment>. { <SkipCPPComment>. {
...@@ -1703,7 +1703,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1703,7 +1703,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
<RemoveCPPComment>"/*" <RemoveCPPComment>"/*"
<RemoveCPPComment>"//" <RemoveCPPComment>"//"
<RemoveCPPComment>[^\n]+ <RemoveCPPComment>[^\x06\n]+
<RemoveCPPComment>. <RemoveCPPComment>.
<DefineText>"#" { <DefineText>"#" {
g_quoteArg=TRUE; g_quoteArg=TRUE;
......
...@@ -74,7 +74,7 @@ function search($file,$word,&$statsList) ...@@ -74,7 +74,7 @@ function search($file,$word,&$statsList)
$freq=readInt($file); $freq=readInt($file);
$docInfo[$i]=array("idx"=>$idx,"freq"=>$freq,"rank"=>0.0); $docInfo[$i]=array("idx"=>$idx,"freq"=>$freq,"rank"=>0.0);
$totalFreq+=$freq; $totalFreq+=$freq;
if ($statInfo["full"]) $totalfreq+=$freq; if ($statInfo["full"]) $totalFreq+=$freq;
} }
// read name an url info for the doc // read name an url info for the doc
for ($i=0;$i<$numDocs;$i++) for ($i=0;$i<$numDocs;$i++)
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
" $freq=readInt($file); \n" " $freq=readInt($file); \n"
" $docInfo[$i]=array(\"idx\"=>$idx,\"freq\"=>$freq,\"rank\"=>0.0);\n" " $docInfo[$i]=array(\"idx\"=>$idx,\"freq\"=>$freq,\"rank\"=>0.0);\n"
" $totalFreq+=$freq;\n" " $totalFreq+=$freq;\n"
" if ($statInfo[\"full\"]) $totalfreq+=$freq;\n" " if ($statInfo[\"full\"]) $totalFreq+=$freq;\n"
" }\n" " }\n"
" // read name an url info for the doc\n" " // read name an url info for the doc\n"
" for ($i=0;$i<$numDocs;$i++)\n" " for ($i=0;$i<$numDocs;$i++)\n"
......
...@@ -69,9 +69,9 @@ void SearchIndex::setCurrentDoc(const char *name,const char *url) ...@@ -69,9 +69,9 @@ void SearchIndex::setCurrentDoc(const char *name,const char *url)
static int charsToIndex(const char *word) static int charsToIndex(const char *word)
{ {
if (word==0) return -1; if (word==0) return -1;
int c1=word[0]; uint c1=word[0];
if (c1==0) return -1; if (c1==0) return -1;
int c2=word[1]; uint c2=word[1];
if (c2==0) return -1; if (c2==0) return -1;
return c1*256+c2; return c1*256+c2;
} }
...@@ -82,7 +82,7 @@ void SearchIndex::addWord(const char *word) ...@@ -82,7 +82,7 @@ void SearchIndex::addWord(const char *word)
if (w==0) if (w==0)
{ {
int idx=charsToIndex(word); int idx=charsToIndex(word);
if (idx==-1) return; if (idx<0) return;
w = new IndexWord(word); w = new IndexWord(word);
//printf("addWord(%s) at index %d\n",word,idx); //printf("addWord(%s) at index %d\n",word,idx);
m_index[idx]->append(w); m_index[idx]->append(w);
......
This diff is collapsed.
...@@ -88,24 +88,6 @@ inline void writeXMLCodeString(QTextStream &t,const char *s) ...@@ -88,24 +88,6 @@ inline void writeXMLCodeString(QTextStream &t,const char *s)
static void writeXMLHeader(QTextStream &t) static void writeXMLHeader(QTextStream &t)
{ {
//QCString dtdName = Config_getString("XML_DTD");
//QCString schemaName = Config_getString("XML_SCHEMA");
//t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset()
// << "' standalone='";
//if (dtdName.isEmpty() && schemaName.isEmpty()) t << "yes"; else t << "no";
//t << "'?>" << endl;
//if (!dtdName.isEmpty())
//{
// t << "<!DOCTYPE doxygen SYSTEM \"doxygen.dtd\">" << endl;
//}
//t << "<doxygen ";
//if (!schemaName.isEmpty())
//{
// t << "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
// t << "xsi:noNamespaceSchemaLocation=\"doxygen.xsd\" ";
//}
//t << "version=\"" << versionString << "\">" << endl;
t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset() t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset()
<< "' standalone='no'?>" << endl;; << "' standalone='no'?>" << endl;;
t << "<doxygen xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "; t << "<doxygen xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
...@@ -113,6 +95,38 @@ static void writeXMLHeader(QTextStream &t) ...@@ -113,6 +95,38 @@ static void writeXMLHeader(QTextStream &t)
t << "version=\"" << versionString << "\">" << endl; t << "version=\"" << versionString << "\">" << endl;
} }
static void writeCombineScript()
{
QCString outputDirectory = Config_getString("XML_OUTPUT");
QCString fileName=outputDirectory+"/combine.xslt";
QFile f(fileName);
if (!f.open(IO_WriteOnly))
{
err("Cannot open file %s for writing!\n",fileName.data());
return;
}
QTextStream t(&f);
t.setEncoding(QTextStream::Latin1);
t <<
"<!-- XSLT script to combine the generated output into a single file. \n"
" If you have xsltproc you could use:\n"
" xsltproc combine.xslt index.xml >all.xml\n"
"-->\n"
"<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">\n"
" <xsl:output method=\"xml\" version=\"1.0\" indent=\"yes\" standalone=\"yes\" />\n"
" <xsl:template match=\"/\">\n"
" <doxygen version=\"{doxygenindex/@version}\">\n"
" <!-- Load all doxgen generated xml files -->\n"
" <xsl:for-each select=\"doxygenindex/compound\">\n"
" <xsl:copy-of select=\"document( concat( @refid, '.xml' ) )/doxygen/*\" />\n"
" </xsl:for-each>\n"
" </doxygen>\n"
" </xsl:template>\n"
"</xsl:stylesheet>\n";
}
void writeXMLLink(QTextStream &t,const char *extRef,const char *compoundId, void writeXMLLink(QTextStream &t,const char *extRef,const char *compoundId,
const char *anchorId,const char *text) const char *anchorId,const char *text)
{ {
...@@ -1569,6 +1583,8 @@ void generateXML() ...@@ -1569,6 +1583,8 @@ void generateXML()
//t << " </compoundlist>" << endl; //t << " </compoundlist>" << endl;
t << "</doxygenindex>" << endl; t << "</doxygenindex>" << endl;
writeCombineScript();
} }
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