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

Release-1.3.9.1-20041213

parent 6042e1bf
DOXYGEN Version 1.3.9.1-20041206
DOXYGEN Version 1.3.9.1-20041213
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (06 December 2004)
Dimitri van Heesch (13 December 2004)
DOXYGEN Version 1.3.9.1_20041206
DOXYGEN Version 1.3.9.1_20041213
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) (06 December 2004)
Dimitri van Heesch (dimitri@stack.nl) (13 December 2004)
1.3.9.1-20041206
1.3.9.1-20041213
#! /bin/sh
#! /bin/bash
#
# $Id$
#
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.9.1_20041206
Version: 1.3.9.1_20041213
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -15156,16 +15156,18 @@ QCString qt_winQString2MB( const QString& s, int uclen )
if ( uclen == 0 )
return QCString();
BOOL used_def;
QCString mb(4096);
int bufSize=4096;
QCString mb(bufSize);
int len;
while ( !(len=WideCharToMultiByte(CP_ACP, 0, (const WCHAR*)s.unicode(), uclen,
mb.data(), mb.size()-1, 0, &used_def)) )
mb.data(), bufSize-1, 0, &used_def)) )
{
int r = GetLastError();
if ( r == ERROR_INSUFFICIENT_BUFFER ) {
mb.resize(1+WideCharToMultiByte( CP_ACP, 0,
(const WCHAR*)s.unicode(), uclen,
0, 0, 0, &used_def));
bufSize=1+WideCharToMultiByte( CP_ACP, 0,
(const WCHAR*)s.unicode(), uclen,
0, 0, 0, &used_def);
mb.resize(bufSize);
// and try again...
} else {
// Fail.
......
......@@ -34,7 +34,7 @@ SCString::SCString(int size)
m_data = (char *)malloc(size);
if (m_data)
{
m_data[0]='\0';
if (size>1) memset(m_data,' ',size-1);
m_data[size-1]='\0';
}
}
......
......@@ -144,6 +144,7 @@ inline void SCString::duplicate( const char *str)
}
inline SCString &SCString::duplicate( const char *str, int)
{
if (m_data) free(m_data);
duplicate(str);
return *this;
}
......
......@@ -2497,8 +2497,8 @@ QCString ClassDef::compoundTypeString() const
case Protocol: return "protocol";
case Category: return "category";
case Exception: return "exception";
default: return "unknown";
}
return "unknown";
}
QCString ClassDef::getOutputFileBase() const
......
......@@ -716,6 +716,7 @@ static MemberDef *setCallContextForVar(const QCString &name)
static void addDocCrossReference(MemberDef *src,MemberDef *dst)
{
if (dst->isTypedef() || dst->isEnumerate()) return; // don't add types
//printf("addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data());
if (Config_getBool("REFERENCED_BY_RELATION") &&
(src->isFunction() || src->isSlot())
......
......@@ -2655,6 +2655,13 @@ void Config::create()
TRUE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
"GROUP_GRAPHS",
"If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen \n"
"will generate a graph for groups, showing the direct groups dependencies\n",
TRUE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
"UML_LOOK",
"If the UML_LOOK tag is set to YES doxygen will generate inheritance and \n"
......
......@@ -197,6 +197,8 @@ class Definition
void writeNavigationPath(OutputList &ol) const;
protected:
void setLocalName(const QCString name) { m_localName=name; }
int m_startBodyLine; // line number of the start of the definition
int m_endBodyLine; // line number of the end of the definition
FileDef *m_bodyDef; // file definition containing the function body
......
......@@ -27,9 +27,9 @@ DirDef::DirDef(const char *path) : Definition(path,1,path)
{ // remove everything till the last /
m_shortName = m_shortName.mid(pi+1);
}
setLocalName(m_shortName);
m_fileList = new FileList;
m_classSDict = new ClassSDict(17);
m_usedDirs = new QDict<UsedDir>(257);
m_usedDirs->setAutoDelete(TRUE);
m_dirCount = g_dirCount++;
......@@ -39,6 +39,8 @@ DirDef::DirDef(const char *path) : Definition(path,1,path)
DirDef::~DirDef()
{
delete m_fileList;
delete m_usedDirs;
}
bool DirDef::isLinkableInProject() const
......
......@@ -57,9 +57,8 @@ class DirDef : public Definition
QCString shortName() const { return m_shortName; }
void addSubDir(DirDef *subdir);
FileList * getFiles() const { return m_fileList; }
ClassSDict * getClasses() const { return m_classSDict; }
void addFile(FileDef *fd);
const QList<DirDef> &subDirs() const { return m_subdirs; }
const DirList &subDirs() const { return m_subdirs; }
bool isCluster() const { return m_subdirs.count()>0; }
int level() const { return m_level; }
DirDef *parent() const { return m_parent; }
......@@ -90,7 +89,6 @@ class DirDef : public Definition
QCString m_dispName;
QCString m_shortName;
FileList *m_fileList; // list of files in the group
ClassSDict *m_classSDict; // list of classes in the group
int m_dirCount;
int m_level;
DirDef *m_parent;
......
This diff is collapsed.
......@@ -32,6 +32,8 @@ class ClassSDict;
class MemberDef;
class Definition;
class DirDef;
class GroupDef;
class DotGroupCollaboration;
enum GraphOutputFormat { BITMAP , EPS };
......@@ -66,6 +68,7 @@ class DotNode
void deleteNode(DotNodeList &deletedList,SDict<DotNode> *skipNodes=0);
void removeChild(DotNode *n);
void removeParent(DotNode *n);
int findParent( DotNode *n );
void write(QTextStream &t,GraphType gt,GraphOutputFormat f,
bool topDown,bool toChildren,int maxDistance,bool backArrows,bool reNumber);
int m_subgraphId;
......@@ -100,6 +103,8 @@ class DotNode
friend class DotInclDepGraph;
friend class DotNodeList;
friend class DotCallGraph;
friend class DotGroupCollaboration;
friend void writeDotGraph(
DotNode *root, GraphType gt,
GraphOutputFormat f, const QCString &baseName,
......@@ -113,6 +118,13 @@ class DotNode
int distance, bool backArrows
);
};
inline
int DotNode::findParent( DotNode *n )
{
if( !m_parents )
return -1;
return m_parents->find(n);
}
class DotGfxHierarchyTable
{
......@@ -217,6 +229,63 @@ class DotDirDeps
DirDef *m_dir;
};
class DotGroupCollaboration
{
public :
enum EdgeType
{ tmember = 0,
tclass,
tnamespace,
tfile,
tpages,
tdir,
thierarchy
};
class Link
{
public:
Link(const QCString lab,const QCString &u) : label(lab), url(u) {}
QCString label;
QCString url;
};
class Edge
{
public :
Edge(DotNode *start,DotNode *end,EdgeType type)
: pNStart(start), pNEnd(end), eType(type)
{ links.setAutoDelete(TRUE); }
DotNode* pNStart;
DotNode* pNEnd;
EdgeType eType;
QList<Link> links;
void write( QTextStream &t, int& curNodeId );
};
DotGroupCollaboration(GroupDef* gd);
~DotGroupCollaboration();
QCString writeGraph(QTextStream &t, GraphOutputFormat format,
const char *path,const char *relPath,
bool writeImageMap=TRUE);
void buildGraph(GroupDef* gd,int distance);
bool isTrivial() const;
private :
void addCollaborationMember( Definition* def, QCString& url, EdgeType eType );
void addMemberList( class MemberList* ml );
void writeGraphHeader(QTextStream &t);
Edge* addEdge( DotNode* _pNStart, DotNode* _pNEnd, EdgeType _eType,
const QCString& _label, const QCString& _url );
DotNode *m_rootNode;
int m_curNodeId;
QDict<DotNode> *m_usedNodes;
QCString m_diskName;
QList<Edge> m_edges;
};
void generateGraphLegend(const char *path);
void writeDotGraphFromFile(const char *inFile,const char *outDir,
const char *outFile,GraphOutputFormat format);
......
......@@ -8470,6 +8470,7 @@ void parseInput()
if (fi.size()==0)
{
err("No input read, no output generated!\n");
QDir().remove(tmpName);
delete root;
cleanUpDoxygen();
exit(1);
......
......@@ -33,6 +33,7 @@
#include "pagedef.h"
#include "docparser.h"
#include "searchindex.h"
#include "dot.h"
GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t,
const char *refFileName) : Definition(df,dl,na)
......@@ -483,6 +484,23 @@ void GroupDef::writeDocumentation(OutputList &ol)
}
}
if (Config_getBool("HAVE_DOT") && Config_getBool("GROUP_GRAPHS") )
{
DotGroupCollaboration graph(this);
if (!graph.isTrivial())
{
msg("Generating dependency graph for group %s\n",qualifiedName().data());
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
ol.newParagraph();
ol.startGroupCollaboration();
ol.parseText(theTranslator->trCollaborationDiagram(title));
ol.endGroupCollaboration(graph);
ol.popGeneratorState();
}
}
if (Config_getBool("DETAILS_AT_TOP"))
{
writeDetailedDocumentation(ol);
......
......@@ -112,6 +112,7 @@ class GroupDef : public Definition
GroupList * getSubGroups() const { return groupList; }
PageSDict * getPages() const { return pageDict; }
DirList * getDirs() const { return dirList; }
MemberList* getMembers() const { return allMemberList; }
protected:
void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
......
......@@ -1260,6 +1260,17 @@ void HtmlGenerator::endInclDepGraph(DotInclDepGraph &g)
g.writeGraph(t,BITMAP,dir,relPath);
}
void HtmlGenerator::startGroupCollaboration()
{
}
void HtmlGenerator::endGroupCollaboration(DotGroupCollaboration &g)
{
g.writeGraph(t,BITMAP,dir,relPath);
}
void HtmlGenerator::startCallGraph()
{
}
......
......@@ -190,6 +190,8 @@ class HtmlGenerator : public OutputGenerator
void endDotGraph(DotClassGraph &g);
void startInclDepGraph();
void endInclDepGraph(DotInclDepGraph &g);
void startGroupCollaboration();
void endGroupCollaboration(DotGroupCollaboration &g);
void startCallGraph();
void endCallGraph(DotCallGraph &g);
void startDirDepGraph();
......
......@@ -174,7 +174,7 @@ void HtmlHelpIndex::writeFields(QTextStream &t)
{ // finish old list at level 2
if (level2Started) t << " </UL>" << endl;
level2Started=FALSE;
// <Antony>
// Added this code so that an item with only one subitem is written
// without any subitem.
......
......@@ -1448,6 +1448,15 @@ void LatexGenerator::endInclDepGraph(DotInclDepGraph &g)
g.writeGraph(t,EPS,Config_getString("LATEX_OUTPUT"),relPath);
}
void LatexGenerator::startGroupCollaboration()
{
}
void LatexGenerator::endGroupCollaboration(DotGroupCollaboration &g)
{
g.writeGraph(t,EPS,Config_getString("LATEX_OUTPUT"),relPath);
}
void LatexGenerator::startCallGraph()
{
}
......
......@@ -184,6 +184,8 @@ class LatexGenerator : public OutputGenerator
void startInclDepGraph();
void endInclDepGraph(DotInclDepGraph &);
void startCallGraph();
void startGroupCollaboration();
void endGroupCollaboration(DotGroupCollaboration &g);
void endCallGraph(DotCallGraph &);
void startDirDepGraph();
void endDirDepGraph(DotDirDeps &g);
......
......@@ -229,6 +229,8 @@ class ManGenerator : public OutputGenerator
void endDotGraph(DotClassGraph &) {}
void startInclDepGraph() {}
void endInclDepGraph(DotInclDepGraph &) {}
void startGroupCollaboration() {}
void endGroupCollaboration(DotGroupCollaboration &) {}
void startCallGraph() {}
void endCallGraph(DotCallGraph &) {}
void startDirDepGraph() {}
......
......@@ -32,8 +32,10 @@ class DotInclDepGraph;
class DotCallGraph;
class DotDirDeps;
class DotGfxHierarchyTable;
class DotGroupCollaboration;
class DocNode;
class MemberDef;
class GroupDef;
/*! \brief Output interface for code parser.
*/
......@@ -338,6 +340,8 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void endDotGraph(DotClassGraph &g) = 0;
virtual void startInclDepGraph() = 0;
virtual void endInclDepGraph(DotInclDepGraph &g) = 0;
virtual void startGroupCollaboration() = 0;
virtual void endGroupCollaboration(DotGroupCollaboration &g) = 0;
virtual void startCallGraph() = 0;
virtual void endCallGraph(DotCallGraph &g) = 0;
virtual void startDirDepGraph() = 0;
......
......@@ -268,6 +268,7 @@ FORALL1(DotInclDepGraph &a1,a1)
FORALL1(DotCallGraph &a1,a1)
FORALL1(DotDirDeps &a1,a1)
FORALL1(DotGfxHierarchyTable &a1,a1)
FORALL1(DotGroupCollaboration &a1,a1)
FORALL1(SectionTypes a1,a1)
#if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE)
FORALL1(bool a1,a1)
......
......@@ -38,6 +38,7 @@ class DotDirDeps;
class DotInclDepGraph;
class DotGfxHierarchyTable;
class SectionDict;
class DotGroupCollaboration;
class OutputList : public OutputDocInterface
{
......@@ -327,6 +328,10 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startDirDepGraph); }
void endDirDepGraph(DotDirDeps &g)
{ forall(&OutputGenerator::endDirDepGraph,g); }
void startGroupCollaboration()
{ forall(&OutputGenerator::startGroupCollaboration); }
void endGroupCollaboration(DotGroupCollaboration &g)
{ forall(&OutputGenerator::endGroupCollaboration,g); }
void writeGraphicalHierarchy(DotGfxHierarchyTable &g)
{ forall(&OutputGenerator::writeGraphicalHierarchy,g); }
void startTextBlock(bool dense=FALSE)
......@@ -392,6 +397,7 @@ class OutputList : public OutputDocInterface
FORALLPROTO1(DotClassGraph &);
FORALLPROTO1(DotInclDepGraph &);
FORALLPROTO1(DotCallGraph &);
FORALLPROTO1(DotGroupCollaboration &);
FORALLPROTO1(DotDirDeps &);
FORALLPROTO1(DotGfxHierarchyTable &);
FORALLPROTO1(SectionTypes);
......
......@@ -2236,6 +2236,14 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
DBG_RTF(t << "{\\comment (endInclDepGraph)}" << endl)
}
void RTFGenerator::startGroupCollaboration()
{
}
void RTFGenerator::endGroupCollaboration(DotGroupCollaboration &)
{
}
void RTFGenerator::startCallGraph()
{
DBG_RTF(t << "{\\comment (startCallGraph)}" << endl)
......
......@@ -225,6 +225,8 @@ class RTFGenerator : public OutputGenerator
void endDotGraph(DotClassGraph &);
void startInclDepGraph();
void endInclDepGraph(DotInclDepGraph &);
void startGroupCollaboration();
void endGroupCollaboration(DotGroupCollaboration &g);
void startCallGraph();
void endCallGraph(DotCallGraph &);
void startDirDepGraph();
......
......@@ -376,7 +376,7 @@ static void addXRefItem(const char *listName,const char *itemTitle,const char *l
SectionInfo *si=new SectionInfo(listName,anchorLabel,
sectionTitle,SectionInfo::Anchor);
Doxygen::sectionDict.insert(anchorLabel,si);
current->anchors->append(new SectionInfo(*si));
current->anchors->append(si);
}
current->brief = slString.copy(); // restore orginial brief desc.
}
......@@ -2303,6 +2303,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->startLine = yyLineNr;
current_root->addSubEntry( current ) ;
}
else
{
delete current;
}
if ( *yytext == ',')
{
current = new Entry(*current);
......@@ -3665,6 +3669,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
else
{
if (current->section == Entry::ENUM_SEC)
{ // found "enum a b" -> variable
current->section = Entry::VARIABLE_SEC ;
}
current->type += ' ' ;
current->type += current->name ;
current->name = yytext ;
......@@ -5983,6 +5991,7 @@ static void parseCompounds(Entry *rt)
insideObjC = ce->objc;
//printf("---> Inner block starts at line %d\n",yyLineNr);
//current->reset();
if (current) delete current;
current = new Entry;
gstat = FALSE;
int ni=ce->name.findRev("::"); if (ni==-1) ni=0; else ni+=2;
......
......@@ -888,6 +888,102 @@ static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
t << " </listofallmembers>" << endl;
}
static void writeInnerClasses(const ClassSDict *cl,QTextStream &t)
{
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
if (cd->name().find('@')!=-1) // skip anonymous scopes
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
}
}
static void writeInnerNamespaces(const NamespaceSDict *nl,QTextStream &t)
{
if (nl)
{
NamespaceSDict::Iterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli)
{
if (nd->name().find('@')!=-1) // skip anonymouse scopes
{
t << " <innernamespace refid=\"" << nd->getOutputFileBase()
<< "\">" << convertToXML(nd->name()) << "</innernamespace>" << endl;
}
}
}
}
static void writeInnerFiles(const FileList *fl,QTextStream &t)
{
if (fl)
{
QListIterator<FileDef> fli(*fl);
FileDef *fd;
for (fli.toFirst();(fd=fli.current());++fli)
{
t << " <innerfile refid=\"" << fd->getOutputFileBase()
<< "\">" << convertToXML(fd->name()) << "</innerfile>" << endl;
}
}
}
static void writeInnerPages(const PageSDict *pl,QTextStream &t)
{
if (pl)
{
PageSDict::Iterator pli(*pl);
PageDef *pd;
for (pli.toFirst();(pd=pli.current());++pli)
{
t << " <innerpage refid=\"" << pd->getOutputFileBase();
if (pd->getGroupDef())
{
t << "_" << pd->name();
}
t << "\">" << convertToXML(pd->title()) << "</innerpage>" << endl;
}
}
}
static void writeInnerGroups(const GroupList *gl,QTextStream &t)
{
if (gl)
{
GroupListIterator gli(*gl);
GroupDef *sgd;
for (gli.toFirst();(sgd=gli.current());++gli)
{
t << " <innergroup refid=\"" << sgd->getOutputFileBase()
<< "\">" << convertToXML(sgd->groupTitle())
<< "</innergroup>" << endl;
}
}
}
static void writeInnerDirs(const DirList *dl,QTextStream &t)
{
if (dl)
{
QListIterator<DirDef> subdirs(*dl);
DirDef *subdir;
for (subdirs.toFirst();(subdir=subdirs.current());++subdirs)
{
t << " <innerdir refid=\"" << subdir->getOutputFileBase()
<< "\">" << convertToXML(subdir->displayName()) << "</innerdir>" << endl;
}
}
}
static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
{
// + brief description
......@@ -1027,18 +1123,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
}
}
ClassSDict *cl = cd->getInnerClasses();
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
writeInnerClasses(cd->getInnerClasses(),t);
writeTemplateList(cd,t);
MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict);
......@@ -1152,28 +1237,9 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti)
writeXMLString(t,nd->name());
t << "</compoundname>" << endl;
ClassSDict *cl = nd->classSDict;
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
NamespaceSDict *nl = nd->namespaceSDict;
if (nl)
{
NamespaceSDict::Iterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli)
{
t << " <innernamespace refid=\"" << nd->getOutputFileBase()
<< "\">" << convertToXML(nd->name()) << "</innernamespace>" << endl;
}
}
writeInnerClasses(nd->classSDict,t);
writeInnerNamespaces(nd->namespaceSDict,t);
MemberGroupSDict::Iterator mgli(*nd->memberGroupSDict);
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
......@@ -1287,28 +1353,8 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
t << " </invincdepgraph>" << endl;
}
ClassSDict *cl = fd->classSDict;
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
NamespaceSDict *nl = fd->namespaceSDict;
if (nl)
{
NamespaceSDict::Iterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli)
{
t << " <innernamespace refid=\"" << nd->getOutputFileBase()
<< "\">" << convertToXML(nd->name()) << "</innernamespace>" << endl;
}
}
writeInnerClasses(fd->classSDict,t);
writeInnerNamespaces(fd->namespaceSDict,t);
MemberGroupSDict::Iterator mgli(*fd->memberGroupSDict);
MemberGroup *mg;
......@@ -1380,67 +1426,11 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
t << " <compoundname>" << convertToXML(gd->name()) << "</compoundname>" << endl;
t << " <title>" << convertToXML(gd->groupTitle()) << "</title>" << endl;
FileList *fl = gd->getFiles();
if (fl)
{
QListIterator<FileDef> fli(*fl);
FileDef *fd = fl->first();
for (fli.toFirst();(fd=fli.current());++fli)
{
t << " <innerfile refid=\"" << fd->getOutputFileBase()
<< "\">" << convertToXML(fd->name()) << "</innerfile>" << endl;
}
}
ClassSDict *cl = gd->getClasses();
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
NamespaceSDict *nl = gd->getNamespaces();
if (nl)
{
NamespaceSDict::Iterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli)
{
t << " <innernamespace refid=\"" << nd->getOutputFileBase()
<< "\">" << convertToXML(nd->name()) << "</innernamespace>" << endl;
}
}
PageSDict *pl = gd->getPages();
if (pl)
{
PageSDict::Iterator pli(*pl);
PageDef *pd;
for (pli.toFirst();(pd=pli.current());++pli)
{
t << " <innerpage refid=\"" << pd->getOutputFileBase();
if (pd->getGroupDef())
{
t << "_" << pd->name();
}
t << "\">" << convertToXML(pd->title()) << "</innerpage>" << endl;
}
}
GroupList *gl = gd->getSubGroups();
if (gl)
{
GroupListIterator gli(*gl);
GroupDef *sgd;
for (gli.toFirst();(sgd=gli.current());++gli)
{
t << " <innergroup refid=\"" << sgd->getOutputFileBase()
<< "\">" << convertToXML(sgd->groupTitle())
<< "</innergroup>" << endl;
}
}
writeInnerFiles(gd->getFiles(),t);
writeInnerClasses(gd->getClasses(),t);
writeInnerNamespaces(gd->getNamespaces(),t);
writeInnerPages(gd->getPages(),t);
writeInnerGroups(gd->getSubGroups(),t);
MemberGroupSDict::Iterator mgli(*gd->memberGroupSDict);
MemberGroup *mg;
......@@ -1492,25 +1482,9 @@ static void generateXMLForDir(DirDef *dd,QTextStream &ti)
<< dd->getOutputFileBase() << "\" kind=\"dir\">" << endl;
t << " <compoundname>" << convertToXML(dd->displayName()) << "</compoundname>" << endl;
QListIterator<DirDef> subdirs(dd->subDirs());
DirDef *subdir;
for (subdirs.toFirst();(subdir=subdirs.current());++subdirs)
{
t << " <innerdir refid=\"" << subdir->getOutputFileBase()
<< "\">" << convertToXML(subdir->displayName()) << "</innerdir>" << endl;
}
FileList *fl = dd->getFiles();
if (fl)
{
QListIterator<FileDef> fli(*fl);
FileDef *fd = fl->first();
for (fli.toFirst();(fd=fli.current());++fli)
{
t << " <innerfile refid=\"" << fd->getOutputFileBase()
<< "\">" << convertToXML(fd->name()) << "</innerfile>" << endl;
}
}
writeInnerDirs(&dd->subDirs(),t);
writeInnerFiles(dd->getFiles(),t);
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,dd->briefFile(),dd->briefLine(),dd,0,dd->briefDescription());
t << " </briefdescription>" << endl;
......
......@@ -92,7 +92,7 @@ SOURCE=..\qtools\qcollection.cpp
# End Source File
# Begin Source File
SOURCE=..\qtools\qcstring.cpp
SOURCE=..\qtools\scstring.cpp
# End Source File
# Begin Source File
......
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