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

Release-1.3.5

parent 5806ce20
DOXYGEN Version 1.3.4-20031112 DOXYGEN Version 1.3.5
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 (12 November 2003) Dimitri van Heesch (21 November 2003)
DOXYGEN Version 1.3.4_20031112 DOXYGEN Version 1.3.5
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) (12 November 2003) Dimitri van Heesch (dimitri@stack.nl) (21 November 2003)
1.3.4-20031112 1.3.5
...@@ -320,7 +320,7 @@ void Wizard::about() ...@@ -320,7 +320,7 @@ void Wizard::about()
text.sprintf( "<qt><center>A tool to create and edit configuration files " text.sprintf( "<qt><center>A tool to create and edit configuration files "
"that can be read by doxygen version %s.</center><p>" "that can be read by doxygen version %s.</center><p>"
"<center>Written by Dimitri van Heesch</center><p>" "<center>Written by Dimitri van Heesch</center><p>"
"<center>(c) 2000-2002</center></qt>",versionString "<center>(c) 2000-2003</center></qt>",versionString
); );
QMessageBox::about(this, "DoxyWizard",text); QMessageBox::about(this, "DoxyWizard",text);
} }
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.4_20031112 Version: 1.3.5
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
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
static BaseCodeDocInterface * g_code; static BaseCodeDocInterface * g_code;
static ClassSDict g_codeClassSDict(17); static ClassSDict g_codeClassSDict(17);
static ClassDef *g_curClassDef; //static ClassDef *g_curClassDef;
static QCString g_curClassName; static QCString g_curClassName;
static QStrList g_curClassBases; static QStrList g_curClassBases;
...@@ -99,6 +99,7 @@ static int g_sharpCount = 0; ...@@ -99,6 +99,7 @@ static int g_sharpCount = 0;
static int g_lastSpecialCContext; static int g_lastSpecialCContext;
static int g_lastStringContext; static int g_lastStringContext;
static int g_lastVerbStringContext;
static int g_memCallContext; static int g_memCallContext;
static int g_lastCContext; static int g_lastCContext;
...@@ -733,7 +734,8 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName, ...@@ -733,7 +734,8 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
if (md==0) // not found as a typedef if (md==0) // not found as a typedef
{ {
md = setCallContextForVar(clName); md = setCallContextForVar(clName);
if (md && g_currentDefinition!=0 && !isAccessibleFrom(g_currentDefinition,g_sourceFileDef,md)==-1) if (md && g_currentDefinition!=0 &&
isAccessibleFrom(g_currentDefinition,g_sourceFileDef,md)==-1)
{ {
md=0; // variable not accessible md=0; // variable not accessible
} }
...@@ -1084,6 +1086,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1084,6 +1086,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
%option noyywrap %option noyywrap
%x SkipString %x SkipString
%x SkipVerbString
%x SkipCPP %x SkipCPP
%x SkipComment %x SkipComment
%x SkipCxxComment %x SkipCxxComment
...@@ -1300,9 +1303,9 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1300,9 +1303,9 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
//printf("***** g_curClassName=%s\n",g_curClassName.data()); //printf("***** g_curClassName=%s\n",g_curClassName.data());
if (getResolvedClass(g_currentDefinition,g_sourceFileDef,g_curClassName)==0) if (getResolvedClass(g_currentDefinition,g_sourceFileDef,g_curClassName)==0)
{ {
g_curClassDef=new ClassDef("<code>",1, ClassDef *ncd=new ClassDef("<code>",1,
g_curClassName,ClassDef::Class); g_curClassName,ClassDef::Class);
g_codeClassSDict.append(g_curClassName,g_curClassDef); g_codeClassSDict.append(g_curClassName,ncd);
// insert base classes. // insert base classes.
char *s=g_curClassBases.first(); char *s=g_curClassBases.first();
while (s) while (s)
...@@ -1312,7 +1315,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1312,7 +1315,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
if (bcd==0) bcd=getResolvedClass(g_currentDefinition,g_sourceFileDef,s); if (bcd==0) bcd=getResolvedClass(g_currentDefinition,g_sourceFileDef,s);
if (bcd) if (bcd)
{ {
g_curClassDef->insertBaseClass(bcd,s,Public,Normal); ncd->insertBaseClass(bcd,s,Public,Normal);
} }
s=g_curClassBases.next(); s=g_curClassBases.next();
} }
...@@ -1497,6 +1500,23 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1497,6 +1500,23 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
<SkipString>\\. { <SkipString>\\. {
g_code->codify(yytext); g_code->codify(yytext);
} }
<SkipVerbString>[^"\n]+ {
g_code->codify(yytext);
}
<SkipVerbString>\"\" { // escaped quote
g_code->codify(yytext);
}
<SkipVerbString>\" { // end of string
g_code->codify(yytext);
endFontClass();
BEGIN( g_lastVerbStringContext );
}
<SkipVerbString>. {
g_code->codify(yytext);
}
<SkipVerbString>\n {
g_code->codify(yytext);
}
<Body>":" { <Body>":" {
g_code->codify(yytext); g_code->codify(yytext);
g_name.resize(0);g_type.resize(0); g_name.resize(0);g_type.resize(0);
...@@ -2069,6 +2089,12 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -2069,6 +2089,12 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
} }
BEGIN( SkipComment ) ; BEGIN( SkipComment ) ;
} }
<*>@\" { // C# verbatim string
startFontClass("stringliteral");
g_code->codify(yytext);
g_lastVerbStringContext=YY_START;
BEGIN(SkipVerbString);
}
<*>"//" { <*>"//" {
startFontClass("comment"); startFontClass("comment");
g_code->codify(yytext); g_code->codify(yytext);
......
...@@ -2289,88 +2289,91 @@ static void buildFunctionList(Entry *root) ...@@ -2289,88 +2289,91 @@ static void buildFunctionList(Entry *root)
//printf("combining function with prototype found=%d in namespace %s\n", //printf("combining function with prototype found=%d in namespace %s\n",
// found,nsName.data()); // found,nsName.data());
// merge argument lists if (found)
//mergeArguments(root->argList,md->argumentList());
// merge documentation
if (md->documentation().isEmpty() && !root->doc.isEmpty())
{ {
md->setDocumentation(root->doc,root->docFile,root->docLine); // merge argument lists
md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine); //mergeArguments(root->argList,md->argumentList());
md->setDocsForDefinition(!root->proto); // merge documentation
ArgumentList *argList = new ArgumentList; if (md->documentation().isEmpty() && !root->doc.isEmpty())
stringToArgumentList(root->args,argList);
//printf("root->argList=%p\n",root->argList);
//if (root->argList)
//{
// ArgumentListIterator ali1(*root->argList);
// ArgumentListIterator ali2(*argList);
// Argument *sa,*da;
// for (;(sa=ali1.current()) && (da=ali2.current());++ali1,++ali2)
// {
// printf("sa->name=%s (doc=%s) da->name=%s (doc=%s)\n",
// sa->name.data(),sa->docs.data(),
// da->name.data(),da->docs.data()
// );
// if (!sa->docs.isEmpty() && da->docs.isEmpty())
// {
// da->docs=sa->docs.copy();
// }
// }
//}
if (root->proto)
{ {
//printf("setDeclArgumentList to %p\n",argList); md->setDocumentation(root->doc,root->docFile,root->docLine);
md->setDeclArgumentList(argList); md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine);
md->setDocsForDefinition(!root->proto);
ArgumentList *argList = new ArgumentList;
stringToArgumentList(root->args,argList);
//printf("root->argList=%p\n",root->argList);
//if (root->argList)
//{
// ArgumentListIterator ali1(*root->argList);
// ArgumentListIterator ali2(*argList);
// Argument *sa,*da;
// for (;(sa=ali1.current()) && (da=ali2.current());++ali1,++ali2)
// {
// printf("sa->name=%s (doc=%s) da->name=%s (doc=%s)\n",
// sa->name.data(),sa->docs.data(),
// da->name.data(),da->docs.data()
// );
// if (!sa->docs.isEmpty() && da->docs.isEmpty())
// {
// da->docs=sa->docs.copy();
// }
// }
//}
if (root->proto)
{
//printf("setDeclArgumentList to %p\n",argList);
md->setDeclArgumentList(argList);
}
else
{
md->setArgumentList(argList);
}
} }
else else if (!md->documentation().isEmpty() && !root->doc.isEmpty() && nd==rnd)
{ {
md->setArgumentList(argList); warn(root->docFile,root->docLine,"Warning: member %s: ignoring the detailed description found here, since another one was found at line %d of file %s!",md->name().data(),md->docLine(),md->docFile().data());
} }
}
else if (!md->documentation().isEmpty() && !root->doc.isEmpty())
{
warn(root->docFile,root->docLine,"Warning: member %s: ignoring the detailed description found here, since another one was found at line %d of file %s!",md->name().data(),md->docLine(),md->docFile().data());
}
if (md->briefDescription().isEmpty() && !root->brief.isEmpty()) if (md->briefDescription().isEmpty() && !root->brief.isEmpty())
{ {
md->setBriefDescription(root->brief,root->briefFile,root->briefLine); md->setBriefDescription(root->brief,root->briefFile,root->briefLine);
} }
else if (!md->briefDescription().isEmpty() && !root->brief.isEmpty()) else if (!md->briefDescription().isEmpty() && !root->brief.isEmpty() && nd==rnd)
{ {
warn(root->briefFile,root->briefLine,"Warning: member %s: ignoring the brief description found here, since another one was found at line %d of file %s!",md->name().data(),md->briefLine(),md->briefFile().data()); warn(root->briefFile,root->briefLine,"Warning: member %s: ignoring the brief description found here, since another one was found at line %d of file %s!",md->name().data(),md->briefLine(),md->briefFile().data());
} }
md->addSectionsToDefinition(root->anchors);
md->enableCallGraph(md->hasCallGraph() || root->callGraph); md->addSectionsToDefinition(root->anchors);
// merge ingroup specifiers md->enableCallGraph(md->hasCallGraph() || root->callGraph);
if (md->getGroupDef()==0 && root->groups->first()!=0)
{ // merge ingroup specifiers
//printf("new member is grouped, existing member not\n"); if (md->getGroupDef()==0 && root->groups->first()!=0)
// if we do addMemberToGroups here an undocumented declaration may prevent {
// the documented implementation below it from being added //printf("new member is grouped, existing member not\n");
//addMemberToGroups(root,md); // if we do addMemberToGroups here an undocumented declaration may prevent
//GroupDef *gd=Doxygen::groupSDict[root->groups->first()->groupname.data()]; // the documented implementation below it from being added
//if (gd) //addMemberToGroups(root,md);
//{ //GroupDef *gd=Doxygen::groupSDict[root->groups->first()->groupname.data()];
// bool success = gd->insertMember(md); //if (gd)
// if (success) //{
// { // bool success = gd->insertMember(md);
// md->setGroupDef(gd, root->groups->first()->pri, root->fileName, root->startLine, !root->doc.isEmpty()); // if (success)
// } // {
//} // md->setGroupDef(gd, root->groups->first()->pri, root->fileName, root->startLine, !root->doc.isEmpty());
addMemberToGroups(root,md); // }
} //}
else if (md->getGroupDef()!=0 && root->groups->count()==0) addMemberToGroups(root,md);
{ }
//printf("existing member is grouped, new member not\n"); else if (md->getGroupDef()!=0 && root->groups->count()==0)
root->groups->append(new Grouping(md->getGroupDef()->name(), md->getGroupPri())); {
} //printf("existing member is grouped, new member not\n");
else if (md->getGroupDef()!=0 && root->groups->first()!=0) root->groups->append(new Grouping(md->getGroupDef()->name(), md->getGroupPri()));
{ }
//printf("both members are grouped\n"); else if (md->getGroupDef()!=0 && root->groups->first()!=0)
{
//printf("both members are grouped\n");
}
} }
} }
} }
......
...@@ -248,7 +248,8 @@ static void writeDefaultHeaderPart1(QTextStream &t) ...@@ -248,7 +248,8 @@ static void writeDefaultHeaderPart1(QTextStream &t)
"\\usepackage{float}\n" "\\usepackage{float}\n"
"\\usepackage{textcomp}\n" "\\usepackage{textcomp}\n"
"\\usepackage{alltt}\n" "\\usepackage{alltt}\n"
"\\usepackage{ae,aecompl,aeguill}\n"; //"\\usepackage{ae,aecompl,aeguill}\n"
;
if (Config_getBool("PDF_HYPERLINKS")) if (Config_getBool("PDF_HYPERLINKS"))
{ {
t << "\\usepackage{times}" << endl; t << "\\usepackage{times}" << endl;
......
...@@ -79,6 +79,7 @@ static int lastSkipHtmlCommentContext; ...@@ -79,6 +79,7 @@ static int lastSkipHtmlCommentContext;
static int lastIfContext; static int lastIfContext;
static int lastInternalDocContext; static int lastInternalDocContext;
static int lastPreLineCtrlContext; static int lastPreLineCtrlContext;
static int lastSkipVerbStringContext;;
static int nextDefContext; static int nextDefContext;
static int overloadContext; static int overloadContext;
static Protection protection; static Protection protection;
...@@ -143,6 +144,7 @@ static QCString *pCopyRoundString; ...@@ -143,6 +144,7 @@ static QCString *pCopyRoundString;
static QCString *pCopyCurlyString; static QCString *pCopyCurlyString;
static QCString *pCopyQuotedString; static QCString *pCopyQuotedString;
static QCString *pSkipDoc; static QCString *pSkipDoc;
static QCString *pSkipVerbString;
static QStack<Grouping> autoGroupStack; static QStack<Grouping> autoGroupStack;
static Grouping lastDefGroup( "", Grouping::GROUPING_LOWEST ); static Grouping lastDefGroup( "", Grouping::GROUPING_LOWEST );
...@@ -719,6 +721,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -719,6 +721,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
%x DefinePHP %x DefinePHP
%x DefinePHPEnd %x DefinePHPEnd
%x OldStyleArgs %x OldStyleArgs
%x SkipVerbString
%% %%
...@@ -1769,6 +1772,31 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -1769,6 +1772,31 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->initializer+=*yytext; current->initializer+=*yytext;
yyLineNr++; yyLineNr++;
} }
<ReadInitializer>"@\"" {
current->initializer+=yytext;
if (!insideCS) REJECT;
// C# verbatim string
lastSkipVerbStringContext=YY_START;
pSkipVerbString=&current->initializer;
BEGIN(SkipVerbString);
}
<SkipVerbString>[^\n"]+ {
*pSkipVerbString+=yytext;
}
<SkipVerbString>"\"\"" { // quote escape
*pSkipVerbString+=yytext;
}
<SkipVerbString>"\"" {
*pSkipVerbString+=*yytext;
BEGIN(lastSkipVerbStringContext);
}
<SkipVerbString>\n {
*pSkipVerbString+=*yytext;
yyLineNr++;
}
<SkipVerbString>. {
*pSkipVerbString+=*yytext;
}
<ReadInitializer>. { <ReadInitializer>. {
current->initializer+=*yytext; current->initializer+=*yytext;
} }
...@@ -1991,13 +2019,18 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -1991,13 +2019,18 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
/* /*
<FindFieldArg>"," { unput(*yytext); BEGIN(FindFields); } <FindFieldArg>"," { unput(*yytext); BEGIN(FindFields); }
*/ */
<ReadBody,ReadNSBody>[^\r\n\#{}"'/]* { current->program += yytext ; } <ReadBody,ReadNSBody>[^\r\n\#{}"@'/]* { current->program += yytext ; }
<ReadBody,ReadNSBody>"//".* { current->program += yytext ; } <ReadBody,ReadNSBody>"//".* { current->program += yytext ; }
<ReadBody,ReadNSBody>"#".* { if (! insidePHP) <ReadBody,ReadNSBody>"#".* { if (! insidePHP)
REJECT; REJECT;
current->program += yytext ; current->program += yytext ;
} }
<ReadBody,ReadNSBody>\" { current->program += yytext ; <ReadBody,ReadNSBody>@\" { current->program += yytext ;
pSkipVerbString = &current->program;
lastSkipVerbStringContext=YY_START;
BEGIN( SkipVerbString );
}
<ReadBody,ReadNSBody>\" { current->program += yytext ;
pCopyQuotedString = &current->program; pCopyQuotedString = &current->program;
lastStringContext=YY_START; lastStringContext=YY_START;
BEGIN( CopyString ); BEGIN( CopyString );
...@@ -2011,8 +2044,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -2011,8 +2044,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
lastContext = ReadBody ; lastContext = ReadBody ;
BEGIN( Comment ) ; BEGIN( Comment ) ;
} }
<ReadBody,ReadNSBody>{CHARLIT} { current->program += yytext; } <ReadBody,ReadNSBody>{CHARLIT} { current->program += yytext; }
<ReadBody,ReadNSBody>"{" { current->program += yytext ; <ReadBody,ReadNSBody>"{" { current->program += yytext ;
++curlyCount ; ++curlyCount ;
} }
<ReadBody,ReadNSBody>"}" { //err("ReadBody count=%d\n",curlyCount); <ReadBody,ReadNSBody>"}" { //err("ReadBody count=%d\n",curlyCount);
...@@ -2992,7 +3025,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -2992,7 +3025,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
yyLineNr++; yyLineNr++;
//addToBody(yytext); //addToBody(yytext);
} }
<SkipCurly,SkipCurlyCpp>[^\n"'\\/{}]+ { <SkipCurly,SkipCurlyCpp>[^\n"'@\\/{}]+ {
//addToBody(yytext); //addToBody(yytext);
} }
<SkipCurlyCpp>\n { <SkipCurlyCpp>\n {
...@@ -3033,6 +3066,13 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3033,6 +3066,13 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
lastCContext = YY_START; lastCContext = YY_START;
BEGIN(SkipCxxComment); BEGIN(SkipCxxComment);
} }
<SkipInits,SkipCurly,SkipCurlyCpp>@\" {
if (! insideCS) REJECT;
// C# verbatim string
lastSkipVerbStringContext=YY_START;
pSkipVerbString=&current->initializer;
BEGIN(SkipVerbString);
}
<SkipInits,SkipCurly,SkipCurlyCpp>{CHARLIT} { <SkipInits,SkipCurly,SkipCurlyCpp>{CHARLIT} {
} }
<SkipInits,SkipCurly,SkipCurlyCpp>. { <SkipInits,SkipCurly,SkipCurlyCpp>. {
...@@ -3657,7 +3697,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3657,7 +3697,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->name = "mainpage"; current->name = "mainpage";
BEGIN( PageDocArg2 ); BEGIN( PageDocArg2 );
} }
<Doc,JavaDoc>{B}*{CMD}"file"{B}* { <Doc,LineDoc,JavaDoc>{B}*{CMD}"file"{B}* {
current->section = Entry::FILEDOC_SEC; current->section = Entry::FILEDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
......
...@@ -565,6 +565,7 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item, ...@@ -565,6 +565,7 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item,
*/ */
ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,QCString *pTemplSpec) ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,QCString *pTemplSpec)
{ {
//printf("newResolveTypedef(md=%p,cachedVal=%p)\n",md,md->getCachedTypedefVal());
bool isCached = md->isTypedefValCached(); // value already cached bool isCached = md->isTypedefValCached(); // value already cached
if (isCached) if (isCached)
{ {
...@@ -606,7 +607,14 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,QCString *pTemplSpe ...@@ -606,7 +607,14 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,QCString *pTemplSpe
} }
// remember computed value for next time // remember computed value for next time
md->cacheTypedefVal(result); if (result && result->getDefFileName()!="<code>")
// this check is needed to prevent that temporary classes that are
// introduced while parsing code fragments are being cached here.
{
//printf("setting cached typedef %p in result %p\n",md,result);
//printf("==> %s (%s,%d)\n",result->name().data(),result->getDefFileName().data(),result->getDefLine());
md->cacheTypedefVal(result);
}
g_resolvedTypedefs.remove(qname); // remove from the trace list g_resolvedTypedefs.remove(qname); // remove from the trace list
...@@ -3542,10 +3550,10 @@ QCString stripScope(const char *name) ...@@ -3542,10 +3550,10 @@ QCString stripScope(const char *name)
} }
/*! Convert nibble (range 0..15) to hex char */ /*! Convert nibble (range 0..15) to hex char */
static char nibbleToHex(int n) //static char nibbleToHex(int n)
{ //{
return (n < 10) ? ('0'+n) : ('a'+n-10); // return (n < 10) ? ('0'+n) : ('a'+n-10);
} //}
/*! Converts a string to an XML-encoded string */ /*! Converts a string to an XML-encoded string */
QCString convertToXML(const char *s) QCString convertToXML(const char *s)
...@@ -3564,16 +3572,17 @@ QCString convertToXML(const char *s) ...@@ -3564,16 +3572,17 @@ QCString convertToXML(const char *s)
case '\'': result+="&apos;"; break; case '\'': result+="&apos;"; break;
case '"': result+="&quot;"; break; case '"': result+="&quot;"; break;
default: default:
if (c<0) //if (c<0)
{ //{ <- this doesn't work for languages that use
result+=(QCString)"&#x" + // characters with codes beyond 255
nibbleToHex((((uchar)c)>>4)&0xf)+ // result+=(QCString)"&#x" +
nibbleToHex(c&0xf)+";"; // nibbleToHex((((uchar)c)>>4)&0xf)+
} // nibbleToHex(c&0xf)+";";
else //}
{ //else
//{
result+=c; result+=c;
} //}
break; break;
} }
} }
......
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