Commit 37905e0a authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.1.2-20000417

parent 3120c683
DOXYGEN Version 1.1.2 DOXYGEN Version 1.1.2-20000417
CONTENTS CONTENTS
-------- --------
...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX: ...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have: 1. Unpack the archive, unless you already have:
gunzip doxygen-1.1.2.src.tar.gz # uncompress the archive gunzip doxygen-1.1.2-20000417.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.2.src.tar # unpack it tar xf doxygen-1.1.2-20000417.src.tar # unpack it
2. Run the configure script: 2. Run the configure script:
...@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at ...@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (09 April 2000) Dimitri van Heesch (17 April 2000)
DOXYGEN Version 1.1.2 DOXYGEN Version 1.1.2-20000417
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (09 April 2000) Dimitri van Heesch (17 April 2000)
1.1.2 1.1.2-20000417
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
Although doxygen can be used in any C or C++ project, it was specifically Although doxygen can be used in any C or C++ project, it was specifically
designed to be used for projects that make use of Troll Tech's designed to be used for projects that make use of Troll Tech's
<A HREF="http://www.troll.no/qt">Qt toolkit</A>. I have tried to make doxygen <A HREF="http://www.trolltech.com/products/qt.html">Qt toolkit</A>. I have tried to make doxygen
`Qt-compatible'. That is: Doxygen can read the documentation contained in `Qt-compatible'. That is: Doxygen can read the documentation contained in
the Qt source code and create a class browser that looks very similar to the the Qt source code and create a class browser that looks very similar to the
one that is generated by Troll Tech. Doxygen understands the C++ extensions one that is generated by Troll Tech. Doxygen understands the C++ extensions
......
...@@ -40,7 +40,7 @@ GNU General Public License</a> ...@@ -40,7 +40,7 @@ GNU General Public License</a>
for more details. for more details.
<p> <p>
It is hereby explicitly allowed that this program may be linked against It is hereby explicitly allowed that this program may be linked against
<a href="http://www.troll.no/qt">Troll Tech's Qt library</a>, <a href="http://www.trolltech.com/products/qt.html">Troll Tech's Qt library</a>,
and distributed, without the GPL applying to Qt. and distributed, without the GPL applying to Qt.
<p> <p>
Documents produced by Doxygen are derivative works derived from the Documents produced by Doxygen are derivative works derived from the
......
...@@ -25,8 +25,8 @@ to get the latest distribution and unpack it. ...@@ -25,8 +25,8 @@ to get the latest distribution and unpack it.
If you downloaded the source distribution, you need at least the If you downloaded the source distribution, you need at least the
following to build the executable: following to build the executable:
<UL> <UL>
<LI>Troll Tech's GUI toolkit <A HREF="http://www.troll.no/dl">Qt</A> <LI>Troll Tech's GUI toolkit <A HREF="http://www.trolltech.com/products/qt.html">Qt</A>
\latexonly(see {\tt http://www.troll.no/dl})\endlatexonly. \latexonly(see {\tt http://www.trolltech.com/products/qt.html})\endlatexonly.
\addindex Qt \addindex Qt
<LI>The <a href="ftp://prep.ai.mit.edu/pub/gnu">GNU</a> tools <LI>The <a href="ftp://prep.ai.mit.edu/pub/gnu">GNU</a> tools
flex, bison and make flex, bison and make
......
Name: doxygen Name: doxygen
Version: 1.1.2 Version: 1.1.2-20000417
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 1 Release: 1
Source0: doxygen-%{version}.src.tar.gz Source0: doxygen-%{version}.src.tar.gz
......
...@@ -887,7 +887,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -887,7 +887,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
<RemoveSpecialCComment>"//"|"/*" <RemoveSpecialCComment>"//"|"/*"
<RemoveSpecialCComment>\n { g_yyLineNr++; } <RemoveSpecialCComment>\n { g_yyLineNr++; }
<RemoveSpecialCComment>. <RemoveSpecialCComment>.
<*>\n({B}*"//"[!/][^\n]*\n)* { // remove special one-line comment <*>\n({B}*"//"[!/][^\n]*\n)+ { // remove special one-line comment
if (Config::stripCommentsFlag) if (Config::stripCommentsFlag)
{ {
g_yyLineNr+=((QCString)yytext).contains('\n'); g_yyLineNr+=((QCString)yytext).contains('\n');
......
...@@ -1650,11 +1650,59 @@ static void substEnvVarsInStrList(QStrList &sl) ...@@ -1650,11 +1650,59 @@ static void substEnvVarsInStrList(QStrList &sl)
{ {
QCString result(s); QCString result(s);
substEnvVarsInString(result); substEnvVarsInString(result);
// replace the string in the list and go to the next item. int l=result.length();
sl.insert(sl.at(),result); // insert new item before current item. int i,p=0;
sl.next(); // current item is now the old item // skip spaces
int i=sl.at(); // search for a "word"
for (i=0;i<l;i++)
{
char c;
// skip until start of new word
for (;i<l && ((c=result.at(i))==' ' || c=='\t');i++)
p=i; // p marks the start index of the word
// skip until end of a word
for (;i<l && ((c=result.at(i))!=' ' && c!='\t' && c!='"');i++);
if (i<l) // not at the end of the string
{
if (c=='"') // word within quotes
{
p=i+1;
for (i++;i<l;i++)
{
c=result.at(i);
if (c=='"') // end quote
{
// replace the string in the list and go to the next item.
sl.insert(sl.at(),result.mid(p,i-p)); // insert new item before current item.
sl.next(); // current item is now the old item
p=i+1;
break;
}
else if (c=='\\') // skip escaped stuff
{
i++;
}
}
}
else if (c==' ' || c=='\t') // separator
{
// replace the string in the list and go to the next item.
sl.insert(sl.at(),result.mid(p,i-p)); // insert new item before current item.
sl.next(); // current item is now the old item
p=i+1;
}
}
}
if (p!=l) // add the leftover as a string
{
// replace the string in the list and go to the next item.
sl.insert(sl.at(),result.right(l-p)); // insert new item before current item.
sl.next(); // current item is now the old item
}
// remove the old unexpanded string from the list
i=sl.at();
sl.remove(); // current item index changes if the last element is removed. sl.remove(); // current item index changes if the last element is removed.
if (sl.at()==i) // not last item if (sl.at()==i) // not last item
s = sl.current(); s = sl.current();
......
...@@ -863,7 +863,7 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd, ...@@ -863,7 +863,7 @@ static MemberDef *addVariableToClass(Entry *root,ClassDef *cd,
md->setFromAnnonymousMember(fromAnnMemb); md->setFromAnnonymousMember(fromAnnMemb);
md->setIndentDepth(indentDepth); md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine); md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setInitializer(root->initializer.simplifyWhiteSpace()); md->setInitializer(root->initializer);
//if (root->mGrpId!=-1) //if (root->mGrpId!=-1)
//{ //{
// printf("memberdef %s in memberGroup %d\n",name.data(),root->mGrpId); // printf("memberdef %s in memberGroup %d\n",name.data(),root->mGrpId);
...@@ -922,7 +922,7 @@ static MemberDef *addVariableToFile(Entry *root,MemberDef::MemberType mtype, ...@@ -922,7 +922,7 @@ static MemberDef *addVariableToFile(Entry *root,MemberDef::MemberType mtype,
md->setFromAnnonymousMember(fromAnnMemb); md->setFromAnnonymousMember(fromAnnMemb);
md->setIndentDepth(indentDepth); md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine); md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setInitializer(root->initializer.simplifyWhiteSpace()); md->setInitializer(root->initializer);
bool ambig; bool ambig;
FileDef *fd=findFileDef(&inputNameDict,root->fileName,ambig); FileDef *fd=findFileDef(&inputNameDict,root->fileName,ambig);
md->setBodyDef(fd); md->setBodyDef(fd);
...@@ -2010,7 +2010,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl, ...@@ -2010,7 +2010,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
if (md->initializer().isEmpty() && !root->initializer.isEmpty()) if (md->initializer().isEmpty() && !root->initializer.isEmpty())
{ {
md->setInitializer(root->initializer.simplifyWhiteSpace()); md->setInitializer(root->initializer);
} }
//if (md->bodyCode().isEmpty() && !root->body.isEmpty()) /* no body yet */ //if (md->bodyCode().isEmpty() && !root->body.isEmpty()) /* no body yet */
......
...@@ -605,7 +605,7 @@ void HtmlGenerator::startParameter(bool first) ...@@ -605,7 +605,7 @@ void HtmlGenerator::startParameter(bool first)
if (first) if (first)
{ {
t << endl << "</b></td>" << endl; t << endl << "</b></td>" << endl;
t << "<td><b>" << endl; t << "<td valign=bottom><b>" << endl;
} }
else else
{ {
...@@ -767,7 +767,7 @@ void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const ...@@ -767,7 +767,7 @@ void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const
t << " <td class=\"md\"><b>" << endl; t << " <td class=\"md\"><b>" << endl;
t << " <table cellspadding=0 cellspacing=0 border=0>" << endl; t << " <table cellspadding=0 cellspacing=0 border=0>" << endl;
t << " <tr>" << endl; t << " <tr>" << endl;
t << " <td><b>" << endl; t << " <td valign=top><b>" << endl;
} }
void HtmlGenerator::endMemberDoc() void HtmlGenerator::endMemberDoc()
......
...@@ -1134,18 +1134,22 @@ void LatexGenerator::docify(const char *str) ...@@ -1134,18 +1134,22 @@ void LatexGenerator::docify(const char *str)
void LatexGenerator::codify(const char *str) void LatexGenerator::codify(const char *str)
{ {
static char spaces[]=" ";
if (str) if (str)
{ {
const char *p=str; const char *p=str;
char c; char c;
int spacesToNextTabStop;
while (*p) while (*p)
{ {
c=*p++; c=*p++;
switch(c) switch(c)
{ {
case 0x0c: break; // remove ^L case 0x0c: break; // remove ^L
case '\t': t << &spaces[col&7]; col+=8-(col&7); break; case '\t': spacesToNextTabStop =
Config::tabSize - (col%Config::tabSize);
t << spaces.left(spacesToNextTabStop);
col+=spacesToNextTabStop;
break;
case '\n': t << '\n'; col=0; break; case '\n': t << '\n'; col=0; break;
default: t << c; col++; break; default: t << c; col++; break;
} }
......
...@@ -224,8 +224,8 @@ void ManGenerator::codify(const char *str) ...@@ -224,8 +224,8 @@ void ManGenerator::codify(const char *str)
t << spaces.left(spacesToNextTabStop); t << spaces.left(spacesToNextTabStop);
col+=spacesToNextTabStop; col+=spacesToNextTabStop;
break; break;
case '\n': t << "\n.br\n"; firstCol=TRUE; col=0; break; case '\n': t << "\n"; firstCol=TRUE; col=0; break;
case '\\': t << "\\\\"; col++; break; case '\\': t << "\\"; col++; break;
default: t << c; firstCol=FALSE; col++; break; default: t << c; firstCol=FALSE; col++; break;
} }
} }
......
...@@ -107,7 +107,7 @@ class ManGenerator : public OutputGenerator ...@@ -107,7 +107,7 @@ class ManGenerator : public OutputGenerator
void startCodeFragment(); void startCodeFragment();
void endCodeFragment(); void endCodeFragment();
void startCodeLine() {} void startCodeLine() {}
void endCodeLine() { t << endl; } void endCodeLine() { t << endl; col=0; }
void writeBoldString(const char *text) void writeBoldString(const char *text)
{ t << "\\fB"; docify(text); t << "\\fR"; firstCol=FALSE; } { t << "\\fB"; docify(text); t << "\\fR"; firstCol=FALSE; }
void startEmphasis() { t << "\\fI"; firstCol=FALSE; } void startEmphasis() { t << "\\fI"; firstCol=FALSE; }
......
...@@ -157,6 +157,10 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -157,6 +157,10 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
ol.endParameter(FALSE); ol.endParameter(FALSE);
} }
} }
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.writeString("&nbsp;");
ol.popGeneratorState();
ol.docify(")"); // end argument list ol.docify(")"); // end argument list
if (argList->constSpecifier) if (argList->constSpecifier)
{ {
...@@ -728,8 +732,16 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -728,8 +732,16 @@ void MemberDef::writeDeclaration(OutputList &ol,
if (!init.isEmpty() && initLines==0) // add initializer if (!init.isEmpty() && initLines==0) // add initializer
{ {
if (!isDefine()) ol.writeString(" = "); else ol.writeNonBreakableSpace(); if (!isDefine())
linkifyText(ol,cname,name(),init); {
ol.writeString(" = ");
linkifyText(ol,cname,name(),init.simplifyWhiteSpace());
}
else
{
ol.writeNonBreakableSpace();
linkifyText(ol,cname,name(),init);
}
} }
if (!detailsVisible && !Config::extractAllFlag && !annMemb) if (!detailsVisible && !Config::extractAllFlag && !annMemb)
...@@ -905,8 +917,16 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -905,8 +917,16 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
writeDefArgumentList(ol,cd,scopeName,this); writeDefArgumentList(ol,cd,scopeName,this);
if (!init.isEmpty() && initLines==0) // add initializer if (!init.isEmpty() && initLines==0) // add initializer
{ {
if (!isDefine()) ol.docify(" = "); else ol.writeNonBreakableSpace(); if (!isDefine())
linkifyText(ol,scopeName,name(),init); {
ol.docify(" = ");
linkifyText(ol,scopeName,name(),init.simplifyWhiteSpace());
}
else
{
ol.writeNonBreakableSpace();
linkifyText(ol,scopeName,name(),init);
}
} }
if (excpString()) // add exception list if (excpString()) // add exception list
{ {
...@@ -975,7 +995,14 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -975,7 +995,14 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
parseText(ol,theTranslator->trInitialValue()); parseText(ol,theTranslator->trInitialValue());
ol.endBold(); ol.endBold();
ol.startCodeFragment(); ol.startCodeFragment();
parseCode(ol,scopeName,init,FALSE,0); if (isDefine())
{
parseCode(ol,scopeName,init,FALSE,0);
}
else
{
parseCode(ol,scopeName,init.simplifyWhiteSpace(),FALSE,0);
}
ol.endCodeFragment(); ol.endCodeFragment();
} }
......
...@@ -559,6 +559,8 @@ void MemberList::writeDeclarations(OutputList &ol, ...@@ -559,6 +559,8 @@ void MemberList::writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd, ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
const char *title,const char *subtitle,bool inGroup) const char *title,const char *subtitle,bool inGroup)
{ {
//printf("MemberList::writeDeclaration(title=`%s',subtitle=`%s')\n",
// title,subtitle);
countDecMembers(inGroup); countDecMembers(inGroup);
if (totalCount()==0) return; if (totalCount()==0) return;
if (title) if (title)
......
...@@ -49,8 +49,6 @@ ...@@ -49,8 +49,6 @@
#define YY_NEVER_INTERACTIVE 1 #define YY_NEVER_INTERACTIVE 1
/* ----------------------------------------------------------------- /* -----------------------------------------------------------------
* *
* statics * statics
...@@ -874,7 +872,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) ...@@ -874,7 +872,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
SCOPEMASK {ID}?(("::"|"#")?(~)?{ID})+ SCOPEMASK {ID}?(("::"|"#")?(~)?{ID})+
URLMASK [a-z_A-Z0-9\~\:\@\#\.\-\+\/]+ URLMASK [a-z_A-Z0-9\~\:\@\#\.\-\+\/]+
NONTERM [\{\}\[\]\`\~\@\|\-\+\#\$\/\\\!\%\^\&\*()a-z_A-Z<>0-9] NONTERM [\{\}\[\]\`\~\@\|\-\+\#\$\/\\\!\%\^\&\*()a-z_A-Z<>0-9]
WORD ({NONTERM}+([^\n ]*{NONTERM}?))|("\""[^\n\"]"\"") WORD ({NONTERM}+([^\n\t ]*{NONTERM}+)?)|("\""[^\n\"]"\"")
ATTR ({B}+[^>\n]*)? ATTR ({B}+[^>\n]*)?
A [aA] A [aA]
BOLD [bB] BOLD [bB]
...@@ -1651,8 +1649,9 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"") ...@@ -1651,8 +1649,9 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
} }
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocRefName>{SCOPENAME}/{B}+"\"" { <DocRefName>{SCOPENAME}{B}+/"\"" {
sectionRef=yytext; sectionRef=yytext;
sectionRef=sectionRef.stripWhiteSpace();
BEGIN(DocRefArgStart); BEGIN(DocRefArgStart);
} }
<DocRefArgStart>"\"" { <DocRefArgStart>"\"" {
...@@ -2011,22 +2010,16 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"") ...@@ -2011,22 +2010,16 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
outDoc->endEmphasis(); outDoc->endEmphasis();
BEGIN( DocScan ); BEGIN( DocScan );
} }
<DocBold>{WORD} {
outDoc->startBold();
linkifyText(*outDoc,className,0,yytext);
outDoc->endBold();
BEGIN( DocScan );
}
<DocBold>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" { <DocBold>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" {
outDoc->startBold(); outDoc->startBold();
generateRef(*outDoc,className,yytext,inSeeBlock); generateRef(*outDoc,className,yytext,inSeeBlock);
outDoc->endBold(); outDoc->endBold();
BEGIN( DocScan ); BEGIN( DocScan );
} }
<DocCode>{WORD} { <DocBold>{WORD} {
outDoc->startTypewriter(); outDoc->startBold();
linkifyText(*outDoc,className,0,yytext); linkifyText(*outDoc,className,0,yytext);
outDoc->endTypewriter(); outDoc->endBold();
BEGIN( DocScan ); BEGIN( DocScan );
} }
<DocCode>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" { <DocCode>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" {
...@@ -2035,6 +2028,12 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"") ...@@ -2035,6 +2028,12 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
outDoc->endTypewriter(); outDoc->endTypewriter();
BEGIN( DocScan ); BEGIN( DocScan );
} }
<DocCode>{WORD} {
outDoc->startTypewriter();
linkifyText(*outDoc,className,0,yytext);
outDoc->endTypewriter();
BEGIN( DocScan );
}
<DocInclude>{FILE} { <DocInclude>{FILE} {
includeFile(*outDoc,stripQuotes(yytext),FALSE); includeFile(*outDoc,stripQuotes(yytext),FALSE);
BEGIN( DocScan ); BEGIN( DocScan );
...@@ -2091,12 +2090,9 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"") ...@@ -2091,12 +2090,9 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
<DocScan>{BN}+/\n { <DocScan>{BN}+/\n {
outDoc->writeChar(' '); outDoc->writeChar(' ');
} }
<DocScan>{B}+ { <DocScan>\n?{B}* {
outDoc->writeChar(' '); outDoc->writeChar(' ');
} }
<DocScan>\n {
outDoc->writeChar('\n');
}
<DocCode,DocEmphasis,DocBold,DocScan,Text>[a-z_A-Z0-9]+ { <DocCode,DocEmphasis,DocBold,DocScan,Text>[a-z_A-Z0-9]+ {
outDoc->docify(yytext); outDoc->docify(yytext);
} }
...@@ -3139,7 +3135,7 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"") ...@@ -3139,7 +3135,7 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
} }
<Curly>. { current->program += yytext ; } <Curly>. { current->program += yytext ; }
<FindMembers>"("({ID}{BN}*"::"{BN}*)*("*"{BN}*)+ { <FindMembers>"("({BN}*{ID}{BN}*"::"{BN}*)*("*"{BN}*)+ {
current->bodyLine = yyLineNr; current->bodyLine = yyLineNr;
lineCount(); lineCount();
addType(current); addType(current);
...@@ -4261,6 +4257,8 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"") ...@@ -4261,6 +4257,8 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"")
memberGroupDocs+="\n\n"; memberGroupDocs+="\n\n";
} }
memberGroupDocs+=current->doc; memberGroupDocs+=current->doc;
current->doc.resize(0);
current->brief.resize(0);
BEGIN(lastDocContext); BEGIN(lastDocContext);
} }
<ExampleDoc,Doc,PageDoc,JavaDoc,ClassDoc>{CMD}"anchor"{B}+ { <ExampleDoc,Doc,PageDoc,JavaDoc,ClassDoc>{CMD}"anchor"{B}+ {
......
...@@ -252,7 +252,7 @@ bool leftScopeMatch(const QCString &scope, const QCString &name) ...@@ -252,7 +252,7 @@ bool leftScopeMatch(const QCString &scope, const QCString &name)
void linkifyText(OutputList &ol,const char *scName,const char *name,const char *text) void linkifyText(OutputList &ol,const char *scName,const char *name,const char *text)
{ {
//printf("scope=`%s' name=`%s' Text: `%s'\n",scName,name,text); //printf("scope=`%s' name=`%s' Text: `%s'\n",scName,name,text);
static QRegExp regExp("[a-z_A-Z0-9:]+"); static QRegExp regExp("[a-z_A-Z][a-z_A-Z0-9:]*");
QCString txtStr=text; QCString txtStr=text;
OutputList result(&ol); OutputList result(&ol);
int matchLen; int matchLen;
...@@ -860,8 +860,8 @@ static void trimNamespaceScope(QCString &t1,QCString &t2) ...@@ -860,8 +860,8 @@ static void trimNamespaceScope(QCString &t1,QCString &t2)
int p2=t2.length(); int p2=t2.length();
for (;;) for (;;)
{ {
int i1=t1.findRev("::",p1); int i1=p1==0 ? -1 : t1.findRev("::",p1);
int i2=t2.findRev("::",p2); int i2=p2==0 ? -1 : t2.findRev("::",p2);
if (i1==-1 && i2==-1) if (i1==-1 && i2==-1)
{ {
return; return;
......
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