summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2021-01-01 10:23:23 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2021-01-01 10:23:23 (GMT)
commit54d939984cd99ee3414f6b8aee3a90a134ba8677 (patch)
treef1ea42983288eb540dc9ef3fda6673d25c630c89 /src
parent7f79d52ff6da7bcabc6b0250ca93b4307358e8e3 (diff)
downloadDoxygen-54d939984cd99ee3414f6b8aee3a90a134ba8677.zip
Doxygen-54d939984cd99ee3414f6b8aee3a90a134ba8677.tar.gz
Doxygen-54d939984cd99ee3414f6b8aee3a90a134ba8677.tar.bz2
Refactoring: replace Doxygen::directories by Doxygen::dirLinkedMap
Diffstat (limited to 'src')
-rw-r--r--src/context.cpp21
-rw-r--r--src/context.h9
-rw-r--r--src/dirdef.cpp57
-rw-r--r--src/dirdef.h18
-rw-r--r--src/docbookgen.cpp13
-rw-r--r--src/doxygen.cpp18
-rw-r--r--src/doxygen.h2
-rw-r--r--src/index.cpp18
-rw-r--r--src/latexgen.cpp25
-rw-r--r--src/rtfgen.cpp20
-rw-r--r--src/sqlite3gen.cpp10
-rw-r--r--src/util.cpp2
-rw-r--r--src/xmlgen.cpp10
13 files changed, 100 insertions, 123 deletions
diff --git a/src/context.cpp b/src/context.cpp
index f597200..24ef4b4 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -6517,15 +6517,13 @@ class NestingContext::Private : public GenericNodeListContext
addClass(cd.get(),rootOnly,visitedClasses);
}
}
- void addDirs(const DirSDict &dirDict,ClassDefSet &visitedClasses)
+ void addDirs(const DirLinkedMap &dirLinkedMap,ClassDefSet &visitedClasses)
{
- SDict<DirDef>::Iterator dli(dirDict);
- const DirDef *dd;
- for (dli.toFirst();(dd=dli.current());++dli)
+ for (const auto &dd : dirLinkedMap)
{
if (dd->getOuterScope()==Doxygen::globalScope)
{
- append(NestingNodeContext::alloc(m_parent,dd,m_index,m_level,FALSE,FALSE,FALSE,visitedClasses));
+ append(NestingNodeContext::alloc(m_parent,dd.get(),m_index,m_level,FALSE,FALSE,FALSE,visitedClasses));
m_index++;
}
}
@@ -6721,7 +6719,7 @@ void NestingContext::addNamespaces(const NamespaceLinkedRefMap &nsLinkedRefMap,b
p->addNamespaces(nsLinkedRefMap,rootOnly,addClasses,visitedClasses);
}
-void NestingContext::addDirs(const DirSDict &dirs,ClassDefSet &visitedClasses)
+void NestingContext::addDirs(const DirLinkedMap &dirs,ClassDefSet &visitedClasses)
{
p->addDirs(dirs,visitedClasses);
}
@@ -7117,11 +7115,9 @@ class DirListContext::Private : public GenericNodeListContext
public:
Private()
{
- const DirDef *dir;
- DirSDict::Iterator sdi(*Doxygen::directories);
- for (sdi.toFirst();(dir=sdi.current());++sdi)
+ for (const auto &dir : *Doxygen::dirLinkedMap)
{
- append(DirContext::alloc(dir));
+ append(DirContext::alloc(dir.get()));
}
}
};
@@ -7217,10 +7213,7 @@ class FileTreeContext::Private
// Add dirs tree
m_dirFileTree.reset(NestingContext::alloc(0,0));
ClassDefSet visitedClasses;
- if (Doxygen::directories)
- {
- m_dirFileTree->addDirs(*Doxygen::directories,visitedClasses);
- }
+ m_dirFileTree->addDirs(*Doxygen::dirLinkedMap,visitedClasses);
if (Doxygen::inputNameLinkedMap)
{
m_dirFileTree->addFiles(*Doxygen::inputNameLinkedMap,visitedClasses);
diff --git a/src/context.h b/src/context.h
index 4baa164..c6bf1ac 100644
--- a/src/context.h
+++ b/src/context.h
@@ -20,7 +20,6 @@
#include "template.h"
#include <qlist.h>
#include <stdio.h>
-#include "dirdef.h"
#include "classdef.h"
#include "searchindex.h"
#include "membergroup.h"
@@ -43,10 +42,12 @@ class FileNameLinkedMap;
class ClassLinkedMap;
class MemberNameInfoLinkedMap;
+class DirDef;
+class DirLinkedMap;
+class DirList;
+
class FileDef;
class FileList;
-class DirSDict;
-class DirDef;
struct IncludeInfo;
class MemberList;
class MemberSDict;
@@ -550,7 +551,7 @@ class NestingContext : public RefCountedContext, public TemplateListIntf
void addNamespaces(const NamespaceLinkedRefMap &nsLinkedMap,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses);
void addClasses(const ClassLinkedMap &clLinkedMap,bool rootOnly,ClassDefSet &visitedClasses);
void addClasses(const ClassLinkedRefMap &clLinkedMap,bool rootOnly,ClassDefSet &visitedClasses);
- void addDirs(const DirSDict &,ClassDefSet &visitedClasses);
+ void addDirs(const DirLinkedMap &,ClassDefSet &visitedClasses);
void addDirs(const DirList &,ClassDefSet &visitedClasses);
void addFiles(const FileNameLinkedMap &,ClassDefSet &visitedClasses);
void addFiles(const FileList &,ClassDefSet &visitedClasses);
diff --git a/src/dirdef.cpp b/src/dirdef.cpp
index 52cbe6f..c8198ab 100644
--- a/src/dirdef.cpp
+++ b/src/dirdef.cpp
@@ -799,13 +799,14 @@ FilePair *UsedDir::findFilePair(const char *name)
DirDef *DirDefImpl::createNewDir(const char *path)
{
ASSERT(path!=0);
- DirDef *dir = Doxygen::directories->find(path);
+ DirDef *dir = Doxygen::dirLinkedMap->find(path);
if (dir==0) // new dir
{
+ dir = Doxygen::dirLinkedMap->add(path,
+ std::unique_ptr<DirDef>(
+ createDirDef(path)));
//printf("Adding new dir %s\n",path);
- dir = createDirDef(path);
//printf("createNewDir %s short=%s\n",path,dir->shortName().data());
- Doxygen::directories->append(path,dir);
}
return dir;
}
@@ -939,14 +940,11 @@ void DirRelation::writeDocumentation(OutputList &ol)
static void computeCommonDirPrefix()
{
QCString path;
- DirDef *dir;
- DirSDict::Iterator sdi(*Doxygen::directories);
- if (Doxygen::directories->count()>0) // we have at least one dir
+ auto it = Doxygen::dirLinkedMap->begin();
+ if (!Doxygen::dirLinkedMap->empty()) // we have at least one dir
{
// start will full path of first dir
- sdi.toFirst();
- dir=sdi.current();
- path=dir->name();
+ path=(*it)->name();
int i=path.findRev('/',(int)path.length()-2);
path=path.left(i+1);
bool done=FALSE;
@@ -959,8 +957,8 @@ static void computeCommonDirPrefix()
while (!done)
{
uint l = path.length();
- uint count=0;
- for (sdi.toFirst();(dir=sdi.current());++sdi)
+ size_t count=0;
+ for (const auto &dir : *Doxygen::dirLinkedMap)
{
QCString dirName = dir->name();
if (dirName.length()>path.length())
@@ -998,7 +996,7 @@ static void computeCommonDirPrefix()
}
count++;
}
- if (count==Doxygen::directories->count())
+ if (count==Doxygen::dirLinkedMap->size())
// path matches for all directories -> found the common prefix
{
done=TRUE;
@@ -1006,7 +1004,7 @@ static void computeCommonDirPrefix()
}
}
}
- for (sdi.toFirst();(dir=sdi.current());++sdi)
+ for (const auto &dir : *Doxygen::dirLinkedMap)
{
QCString diskName = dir->name().right(dir->name().length()-path.length());
dir->setDiskName(diskName);
@@ -1025,7 +1023,7 @@ void buildDirectories()
if (fd->getReference().isEmpty())
{
DirDef *dir;
- if ((dir=Doxygen::directories->find(fd->getPath()))==0) // new directory
+ if ((dir=Doxygen::dirLinkedMap->find(fd->getPath()))==0) // new directory
{
dir = DirDefImpl::mergeDirectoryInTree(fd->getPath());
}
@@ -1038,45 +1036,48 @@ void buildDirectories()
}
}
- //DirDef *root = new DirDef("root:");
// compute relations between directories => introduce container dirs.
- DirDef *dir;
- DirSDict::Iterator sdi(*Doxygen::directories);
- for (sdi.toFirst();(dir=sdi.current());++sdi)
+ for (const auto &dir : *Doxygen::dirLinkedMap)
{
QCString name = dir->name();
int i=name.findRev('/',(int)name.length()-2);
if (i>0)
{
- DirDef *parent = Doxygen::directories->find(name.left(i+1));
+ DirDef *parent = Doxygen::dirLinkedMap->find(name.left(i+1));
//if (parent==0) parent=root;
if (parent)
{
- parent->addSubDir(dir);
+ parent->addSubDir(dir.get());
//printf("DirDefImpl::addSubdir(): Adding subdir\n%s to\n%s\n",
// dir->displayName().data(), parent->displayName().data());
}
}
}
- for (sdi.toFirst();(dir=sdi.current());++sdi)
+
+ // sort the directory contents
+ for (const auto &dir : *Doxygen::dirLinkedMap)
{
dir->sort();
}
- Doxygen::directories->sort();
+
+ // short the directories themselves
+ std::sort(Doxygen::dirLinkedMap->begin(),
+ Doxygen::dirLinkedMap->end(),
+ [](const auto &d1,const auto &d2)
+ { return qstricmp(d1->shortName(),d2->shortName()) < 0; });
+
computeCommonDirPrefix();
}
void computeDirDependencies()
{
- DirDef *dir;
- DirSDict::Iterator sdi(*Doxygen::directories);
// compute nesting level for each directory
- for (sdi.toFirst();(dir=sdi.current());++sdi)
+ for (const auto &dir : *Doxygen::dirLinkedMap)
{
dir->setLevel();
}
// compute uses dependencies between directories
- for (sdi.toFirst();(dir=sdi.current());++sdi)
+ for (const auto &dir : *Doxygen::dirLinkedMap)
{
//printf("computeDependencies for %s: #dirs=%d\n",dir->name().data(),Doxygen::directories.count());
dir->computeDependencies();
@@ -1086,9 +1087,7 @@ void computeDirDependencies()
void generateDirDocs(OutputList &ol)
{
- DirDef *dir;
- DirSDict::Iterator sdi(*Doxygen::directories);
- for (sdi.toFirst();(dir=sdi.current());++sdi)
+ for (const auto &dir : *Doxygen::dirLinkedMap)
{
ol.pushGeneratorState();
if (!dir->hasDocumentation())
diff --git a/src/dirdef.h b/src/dirdef.h
index bbb5fe6..66cc97d 100644
--- a/src/dirdef.h
+++ b/src/dirdef.h
@@ -25,6 +25,7 @@
#include <qglobal.h>
#include <qcstring.h>
+
class FileList;
class QStrList;
class FileDef;
@@ -34,9 +35,7 @@ class FTextStream;
class FilePair;
class FilePairDict;
class DirDef;
-
-/** A list of directories. */
-typedef std::vector<DirDef*> DirList;
+class DirList;
bool compareDirDefs(const DirDef *item1, const DirDef *item2);
@@ -153,6 +152,7 @@ class DirRelation
UsedDir *m_dst;
};
+#if 0
/** A sorted dictionary of DirDef objects. */
class DirSDict : public SDict<DirDef>
{
@@ -163,6 +163,18 @@ class DirSDict : public SDict<DirDef>
return qstricmp(item1->shortName(),item2->shortName());
}
};
+#endif
+
+/** A linked map of directories */
+class DirLinkedMap : public LinkedMap<DirDef>
+{
+};
+
+/** A list of directories. */
+class DirList : public std::vector<const DirDef*>
+{
+};
+
// ------------------
diff --git a/src/docbookgen.cpp b/src/docbookgen.cpp
index f810d7b..05e9347 100644
--- a/src/docbookgen.cpp
+++ b/src/docbookgen.cpp
@@ -497,22 +497,11 @@ DB_GEN_C2("IndexSections " << is)
case isDirDocumentation:
{
t << "</title>" << endl;
- SDict<DirDef>::Iterator dli(*Doxygen::directories);
- DirDef *dd;
- bool found=FALSE;
- for (dli.toFirst();(dd=dli.current()) && !found;++dli)
+ for (const auto &dd : *Doxygen::dirLinkedMap)
{
if (dd->isLinkableInProject())
{
t << "< xi:include href=\"" << dd->getOutputFileBase() << ".xml\" xmlns:xi=\"http://www.w3.org/2001/XInclude\"/>" << endl;
- found=TRUE;
- }
- }
- for (;(dd=dli.current());++dli)
- {
- if (dd->isLinkableInProject())
- {
- t << " <xi:include href=\"" << dd->getOutputFileBase() << ".xml\" xmlns:xi=\"http://www.w3.org/2001/XInclude\"/>" << endl;
}
}
}
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index c8813ef..bd2f69e 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -148,7 +148,7 @@ QDict<Definition> *Doxygen::clangUsrMap = 0;
bool Doxygen::outputToWizard=FALSE;
QDict<int> * Doxygen::htmlDirMap = 0;
Cache<std::string,LookupInfo> *Doxygen::lookupCache;
-DirSDict *Doxygen::directories;
+DirLinkedMap *Doxygen::dirLinkedMap;
SDict<DirRelation> Doxygen::dirRelations(257);
ParserManager *Doxygen::parserManager = 0;
QCString Doxygen::htmlFileExtension;
@@ -4956,9 +4956,7 @@ static void addListReferences()
}
}
- DirSDict::Iterator ddi(*Doxygen::directories);
- DirDef *dd = 0;
- for (ddi.toFirst();(dd=ddi.current());++ddi)
+ for (const auto &dd : *Doxygen::dirLinkedMap)
{
QCString name = dd->getOutputFileBase();
//if (dd->getGroupDef())
@@ -8573,9 +8571,8 @@ static void findDirDocumentation(const Entry *root)
{
normalizedName+='/';
}
- DirDef *dir,*matchingDir=0;
- SDict<DirDef>::Iterator sdi(*Doxygen::directories);
- for (sdi.toFirst();(dir=sdi.current());++sdi)
+ DirDef *matchingDir=0;
+ for (const auto &dir : *Doxygen::dirLinkedMap)
{
//printf("Dir: %s<->%s\n",dir->name().data(),normalizedName.data());
if (dir->name().right(normalizedName.length())==normalizedName)
@@ -8591,7 +8588,7 @@ static void findDirDocumentation(const Entry *root)
}
else
{
- matchingDir=dir;
+ matchingDir=dir.get();
}
}
}
@@ -10153,8 +10150,7 @@ void initDoxygen()
Doxygen::namespaceLinkedMap = new NamespaceLinkedMap;
Doxygen::classLinkedMap = new ClassLinkedMap;
Doxygen::hiddenClassLinkedMap = new ClassLinkedMap;
- Doxygen::directories = new DirSDict(17);
- Doxygen::directories->setAutoDelete(TRUE);
+ Doxygen::dirLinkedMap = new DirLinkedMap;
Doxygen::pageLinkedMap = new PageLinkedMap; // all doc pages
Doxygen::exampleLinkedMap = new PageLinkedMap; // all examples
Doxygen::tagDestinationDict.setAutoDelete(TRUE);
@@ -10211,7 +10207,7 @@ void cleanUpDoxygen()
delete Doxygen::functionNameLinkedMap;
delete Doxygen::groupLinkedMap;
delete Doxygen::namespaceLinkedMap;
- delete Doxygen::directories;
+ delete Doxygen::dirLinkedMap;
DotManager::deleteInstance();
}
diff --git a/src/doxygen.h b/src/doxygen.h
index 8fbd51a..a75618c 100644
--- a/src/doxygen.h
+++ b/src/doxygen.h
@@ -128,7 +128,7 @@ class Doxygen
static bool outputToWizard;
static QDict<int> *htmlDirMap;
static Cache<std::string,LookupInfo> *lookupCache;
- static DirSDict *directories;
+ static DirLinkedMap *dirLinkedMap;
static SDict<DirRelation> dirRelations;
static ParserManager *parserManager;
static bool suppressDocWarnings;
diff --git a/src/index.cpp b/src/index.cpp
index f8ee056..c54f7a2 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -534,7 +534,7 @@ static void writeClassTreeToOutput(OutputList &ol,const BaseClassList &bcl,int l
//----------------------------------------------------------------------------
-static bool dirHasVisibleChildren(DirDef *dd)
+static bool dirHasVisibleChildren(const DirDef *dd)
{
if (dd->hasDocumentation()) return TRUE;
@@ -553,7 +553,7 @@ static bool dirHasVisibleChildren(DirDef *dd)
}
}
- for(const auto subdd : dd->subDirs())
+ for(const auto &subdd : dd->subDirs())
{
if (dirHasVisibleChildren(subdd))
{
@@ -564,7 +564,7 @@ static bool dirHasVisibleChildren(DirDef *dd)
}
//----------------------------------------------------------------------------
-static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv,bool addToIndex)
+static void writeDirTreeNode(OutputList &ol, const DirDef *dd, int level, FTVHelp* ftv,bool addToIndex)
{
if (level>20)
{
@@ -613,7 +613,7 @@ static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv
if (dd->subDirs().size()>0)
{
startIndexHierarchy(ol,level+1);
- for(const auto subdd : dd->subDirs())
+ for(const auto &subdd : dd->subDirs())
{
writeDirTreeNode(ol,subdd,level+1,ftv,addToIndex);
}
@@ -726,13 +726,11 @@ static void writeDirHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
startIndexHierarchy(ol,0);
if (fullPathNames)
{
- SDict<DirDef>::Iterator dli(*Doxygen::directories);
- DirDef *dd;
- for (dli.toFirst();(dd=dli.current());++dli)
+ for (const auto &dd : *Doxygen::dirLinkedMap)
{
if (dd->getOuterScope()==Doxygen::globalScope)
{
- writeDirTreeNode(ol,dd,0,ftv,addToIndex);
+ writeDirTreeNode(ol,dd.get(),0,ftv,addToIndex);
}
}
}
@@ -3670,9 +3668,7 @@ static int countGroups()
static int countDirs()
{
int count=0;
- SDict<DirDef>::Iterator dli(*Doxygen::directories);
- DirDef *dd;
- for (dli.toFirst();(dd=dli.current());++dli)
+ for (const auto &dd : *Doxygen::dirLinkedMap)
{
if (dd->isLinkableInProject())
{
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 485b513..ece344f 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -1011,9 +1011,7 @@ void LatexGenerator::startIndexSection(IndexSections is)
break;
case isDirDocumentation:
{
- SDict<DirDef>::Iterator dli(*Doxygen::directories);
- DirDef *dd;
- for (dli.toFirst();(dd=dli.current());++dli)
+ for (const auto &dd : *Doxygen::dirLinkedMap)
{
if (dd->isLinkableInProject())
{
@@ -1159,24 +1157,17 @@ void LatexGenerator::endIndexSection(IndexSections is)
break;
case isDirDocumentation:
{
- SDict<DirDef>::Iterator dli(*Doxygen::directories);
- DirDef *dd;
bool found=FALSE;
- for (dli.toFirst();(dd=dli.current()) && !found;++dli)
+ for (const auto &dd : *Doxygen::dirLinkedMap)
{
if (dd->isLinkableInProject())
{
- t << "}\n\\input{" << dd->getOutputFileBase() << "}\n";
- found=TRUE;
- }
- }
- for (;(dd=dli.current());++dli)
- {
- if (dd->isLinkableInProject())
- {
- //if (compactLatex) t << "\\input"; else t << "\\include";
- t << "\\input";
- t << "{" << dd->getOutputFileBase() << "}\n";
+ if (!found)
+ {
+ t << "}\n";
+ found = TRUE;
+ }
+ t << "\\input{" << dd->getOutputFileBase() << "}\n";
}
}
}
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index a7cb1e3..94b6893 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -484,9 +484,7 @@ void RTFGenerator::startIndexSection(IndexSections is)
case isDirDocumentation:
{
//Directory Documentation
- SDict<DirDef>::Iterator dli(*Doxygen::directories);
- DirDef *dd;
- for (dli.toFirst();(dd=dli.current());++dli)
+ for (const auto &dd : *Doxygen::dirLinkedMap)
{
if (dd->isLinkableInProject())
{
@@ -739,12 +737,18 @@ void RTFGenerator::endIndexSection(IndexSections is)
break;
case isModuleDocumentation:
{
+ bool first=true;
t << "{\\tc \\v " << theTranslator->trModuleDocumentation() << "}"<< endl;
for (const auto &gd : *Doxygen::groupLinkedMap)
{
if (!gd->isReference())
{
t << "\\par " << rtf_Style_Reset << endl;
+ if (!first)
+ {
+ beginRTFSection();
+ }
+ first=false;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << gd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
@@ -754,14 +758,18 @@ void RTFGenerator::endIndexSection(IndexSections is)
break;
case isDirDocumentation:
{
- SDict<DirDef>::Iterator dli(*Doxygen::directories);
- DirDef *dd;
+ bool first=true;
t << "{\\tc \\v " << theTranslator->trDirDocumentation() << "}"<< endl;
- for (dli.toFirst();(dd=dli.current());++dli)
+ for (const auto &dd : *Doxygen::dirLinkedMap)
{
if (dd->isLinkableInProject())
{
t << "\\par " << rtf_Style_Reset << endl;
+ if (!first)
+ {
+ beginRTFSection();
+ }
+ first=false;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << dd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
diff --git a/src/sqlite3gen.cpp b/src/sqlite3gen.cpp
index 7c7e77b..38654bc 100644
--- a/src/sqlite3gen.cpp
+++ b/src/sqlite3gen.cpp
@@ -2548,14 +2548,10 @@ void generateSqlite3()
}
// + dirs
+ for (const auto &dd : *Doxygen::dirLinkedMap)
{
- const DirDef *dir;
- DirSDict::Iterator sdi(*Doxygen::directories);
- for (sdi.toFirst();(dir=sdi.current());++sdi)
- {
- msg("Generating Sqlite3 output for dir %s\n",dir->name().data());
- generateSqlite3ForDir(dir);
- }
+ msg("Generating Sqlite3 output for dir %s\n",dd->name().data());
+ generateSqlite3ForDir(dd.get());
}
// + examples
diff --git a/src/util.cpp b/src/util.cpp
index b7fedc3..b520505 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -3254,7 +3254,7 @@ bool resolveLink(/* in */ const char *scName,
*resContext=nd;
return TRUE;
}
- else if ((dir=Doxygen::directories->find(QFileInfo(linkRef).absFilePath().utf8()+"/"))
+ else if ((dir=Doxygen::dirLinkedMap->find(QFileInfo(linkRef).absFilePath().utf8()+"/"))
&& dir->isLinkable()) // TODO: make this location independent like filedefs
{
*resContext=dir;
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index c6d5bc3..350be48 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -1955,14 +1955,10 @@ void generateXML()
msg("Generating XML output for page %s\n",pd->name().data());
generateXMLForPage(pd.get(),t,FALSE);
}
+ for (const auto &dd : *Doxygen::dirLinkedMap)
{
- DirDef *dir;
- DirSDict::Iterator sdi(*Doxygen::directories);
- for (sdi.toFirst();(dir=sdi.current());++sdi)
- {
- msg("Generate XML output for dir %s\n",dir->name().data());
- generateXMLForDir(dir,t);
- }
+ msg("Generate XML output for dir %s\n",dd->name().data());
+ generateXMLForDir(dd.get(),t);
}
for (const auto &pd : *Doxygen::exampleLinkedMap)
{