Imported Upstream version 1.9.8
[platform/upstream/doxygen.git] / src / dirdef.cpp
index 4efd7c9..d0889a3 100644 (file)
@@ -30,6 +30,7 @@
 #include "docparser.h"
 #include "definitionimpl.h"
 #include "filedef.h"
+#include "trace.h"
 
 
 //----------------------------------------------------------------------
@@ -40,37 +41,40 @@ class DirDefImpl : public DefinitionMixin<DirDef>
     DirDefImpl(const QCString &path);
     virtual ~DirDefImpl();
 
-    virtual DefType definitionType() const { return TypeDir; }
-    virtual CodeSymbolType codeSymbolType() const { return CodeSymbolType::Default; }
-    virtual QCString getOutputFileBase() const;
-    virtual QCString anchor() const { return QCString(); }
-    virtual bool isLinkableInProject() const;
-    virtual bool isLinkable() const;
-    virtual QCString displayName(bool=TRUE) const { return m_dispName; }
-    virtual const QCString shortName() const { return m_shortName; }
-    virtual void addSubDir(DirDef *subdir);
-    virtual const FileList &getFiles() const { return m_fileList; }
-    virtual void addFile(const FileDef *fd);
-    virtual const DirList &subDirs() const { return m_subdirs; }
-    virtual bool hasSubdirs() const { return !m_subdirs.empty(); }
-    virtual int level() const { return m_level; }
-    virtual DirDef *parent() const { return m_parent; }
-    virtual int dirCount() const { return m_dirCount; }
-    virtual const UsedDirLinkedMap &usedDirs() const { return m_usedDirs; }
-    virtual bool isParentOf(const DirDef *dir) const;
-    virtual bool depGraphIsTrivial() const;
-    virtual QCString shortTitle() const;
-    virtual bool hasDetailedDescription() const;
-    virtual void writeDocumentation(OutputList &ol);
-    virtual void writeTagFile(TextStream &t);
-    virtual void setDiskName(const QCString &name) { m_diskName = name; }
-    virtual void sort();
-    virtual void setParent(DirDef *parent);
-    virtual void setDirCount(int count);
-    virtual void setLevel();
+    virtual DefType definitionType() const override { return TypeDir; }
+    virtual CodeSymbolType codeSymbolType() const override { return CodeSymbolType::Default; }
+    virtual QCString getOutputFileBase() const override;
+    virtual QCString anchor() const override { return QCString(); }
+    virtual bool isLinkableInProject() const override;
+    virtual bool isLinkable() const override;
+    virtual QCString displayName(bool=TRUE) const override { return m_dispName; }
+    virtual const QCString shortName() const override { return m_shortName; }
+    virtual void addSubDir(DirDef *subdir) override;
+    virtual const FileList &getFiles() const override { return m_fileList; }
+    virtual void addFile(const FileDef *fd) override;
+    virtual const DirList &subDirs() const override { return m_subdirs; }
+    virtual bool hasSubdirs() const override { return !m_subdirs.empty(); }
+    virtual int level() const override { return m_level; }
+    virtual DirDef *parent() const override { return m_parent; }
+    virtual int dirCount() const override { return m_dirCount; }
+    virtual const UsedDirLinkedMap &usedDirs() const override { return m_usedDirs; }
+    virtual bool isParentOf(const DirDef *dir) const override;
+    virtual bool depGraphIsTrivial() const override;
+    virtual QCString shortTitle() const override;
+    virtual bool hasDetailedDescription() const override;
+    virtual void writeDocumentation(OutputList &ol) override;
+    virtual void writeTagFile(TextStream &t) override;
+    virtual void setDiskName(const QCString &name) override { m_diskName = name; }
+    virtual void sort() override;
+    virtual void setParent(DirDef *parent) override;
+    virtual void setDirCount(int count) override;
+    virtual void setLevel() override;
     virtual void addUsesDependency(const DirDef *usedDir,const FileDef *srcFd,
-                                   const FileDef *dstFd,bool srcDirect, bool dstDirect);
-    virtual void computeDependencies();
+                                   const FileDef *dstFd,bool srcDirect, bool dstDirect) override;
+    virtual void computeDependencies() override;
+
+    virtual bool hasDirectoryGraph() const override;
+    virtual void enableDirectoryGraph(bool e) override;
 
   public:
     static DirDef *mergeDirectoryInTree(const QCString &path);
@@ -97,6 +101,7 @@ class DirDefImpl : public DefinitionMixin<DirDef>
     int m_level;
     DirDef *m_parent;
     UsedDirLinkedMap m_usedDirs;
+    bool m_hasDirectoryGraph = false;
 };
 
 DirDef *createDirDef(const QCString &path)
@@ -133,6 +138,8 @@ DirDefImpl::DirDefImpl(const QCString &path) : DefinitionMixin(path,1,1,path)
 
   m_level=-1;
   m_parent=0;
+  m_hasDirectoryGraph=Config_getBool(DIRECTORY_GRAPH);
+
 }
 
 DirDefImpl::~DirDefImpl()
@@ -180,11 +187,13 @@ void DirDefImpl::sort()
 
 static QCString encodeDirName(const QCString &anchor)
 {
+  AUTO_TRACE();
   // convert to md5 hash
-  uchar md5_sig[16];
+  uint8_t md5_sig[16];
   char sigStr[33];
   MD5Buffer(anchor.data(),anchor.length(),md5_sig);
   MD5SigToString(md5_sig,sigStr);
+  AUTO_TRACE_EXIT("result={}",sigStr);
   return sigStr;
 
   // old algorithm
@@ -212,22 +221,23 @@ static QCString encodeDirName(const QCString &anchor)
 
 QCString DirDefImpl::getOutputFileBase() const
 {
-  //printf("DirDefImpl::getOutputFileBase() %s->dir_%s\n",
-  //    qPrint(m_diskName),qPrint(encodeDirName(m_diskName)));
-  return "dir_"+encodeDirName(m_diskName);
+  QCString dir = "dir_"+encodeDirName(m_diskName);
+  AUTO_TRACE("diskName={} result={}",m_diskName,dir);
+  return dir;
 }
 
 void DirDefImpl::writeDetailedDescription(OutputList &ol,const QCString &title)
 {
+  AUTO_TRACE();
   if ((!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF)) ||
       !documentation().isEmpty())
   {
     ol.pushGeneratorState();
-      ol.disable(OutputGenerator::Html);
+      ol.disable(OutputType::Html);
       ol.writeRuler();
     ol.popGeneratorState();
     ol.pushGeneratorState();
-      ol.disableAllBut(OutputGenerator::Html);
+      ol.disableAllBut(OutputType::Html);
       ol.writeAnchor(QCString(),"details");
     ol.popGeneratorState();
     ol.startGroupHeader();
@@ -245,12 +255,11 @@ void DirDefImpl::writeDetailedDescription(OutputList &ol,const QCString &title)
         !documentation().isEmpty())
     {
       ol.pushGeneratorState();
-        ol.disable(OutputGenerator::Man);
-        ol.disable(OutputGenerator::RTF);
-        // ol.newParagraph();  // FIXME:PARA
+        ol.disable(OutputType::Man);
+        ol.disable(OutputType::RTF);
         ol.enableAll();
-        ol.disableAllBut(OutputGenerator::Man);
-        ol.enable(OutputGenerator::Latex);
+        ol.disableAllBut(OutputType::Man);
+        ol.enable(OutputType::Latex);
         ol.writeString("\n\n");
       ol.popGeneratorState();
     }
@@ -266,6 +275,7 @@ void DirDefImpl::writeDetailedDescription(OutputList &ol,const QCString &title)
 
 void DirDefImpl::writeBriefDescription(OutputList &ol)
 {
+  AUTO_TRACE();
   if (hasBriefDescription())
   {
     auto parser { createDocParser() };
@@ -276,20 +286,20 @@ void DirDefImpl::writeBriefDescription(OutputList &ol)
     {
       ol.startParagraph();
       ol.pushGeneratorState();
-      ol.disableAllBut(OutputGenerator::Man);
+      ol.disableAllBut(OutputType::Man);
       ol.writeString(" - ");
       ol.popGeneratorState();
       ol.writeDoc(ast.get(),this,0);
       ol.pushGeneratorState();
-      ol.disable(OutputGenerator::RTF);
+      ol.disable(OutputType::RTF);
       ol.writeString(" \n");
-      ol.enable(OutputGenerator::RTF);
+      ol.enable(OutputType::RTF);
 
       if (Config_getBool(REPEAT_BRIEF) ||
           !documentation().isEmpty()
          )
       {
-        ol.disableAllBut(OutputGenerator::Html);
+        ol.disableAllBut(OutputType::Html);
         ol.startTextLink(QCString(),"details");
         ol.parseText(theTranslator->trMore());
         ol.endTextLink();
@@ -305,13 +315,13 @@ void DirDefImpl::writeBriefDescription(OutputList &ol)
 void DirDefImpl::writeDirectoryGraph(OutputList &ol)
 {
   // write graph dependency graph
-  if (Config_getBool(DIRECTORY_GRAPH) && Config_getBool(HAVE_DOT))
+  if (Config_getBool(HAVE_DOT) && m_hasDirectoryGraph /*&& Config_getBool(DIRECTORY_GRAPH)*/)
   {
     DotDirDeps dirDep(this);
     if (!dirDep.isTrivial())
     {
       msg("Generating dependency graph for directory %s\n",qPrint(displayName()));
-      ol.disable(OutputGenerator::Man);
+      ol.disable(OutputType::Man);
       //ol.startParagraph();
       ol.startDirDepGraph();
       ol.parseText(theTranslator->trDirDepGraph(shortName()));
@@ -324,6 +334,7 @@ void DirDefImpl::writeDirectoryGraph(OutputList &ol)
 
 void DirDefImpl::writeSubDirList(OutputList &ol)
 {
+  AUTO_TRACE();
   int numSubdirs = 0;
   for(const auto dd : m_subdirs)
   {
@@ -333,6 +344,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol)
     }
   }
 
+  AUTO_TRACE_ADD("numSubdirs={}",numSubdirs);
   // write subdir list
   if (numSubdirs>0)
   {
@@ -345,11 +357,19 @@ void DirDefImpl::writeSubDirList(OutputList &ol)
       if (dd->hasDocumentation() || !dd->getFiles().empty())
       {
         ol.startMemberDeclaration();
-        ol.startMemberItem(dd->anchor(),0);
-        ol.parseText(theTranslator->trDir(FALSE,TRUE)+" ");
+        ol.startMemberItem(dd->anchor(),OutputGenerator::MemberItemType::Normal);
+        {
+          ol.pushGeneratorState();
+          ol.disableAllBut(OutputType::Html);
+          ol.writeString("<span class=\"iconfclosed\"></span>");
+          ol.enableAll();
+          ol.disable(OutputType::Html);
+          ol.parseText(theTranslator->trDir(FALSE,TRUE)+" ");
+          ol.popGeneratorState();
+        }
         ol.insertMemberAlign();
         ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),QCString(),dd->shortName());
-        ol.endMemberItem();
+        ol.endMemberItem(OutputGenerator::MemberItemType::Normal);
         if (!dd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
         {
           ol.startMemberDescription(dd->getOutputFileBase());
@@ -373,6 +393,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol)
 
 void DirDefImpl::writeFileList(OutputList &ol)
 {
+  AUTO_TRACE();
   int numFiles = 0;
   for (const auto &fd : m_fileList)
   {
@@ -387,6 +408,7 @@ void DirDefImpl::writeFileList(OutputList &ol)
     }
   }
 
+  AUTO_TRACE_ADD("numFiles={}",numFiles);
   // write file list
   if (numFiles>0)
   {
@@ -401,32 +423,37 @@ void DirDefImpl::writeFileList(OutputList &ol)
       if (doc || src)
       {
         ol.startMemberDeclaration();
-        ol.startMemberItem(fd->anchor(),0);
-        ol.docify(theTranslator->trFile(FALSE,TRUE)+" ");
+        ol.startMemberItem(fd->anchor(),OutputGenerator::MemberItemType::Normal);
+        {
+          ol.pushGeneratorState();
+          ol.disableAllBut(OutputType::Html);
+          bool genSrc = fd->generateSourceFile();
+          if (genSrc)
+          {
+            ol.startTextLink(fd->includeName(),QCString());
+          }
+          ol.writeString("<span class=\"icondoc\"></span>");
+          if (genSrc)
+          {
+            ol.endTextLink();
+          }
+          ol.enableAll();
+          ol.disable(OutputType::Html);
+          ol.docify(theTranslator->trFile(FALSE,TRUE)+" ");
+          ol.popGeneratorState();
+        }
         ol.insertMemberAlign();
         if (fd->isLinkable())
         {
-          ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),QCString(),fd->name());
+          ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),QCString(),fd->displayName());
         }
         else
         {
           ol.startBold();
-          ol.docify(fd->name());
+          ol.docify(fd->displayName());
           ol.endBold();
         }
-        if (fd->generateSourceFile())
-        {
-          ol.pushGeneratorState();
-          ol.disableAllBut(OutputGenerator::Html);
-          ol.docify(" ");
-          ol.startTextLink(fd->includeName(),QCString());
-          ol.docify("[");
-          ol.parseText(theTranslator->trCode());
-          ol.docify("]");
-          ol.endTextLink();
-          ol.popGeneratorState();
-        }
-        ol.endMemberItem();
+        ol.endMemberItem(OutputGenerator::MemberItemType::Normal);
         if (!fd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
         {
           ol.startMemberDescription(fd->getOutputFileBase());
@@ -472,8 +499,10 @@ void DirDefImpl::writeTagFile(TextStream &tagFile)
 {
   tagFile << "  <compound kind=\"dir\">\n";
   tagFile << "    <name>" << convertToXML(displayName()) << "</name>\n";
-  tagFile << "    <path>" << convertToXML(name()) << "</path>\n";
-  tagFile << "    <filename>" << addHtmlExtensionIfMissing(getOutputFileBase()) << "</filename>\n";
+  tagFile << "    <path>" << convertToXML(stripFromPath(name())) << "</path>\n";
+  QCString fn=getOutputFileBase();
+  addHtmlExtensionIfMissing(fn);
+  tagFile << "    <filename>" << fn << "</filename>\n";
   for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Directory))
   {
     switch (lde->kind())
@@ -511,7 +540,8 @@ void DirDefImpl::writeDocumentation(OutputList &ol)
   ol.pushGeneratorState();
 
   QCString title=theTranslator->trDirReference(m_dispName);
-  startFile(ol,getOutputFileBase(),name(),title,HLI_Files,!generateTreeView);
+  AUTO_TRACE("title={}",title);
+  startFile(ol,getOutputFileBase(),name(),title,HighlightedItem::Files,!generateTreeView);
 
   if (!generateTreeView)
   {
@@ -522,10 +552,10 @@ void DirDefImpl::writeDocumentation(OutputList &ol)
 
   startTitle(ol,getOutputFileBase());
   ol.pushGeneratorState();
-    ol.disableAllBut(OutputGenerator::Html);
+    ol.disableAllBut(OutputType::Html);
     ol.parseText(shortTitle());
     ol.enableAll();
-    ol.disable(OutputGenerator::Html);
+    ol.disable(OutputType::Html);
     ol.parseText(title);
   ol.popGeneratorState();
   endTitle(ol,getOutputFileBase(),title);
@@ -595,6 +625,7 @@ void DirDefImpl::writeDocumentation(OutputList &ol)
       case LayoutDocEntry::FileInlineClasses:
       case LayoutDocEntry::GroupClasses:
       case LayoutDocEntry::GroupConcepts:
+      case LayoutDocEntry::GroupModules:
       case LayoutDocEntry::GroupInlineClasses:
       case LayoutDocEntry::GroupNamespaces:
       case LayoutDocEntry::GroupDirs:
@@ -602,6 +633,10 @@ void DirDefImpl::writeDocumentation(OutputList &ol)
       case LayoutDocEntry::GroupFiles:
       case LayoutDocEntry::GroupGraph:
       case LayoutDocEntry::GroupPageDocs:
+      case LayoutDocEntry::ModuleExports:
+      case LayoutDocEntry::ModuleClasses:
+      case LayoutDocEntry::ModuleConcepts:
+      case LayoutDocEntry::ModuleUsedFiles:
       case LayoutDocEntry::AuthorSection:
       case LayoutDocEntry::MemberGroups:
       case LayoutDocEntry::MemberDecl:
@@ -618,7 +653,7 @@ void DirDefImpl::writeDocumentation(OutputList &ol)
 
   ol.endContents();
 
-  endFileWithNavPath(this,ol);
+  endFileWithNavPath(ol,this);
 
   ol.popGeneratorState();
 }
@@ -649,12 +684,11 @@ void DirDefImpl::addUsesDependency(const DirDef *dir,const FileDef *srcFd,
                                    const FileDef *dstFd,bool srcDirect, bool dstDirect)
 {
   if (this==dir) return; // do not add self-dependencies
-  //static int count=0;
-  //printf("  %d add dependency %s->%s due to %s->%s\n",
-  //    count++,qPrint(shortName()),
-  //    qPrint(dir->shortName()),
-  //    qPrint(srcFd->name()),
-  //    qPrint(dstFd->name()));
+  AUTO_TRACE("add dependency {}->{} due to {}->{}",
+      qPrint(shortName()),
+      qPrint(dir->shortName()),
+      qPrint(srcFd->name()),
+      qPrint(dstFd->name()));
 
   // levels match => add direct dependency
   bool added=FALSE;
@@ -664,7 +698,7 @@ void DirDefImpl::addUsesDependency(const DirDef *dir,const FileDef *srcFd,
      const FilePair *usedPair = usedDir->findFilePair(FilePair::key(srcFd,dstFd));
      if (usedPair==0) // new file dependency
      {
-       //printf("  => new file\n");
+       AUTO_TRACE_ADD("{} => {} new file dependency",srcFd->name(),dstFd->name());
        usedDir->addFileDep(srcFd,dstFd, srcDirect, dstDirect);
        added=TRUE;
      }
@@ -675,7 +709,7 @@ void DirDefImpl::addUsesDependency(const DirDef *dir,const FileDef *srcFd,
   }
   else // new directory dependency
   {
-    //printf("  => new file\n");
+    AUTO_TRACE_ADD("{} => {} new file dependency",srcFd->name(),dstFd->name());
     auto newUsedDir = std::make_unique<UsedDir>(dir);
     newUsedDir->addFileDep(srcFd,dstFd, srcDirect, dstDirect);
     m_usedDirs.add(dir->getOutputFileBase(),std::move(newUsedDir));
@@ -708,22 +742,20 @@ void DirDefImpl::addUsesDependency(const DirDef *dir,const FileDef *srcFd,
  */
 void DirDefImpl::computeDependencies()
 {
+  AUTO_TRACE();
   for (const auto &fd : m_fileList)
   {
-    //printf("  File %s\n",qPrint(fd->name()));
-    //printf("** dir=%s file=%s\n",qPrint(shortName()),qPrint(fd->name()));
+    AUTO_TRACE_ADD("dir={} file={}",shortName(),fd->name());
     for (const auto &ii : fd->includeFileList())
     {
-      //printf("  > %s\n",qPrint(ii->includeName));
-      //printf("    #include %s\n",qPrint(ii->includeName));
+      AUTO_TRACE_ADD("#include {}",ii.includeName);
       if (ii.fileDef && ii.fileDef->isLinkable()) // linkable file
       {
         DirDef *usedDir = ii.fileDef->getDirDef();
         if (usedDir)
         {
           // add dependency: thisDir->usedDir
-          //static int count=0;
-          //printf("      %d: add dependency %s->%s\n",count++,qPrint(name()),qPrint(usedDir->name()));
+          AUTO_TRACE_ADD("add dependency {}->{}",name(),usedDir->name());
           addUsesDependency(usedDir,fd,ii.fileDef,true,true);
         }
       }
@@ -755,7 +787,6 @@ bool DirDefImpl::depGraphIsTrivial() const
   return m_usedDirs.empty() && m_parent==nullptr;
 }
 
-
 //----------------------------------------------------------------------
 
 UsedDir::UsedDir(const DirDef *dir) :
@@ -795,6 +826,7 @@ FilePair *UsedDir::findFilePair(const QCString &name)
 
 DirDef *DirDefImpl::createNewDir(const QCString &path)
 {
+  AUTO_TRACE();
   ASSERT(path!=0);
   DirDef *dir = Doxygen::dirLinkedMap->find(path);
   if (dir==0) // new dir
@@ -802,8 +834,7 @@ DirDef *DirDefImpl::createNewDir(const QCString &path)
     dir = Doxygen::dirLinkedMap->add(path,
             std::unique_ptr<DirDef>(
               createDirDef(path)));
-    //printf("Adding new dir %s\n",path);
-    //printf("createNewDir %s short=%s\n",path,qPrint(dir->shortName()));
+    AUTO_TRACE_ADD("Adding new dir {} shortName {}",path,dir->shortName());
   }
   return dir;
 }
@@ -826,7 +857,7 @@ bool DirDefImpl::matchPath(const QCString &path,const StringVector &l)
  */
 DirDef *DirDefImpl::mergeDirectoryInTree(const QCString &path)
 {
-  //printf("DirDefImpl::mergeDirectoryInTree(%s)\n",qPrint(path));
+  AUTO_TRACE("path={}",path);
   int p=0,i=0;
   DirDef *dir=0;
   while ((i=path.find('/',p))!=-1)
@@ -841,6 +872,16 @@ DirDef *DirDefImpl::mergeDirectoryInTree(const QCString &path)
   return dir;
 }
 
+void DirDefImpl::enableDirectoryGraph(bool e)
+{
+  m_hasDirectoryGraph=e;
+}
+
+bool DirDefImpl::hasDirectoryGraph() const
+{
+  return m_hasDirectoryGraph;
+}
+
 //----------------------------------------------------------------------
 
 QCString FilePair::key(const FileDef *srcFd,const FileDef *dstFd)
@@ -883,14 +924,15 @@ void DirRelation::writeDocumentation(OutputList &ol)
 {
   bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
   ol.pushGeneratorState();
-  ol.disableAllBut(OutputGenerator::Html);
+  ol.disableAllBut(OutputType::Html);
 
   QCString shortTitle=theTranslator->trDirRelation(
                       (m_src->shortName()+" &rarr; "+m_dst->dir()->shortName()));
   QCString title=theTranslator->trDirRelation(
                  (m_src->displayName()+" -> "+m_dst->dir()->shortName()));
+  AUTO_TRACE("title={}",title);
   startFile(ol,getOutputFileBase(),getOutputFileBase(),
-            title,HLI_None,!generateTreeView,m_src->getOutputFileBase());
+            title,HighlightedItem::None,!generateTreeView,m_src->getOutputFileBase());
 
   if (!generateTreeView)
   {
@@ -926,7 +968,7 @@ void DirRelation::writeDocumentation(OutputList &ol)
 
   ol.endContents();
 
-  endFileWithNavPath(m_src,ol);
+  endFileWithNavPath(ol,m_src);
 
   ol.popGeneratorState();
 }
@@ -939,6 +981,7 @@ void DirRelation::writeDocumentation(OutputList &ol)
  */
 static void computeCommonDirPrefix()
 {
+  AUTO_TRACE();
   QCString path;
   auto it = Doxygen::dirLinkedMap->begin();
   if (!Doxygen::dirLinkedMap->empty()) // we have at least one dir
@@ -956,7 +999,7 @@ static void computeCommonDirPrefix()
     {
       while (!done)
       {
-        uint l = path.length();
+        uint32_t l = path.length();
         size_t count=0;
         for (const auto &dir : *Doxygen::dirLinkedMap)
         {
@@ -1008,12 +1051,13 @@ static void computeCommonDirPrefix()
   {
     QCString diskName = dir->name().right(dir->name().length()-path.length());
     dir->setDiskName(diskName);
-    //printf("set disk name: %s -> %s\n",qPrint(dir->name()),qPrint(diskName));
+    AUTO_TRACE_ADD("set disk name: {} -> {}",dir->name(),diskName);
   }
 }
 
 void buildDirectories()
 {
+  AUTO_TRACE();
   // for each input file
   for (const auto &fn : *Doxygen::inputNameLinkedMap)
   {
@@ -1047,8 +1091,8 @@ void buildDirectories()
       if (parent)
       {
         parent->addSubDir(dir.get());
-        //printf("DirDefImpl::addSubdir(): Adding subdir\n%s to\n%s\n",
-        //  qPrint(dir->displayName()), qPrint(parent->displayName()));
+        AUTO_TRACE_ADD("DirDefImpl::addSubdir(): Adding subdir {} to {}",
+                        dir->displayName(), parent->displayName());
       }
     }
   }
@@ -1087,6 +1131,7 @@ void buildDirectories()
 
 void computeDirDependencies()
 {
+  AUTO_TRACE();
   // compute nesting level for each directory
   for (const auto &dir : *Doxygen::dirLinkedMap)
   {
@@ -1096,24 +1141,25 @@ void computeDirDependencies()
   // compute uses dependencies between directories
   for (const auto &dir : *Doxygen::dirLinkedMap)
   {
-    //printf("computeDependencies for %s: #dirs=%d\n",qPrint(dir->name()),Doxygen::directories.count());
+    AUTO_TRACE_ADD("computeDependencies for {}: #dirs={}",dir->name(),Doxygen::dirLinkedMap->size());
     dir->computeDependencies();
   }
 }
 
 void generateDirDocs(OutputList &ol)
 {
+  AUTO_TRACE();
   for (const auto &dir : *Doxygen::dirLinkedMap)
   {
     ol.pushGeneratorState();
     if (!dir->hasDocumentation())
     {
-      ol.disableAllBut(OutputGenerator::Html);
+      ol.disableAllBut(OutputType::Html);
     }
     dir->writeDocumentation(ol);
     ol.popGeneratorState();
   }
-  if (Config_getBool(DIRECTORY_GRAPH))
+  //if (Config_getBool(DIRECTORY_GRAPH))
   {
     for (const auto &dr : Doxygen::dirRelations)
     {