Commit 6f9fc044 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.16-20020526

parent 2999d273
DOXYGEN Version 1.2.16 DOXYGEN Version 1.2.16-20020526
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (20 May 2002) Dimitri van Heesch (26 May 2002)
DOXYGEN Version 1.2.16 DOXYGEN Version 1.2.16_20020526
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) (20 May 2002) Dimitri van Heesch (dimitri@stack.nl) (26 May 2002)
1.2.16 1.2.16-20020526
...@@ -100,6 +100,7 @@ MainHandler::MainHandler() : m_compoundDict(2999), m_compoundNameDict(2999), ...@@ -100,6 +100,7 @@ MainHandler::MainHandler() : m_compoundDict(2999), m_compoundNameDict(2999),
addStartHandler("name",this,&MainHandler::startName); addStartHandler("name",this,&MainHandler::startName);
addEndHandler("name",this,&MainHandler::endName); addEndHandler("name",this,&MainHandler::endName);
m_curCompound = 0; m_curCompound = 0;
m_insideMember = FALSE;
} }
MainHandler::~MainHandler() MainHandler::~MainHandler()
...@@ -110,7 +111,7 @@ MainHandler::~MainHandler() ...@@ -110,7 +111,7 @@ MainHandler::~MainHandler()
void MainHandler::startCompound(const QXmlAttributes& attrib) void MainHandler::startCompound(const QXmlAttributes& attrib)
{ {
m_curCompound = new CompoundEntry(257); m_curCompound = new CompoundEntry(257);
m_curCompound->id = attrib.value("id"); m_curCompound->id = attrib.value("refid");
m_compounds.append(m_curCompound); m_compounds.append(m_curCompound);
m_compoundDict.insert(m_curCompound->id,m_curCompound); m_compoundDict.insert(m_curCompound->id,m_curCompound);
} }
...@@ -122,21 +123,27 @@ void MainHandler::startName(const QXmlAttributes& /*attrib*/) ...@@ -122,21 +123,27 @@ void MainHandler::startName(const QXmlAttributes& /*attrib*/)
void MainHandler::endName() void MainHandler::endName()
{ {
if (m_insideMember)
{
m_curMember->name = m_curString;
}
else
{
m_curCompound->name = m_curString; m_curCompound->name = m_curString;
}
} }
void MainHandler::startMember(const QXmlAttributes& attrib) void MainHandler::startMember(const QXmlAttributes& attrib)
{ {
m_curString = ""; m_insideMember = TRUE;
m_curMember = new MemberEntry; m_curMember = new MemberEntry;
m_curMember->id = attrib.value("id"); m_curMember->id = attrib.value("refid");
m_curMember->compound = m_curCompound; m_curMember->compound = m_curCompound;
m_memberDict.insert(m_curMember->id,m_curMember); m_memberDict.insert(m_curMember->id,m_curMember);
} }
void MainHandler::endMember() void MainHandler::endMember()
{ {
m_curMember->name = m_curString;
m_curCompound->memberDict.insert(m_curString,m_curMember); m_curCompound->memberDict.insert(m_curString,m_curMember);
QList<CompoundEntry> *cel=0; QList<CompoundEntry> *cel=0;
if ((cel=m_memberNameDict.find(m_curString))==0) if ((cel=m_memberNameDict.find(m_curString))==0)
...@@ -145,6 +152,7 @@ void MainHandler::endMember() ...@@ -145,6 +152,7 @@ void MainHandler::endMember()
m_memberNameDict.insert(m_curString,cel); m_memberNameDict.insert(m_curString,cel);
} }
cel->append(m_curCompound); cel->append(m_curCompound);
m_insideMember = FALSE;
} }
void MainHandler::setDebugLevel(int level) void MainHandler::setDebugLevel(int level)
......
...@@ -76,6 +76,7 @@ class MainHandler : public IDoxygen, public BaseHandler<MainHandler> ...@@ -76,6 +76,7 @@ class MainHandler : public IDoxygen, public BaseHandler<MainHandler>
QDict<QList<CompoundEntry> > m_memberNameDict; QDict<QList<CompoundEntry> > m_memberNameDict;
QString m_xmlDirName; QString m_xmlDirName;
QDict<CompoundHandler> m_compoundsLoaded; QDict<CompoundHandler> m_compoundsLoaded;
bool m_insideMember;
}; };
#endif #endif
...@@ -396,6 +396,9 @@ Here is what is required: ...@@ -396,6 +396,9 @@ Here is what is required:
\latexonly(see {\tt http://www.doxygen.org/dl/cygwin\_tools.zip})\endlatexonly \latexonly(see {\tt http://www.doxygen.org/dl/cygwin\_tools.zip})\endlatexonly
of the cygwin tools that I put together just to compile doxygen. of the cygwin tools that I put together just to compile doxygen.
As a third alternative one could use the GNUWin32 tools that can be
found at http://gnuwin32.sourceforge.net/
Make sure the <code>BISONLIB</code> environment variable points to the Make sure the <code>BISONLIB</code> environment variable points to the
location where the files <code>bison.simple</code> and location where the files <code>bison.simple</code> and
<code>bison.hairy</code> are located. For instance if these files are in <code>bison.hairy</code> are located. For instance if these files are in
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.2.16 Version: 1.2.16_20020526
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
......
...@@ -769,11 +769,11 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) ...@@ -769,11 +769,11 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
return; return;
} }
QCString mapLabel = convertNameToFile(n->m_label); QCString mapLabel = convertNameToFile(n->m_label);
out << "<tr><td><img src=\"" << imgName << "\" border=\"0\" usemap=\"#" out << "<tr><td><img src=\"" << imgName << "\" border=\"0\" alt=\"\" usemap=\"#"
<< mapLabel << "_map\"></td></tr>" << endl; << mapLabel << "_map\">" << endl;
out << "<map name=\"" << mapLabel << "_map\">" << endl; out << "<map name=\"" << mapLabel << "_map\">" << endl;
convertMapFile(out,mapName); convertMapFile(out,mapName);
out << "</map>" << endl; out << "</map></td></tr>" << endl;
if (Config_getBool("DOT_CLEANUP")) thisDir.remove(dotName); if (Config_getBool("DOT_CLEANUP")) thisDir.remove(dotName);
thisDir.remove(mapName); thisDir.remove(mapName);
} }
...@@ -1378,9 +1378,15 @@ QCString DotClassGraph::writeGraph(QTextStream &out, ...@@ -1378,9 +1378,15 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
break; break;
} }
out << "\"></center>" << endl; out << "\"></center>" << endl;
QString tmpstr;
QTextOStream tmpout(&tmpstr);
convertMapFile(tmpout,baseName+".map");
if (!tmpstr.isEmpty())
{
out << "<map name=\"" << mapLabel << "\">" << endl; out << "<map name=\"" << mapLabel << "\">" << endl;
convertMapFile(out,baseName+".map"); out << tmpstr;
out << "</map>" << endl; out << "</map>" << endl;
}
thisDir.remove(baseName+".map"); thisDir.remove(baseName+".map");
} }
} }
...@@ -1601,9 +1607,15 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1601,9 +1607,15 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
if (m_inverse) out << "Included by dependency graph"; else out << "Include dependency graph"; if (m_inverse) out << "Included by dependency graph"; else out << "Include dependency graph";
out << "\">"; out << "\">";
out << "</center>" << endl; out << "</center>" << endl;
out << "<map name=\"" << mapName << "_map\">" << endl; QString tmpstr;
convertMapFile(out,baseName+".map"); QTextOStream tmpout(&tmpstr);
convertMapFile(tmpout,baseName+".map");
if (!tmpstr.isEmpty())
{
out << "<map name=\"" << mapName << "\">" << endl;
out << tmpstr;
out << "</map>" << endl; out << "</map>" << endl;
}
thisDir.remove(baseName+".map"); thisDir.remove(baseName+".map");
} }
} }
......
...@@ -1908,6 +1908,24 @@ static void buildFunctionList(Entry *root) ...@@ -1908,6 +1908,24 @@ static void buildFunctionList(Entry *root)
md->setDocsForDefinition(!root->proto); md->setDocsForDefinition(!root->proto);
ArgumentList *argList = new ArgumentList; ArgumentList *argList = new ArgumentList;
stringToArgumentList(root->args,argList); 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) if (root->proto)
{ {
md->setDeclArgumentList(argList); md->setDeclArgumentList(argList);
...@@ -1957,6 +1975,9 @@ static void buildFunctionList(Entry *root) ...@@ -1957,6 +1975,9 @@ static void buildFunctionList(Entry *root)
root->type,name,root->args,root->exception, root->type,name,root->args,root->exception,
root->protection,root->virt,root->stat,FALSE, root->protection,root->virt,root->stat,FALSE,
MemberDef::Function,tArgList,root->argList); MemberDef::Function,tArgList,root->argList);
//printf("new member %p\n",md);
if (root->tagInfo) if (root->tagInfo)
{ {
md->setAnchor(root->tagInfo->anchor); md->setAnchor(root->tagInfo->anchor);
...@@ -2154,6 +2175,33 @@ static void findFriends() ...@@ -2154,6 +2175,33 @@ static void findFriends()
//---------------------------------------------------------------------- //----------------------------------------------------------------------
static void transferArgumentDocumentation(ArgumentList *decAl,ArgumentList *defAl)
{
if (decAl && defAl)
{
ArgumentListIterator decAli(*decAl);
ArgumentListIterator defAli(*defAl);
Argument *decA,*defA;
for (decAli.toFirst(),defAli.toFirst();
(decA=decAli.current()) && (defA=defAli.current());
++decAli,++defAli)
{
//printf("Argument decA->name=%s (doc=%s) defA->name=%s (doc=%s)\n",
// decA->name.data(),decA->docs.data(),
// defA->name.data(),defA->docs.data()
// );
if (decA->docs.isEmpty() && !defA->docs.isEmpty())
{
decA->docs = defA->docs.copy();
}
else if (defA->docs.isEmpty() && !decA->docs.isEmpty())
{
defA->docs = decA->docs.copy();
}
}
}
}
static void transferFunctionDocumentation() static void transferFunctionDocumentation()
{ {
//printf("transferFunctionDocumentation()\n"); //printf("transferFunctionDocumentation()\n");
...@@ -2185,23 +2233,15 @@ static void transferFunctionDocumentation() ...@@ -2185,23 +2233,15 @@ static void transferFunctionDocumentation()
matchArguments(mdef->argumentList(),mdec->argumentList()) matchArguments(mdef->argumentList(),mdec->argumentList())
) /* match found */ ) /* match found */
{ {
/* FIX: Always match declaration and definition. //printf("Found member %s: definition in %s (doc=`%s') and declaration in %s (doc=`%s')\n",
FileDef *fdef = mdef->getFileDef();
FileDef *fdec = mdec->getFileDef();
// check if not in different but documented files
if (Config_getBool("EXTRACT_ALL") ||
fdef==fdec ||
(fdef!=0 && (!fdef->hasDocumentation() || !fdec->hasDocumentation()))
)
*/
{
//printf("Found member %s: definition in %s (doc=%d) and declation in %s (doc=%d)\n",
// mn->memberName(), // mn->memberName(),
// mdef->getFileDef()->name().data(),!mdef->documentation().isEmpty(), // mdef->getFileDef()->name().data(),mdef->documentation().data(),
// mdec->getFileDef()->name().data(),!mdec->documentation().isEmpty() // mdec->getFileDef()->name().data(),mdec->documentation().data()
// ); // );
// first merge argument documentation
transferArgumentDocumentation(mdec->argumentList(),mdef->argumentList());
/* copy documentation between function definition and declaration */ /* copy documentation between function definition and declaration */
if (!mdec->briefDescription().isEmpty()) if (!mdec->briefDescription().isEmpty())
{ {
...@@ -2218,6 +2258,10 @@ static void transferFunctionDocumentation() ...@@ -2218,6 +2258,10 @@ static void transferFunctionDocumentation()
mdec->setDocsForDefinition(mdef->isDocsForDefinition()); mdec->setDocsForDefinition(mdef->isDocsForDefinition());
ArgumentList *mdefAl = new ArgumentList; ArgumentList *mdefAl = new ArgumentList;
stringToArgumentList(mdef->argsString(),mdefAl); stringToArgumentList(mdef->argsString(),mdefAl);
if (mdef->argumentList())
{
transferArgumentDocumentation(mdef->argumentList(),mdefAl);
}
mdec->setArgumentList(mdefAl); mdec->setArgumentList(mdefAl);
} }
else if (!mdec->documentation().isEmpty()) else if (!mdec->documentation().isEmpty())
...@@ -2227,6 +2271,10 @@ static void transferFunctionDocumentation() ...@@ -2227,6 +2271,10 @@ static void transferFunctionDocumentation()
mdef->setDocsForDefinition(mdec->isDocsForDefinition()); mdef->setDocsForDefinition(mdec->isDocsForDefinition());
ArgumentList *mdecAl = new ArgumentList; ArgumentList *mdecAl = new ArgumentList;
stringToArgumentList(mdec->argsString(),mdecAl); stringToArgumentList(mdec->argsString(),mdecAl);
if (mdec->argumentList())
{
transferArgumentDocumentation(mdec->argumentList(),mdecAl);
}
mdef->setDeclArgumentList(mdecAl); mdef->setDeclArgumentList(mdecAl);
} }
if (mdec->getStartBodyLine()!=-1 && mdef->getStartBodyLine()==-1) if (mdec->getStartBodyLine()!=-1 && mdef->getStartBodyLine()==-1)
...@@ -2244,27 +2292,6 @@ static void transferFunctionDocumentation() ...@@ -2244,27 +2292,6 @@ static void transferFunctionDocumentation()
mdec->mergeMemberSpecifiers(mdef->getMemberSpecifiers()); mdec->mergeMemberSpecifiers(mdef->getMemberSpecifiers());
mdef->mergeMemberSpecifiers(mdec->getMemberSpecifiers()); mdef->mergeMemberSpecifiers(mdec->getMemberSpecifiers());
ArgumentList *decAl = mdec->argumentList();
ArgumentList *defAl = mdef->argumentList();
if (decAl && defAl)
{
ArgumentListIterator decAli(*decAl);
ArgumentListIterator defAli(*defAl);
Argument *decA,*defA;
for (decAli.toFirst(),defAli.toFirst();
(decA=decAli.current()) && (defA=defAli.current());
++decAli,++defAli)
{
if (decA->docs.isEmpty() && !defA->docs.isEmpty())
{
decA->docs = defA->docs.copy();
}
else if (defA->docs.isEmpty() && !decA->docs.isEmpty())
{
defA->docs = decA->docs.copy();
}
}
}
// copy group info. // copy group info.
//if (mdec->getGroupDef()==0 && mdef->getGroupDef()!=0) //if (mdec->getGroupDef()==0 && mdef->getGroupDef()!=0)
...@@ -2283,7 +2310,6 @@ static void transferFunctionDocumentation() ...@@ -2283,7 +2310,6 @@ static void transferFunctionDocumentation()
mdec->setRefItems(todoId,testId,bugId); mdec->setRefItems(todoId,testId,bugId);
} }
} }
}
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -2552,6 +2578,7 @@ static void findUsedClassesForClass(Entry *root, ...@@ -2552,6 +2578,7 @@ static void findUsedClassesForClass(Entry *root,
if (usedCd) if (usedCd)
{ {
if (isArtificial) usedCd->setClassIsArtificial(); if (isArtificial) usedCd->setClassIsArtificial();
Debug::print(Debug::Classes,0," Adding used class `%s'\n", usedCd->name().data());
instanceCd->addUsedClass(usedCd,md->name()); instanceCd->addUsedClass(usedCd,md->name());
} }
} }
...@@ -2583,6 +2610,7 @@ static void findUsedClassesForClass(Entry *root, ...@@ -2583,6 +2610,7 @@ static void findUsedClassesForClass(Entry *root,
if (usedCd) if (usedCd)
{ {
found=TRUE; found=TRUE;
Debug::print(Debug::Classes,0," Adding used class `%s'\n", usedCd->name().data());
instanceCd->addUsedClass(usedCd,md->name()); // class exists instanceCd->addUsedClass(usedCd,md->name()); // class exists
} }
} }
...@@ -2610,6 +2638,7 @@ static void findUsedClassesForClass(Entry *root, ...@@ -2610,6 +2638,7 @@ static void findUsedClassesForClass(Entry *root,
if (usedCd) if (usedCd)
{ {
if (isArtificial) usedCd->setClassIsArtificial(); if (isArtificial) usedCd->setClassIsArtificial();
Debug::print(Debug::Classes,0," Adding used class `%s'\n", usedCd->name().data());
instanceCd->addUsedClass(usedCd,md->name()); instanceCd->addUsedClass(usedCd,md->name());
} }
} }
...@@ -2653,6 +2682,7 @@ static void findBaseClassesForClass( ...@@ -2653,6 +2682,7 @@ static void findBaseClassesForClass(
{ {
tbi.name = substituteTemplateArgumentsInString(bi->name,formalArgs,actualArgs); tbi.name = substituteTemplateArgumentsInString(bi->name,formalArgs,actualArgs);
} }
//printf("bi->name=%s tbi.name=%s\n",bi->name.data(),tbi.name.data());
if (mode==DocumentedOnly) if (mode==DocumentedOnly)
{ {
...@@ -2779,6 +2809,7 @@ static bool findClassRelation( ...@@ -2779,6 +2809,7 @@ static bool findClassRelation(
biName=biName.right(biName.length()-2); biName=biName.right(biName.length()-2);
explicitGlobalScope=TRUE; explicitGlobalScope=TRUE;
} }
//printf("biName=`%s'\n",biName.data());
Entry *parentNode=root->parent; Entry *parentNode=root->parent;
bool lastParent=FALSE; bool lastParent=FALSE;
...@@ -2817,7 +2848,7 @@ static bool findClassRelation( ...@@ -2817,7 +2848,7 @@ static bool findClassRelation(
if (!isRecursiveBaseClass(root->name,baseClassName) || explicitGlobalScope) if (!isRecursiveBaseClass(root->name,baseClassName) || explicitGlobalScope)
{ {
Debug::print( Debug::print(
Debug::Classes,0," class relation %s inherited by %s found (%s and %s)\n", Debug::Classes,0," class relation %s inherited/used by %s found (%s and %s)\n",
baseClassName.data(), baseClassName.data(),
root->name.data(), root->name.data(),
(bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"), (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"),
......
...@@ -85,13 +85,13 @@ static const char *defaultStyleSheet = ...@@ -85,13 +85,13 @@ static const char *defaultStyleSheet =
" margin-top : 2px; \n" " margin-top : 2px; \n"
" margin-bottom : 2px \n" " margin-bottom : 2px \n"
"}\n" "}\n"
"FONT.keyword { color: #008000 }\n" "span.keyword { color: #008000 }\n"
"FONT.keywordtype { color: #604020 }\n" "span.keywordtype { color: #604020 }\n"
"FONT.keywordflow { color: #e08000 }\n" "span.keywordflow { color: #e08000 }\n"
"FONT.comment { color: #800000 }\n" "span.comment { color: #800000 }\n"
"FONT.preprocessor { color: #806020 }\n" "span.preprocessor { color: #806020 }\n"
"FONT.stringliteral { color: #002080 }\n" "span.stringliteral { color: #002080 }\n"
"FONT.charliteral { color: #008080 }\n"; "span.charliteral { color: #008080 }\n";
static QCString g_header; static QCString g_header;
...@@ -181,7 +181,7 @@ void HtmlGenerator::writeHeaderFile(QFile &file) ...@@ -181,7 +181,7 @@ void HtmlGenerator::writeHeaderFile(QFile &file)
void HtmlGenerator::writeFooterFile(QFile &file) void HtmlGenerator::writeFooterFile(QFile &file)
{ {
QTextStream t(&file); QTextStream t(&file);
t << "<hr><address align=\"right\"><small>\n"; t << "<hr><address style=\"align: right;\"><small>\n";
t << theTranslator->trGeneratedAt( "$datetime", "$projectname" ); t << theTranslator->trGeneratedAt( "$datetime", "$projectname" );
t << " <a href=\"http://www.doxygen.org/index.html\">\n" t << " <a href=\"http://www.doxygen.org/index.html\">\n"
<< "<img src=\"doxygen.png\" alt=\"doxygen\" " << "<img src=\"doxygen.png\" alt=\"doxygen\" "
...@@ -257,7 +257,7 @@ void HtmlGenerator::writeFooter(int part,bool external) ...@@ -257,7 +257,7 @@ void HtmlGenerator::writeFooter(int part,bool external)
{ {
case 0: case 0:
if (g_footer.isEmpty()) if (g_footer.isEmpty())
t << "<hr><address align=\"right\"><small>"; t << "<hr><address style=\"align: right;\"><small>";
else else
t << substituteKeywords(g_footer,convertToHtml(lastTitle)); t << substituteKeywords(g_footer,convertToHtml(lastTitle));
break; break;
...@@ -519,14 +519,14 @@ void HtmlGenerator::endGroupHeader() ...@@ -519,14 +519,14 @@ void HtmlGenerator::endGroupHeader()
void HtmlGenerator::startSection(const char *lab,const char *,bool sub) void HtmlGenerator::startSection(const char *lab,const char *,bool sub)
{ {
t << "<a name=\"" << lab << "\">";
if (sub) t << "<h3>"; else t << "<h2>"; if (sub) t << "<h3>"; else t << "<h2>";
t << "<a name=\"" << lab << "\">";
} }
void HtmlGenerator::endSection(const char *,bool sub) void HtmlGenerator::endSection(const char *,bool sub)
{ {
if (sub) t << "</h3>"; else t << "</h2>";
t << "</a>" << endl; t << "</a>" << endl;
if (sub) t << "</h3>"; else t << "</h2>";
} }
void HtmlGenerator::writeSectionRef(const char *ref,const char *name, void HtmlGenerator::writeSectionRef(const char *ref,const char *name,
...@@ -654,7 +654,7 @@ void HtmlGenerator::endClassDiagram(ClassDiagram &d, ...@@ -654,7 +654,7 @@ void HtmlGenerator::endClassDiagram(ClassDiagram &d,
{ {
t << "\n<p><center><img src=\"" t << "\n<p><center><img src=\""
<< fileName << ".png\" usemap=\"#" << name << "_map\"" << fileName << ".png\" usemap=\"#" << name << "_map\""
<< " border=\"0\"></center>" << endl << " border=\"0\" alt=\"\"></center>" << endl
<< "<map name=\"" << name << "_map\">" << endl; << "<map name=\"" << name << "_map\">" << endl;
d.writeImage(t,dir,fileName); d.writeImage(t,dir,fileName);
...@@ -786,6 +786,8 @@ void HtmlGenerator::startMemberSections() ...@@ -786,6 +786,8 @@ void HtmlGenerator::startMemberSections()
if (Config_getBool("HTML_ALIGN_MEMBERS")) if (Config_getBool("HTML_ALIGN_MEMBERS"))
{ {
t << "<table border=0 cellpadding=0 cellspacing=0>" << endl; t << "<table border=0 cellpadding=0 cellspacing=0>" << endl;
// HTML is not recursively decomposable, sorry
t << "<tr><td></td></tr>" << endl;
} }
} }
......
...@@ -254,8 +254,8 @@ class HtmlGenerator : public OutputGenerator ...@@ -254,8 +254,8 @@ class HtmlGenerator : public OutputGenerator
void startParameterList(); void startParameterList();
void endParameterList(); void endParameterList();
void startFontClass(const char *s) { t << "<font class=\"" << s << "\">"; } void startFontClass(const char *s) { t << "<span class=\"" << s << "\">"; }
void endFontClass() { t << "</font>"; } void endFontClass() { t << "</span>"; }
void startHtmlOnly() {} void startHtmlOnly() {}
void endHtmlOnly() {} void endHtmlOnly() {}
......
...@@ -417,11 +417,11 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level) ...@@ -417,11 +417,11 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
} }
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp->addContentsItem(hasChildren,cd->name(),cd->getOutputFileBase()); htmlHelp->addContentsItem(hasChildren,cd->displayName(),cd->getOutputFileBase());
} }
if (hasFtvHelp) if (hasFtvHelp)
{ {
ftvHelp->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->name()); ftvHelp->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->displayName());
} }
} }
else else
...@@ -429,11 +429,11 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level) ...@@ -429,11 +429,11 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
ol.writeIndexItem(0,0,cd->name()); ol.writeIndexItem(0,0,cd->name());
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp->addContentsItem(hasChildren,cd->name(),0); htmlHelp->addContentsItem(hasChildren,cd->displayName(),0);
} }
if (hasFtvHelp) if (hasFtvHelp)
{ {
ftvHelp->addContentsItem(hasChildren,0,0,0,cd->name()); ftvHelp->addContentsItem(hasChildren,0,0,0,cd->displayName());
} }
} }
if (hasChildren) if (hasChildren)
...@@ -492,11 +492,11 @@ void writeClassTree(BaseClassList *cl,int level) ...@@ -492,11 +492,11 @@ void writeClassTree(BaseClassList *cl,int level)
{ {
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp->addContentsItem(hasChildren,cd->name(),cd->getOutputFileBase()); htmlHelp->addContentsItem(hasChildren,cd->displayName(),cd->getOutputFileBase());
} }
if (hasFtvHelp) if (hasFtvHelp)
{ {
ftvHelp->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->name()); ftvHelp->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->displayName());
} }
} }
if (hasChildren) if (hasChildren)
...@@ -530,11 +530,11 @@ void writeClassTreeNode(ClassDef *cd,bool hasHtmlHelp,bool hasFtvHelp,bool &star ...@@ -530,11 +530,11 @@ void writeClassTreeNode(ClassDef *cd,bool hasHtmlHelp,bool hasFtvHelp,bool &star
{ {
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
HtmlHelp::getInstance()->addContentsItem(hasChildren,cd->name(),cd->getOutputFileBase()); HtmlHelp::getInstance()->addContentsItem(hasChildren,cd->displayName(),cd->getOutputFileBase());
} }
if (hasFtvHelp) if (hasFtvHelp)
{ {
FTVHelp::getInstance()->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->name()); FTVHelp::getInstance()->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->displayName());
} }
} }
if (hasChildren) if (hasChildren)
...@@ -624,11 +624,11 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started) ...@@ -624,11 +624,11 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started)
} }
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp->addContentsItem(hasChildren,cd->name(),cd->getOutputFileBase()); htmlHelp->addContentsItem(hasChildren,cd->displayName(),cd->getOutputFileBase());
} }
if (hasFtvHelp) if (hasFtvHelp)
{ {
ftvHelp->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->name()); ftvHelp->addContentsItem(hasChildren,cd->getReference(),cd->getOutputFileBase(),0,cd->displayName());
} }
} }
else else
...@@ -636,11 +636,11 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started) ...@@ -636,11 +636,11 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started)
ol.writeIndexItem(0,0,cd->displayName()); ol.writeIndexItem(0,0,cd->displayName());
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp->addContentsItem(hasChildren,cd->name(),0); htmlHelp->addContentsItem(hasChildren,cd->displayName(),0);
} }
if (hasFtvHelp) if (hasFtvHelp)
{ {
ftvHelp->addContentsItem(hasChildren,0,0,0,cd->name()); ftvHelp->addContentsItem(hasChildren,0,0,0,cd->displayName());
} }
} }
if (hasChildren) if (hasChildren)
...@@ -1140,11 +1140,11 @@ void writeNamespaceIndex(OutputList &ol) ...@@ -1140,11 +1140,11 @@ void writeNamespaceIndex(OutputList &ol)
//ol.writeEndAnnoItem(nd->getOutputFileBase()); //ol.writeEndAnnoItem(nd->getOutputFileBase());
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp->addContentsItem(FALSE,nd->name(),nd->getOutputFileBase()); htmlHelp->addContentsItem(FALSE,nd->displayName(),nd->getOutputFileBase());
} }
if (hasFtvHelp) if (hasFtvHelp)
{ {
ftvHelp->addContentsItem(FALSE,nd->getReference(),nd->getOutputFileBase(),0,nd->name()); ftvHelp->addContentsItem(FALSE,nd->getReference(),nd->getOutputFileBase(),0,nd->displayName());
} }
} }
} }
...@@ -1216,11 +1216,11 @@ void writeAnnotatedClassList(OutputList &ol) ...@@ -1216,11 +1216,11 @@ void writeAnnotatedClassList(OutputList &ol)
//ol.writeEndAnnoItem(cd->getOutputFileBase()); //ol.writeEndAnnoItem(cd->getOutputFileBase());
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
HtmlHelp::getInstance()->addContentsItem(FALSE,cd->name(),cd->getOutputFileBase()); HtmlHelp::getInstance()->addContentsItem(FALSE,cd->displayName(),cd->getOutputFileBase());
} }
if (hasFtvHelp) if (hasFtvHelp)
{ {
FTVHelp::getInstance()->addContentsItem(FALSE,cd->getReference(),cd->getOutputFileBase(),0,cd->name()); FTVHelp::getInstance()->addContentsItem(FALSE,cd->getReference(),cd->getOutputFileBase(),0,cd->displayName());
} }
} }
} }
......
...@@ -340,6 +340,7 @@ MemberDef::MemberDef(const char *df,int dl, ...@@ -340,6 +340,7 @@ MemberDef::MemberDef(const char *df,int dl,
Argument *a; Argument *a;
for (;(a=ali.current());++ali) for (;(a=ali.current());++ali)
{ {
//printf("copy argument %s (doc=%s)\n",a->name.data(),a->docs.data());
defArgList->append(new Argument(*a)); defArgList->append(new Argument(*a));
} }
defArgList->constSpecifier = al->constSpecifier; defArgList->constSpecifier = al->constSpecifier;
......
...@@ -114,8 +114,8 @@ class RTFGenerator : public OutputGenerator ...@@ -114,8 +114,8 @@ class RTFGenerator : public OutputGenerator
void endCodeFragment(); void endCodeFragment();
void startPreFragment() { startCodeFragment(); } void startPreFragment() { startCodeFragment(); }
void endPreFragment() { endCodeFragment(); } void endPreFragment() { endCodeFragment(); }
void startVerbatimFragment() { startVerbatimFragment(); } void startVerbatimFragment() { startCodeFragment(); }
void endVerbatimFragment() { endVerbatimFragment(); } void endVerbatimFragment() { endCodeFragment(); }
void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; } void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; }
void startCodeLine() { col=0; } void startCodeLine() { col=0; }
void endCodeLine() { lineBreak(); } void endCodeLine() { lineBreak(); }
......
...@@ -2668,12 +2668,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -2668,12 +2668,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->args += yytext; current->args += yytext;
} }
<Bases>{BN}*{ID}("."{ID})* { // Java style class <Bases>{BN}*{ID}("."{ID})* { // Java style class
QCString name = yytext; QCString name = substitute(yytext,".","::");
int i=name.findRev('.');
if (i!=-1) // strip part before dots
{
name=name.right(name.length()-i-1);
}
baseName += name; baseName += name;
current->args += ' '; current->args += ' ';
current->args += name; current->args += name;
......
...@@ -1072,7 +1072,7 @@ class TranslatorEnglish : public Translator ...@@ -1072,7 +1072,7 @@ class TranslatorEnglish : public Translator
"\\endcode\n" "\\endcode\n"
"If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file " "If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file "
"is set to 240 this will result in the following graph:" "is set to 240 this will result in the following graph:"
"<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
"<p>\n" "<p>\n"
"The boxes in the above graph have the following meaning:\n" "The boxes in the above graph have the following meaning:\n"
"<ul>\n" "<ul>\n"
......
...@@ -360,18 +360,61 @@ int guessSection(const char *name) ...@@ -360,18 +360,61 @@ int guessSection(const char *name)
return 0; return 0;
} }
QCString resolveTypeDef(Definition *d,const QCString &name) QCString resolveTypeDef(Definition *context,const QCString &qualifiedName,
Definition **typedefContext)
{ {
//printf("resolveTypeDef(%s,%s)\n",d ? d->name().data() : "<none>",name.data()); //printf("resolveTypeDef(%s,%s)\n",
// context ? context->name().data() : "<none>",qualifiedName.data());
QCString result; QCString result;
if (name.isEmpty()) return result; if (qualifiedName.isEmpty()) return result;
Definition *mContext=d; Definition *mContext=context;
if (typedefContext) *typedefContext=context;
// see if the qualified name has a scope part
int scopeIndex = qualifiedName.findRev("::");
QCString resName=qualifiedName;
if (scopeIndex!=-1) // strip scope part for the name
{
resName=qualifiedName.right(qualifiedName.length()-scopeIndex-2);
}
else
{
resName=qualifiedName;
}
MemberDef *md=0; MemberDef *md=0;
while (mContext && md==0) while (mContext && md==0)
{ {
// step 1: get the right scope
Definition *resScope=mContext;
if (scopeIndex!=-1)
{
// split-off scope part
QCString resScopeName = qualifiedName.left(scopeIndex);
//printf("resScopeName=`%s'\n",resScopeName.data());
// look-up scope in context
int is,ps=0;
int l;
while ((is=getScopeFragment(resScopeName,ps,&l))!=-1)
{
QCString qualScopePart = resScopeName.mid(is,l);
QCString tmp = resolveTypeDef(context,qualScopePart);
if (!tmp.isEmpty()) qualScopePart=tmp;
resScope = resScope->findInnerCompound(qualScopePart);
//printf("qualScopePart=`%s' resScope=%p\n",qualScopePart.data(),resScope);
if (resScope==0) break;
ps=is+l;
}
}
// step 2: get the member
if (resScope) // no scope or scope found in the current context
{
//printf("scope found: %s, look for typedef %s\n",
// resScope->qualifiedName().data(),resName.data());
MemberNameSDict *mnd=0; MemberNameSDict *mnd=0;
if (mContext->definitionType()==Definition::TypeClass) if (resScope->definitionType()==Definition::TypeClass)
{ {
mnd=&Doxygen::memberNameSDict; mnd=&Doxygen::memberNameSDict;
} }
...@@ -379,7 +422,7 @@ QCString resolveTypeDef(Definition *d,const QCString &name) ...@@ -379,7 +422,7 @@ QCString resolveTypeDef(Definition *d,const QCString &name)
{ {
mnd=&Doxygen::functionNameSDict; mnd=&Doxygen::functionNameSDict;
} }
MemberName *mn=mnd->find(name); MemberName *mn=mnd->find(resName);
if (mn) if (mn)
{ {
MemberNameIterator mni(*mn); MemberNameIterator mni(*mn);
...@@ -388,25 +431,29 @@ QCString resolveTypeDef(Definition *d,const QCString &name) ...@@ -388,25 +431,29 @@ QCString resolveTypeDef(Definition *d,const QCString &name)
{ {
//printf("Found member %s scope=%p mContext=%p\n",tmd->name().data(), //printf("Found member %s scope=%p mContext=%p\n",tmd->name().data(),
// tmd->getOuterScope(),mContext); // tmd->getOuterScope(),mContext);
if (tmd->isTypedef() && tmd->getOuterScope()==mContext) if (tmd->isTypedef() && tmd->getOuterScope()==resScope)
{ {
md=tmd; md=tmd;
} }
} }
} }
}
mContext=mContext->getOuterScope(); mContext=mContext->getOuterScope();
} }
// step 3: get the member's type
if (md) if (md)
{ {
//printf("Found typedef name `%s' in scope `%s' value=`%s'\n", //printf("Found typedef name `%s' in scope `%s' value=`%s'\n",
// name.data(),d->name().data(),md->typeString() // qualifiedName.data(),context->name().data(),md->typeString()
// ); // );
result=md->typeString(); result=md->typeString();
if (typedefContext) *typedefContext=md->getOuterScope();
} }
else else
{ {
//printf("Typedef `%s' not found in scope `%s'!\n", //printf("Typedef `%s' not found in scope `%s'!\n",
// name.data(),d ? d->name().data() : "<global>"); // qualifiedName.data(),context ? context->name().data() : "<global>");
} }
return result; return result;
...@@ -456,32 +503,27 @@ ClassDef *getResolvedClass( ...@@ -456,32 +503,27 @@ ClassDef *getResolvedClass(
QCString name = n; QCString name = n;
if (scope==0) scope=Doxygen::globalScope; if (scope==0) scope=Doxygen::globalScope;
if (name.isEmpty()) return 0; if (name.isEmpty()) return 0;
int index = name.findRev("::"); //int index = name.findRev("::");
ClassDef *cd=0; ClassDef *cd=0;
//printf("===================\n");
do do
{ {
//fprintf(stderr,"getResolvedClass(%s,%s)\n",scope ? scope->name().data() : "<none>", n); //printf("trying getResolvedClass(%s,%s)\n",scope ? scope->name().data() : "<none>", n);
QCString subst; Definition *typedefScope = 0;
if (index!=-1) QCString subst = resolveTypeDef(scope,name,&typedefScope);
{
subst = resolveTypeDef(scope,name.right(name.length()-index-2));
}
else
{
subst = resolveTypeDef(scope,name);
}
//printf(" typedef subst=`%s'\n",subst.data());
if (!subst.isEmpty()) if (!subst.isEmpty())
{ {
//printf(" typedef value=%s typedefScope=%s\n",subst.data(),
// typedefScope?typedefScope->qualifiedName().data():0);
// strip * and & from n // strip * and & from n
int ip=subst.length()-1; int ip=subst.length()-1;
while (ip>=0 && (subst.at(ip)=='*' || subst.at(ip)=='&' || subst.at(ip)==' ')) ip--; while (ip>=0 && (subst.at(ip)=='*' || subst.at(ip)=='&' || subst.at(ip)==' ')) ip--;
subst=subst.left(ip+1); subst=subst.left(ip+1);
if (pIsTypeDef) *pIsTypeDef=TRUE; if (pIsTypeDef) *pIsTypeDef=TRUE;
if (subst==name) // avoid resolving typedef struct foo foo; if (subst==name) // avoid resolving "typedef struct foo foo";
{ {
cd = Doxygen::classSDict.find(name); cd = Doxygen::classSDict.find(name);
if (cd) goto found; if (cd) goto found;
...@@ -492,8 +534,8 @@ ClassDef *getResolvedClass( ...@@ -492,8 +534,8 @@ ClassDef *getResolvedClass(
QCString newSubst; QCString newSubst;
QCString typeName = subst; QCString typeName = subst;
if (index!=-1) typeName.prepend(name.left(index)+"::"); //if (index!=-1) typeName.prepend(name.left(index)+"::");
while (!(newSubst=resolveTypeDef(scope,typeName)).isEmpty() while (!(newSubst=resolveTypeDef(typedefScope,typeName)).isEmpty()
&& count<10) && count<10)
{ {
if (typeName==newSubst) if (typeName==newSubst)
...@@ -511,7 +553,7 @@ ClassDef *getResolvedClass( ...@@ -511,7 +553,7 @@ ClassDef *getResolvedClass(
//printf(" getResolvedClass `%s'->`%s'\n",name.data(),subst.data()); //printf(" getResolvedClass `%s'->`%s'\n",name.data(),subst.data());
typeName=newSubst; typeName=newSubst;
if (index!=-1) typeName.prepend(name.left(index)+"::"); //if (index!=-1) typeName.prepend(name.left(index)+"::");
count++; count++;
} }
if (count==10) if (count==10)
...@@ -523,7 +565,14 @@ ClassDef *getResolvedClass( ...@@ -523,7 +565,14 @@ ClassDef *getResolvedClass(
else else
{ {
int i; int i;
if (typedefScope)
{
cd = Doxygen::classSDict.find(typedefScope->qualifiedName()+"::"+typeName);
}
if (cd==0)
{
cd = Doxygen::classSDict.find(typeName); cd = Doxygen::classSDict.find(typeName);
}
//printf(" getClass: subst %s->%s cd=%p\n",name.data(),typeName.data(),cd); //printf(" getClass: subst %s->%s cd=%p\n",name.data(),typeName.data(),cd);
if (cd==0 && (i=typeName.find('<'))>0) // try unspecialized version as well if (cd==0 && (i=typeName.find('<'))>0) // try unspecialized version as well
{ {
...@@ -534,8 +583,9 @@ ClassDef *getResolvedClass( ...@@ -534,8 +583,9 @@ ClassDef *getResolvedClass(
} }
} }
} }
else else // not a typedef
{ {
//printf(" not a typedef value\n");
if (pIsTypeDef) *pIsTypeDef=FALSE; if (pIsTypeDef) *pIsTypeDef=FALSE;
if (scope!=Doxygen::globalScope) if (scope!=Doxygen::globalScope)
cd = Doxygen::classSDict.find(scope->name()+"::"+name); cd = Doxygen::classSDict.find(scope->name()+"::"+name);
...@@ -550,7 +600,7 @@ ClassDef *getResolvedClass( ...@@ -550,7 +600,7 @@ ClassDef *getResolvedClass(
} while (scope); } while (scope);
found: found:
//fprintf(stderr, "getResolvedClass()=%s\n",cd?cd->name().data():"<none>"); //printf("getResolvedClass()=%s\n",cd?cd->name().data():"<none>");
return cd; return cd;
} }
......
...@@ -164,7 +164,8 @@ ArgumentList *copyArgumentList(const ArgumentList *src); ...@@ -164,7 +164,8 @@ ArgumentList *copyArgumentList(const ArgumentList *src);
QList<ArgumentList> *copyArgumentLists(const QList<ArgumentList> *srcLists); QList<ArgumentList> *copyArgumentLists(const QList<ArgumentList> *srcLists);
QCString stripTemplateSpecifiersFromScope(const QCString &fullName, QCString stripTemplateSpecifiersFromScope(const QCString &fullName,
bool parentOnly=TRUE); bool parentOnly=TRUE);
QCString resolveTypeDef(Definition *d,const QCString &name); QCString resolveTypeDef(Definition *d,const QCString &name,
Definition **typedefContext=0);
QCString mergeScopes(const QCString &leftScope,const QCString &rightScope); QCString mergeScopes(const QCString &leftScope,const QCString &rightScope);
int getScopeFragment(const QCString &s,int p,int *l); int getScopeFragment(const QCString &s,int p,int *l);
int filterCRLF(char *buf,int len); int filterCRLF(char *buf,int len);
......
...@@ -1083,19 +1083,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -1083,19 +1083,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
// + template arguments // + template arguments
// (templateArguments(), definitionTemplateParameterLists()) // (templateArguments(), definitionTemplateParameterLists())
// enum values are written as part of the enum
if (md->memberType()==MemberDef::EnumValue) return; if (md->memberType()==MemberDef::EnumValue) return;
ti << " <member id=\"" << md->getOutputFileBase()
<< "_1" << md->anchor() << "\">" << convertToXML(md->name()) << "</member>" << endl;
QCString scopeName;
if (md->getClassDef())
scopeName=md->getClassDef()->name();
else if (md->getNamespaceDef())
scopeName=md->getNamespaceDef()->name();
t << " <memberdef kind=\"";
//enum { define_t,variable_t,typedef_t,enum_t,function_t } xmlType = function_t;
QCString memType; QCString memType;
bool isFunc=FALSE; bool isFunc=FALSE;
switch (md->memberType()) switch (md->memberType())
...@@ -1113,6 +1103,19 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -1113,6 +1103,19 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
case MemberDef::DCOP: memType="dcop"; isFunc=TRUE; break; case MemberDef::DCOP: memType="dcop"; isFunc=TRUE; break;
case MemberDef::Slot: memType="slot"; isFunc=TRUE; break; case MemberDef::Slot: memType="slot"; isFunc=TRUE; break;
} }
ti << " <member refid=\"" << md->getOutputFileBase()
<< "_1" << md->anchor() << "\" kind=\"" << memType << "\"><name>"
<< convertToXML(md->name()) << "</name></member>" << endl;
QCString scopeName;
if (md->getClassDef())
scopeName=md->getClassDef()->name();
else if (md->getNamespaceDef())
scopeName=md->getNamespaceDef()->name();
t << " <memberdef kind=\"";
//enum { define_t,variable_t,typedef_t,enum_t,function_t } xmlType = function_t;
t << memType << "\" id=\""; t << memType << "\" id=\"";
t << md->getOutputFileBase() t << md->getOutputFileBase()
<< "_1" // encoded `:' character (see util.cpp:convertNameToFile) << "_1" // encoded `:' character (see util.cpp:convertNameToFile)
...@@ -1407,7 +1410,8 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -1407,7 +1410,8 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
if (cd->name().find('@')!=-1) return; // skip anonymous compounds. if (cd->name().find('@')!=-1) return; // skip anonymous compounds.
if (cd->templateMaster()!=0) return; // skip generated template instances. if (cd->templateMaster()!=0) return; // skip generated template instances.
ti << " <compound id=\"" << cd->getOutputFileBase() ti << " <compound refid=\"" << cd->getOutputFileBase()
<< "\" kind=\"" << cd->compoundTypeString()
<< "\"><name>" << convertToXML(cd->name()) << "</name>" << endl; << "\"><name>" << convertToXML(cd->name()) << "</name>" << endl;
QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY"); QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY");
...@@ -1477,7 +1481,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -1477,7 +1481,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
case Pure: t << "pure-virtual"; break; case Pure: t << "pure-virtual"; break;
} }
t << "\">" << convertToXML(bcd->classDef->displayName()) t << "\">" << convertToXML(bcd->classDef->displayName())
<< "</basecompoundref>" << endl; << "</derivedcompoundref>" << endl;
} }
} }
...@@ -1573,8 +1577,9 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti) ...@@ -1573,8 +1577,9 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti)
if (nd->isReference()) return; // skip external references if (nd->isReference()) return; // skip external references
ti << " <compound id=\"" << nd->getOutputFileBase() ti << " <compound refid=\"" << nd->getOutputFileBase()
<< "\"><name>" << convertToXML(nd->name()) << "</name>" << endl; << "\" kind=\"namespace\"" << "><name>"
<< convertToXML(nd->name()) << "</name>" << endl;
QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY"); QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY");
QCString fileName=outputDirectory+"/xml/"+nd->getOutputFileBase()+".xml"; QCString fileName=outputDirectory+"/xml/"+nd->getOutputFileBase()+".xml";
...@@ -1663,8 +1668,9 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti) ...@@ -1663,8 +1668,9 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
if (fd->isReference()) return; // skip external references if (fd->isReference()) return; // skip external references
ti << " <compound id=\"" << fd->getOutputFileBase() ti << " <compound refid=\"" << fd->getOutputFileBase()
<< "\"><name>" << convertToXML(fd->name()) << "</name>" << endl; << "\" kind=\"file\"><name>" << convertToXML(fd->name())
<< "</name>" << endl;
QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY"); QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY");
QCString fileName=outputDirectory+"/xml/"+fd->getOutputFileBase()+".xml"; QCString fileName=outputDirectory+"/xml/"+fd->getOutputFileBase()+".xml";
...@@ -1796,8 +1802,8 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti) ...@@ -1796,8 +1802,8 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
if (gd->isReference()) return; // skip external references if (gd->isReference()) return; // skip external references
ti << " <compound id=\"" << gd->getOutputFileBase() ti << " <compound refid=\"" << gd->getOutputFileBase()
<< "\"><name>" << convertToXML(gd->name()) << "</name>" << endl; << "\" kind=\"group\"><name>" << convertToXML(gd->name()) << "</name>" << endl;
QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY"); QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY");
QCString fileName=outputDirectory+"/xml/"+gd->getOutputFileBase()+".xml"; QCString fileName=outputDirectory+"/xml/"+gd->getOutputFileBase()+".xml";
...@@ -1857,7 +1863,7 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti) ...@@ -1857,7 +1863,7 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
for (pli.toFirst();(pi=pli.current());++pli) for (pli.toFirst();(pi=pli.current());++pli)
{ {
t << " <innerpage refid=\"" << pi->getOutputFileBase() t << " <innerpage refid=\"" << pi->getOutputFileBase()
<< "\"/>" << convertToXML(pi->title) << "</innerpage>" << endl; << "\">" << convertToXML(pi->title) << "</innerpage>" << endl;
} }
} }
...@@ -1869,7 +1875,8 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti) ...@@ -1869,7 +1875,8 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
for (gli.toFirst();(sgd=gli.current());++gli) for (gli.toFirst();(sgd=gli.current());++gli)
{ {
t << " <innergroup refid=\"" << gd->getOutputFileBase() t << " <innergroup refid=\"" << gd->getOutputFileBase()
<< "\"/>" << convertToXML(sgd->groupTitle()) << "</innergroup>" << endl; << "\">" << convertToXML(sgd->groupTitle())
<< "</innergroup>" << endl;
} }
} }
...@@ -1907,8 +1914,8 @@ static void generateXMLForPage(PageInfo *pi,QTextStream &ti) ...@@ -1907,8 +1914,8 @@ static void generateXMLForPage(PageInfo *pi,QTextStream &ti)
if (pi->isReference()) return; if (pi->isReference()) return;
ti << " <compound id=\"" << pi->getOutputFileBase() ti << " <compound refid=\"" << pi->getOutputFileBase()
<< "\"><name>" << convertToXML(pi->name) << "</name>" << endl; << "\" kind=\"page\"><name>" << convertToXML(pi->name) << "</name>" << endl;
QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY"); QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY");
QCString fileName=outputDirectory+"/xml/"+pi->getOutputFileBase()+".xml"; QCString fileName=outputDirectory+"/xml/"+pi->getOutputFileBase()+".xml";
......
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