Commit 9e4e94fb authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.11-20011003

parent 00e00a1d
DOXYGEN Version 1.2.11
DOXYGEN Version 1.2.11-20011003
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (30 September 2001)
Dimitri van Heesch (03 October 2001)
DOXYGEN Version 1.2.11
DOXYGEN Version 1.2.11_20011003
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (30 September 2001)
Dimitri van Heesch (dimitri@stack.nl) (03 October 2001)
1.2.11
1.2.11-20011003
......@@ -40,6 +40,9 @@ CompoundHandler::CompoundHandler(IBaseHandler *parent)
addStartHandler("detaileddescription",this,&CompoundHandler::startDetailedDesc);
addStartHandler("sectiondef",this,&CompoundHandler::startSection);
addStartHandler("location",this,&CompoundHandler::startLocation);
addEndHandler("location");
}
CompoundHandler::~CompoundHandler()
......@@ -71,10 +74,16 @@ void CompoundHandler::startDetailedDesc(const QXmlAttributes& attrib)
void CompoundHandler::startCompound(const QXmlAttributes& attrib)
{
m_parent->setDelegate(this);
m_id = attrib.value("id");
m_kind = attrib.value("kind");
printf("startCompound(id=`%s' type=`%s')\n",m_id.data(),m_kind.data());
m_parent->setDelegate(this);
m_id = attrib.value("id");
m_kind = attrib.value("kind");
printf("startCompound(id=`%s' type=`%s')\n",m_id.data(),m_kind.data());
}
void CompoundHandler::startLocation(const QXmlAttributes& attrib)
{
m_defFile = attrib.value("file");
m_defLine = attrib.value("line").toInt();
}
void CompoundHandler::endCompound()
......
......@@ -36,6 +36,7 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
virtual void endCompoundName();
virtual void startBriefDesc(const QXmlAttributes& attrib);
virtual void startDetailedDesc(const QXmlAttributes& attrib);
virtual void startLocation(const QXmlAttributes& attrib);
CompoundHandler(IBaseHandler *parent);
virtual ~CompoundHandler();
......@@ -74,6 +75,8 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
QString m_id;
QString m_kind;
QString m_name;
QString m_defFile;
int m_defLine;
};
#endif
......@@ -34,6 +34,9 @@ MemberHandler::MemberHandler(IBaseHandler *parent)
addStartHandler("detaileddescription",this,&MemberHandler::startDetailedDesc);
addStartHandler("location",this,&MemberHandler::startLocation);
addEndHandler("location");
m_params.setAutoDelete(TRUE);
}
......@@ -69,6 +72,12 @@ void MemberHandler::startDetailedDesc(const QXmlAttributes& attrib)
m_detailed = docHandler;
}
void MemberHandler::startLocation(const QXmlAttributes& attrib)
{
m_defFile = attrib.value("file");
m_defLine = attrib.value("line").toInt();
}
void MemberHandler::endMember()
{
m_parent->setDelegate(0);
......
......@@ -36,6 +36,7 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
virtual void endName();
virtual void startBriefDesc(const QXmlAttributes& attrib);
virtual void startDetailedDesc(const QXmlAttributes& attrib);
virtual void startLocation(const QXmlAttributes& attrib);
MemberHandler(IBaseHandler *parent);
virtual ~MemberHandler();
......@@ -60,6 +61,8 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
DocHandler *m_brief;
DocHandler *m_detailed;
QList<IParam> m_params;
QString m_defFile;
int m_defLine;
};
#endif
......@@ -408,11 +408,8 @@ Here is what is required:
commerical version of Qt.
For doxywizard, a complete Qt library is
still a requirement however. You may be interested in the professional
license of <A HREF="http://www.trolltech.com/products/qt.html">Qt for
Windows</A> \latexonly\par (see
{\tt http://www.trolltech.com/products/qt.html})\endlatexonly. If you
donate me a professional license I'll port doxywizard for you :-)
still a requirement however. You can download the non-commercial version
from Troll-Tech web-site. See doxygen download page for a link.
<li>To generate LaTeX documentation or formulas in HTML you need the tools:
<code>latex</code>, <code>dvips</code> and <code>gswin32</code>.
......
......@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
Currently (version 1.2.10-20010909), 24 languages
Currently (version 1.2.11), 24 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Croatian, Czech, Danish,
Dutch, English, Finnish, French, German,
......@@ -168,7 +168,7 @@ when the translator was updated.
<TD>Slovak</TD>
<TD>Stanislav Kudl&aacute;&#x010d;</TD>
<TD>qwerty1@NOSPAM.pobox.sk</TD>
<TD>1.2.7</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Slovene</TD>
......@@ -245,7 +245,7 @@ when the translator was updated.
\hline
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\
\hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt qwerty1@pobox.sk} & 1.2.7 \\
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt qwerty1@pobox.sk} & up-to-date \\
\hline
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & 1.1.5 \\
\hline
......
Name: doxygen
Version: 1.2.11
Version: 1.2.11_20011003
Summary: documentation system for C, C++ and IDL
Release: 4
Source: doxygen-%{version}.src.tar.gz
......
......@@ -31,7 +31,7 @@ class BufStr : public QCString
{
if (offset>=size())
{
resize(size()+spareRoom);
QCString::resize(size()+spareRoom);
}
data()[offset++]=c;
}
......@@ -39,7 +39,7 @@ class BufStr : public QCString
{
if (offset+len>=size())
{
resize(size()+len+spareRoom);
QCString::resize(size()+len+spareRoom);
}
memcpy(data()+offset,a,len);
offset+=len;
......@@ -49,16 +49,21 @@ class BufStr : public QCString
{
if (offset+s>=size())
{
resize(size()+s+spareRoom);
QCString::resize(size()+s+spareRoom);
}
offset+=s;
}
void resize( uint newlen )
{
QCString::resize(newlen);
if (offset>newlen)
//QCString::resize(newlen);
//if (offset>newlen)
//{
// offset=newlen;
//}
offset=newlen;
if (offset>=size())
{
offset=newlen;
QCString::resize(size()+spareRoom);
}
}
private:
......
......@@ -231,7 +231,7 @@ static void startCodeLine()
static void endFontClass();
static void endCodeLine()
{
endFontClass();
if (g_currentFontClass) { g_code->endFontClass(); }
g_code->endCodeLine();
}
......
......@@ -70,8 +70,9 @@ static QDict<Entry> classEntries(1009);
ClassSDict Doxygen::classSDict(1009);
ClassSDict Doxygen::hiddenClasses(257);
NamespaceList Doxygen::namespaceList; // all namespaces
NamespaceDict Doxygen::namespaceDict(257);
//NamespaceList Doxygen::namespaceList; // all namespaces
//NamespaceDict Doxygen::namespaceDict(257);
NamespaceSDict Doxygen::namespaceSDict(17);
MemberNameList Doxygen::memberNameList; // class member + related functions
MemberNameDict Doxygen::memberNameDict(10007);
......@@ -123,7 +124,7 @@ void clearAll()
delete outputList; outputList=0;
Doxygen::classSDict.clear();
Doxygen::namespaceList.clear();
Doxygen::namespaceSDict.clear();
Doxygen::pageSDict->clear();
Doxygen::exampleSDict->clear();
Doxygen::memberNameList.clear();
......@@ -132,7 +133,6 @@ void clearAll()
Doxygen::groupList.clear();
Doxygen::formulaList.clear();
Doxygen::classSDict.clear();
Doxygen::namespaceDict.clear();
Doxygen::memberNameDict.clear();
Doxygen::functionNameDict.clear();
Doxygen::sectionDict.clear();
......@@ -161,8 +161,6 @@ void statistics()
Doxygen::imageNameDict->statistics();
fprintf(stderr,"--- dotFileNameDict stats ----\n");
Doxygen::dotFileNameDict->statistics();
fprintf(stderr,"--- namespaceDict stats ----\n");
Doxygen::namespaceDict.statistics();
fprintf(stderr,"--- memberNameDict stats ----\n");
Doxygen::memberNameDict.statistics();
fprintf(stderr,"--- functionNameDict stats ----\n");
......@@ -713,7 +711,7 @@ ArgumentList *getTemplateArgumentsFromName(
int i,p=0;
while ((i=name.find("::",p))!=-1)
{
NamespaceDef *nd = Doxygen::namespaceDict[name.left(i)];
NamespaceDef *nd = Doxygen::namespaceSDict[name.left(i)];
if (nd==0)
{
ClassDef *cd = getClass(name.left(i));
......@@ -982,7 +980,7 @@ static void buildNamespaceList(Entry *root)
//printf("Found namespace %s in %s at line %d\n",root->name.data(),
// root->fileName.data(), root->startLine);
NamespaceDef *nd;
if ((nd=Doxygen::namespaceDict[fullName])) // existing namespace
if ((nd=Doxygen::namespaceSDict[fullName])) // existing namespace
{
if (!root->doc.isEmpty() || !root->brief.isEmpty()) // block contains docs
{
......@@ -1051,8 +1049,7 @@ static void buildNamespaceList(Entry *root)
nd->setBodySegment(root->bodyLine,root->endBodyLine);
nd->setBodyDef(fd);
// add class to the list
Doxygen::namespaceList.inSort(nd);
Doxygen::namespaceDict.insert(fullName,nd);
Doxygen::namespaceSDict.inSort(fullName,nd);
// also add namespace to the correct structural context
Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,fullName);
......@@ -1177,8 +1174,7 @@ static void findUsingDirectives(Entry *root)
nd->setBriefDescription(root->brief);
nd->insertUsedFile(root->fileName);
// add class to the list
Doxygen::namespaceList.inSort(nd);
Doxygen::namespaceDict.insert(root->name,nd);
Doxygen::namespaceSDict.inSort(root->name,nd);
nd->setRefItems(root->todoId,root->testId,root->bugId);
}
}
......@@ -3225,11 +3221,11 @@ static void computeMemberReferences()
}
fn=Doxygen::inputNameList.next();
}
NamespaceDef *nd=Doxygen::namespaceList.first();
while (nd)
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd=0;
for (nli.toFirst();(nd=nli.current());++nli)
{
nd->computeAnchors();
nd=Doxygen::namespaceList.next();
}
GroupDef *gd=Doxygen::groupList.first();
while (gd)
......@@ -3355,14 +3351,14 @@ static void addTodoTestBugReferences()
}
fn=Doxygen::inputNameList.next();
}
NamespaceDef *nd=Doxygen::namespaceList.first();
while (nd)
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd=0;
for (nli.toFirst();(nd=nli.current());++nli)
{
addRefItem(nd->todoId(),nd->testId(),nd->bugId(),
theTranslator->trNamespace(TRUE,TRUE),
nd->getOutputFileBase(),nd->name());
addFileMemberTodoTestBugReferences(nd);
nd=Doxygen::namespaceList.next();
}
GroupDef *gd=Doxygen::groupList.first();
while (gd)
......@@ -5081,7 +5077,7 @@ static void addSourceReferences()
}
}
// add source references for namespace definitions
NamespaceListIterator nli(Doxygen::namespaceList);
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd=0;
for (nli.toFirst();(nd=nli.current());++nli)
{
......@@ -5251,11 +5247,11 @@ static void addMembersToMemberGroup()
fn=Doxygen::inputNameList.next();
}
// for each namespace
NamespaceDef *nd=Doxygen::namespaceList.first();
while (nd)
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd;
for ( ; (nd=nli.current()) ; ++nli )
{
nd->addMembersToMemberGroup();
nd=Doxygen::namespaceList.next();
}
// for each group
GroupDef *gd=Doxygen::groupList.first();
......@@ -5290,11 +5286,11 @@ static void distributeMemberGroupDocumentation()
fn=Doxygen::inputNameList.next();
}
// for each namespace
NamespaceDef *nd=Doxygen::namespaceList.first();
while (nd)
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd;
for ( ; (nd=nli.current()) ; ++nli )
{
nd->distributeMemberGroupDocumentation();
nd=Doxygen::namespaceList.next();
}
// for each group
GroupDef *gd=Doxygen::groupList.first();
......@@ -5770,7 +5766,7 @@ static void generateNamespaceDocs()
{
writeNamespaceIndex(*outputList);
NamespaceListIterator nli(Doxygen::namespaceList);
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd;
for (;(nd=nli.current());++nli)
{
......@@ -6083,6 +6079,7 @@ static void copyAndFilterFile(const char *fileName,BufStr &dest)
// try to open file
int size=0;
uint oldPos = dest.curPos();
//printf(".......oldPos=%d\n",oldPos);
QFileInfo fi(fileName);
if (!fi.exists()) return;
......@@ -6136,7 +6133,8 @@ static void copyAndFilterFile(const char *fileName,BufStr &dest)
//printf("filter char at %p size=%d newSize=%d\n",dest.data()+oldPos,size,newSize);
if (newSize!=size) // we removed chars
{
dest.resize(newSize); // resize the array
dest.resize(oldPos+newSize); // resize the array
//printf(".......resizing from %d to %d\n",oldPos+size,oldPos+newSize);
}
}
......
......@@ -83,8 +83,9 @@ class Doxygen
static StringDict namespaceAliasDict;
static GroupList groupList;
static GroupDict groupDict;
static NamespaceList namespaceList;
static NamespaceDict namespaceDict;
//static NamespaceList namespaceList;
//static NamespaceDict namespaceDict;
static NamespaceSDict namespaceSDict;
static FormulaList formulaList;
static FormulaDict formulaDict;
static FormulaDict formulaNameDict;
......
......@@ -819,12 +819,12 @@ void HtmlGenerator::endIndexKey()
t << "</td>";
}
void HtmlGenerator::startIndexValue()
void HtmlGenerator::startIndexValue(bool)
{
t << "<td>";
}
void HtmlGenerator::endIndexValue(const char *)
void HtmlGenerator::endIndexValue(const char *,bool)
{
t << "</td></tr>" << endl;
}
......
......@@ -68,8 +68,8 @@ class HtmlGenerator : public OutputGenerator
void endIndexList();
void startIndexKey();
void endIndexKey();
void startIndexValue();
void endIndexValue(const char *);
void startIndexValue(bool);
void endIndexValue(const char *,bool);
void startItemList() { t << "<ul>" << endl; }
void endItemList() { t << "</ul>" << endl; }
void startEnumList() { t << "<ol>" << endl; }
......
......@@ -944,8 +944,9 @@ void writeFileIndex(OutputList &ol)
ol.popGeneratorState();
}
ol.endIndexKey();
ol.startIndexValue();
if (!fd->briefDescription().isEmpty())
bool hasBrief = !fd->briefDescription().isEmpty();
ol.startIndexValue(hasBrief);
if (hasBrief)
{
//ol.docify(" (");
parseDoc(ol,
......@@ -954,7 +955,7 @@ void writeFileIndex(OutputList &ol)
abbreviate(fd->briefDescription(),fd->name()));
//ol.docify(")");
}
ol.endIndexValue(fd->getOutputFileBase());
ol.endIndexValue(fd->getOutputFileBase(),hasBrief);
//ol.popGeneratorState();
// --------------------------------------------------------
}
......@@ -986,7 +987,7 @@ void writeFileIndex(OutputList &ol)
int countNamespaces()
{
int count=0;
NamespaceListIterator nli(Doxygen::namespaceList);
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd;
for (;(nd=nli.current());++nli)
{
......@@ -1034,8 +1035,10 @@ void writeNamespaceIndex(OutputList &ol)
ol.endTextBlock();
bool first=TRUE;
NamespaceDef *nd=Doxygen::namespaceList.first();
while (nd)
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli)
{
if (nd->isLinkableInProject())
{
......@@ -1048,8 +1051,9 @@ void writeNamespaceIndex(OutputList &ol)
ol.startIndexKey();
ol.writeObjectLink(0,nd->getOutputFileBase(),0,nd->name());
ol.endIndexKey();
ol.startIndexValue();
if (!nd->briefDescription().isEmpty())
bool hasBrief = !nd->briefDescription().isEmpty();
ol.startIndexValue(hasBrief);
if (hasBrief)
{
//ol.docify(" (");
parseDoc(ol,
......@@ -1058,7 +1062,7 @@ void writeNamespaceIndex(OutputList &ol)
abbreviate(nd->briefDescription(),nd->name()));
//ol.docify(")");
}
ol.endIndexValue(nd->getOutputFileBase());
ol.endIndexValue(nd->getOutputFileBase(),hasBrief);
//ol.writeEndAnnoItem(nd->getOutputFileBase());
if (hasHtmlHelp)
{
......@@ -1069,7 +1073,6 @@ void writeNamespaceIndex(OutputList &ol)
ftvHelp->addContentsItem(FALSE,nd->getReference(),nd->getOutputFileBase(),0,nd->name());
}
}
nd=Doxygen::namespaceList.next();
}
if (!first) ol.endIndexList();
if (hasHtmlHelp)
......@@ -1124,8 +1127,9 @@ void writeAnnotatedClassList(OutputList &ol)
ol.startIndexKey();
ol.writeObjectLink(0,cd->getOutputFileBase(),0,cd->displayName());
ol.endIndexKey();
ol.startIndexValue();
if (!cd->briefDescription().isEmpty())
bool hasBrief = !cd->briefDescription().isEmpty();
ol.startIndexValue(hasBrief);
if (hasBrief)
{
//ol.docify(" (");
parseDoc(ol,
......@@ -1134,7 +1138,7 @@ void writeAnnotatedClassList(OutputList &ol)
abbreviate(cd->briefDescription(),cd->name()));
//ol.docify(")");
}
ol.endIndexValue(cd->getOutputFileBase());
ol.endIndexValue(cd->getOutputFileBase(),hasBrief);
//ol.writeEndAnnoItem(cd->getOutputFileBase());
if (hasHtmlHelp)
{
......@@ -1167,8 +1171,9 @@ void writePackageList(OutputList &ol)
ol.startIndexKey();
ol.writeObjectLink(0,pd->getOutputFileBase(),0,pd->name());
ol.endIndexKey();
ol.startIndexValue();
if (!pd->briefDescription().isEmpty())
bool hasBrief = !pd->briefDescription().isEmpty();
ol.startIndexValue(hasBrief);
if (hasBrief)
{
//ol.docify(" (");
parseDoc(ol,
......@@ -1177,7 +1182,7 @@ void writePackageList(OutputList &ol)
abbreviate(pd->briefDescription(),pd->name()));
//ol.docify(")");
}
ol.endIndexValue(pd->getOutputFileBase());
ol.endIndexValue(pd->getOutputFileBase(),hasBrief);
//ol.writeEndAnnoItem(pd->getOutputFileBase());
if (hasHtmlHelp)
......
......@@ -520,9 +520,10 @@ void LatexGenerator::startIndexSection(IndexSections is)
break;
case isNamespaceDocumentation:
{
NamespaceDef *nd=Doxygen::namespaceList.first();
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd;
bool found=FALSE;
while (nd && !found)
for (nli.toFirst();(nd=nli.current()) && !found;++nli)
{
if (nd->isLinkableInProject())
{
......@@ -530,7 +531,6 @@ void LatexGenerator::startIndexSection(IndexSections is)
t << "{"; // Namespace Documentation}\n":
found=TRUE;
}
nd=Doxygen::namespaceList.next();
}
}
break;
......@@ -683,25 +683,25 @@ void LatexGenerator::endIndexSection(IndexSections is)
break;
case isNamespaceDocumentation:
{
NamespaceDef *nd=Doxygen::namespaceList.first();
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd;
bool found=FALSE;
while (nd && !found)
for (nli.toFirst();(nd=nli.current()) && !found;++nli)
{
if (nd->isLinkableInProject())
{
t << "}\n\\input{" << nd->getOutputFileBase() << "}\n";
found=TRUE;
}
nd=Doxygen::namespaceList.next();
}
while (nd)
while ((nd=nli.current()))
{
if (nd->isLinkableInProject())
{
if (compactLatex) t << "\\input"; else t << "\\include";
t << "{" << nd->getOutputFileBase() << "}\n";
}
nd=Doxygen::namespaceList.next();
++nli;
}
}
break;
......@@ -916,14 +916,15 @@ void LatexGenerator::endIndexKey()
{
}
void LatexGenerator::startIndexValue()
void LatexGenerator::startIndexValue(bool hasBrief)
{
t << " (";
t << " ";
if (hasBrief) t << "(";
}
void LatexGenerator::endIndexValue(const char *name)
void LatexGenerator::endIndexValue(const char *name,bool hasBrief)
{
t << ")";
if (hasBrief) t << ")";
t << "}{\\pageref{" << name << "}}{}" << endl;
}
......
......@@ -65,8 +65,8 @@ class LatexGenerator : public OutputGenerator
void endIndexList() { t << "\\end{CompactList}" << endl; }
void startIndexKey();
void endIndexKey();
void startIndexValue();
void endIndexValue(const char *);
void startIndexValue(bool);
void endIndexValue(const char *,bool);
void startItemList() { t << "\\begin{CompactItemize}" << endl; }
void endItemList() { t << "\\end{CompactItemize}" << endl; }
void startEnumList() { t << "\\begin{enumerate}" << endl; }
......
......@@ -63,8 +63,8 @@ class ManGenerator : public OutputGenerator
void endIndexList() { newParagraph(); }
void startIndexKey() {}
void endIndexKey() {}
void startIndexValue() {}
void endIndexValue(const char *) {}
void startIndexValue(bool) {}
void endIndexValue(const char *,bool) {}
void startItemList() {}
void endItemList() { newParagraph(); }
void startEnumList() {}
......
......@@ -32,9 +32,9 @@ NamespaceDef::NamespaceDef(const char *df,int dl,
Definition(df,dl,name)
{
fileName=(QCString)"namespace"+name;
classSDict = new ClassSDict(257);
namespaceSDict = new NamespaceSDict(257);
m_innerCompounds = new SDict<Definition>(257);
classSDict = new ClassSDict(17);
namespaceSDict = new NamespaceSDict(17);
m_innerCompounds = new SDict<Definition>(17);
usingDirList = 0;
usingDeclList = 0;
setReference(lref);
......
......@@ -77,22 +77,8 @@ class NamespaceDef : public Definition
//protected:
// void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
private:
//QCString reference;
QCString fileName;
QStrList files;
/*! Classes inside this namespace */
ClassSDict *classSDict;
/*! Namespaces inside this namespace */
NamespaceSDict *namespaceSDict;
NamespaceList *usingDirList;
ClassList *usingDeclList;
SDict<Definition> *m_innerCompounds;
MemberList allMemberList;
public:
// members in the declaration part of the documentation
MemberList decDefineMembers;
MemberList decProtoMembers;
......@@ -110,6 +96,23 @@ class NamespaceDef : public Definition
MemberList docFuncMembers;
MemberList docVarMembers;
/*! Classes inside this namespace */
ClassSDict *classSDict;
/*! Namespaces inside this namespace */
NamespaceSDict *namespaceSDict;
private:
//QCString reference;
QCString fileName;
QStrList files;
NamespaceList *usingDirList;
ClassList *usingDeclList;
SDict<Definition> *m_innerCompounds;
MemberList allMemberList;
/* user defined member groups */
MemberGroupList *memberGroupList;
MemberGroupDict *memberGroupDict;
......
......@@ -316,8 +316,8 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void endIndexList() = 0;
virtual void startIndexKey() = 0;
virtual void endIndexKey() = 0;
virtual void startIndexValue() = 0;
virtual void endIndexValue(const char *) = 0;
virtual void startIndexValue(bool) = 0;
virtual void endIndexValue(const char *,bool) = 0;
virtual void startAlphabeticalIndexList() = 0;
virtual void endAlphabeticalIndexList() = 0;
virtual void writeIndexHeading(const char *s) = 0;
......
......@@ -109,10 +109,10 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startIndexKey); }
void endIndexKey()
{ forall(&OutputGenerator::endIndexKey); }
void startIndexValue()
{ forall(&OutputGenerator::startIndexValue); }
void endIndexValue(const char *name)
{ forall(&OutputGenerator::endIndexValue,name); }
void startIndexValue(bool b)
{ forall(&OutputGenerator::startIndexValue,b); }
void endIndexValue(const char *name,bool b)
{ forall(&OutputGenerator::endIndexValue,name,b); }
void startItemList()
{ forall(&OutputGenerator::startItemList); }
void endItemList()
......
......@@ -985,16 +985,16 @@ void RTFGenerator::startIndexSection(IndexSections is)
case isNamespaceDocumentation:
{
// Namespace Documentation
NamespaceDef *nd=Doxygen::namespaceList.first();
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd;
bool found=FALSE;
while (nd && !found)
for (nli.toFirst();(nd=nli.current()) && !found;++nli)
{
if (nd->isLinkableInProject())
{
beginRTFChapter();
found=TRUE;
}
nd=Doxygen::namespaceList.next();
}
}
break;
......@@ -1202,9 +1202,10 @@ void RTFGenerator::endIndexSection(IndexSections is)
break;
case isNamespaceDocumentation:
{
NamespaceDef *nd=Doxygen::namespaceList.first();
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd;
bool found=FALSE;
while (nd && !found)
for (nli.toFirst();(nd=nli.current()) && !found;++nli)
{
if (nd->isLinkableInProject())
{
......@@ -1214,9 +1215,8 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
found=TRUE;
}
nd=Doxygen::namespaceList.next();
}
while (nd)
while ((nd=nli.current()))
{
if (nd->isLinkableInProject())
{
......@@ -1226,7 +1226,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << nd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
}
nd=Doxygen::namespaceList.next();
++nli;
}
}
break;
......@@ -1578,15 +1578,16 @@ void RTFGenerator::endIndexKey()
{
}
void RTFGenerator::startIndexValue()
void RTFGenerator::startIndexValue(bool hasBrief)
{
t << " (";
t << " ";
if (hasBrief) t << "(";
}
void RTFGenerator::endIndexValue(const char *name)
void RTFGenerator::endIndexValue(const char *name,bool hasBrief)
{
DBG_RTF(t << "{\\comment (endIndexKey)}" << endl)
t << ")";
if (hasBrief) t << ")";
t << "} ";
if (name)
{
......@@ -1967,42 +1968,41 @@ void RTFGenerator::startDescList(SectionTypes)
void RTFGenerator::endDescTitle()
{
DBG_RTF(t << "{\\comment (endDescTitle) }" << endl)
//endBold();
endBold();
t << "}";
newParagraph();
//t << Rtf_Style_Reset << styleStack.top();
incrementIndentLevel();
t << Rtf_Style_Reset << Rtf_DList_DepthStyle();
}
void RTFGenerator::startParamList(ParamListTypes)
{
DBG_RTF(t << "{\\comment (startParamList)}" << endl)
t << "{";
incrementIndentLevel();
newParagraph();
void RTFGenerator::writeDescItem()
{
DBG_RTF(t << "{\\comment (writeDescItem) }" << endl)
// incrementIndentLevel();
//t << Rtf_Style_Reset << Rtf_CList_DepthStyle();
}
void RTFGenerator::endParamList()
void RTFGenerator::endDescList()
{
DBG_RTF(t << "{\\comment (endParamList)}" << endl)
DBG_RTF(t << "{\\comment (endDescList)}" << endl)
newParagraph();
t << "}";
//t << "}";
decrementIndentLevel();
m_omitParagraph = TRUE;
//t << Rtf_Style_Reset << styleStack.top() << endl;
t << Rtf_Style_Reset << endl;
}
void RTFGenerator::writeDescItem()
{
DBG_RTF(t << "{\\comment (writeDescItem) }" << endl)
// incrementIndentLevel();
//t << Rtf_Style_Reset << Rtf_CList_DepthStyle();
void RTFGenerator::startParamList(ParamListTypes)
{
DBG_RTF(t << "{\\comment (startParamList)}" << endl)
t << "{";
newParagraph();
}
void RTFGenerator::endDescList()
void RTFGenerator::endParamList()
{
DBG_RTF(t << "{\\comment (endDescList)}" << endl)
DBG_RTF(t << "{\\comment (endParamList)}" << endl)
newParagraph();
t << "}";
decrementIndentLevel();
......@@ -2010,6 +2010,7 @@ void RTFGenerator::endDescList()
//t << Rtf_Style_Reset << styleStack.top() << endl;
}
void RTFGenerator::startSection(const char *,const char *title,bool sub)
{
DBG_RTF(t << "{\\comment (startSection)}" << endl)
......
......@@ -66,8 +66,8 @@ class RTFGenerator : public OutputGenerator
void endIndexList();
void startIndexKey();
void endIndexKey();
void startIndexValue();
void endIndexValue(const char *);
void startIndexValue(bool);
void endIndexValue(const char *,bool);
void startItemList();
void endItemList();
void startEnumList();
......
......@@ -169,6 +169,12 @@ class SDict
return m_dict->find(key);
}
/*! Equavalent to find(). */
T *operator[](const char *key)
{
return m_dict->find(key);
}
/*! Returns the item at position \a i in the sorted dictionary */
T *at(uint i)
{
......
This diff is collapsed.
......@@ -266,7 +266,7 @@ QCString stripAnonymousNamespaceScope(const QCString &s)
while ((i=getScopeFragment(s,p,&l))!=-1)
{
//printf("Scope fragment %s\n",s.mid(i,l).data());
if (Doxygen::namespaceDict[s.left(i+l)]!=0)
if (Doxygen::namespaceSDict[s.left(i+l)]!=0)
{
if (s.at(i)!='@')
{
......@@ -438,11 +438,11 @@ NamespaceDef *getResolvedNamespace(const char *name)
{
warn_cont("Warning: possible recursive namespace alias detected for %s!\n",name);
}
return Doxygen::namespaceDict[subst->data()];
return Doxygen::namespaceSDict[subst->data()];
}
else
{
return Doxygen::namespaceDict[name];
return Doxygen::namespaceSDict[name];
}
}
......@@ -1208,7 +1208,7 @@ static void trimNamespaceScope(QCString &t1,QCString &t2,const QCString &nsName)
QCString fullScope=nsName.left(so);
if (!fullScope.isEmpty() && !scope.isEmpty()) fullScope+="::";
fullScope+=scope;
if (!fullScope.isEmpty() && Doxygen::namespaceDict[fullScope]!=0) // scope is a namespace
if (!fullScope.isEmpty() && Doxygen::namespaceSDict[fullScope]!=0) // scope is a namespace
{
t1 = t1.right(t1.length()-i1-2);
return;
......@@ -1234,7 +1234,7 @@ static void trimNamespaceScope(QCString &t1,QCString &t2,const QCString &nsName)
QCString fullScope=nsName.left(so);
if (!fullScope.isEmpty() && !scope.isEmpty()) fullScope+="::";
fullScope+=scope;
if (!fullScope.isEmpty() && Doxygen::namespaceDict[fullScope]!=0) // scope is a namespace
if (!fullScope.isEmpty() && Doxygen::namespaceSDict[fullScope]!=0) // scope is a namespace
{
t2 = t2.right(t2.length()-i2-2);
return;
......@@ -2174,7 +2174,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
namespaceName=mScope.copy();
}
if (!namespaceName.isEmpty() &&
(fnd=Doxygen::namespaceDict[namespaceName]) &&
(fnd=Doxygen::namespaceSDict[namespaceName]) &&
fnd->isLinkable()
)
{
......@@ -2363,7 +2363,7 @@ bool getScopeDefs(const char *docScope,const char *scope,
{
return TRUE; // class link written => quit
}
else if ((nd=Doxygen::namespaceDict[fullName]) && nd->isLinkable())
else if ((nd=Doxygen::namespaceSDict[fullName]) && nd->isLinkable())
{
return TRUE; // namespace link written => quit
}
......
......@@ -942,6 +942,9 @@ void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def)
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,md->getDefFileName(),md->getDefLine(),scopeName,md->name(),md->documentation());
t << " </detaileddescription>" << endl;
t << " <location file=\""
<< md->getDefFileName() << "\" line=\""
<< md->getDefLine() << "\"/>" << endl;
t << " </memberdef>" << endl;
}
......@@ -1094,26 +1097,59 @@ void generateXMLForClass(ClassDef *cd,QTextStream &t)
collaborationGraph.writeXML(t);
t << " </collaborationgraph>" << endl;
}
t << " <location file=\""
<< cd->getDefFileName() << "\" line=\""
<< cd->getDefLine() << "\"/>" << endl;
t << " </compounddef>" << endl;
}
void generateXMLFileSection(FileDef *fd,QTextStream &t,MemberList *ml,const char *kind)
void generateXMLSection(Definition *d,QTextStream &t,MemberList *ml,const char *kind)
{
if (ml->count()>0)
{
t << " <sectiondef kind=\"" << kind << "\">" << endl;
//t << " <memberlist>" << endl;
MemberListIterator mli(*ml);
MemberDef *md;
for (mli.toFirst();(md=mli.current());++mli)
{
generateXMLForMember(md,t,fd);
generateXMLForMember(md,t,d);
}
//t << " </memberlist>" << endl;
t << " </sectiondef>" << endl;
}
}
void generateXMLForNamespace(NamespaceDef *nd,QTextStream &t)
{
if (nd->isReference()) return; // skip external references
t << " <compounddef id=\""
<< nd->getOutputFileBase() << "\" kind=\"namespace\">" << endl;
t << " <compoundname>";
writeXMLString(t,nd->name());
t << "</compoundname>" << endl;
int numMembers = nd->decDefineMembers.count()+nd->decProtoMembers.count()+
nd->decTypedefMembers.count()+nd->decEnumMembers.count()+
nd->decFuncMembers.count()+nd->decVarMembers.count();
if (numMembers>0)
{
generateXMLSection(nd,t,&nd->decDefineMembers,"define");
generateXMLSection(nd,t,&nd->decProtoMembers,"prototype");
generateXMLSection(nd,t,&nd->decTypedefMembers,"typedef");
generateXMLSection(nd,t,&nd->decEnumMembers,"enum");
generateXMLSection(nd,t,&nd->decFuncMembers,"func");
generateXMLSection(nd,t,&nd->decVarMembers,"var");
}
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,nd->getDefFileName(),nd->getDefLine(),0,0,nd->briefDescription());
t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,nd->getDefFileName(),nd->getDefLine(),0,0,nd->documentation());
t << " </detaileddescription>" << endl;
t << " <location file=\""
<< nd->getDefFileName() << "\" line=\""
<< nd->getDefLine() << "\"/>" << endl;
t << " </compounddef>" << endl;
}
void generateXMLForFile(FileDef *fd,QTextStream &t)
{
if (fd->isReference()) return; // skip external references
......@@ -1127,14 +1163,12 @@ void generateXMLForFile(FileDef *fd,QTextStream &t)
fd->decFuncMembers.count()+fd->decVarMembers.count();
if (numMembers>0)
{
//t << " <sectionlist>" << endl;
generateXMLFileSection(fd,t,&fd->decDefineMembers,"define");
generateXMLFileSection(fd,t,&fd->decProtoMembers,"prototype");
generateXMLFileSection(fd,t,&fd->decTypedefMembers,"typedef");
generateXMLFileSection(fd,t,&fd->decEnumMembers,"enum");
generateXMLFileSection(fd,t,&fd->decFuncMembers,"func");
generateXMLFileSection(fd,t,&fd->decVarMembers,"var");
//t << " </sectionlist>" << endl;
generateXMLSection(fd,t,&fd->decDefineMembers,"define");
generateXMLSection(fd,t,&fd->decProtoMembers,"prototype");
generateXMLSection(fd,t,&fd->decTypedefMembers,"typedef");
generateXMLSection(fd,t,&fd->decEnumMembers,"enum");
generateXMLSection(fd,t,&fd->decFuncMembers,"func");
generateXMLSection(fd,t,&fd->decVarMembers,"var");
}
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,fd->getDefFileName(),fd->getDefLine(),0,0,fd->briefDescription());
......@@ -1145,6 +1179,9 @@ void generateXMLForFile(FileDef *fd,QTextStream &t)
t << " <sourcecode>" << endl;
writeXMLCodeBlock(t,fd);
t << " </sourcecode>" << endl;
t << " <location file=\""
<< fd->getDefFileName() << "\" line=\""
<< fd->getDefLine() << "\"/>" << endl;
t << " </compounddef>" << endl;
}
......
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