Skip to main content

The dirdef.h File Reference

Included Headers

#include <vector> #include <map> #include "qcstring.h" #include "linkedmap.h" #include "definition.h"

Classes Index

classFilePair

Class representing a pair of FileDef objects. More...

classFilePairLinkedMap

A linked map of file pairs. More...

classUsedDir

Usage information of a directory. More...

classDirDef

A model of a directory symbol. More...

classUsedDirLinkedMap
classDirRelation

A usage relation between two directories. More...

classDirLinkedMap

A linked map of directories. More...

classDirList

A list of directories. More...

classDirRelationLinkedMap

Functions Index

boolcompareDirDefs (const DirDef *item1, const DirDef *item2)
DirDef *toDirDef (Definition *d)
const DirDef *toDirDef (const Definition *d)
voidbuildDirectories ()
voidgenerateDirDocs (OutputList &ol)
voidcomputeDirDependencies ()

Functions

buildDirectories()

void buildDirectories ()

Declaration at line 186 of file dirdef.h, definition at line 1078 of file dirdef.cpp.

1079{
1080 AUTO_TRACE();
1081 // for each input file
1082 for (const auto &fn : *Doxygen::inputNameLinkedMap)
1083 {
1084 for (const auto &fd : *fn)
1085 {
1086 if (fd->getReference().isEmpty())
1087 {
1088 DirDef *dir=Doxygen::dirLinkedMap->find(fd->getPath());
1089 if (dir==nullptr) // new directory
1090 {
1091 dir = DirDefImpl::mergeDirectoryInTree(fd->getPath());
1092 }
1093 if (dir && !fd->isDocumentationFile()) dir->addFile(fd.get());
1094 }
1095 else
1096 {
1097 // do something for file imported via tag files.
1098 }
1099 }
1100 }
1101
1102 // compute relations between directories => introduce container dirs.
1103 for (const auto &dir : *Doxygen::dirLinkedMap)
1104 {
1105 QCString name = dir->name();
1106 int i=name.findRev('/',static_cast<int>(name.length())-2);
1107 if (i>0)
1108 {
1109 DirDef *parent = Doxygen::dirLinkedMap->find(name.left(i+1));
1110 //if (parent==0) parent=root;
1111 if (parent)
1112 {
1113 parent->addSubDir(dir.get());
1114 AUTO_TRACE_ADD("DirDefImpl::addSubdir(): Adding subdir {} to {}",
1115 dir->displayName(), parent->displayName());
1116 }
1117 }
1118 }
1119
1120 // sort the directory contents
1121 for (const auto &dir : *Doxygen::dirLinkedMap)
1122 {
1123 dir->sort();
1124 }
1125
1126 // short the directories themselves
1127 std::stable_sort(Doxygen::dirLinkedMap->begin(),
1129 [](const auto &d1,const auto &d2)
1130 {
1131 QCString s1 = d1->shortName(), s2 = d2->shortName();
1132 int i = qstricmp_sort(s1,s2);
1133 if (i==0) // if sort name are equal, sort on full path
1134 {
1135 QCString n1 = d1->name(), n2 = d2->name();
1136 int n = qstricmp_sort(n1,n2);
1137 return n < 0;
1138 }
1139 return i < 0;
1140 });
1141
1142 // set the directory index identifier
1143 int dirIndex=0;
1144 for (const auto &dir : *Doxygen::dirLinkedMap)
1145 {
1146 dir->setDirIndex(dirIndex++);
1147 }
1148
1150}

References DirDef::addFile, AUTO_TRACE, AUTO_TRACE_ADD, begin, computeCommonDirPrefix, Doxygen::dirLinkedMap, end, QCString::findRev, Doxygen::inputNameLinkedMap, QCString::left, QCString::length, DirDefImpl::mergeDirectoryInTree, parent and qstricmp_sort.

Referenced by parseInput.

compareDirDefs()

bool compareDirDefs (const DirDef * item1, const DirDef * item2)

Declaration at line 36 of file dirdef.h, definition at line 1191 of file dirdef.cpp.

1191bool compareDirDefs(const DirDef *item1, const DirDef *item2)
1192{
1193 return qstricmp_sort(item1->shortName(),item2->shortName()) < 0;
1194}

References qstricmp_sort and DirDef::shortName.

Referenced by DirDefImpl::sort and GroupDefImpl::sortMemberLists.

computeDirDependencies()

void computeDirDependencies ()

Declaration at line 188 of file dirdef.h, definition at line 1152 of file dirdef.cpp.

1153{
1154 AUTO_TRACE();
1155 // compute nesting level for each directory
1156 for (const auto &dir : *Doxygen::dirLinkedMap)
1157 {
1158 dir->setLevel();
1159 }
1160
1161 // compute uses dependencies between directories
1162 for (const auto &dir : *Doxygen::dirLinkedMap)
1163 {
1164 AUTO_TRACE_ADD("computeDependencies for {}: #dirs={}",dir->name(),Doxygen::dirLinkedMap->size());
1165 dir->computeDependencies();
1166 }
1167}

References AUTO_TRACE, AUTO_TRACE_ADD and Doxygen::dirLinkedMap.

Referenced by parseInput.

generateDirDocs()

void generateDirDocs (OutputList & ol)

Declaration at line 187 of file dirdef.h, definition at line 1169 of file dirdef.cpp.

1170{
1171 AUTO_TRACE();
1172 for (const auto &dir : *Doxygen::dirLinkedMap)
1173 {
1175 if (!dir->hasDocumentation())
1176 {
1178 }
1179 dir->writeDocumentation(ol);
1181 }
1182 //if (Config_getBool(DIRECTORY_GRAPH))
1183 {
1184 for (const auto &dr : Doxygen::dirRelations)
1185 {
1186 dr->writeDocumentation(ol);
1187 }
1188 }
1189}

References AUTO_TRACE, Doxygen::dirLinkedMap, Doxygen::dirRelations, OutputList::disableAllBut, Html, OutputList::popGeneratorState and OutputList::pushGeneratorState.

Referenced by generateOutput.

toDirDef()

DirDef * toDirDef (Definition * d)

Declaration at line 150 of file dirdef.h, definition at line 1198 of file dirdef.cpp.

1199{
1200 if (d==nullptr) return nullptr;
1201 if (d && typeid(*d)==typeid(DirDefImpl))
1202 {
1203 return static_cast<DirDef*>(d);
1204 }
1205 else
1206 {
1207 return nullptr;
1208 }
1209}

toDirDef()

const DirDef * toDirDef (const Definition * d)

Declaration at line 151 of file dirdef.h, definition at line 1211 of file dirdef.cpp.

1211const DirDef *toDirDef(const Definition *d)
1212{
1213 if (d==nullptr) return nullptr;
1214 if (d && typeid(*d)==typeid(DirDefImpl))
1215 {
1216 return static_cast<const DirDef*>(d);
1217 }
1218 else
1219 {
1220 return nullptr;
1221 }
1222}

Generated via doxygen2docusaurus by Doxygen 1.14.0.