Doxygen
Loading...
Searching...
No Matches
DirDefImpl Class Reference
Inheritance diagram for DirDefImpl:
Collaboration diagram for DirDefImpl:

Public Member Functions

 DirDefImpl (const QCString &path)
 ~DirDefImpl () override
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
QCString getOutputFileBase () const override
QCString anchor () const override
bool isLinkableInProject () const override
bool isLinkable () const override
QCString displayName (bool=TRUE) const override
const QCString shortName () const override
void addSubDir (DirDef *subdir) override
const FileListgetFiles () const override
void addFile (FileDef *fd) override
const DirListsubDirs () const override
bool hasSubdirs () const override
int level () const override
DirDefparent () const override
int dirIndex () const override
const UsedDirLinkedMapusedDirs () const override
bool isParentOf (const DirDef *dir) const override
bool depGraphIsTrivial () const override
QCString shortTitle () const override
bool hasDetailedDescription () const override
void writeDocumentation (OutputList &ol) override
void writePageNavigation (OutputList &ol) const override
void writeTagFile (TextStream &t) override
void setDiskName (const QCString &name) override
void sort () override
void setParent (DirDef *parent) override
void setDirIndex (int index) override
void setLevel () override
void addUsesDependency (const DirDef *usedDir, const FileDef *srcFd, const FileDef *dstFd, bool srcDirect, bool dstDirect) override
 Add as "uses" dependency between this dir and dir, that was caused by a dependency on file fd.
void computeDependencies () override
 Computes the dependencies between directories.
void findSectionsInDocumentation () override
bool hasDirectoryGraph () const override
void overrideDirectoryGraph (bool e) override
Public Member Functions inherited from DefinitionMixin< DirDef >
 DefinitionMixin (const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
DefinitionMixinoperator= (const DefinitionMixin &other)
 ~DefinitionMixin () override=default
bool isAlias () const override
const QCStringname () const override
bool isAnonymous () const override
const QCStringlocalName () const override
QCString qualifiedName () const override
QCString symbolName () const override
QCString getSourceFileBase () const override
QCString getSourceAnchor () const override
QCString documentation () const override
int docLine () const override
QCString docFile () const override
QCString briefDescription (bool abbreviate=FALSE) const override
QCString briefDescriptionAsTooltip () const override
int briefLine () const override
QCString inbodyDocumentation () const override
QCString inbodyFile () const override
int inbodyLine () const override
QCString briefFile () const override
QCString getDefFileName () const override
QCString getDefFileExtension () const override
int getDefLine () const override
int getDefColumn () const override
bool hasDocumentation () const override
bool hasUserDocumentation () const override
bool isVisibleInProject () const override
bool isVisible () const override
bool isHidden () const override
bool isArtificial () const override
bool isExported () const override
QCString getReference () const override
bool isReference () const override
QCString externalReference (const QCString &relPath) const override
int getStartDefLine () const override
int getStartBodyLine () const override
int getEndBodyLine () const override
const FileDefgetBodyDef () const override
SrcLangExt getLanguage () const override
const GroupListpartOfGroups () const override
bool isLinkableViaGroup () const override
const RefItemVectorxrefListItems () const override
const DefinitionfindInnerCompound (const QCString &name) const override
DefinitiongetOuterScope () const override
const MemberVectorgetReferencesMembers () const override
const MemberVectorgetReferencedByMembers () const override
bool hasSections () const override
bool hasSources () const override
bool hasBriefDescription () const override
QCString id () const override
const SectionRefsgetSectionRefs () const override
void setName (const QCString &name) override
void setId (const QCString &name) override
void setDefFile (const QCString &df, int defLine, int defColumn) override
void setDocumentation (const QCString &doc, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE) override
void setBriefDescription (const QCString &brief, const QCString &briefFile, int briefLine) override
void setInbodyDocumentation (const QCString &doc, const QCString &docFile, int docLine) override
void setReference (const QCString &r) override
void addSectionsToDefinition (const std::vector< const SectionInfo * > &anchorList) override
void setBodySegment (int defLine, int bls, int ble) override
void setBodyDef (const FileDef *fd) override
void addSourceReferencedBy (MemberDef *md, const QCString &sourceRefName) override
void addSourceReferences (MemberDef *md, const QCString &sourceRefName) override
void setRefItems (const RefItemVector &sli) override
void mergeRefItems (Definition *def) override
void mergeReferences (const Definition *other) override
void mergeReferencedBy (const Definition *other) override
void addInnerCompound (Definition *def) override
void setOuterScope (Definition *def) override
void setHidden (bool b) override
void setArtificial (bool b) override
void setExported (bool b) override
void setLanguage (SrcLangExt lang) override
void writeSourceDef (OutputList &ol) const override
void writeInlineCode (OutputList &ol, const QCString &scopeName) const override
bool hasSourceRefs () const override
bool hasSourceReffedBy () const override
void writeSourceRefs (OutputList &ol, const QCString &scopeName) const override
void writeSourceReffedBy (OutputList &ol, const QCString &scopeName) const override
void makePartOfGroup (GroupDef *gd) override
void writeNavigationPath (OutputList &ol) const override
QCString navigationPathAsString () const override
void writeQuickMemberLinks (OutputList &ol, const MemberDef *md) const override
void writeSummaryLinks (OutputList &ol) const override
QCString pathFragment () const override
void writeDocAnchorsToTagFile (TextStream &fs) const override
void setLocalName (const QCString &name) override
void writeToc (OutputList &ol, const LocalToc &lt) const override
void computeTooltip () override
void _setSymbolName (const QCString &name) override
QCString _symbolName () const override

Static Public Member Functions

static DirDefmergeDirectoryInTree (const QCString &path)

Private Member Functions

void writeDetailedDescription (OutputList &ol, const QCString &title)
void writeBriefDescription (OutputList &ol)
void writeDirectoryGraph (OutputList &ol)
void writeSubDirList (OutputList &ol)
void writeFileList (OutputList &ol)
void startMemberDeclarations (OutputList &ol)
void endMemberDeclarations (OutputList &ol)

Static Private Member Functions

static DirDefcreateNewDir (const QCString &path)
static bool matchPath (const QCString &path, const StringVector &l)

Private Attributes

DirList m_subdirs
QCString m_dispName
QCString m_shortName
QCString m_diskName
FileList m_fileList
int m_dirIndex = -1
int m_level
DirDefm_parent
UsedDirLinkedMap m_usedDirs
bool m_hasDirectoryGraph = false

Additional Inherited Members

Public Types inherited from Definition
enum  DefType {
  TypeClass = 0 , TypeFile = 1 , TypeNamespace = 2 , TypeModule = 3 ,
  TypeMember = 4 , TypeGroup = 5 , TypePackage = 6 , TypePage = 7 ,
  TypeDir = 8 , TypeConcept = 9
}

Detailed Description

Definition at line 37 of file dirdef.cpp.

Constructor & Destructor Documentation

◆ DirDefImpl()

DirDefImpl::DirDefImpl ( const QCString & path)

Definition at line 118 of file dirdef.cpp.

118 : DefinitionMixin(path,1,1,path)
119{
120 bool fullPathNames = Config_getBool(FULL_PATH_NAMES);
121 // get display name (stripping the paths mentioned in STRIP_FROM_PATH)
122 // get short name (last part of path)
123 m_shortName = path;
124 m_diskName = path;
125 if (m_shortName.at(m_shortName.length()-1)=='/')
126 { // strip trailing /
127 m_shortName = m_shortName.left(m_shortName.length()-1);
128 }
129 int pi=m_shortName.findRev('/');
130 if (pi!=-1)
131 { // remove everything till the last /
132 m_shortName = m_shortName.mid(pi+1);
133 }
135 m_dispName = fullPathNames ? stripFromPath(path) : m_shortName;
136 if (m_dispName.length()>0 && m_dispName.at(m_dispName.length()-1)=='/')
137 { // strip trailing /
138 m_dispName = m_dispName.left(m_dispName.length()-1);
139 }
140
141 m_level=-1;
142 m_parent=nullptr;
143 m_hasDirectoryGraph=Config_getBool(DIRECTORY_GRAPH);
144
145}
DefinitionMixin(const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
void setLocalName(const QCString &name) override
DirDef * m_parent
Definition dirdef.cpp:104
QCString m_diskName
Definition dirdef.cpp:100
QCString m_shortName
Definition dirdef.cpp:99
QCString m_dispName
Definition dirdef.cpp:98
int m_level
Definition dirdef.cpp:103
bool m_hasDirectoryGraph
Definition dirdef.cpp:106
#define Config_getBool(name)
Definition config.h:33
static QCString stripFromPath(const QCString &p, const StringVector &l)
Definition util.cpp:310

References Config_getBool, DefinitionMixin< DirDef >::DefinitionMixin(), m_diskName, m_dispName, m_hasDirectoryGraph, m_level, m_parent, m_shortName, DefinitionMixin< DirDef >::setLocalName(), and stripFromPath().

◆ ~DirDefImpl()

DirDefImpl::~DirDefImpl ( )
override

Definition at line 147 of file dirdef.cpp.

148{
149}

Member Function Documentation

◆ addFile()

void DirDefImpl::addFile ( FileDef * fd)
overridevirtual

Implements DirDef.

Definition at line 178 of file dirdef.cpp.

179{
180 m_fileList.push_back(fd);
181 fd->setDirDef(this);
182}
FileList m_fileList
Definition dirdef.cpp:101
virtual void setDirDef(DirDef *dd)=0

References m_fileList, and FileDef::setDirDef().

◆ addSubDir()

void DirDefImpl::addSubDir ( DirDef * subdir)
overridevirtual

Implements DirDef.

Definition at line 161 of file dirdef.cpp.

162{
163 m_subdirs.push_back(subdir);
164 subdir->setOuterScope(this);
165 subdir->setParent(this);
166}
virtual void setOuterScope(Definition *d)=0
virtual void setParent(DirDef *parent)=0
DirList m_subdirs
Definition dirdef.cpp:97

References m_subdirs, DefinitionMutable::setOuterScope(), and DirDef::setParent().

◆ addUsesDependency()

void DirDefImpl::addUsesDependency ( const DirDef * dir,
const FileDef * srcFd,
const FileDef * dstFd,
bool srcDirect,
bool dstDirect )
overridevirtual

Add as "uses" dependency between this dir and dir, that was caused by a dependency on file fd.

srcDirect and dstDirect indicate if it is a direct dependencies (true) or if the dependencies was indirect (e.g. a parent dir that has a child dir that has the dependencies)

Implements DirDef.

Definition at line 707 of file dirdef.cpp.

709{
710 if (this==dir) return; // do not add self-dependencies
711 AUTO_TRACE("add dependency {}->{} due to {}->{}",
712 qPrint(shortName()),
713 qPrint(dir->shortName()),
714 qPrint(srcFd->name()),
715 qPrint(dstFd->name()));
716
717 // levels match => add direct dependency
718 bool added=FALSE;
719 UsedDir *usedDir = m_usedDirs.find(dir->getOutputFileBase());
720 if (usedDir) // dir dependency already present
721 {
722 const FilePair *usedPair = usedDir->findFilePair(FilePair::key(srcFd,dstFd));
723 if (usedPair==nullptr) // new file dependency
724 {
725 AUTO_TRACE_ADD("{} => {} new file dependency",srcFd->name(),dstFd->name());
726 usedDir->addFileDep(srcFd,dstFd, srcDirect, dstDirect);
727 added=TRUE;
728 }
729 else
730 {
731 // dir & file dependency already added
732 }
733 }
734 else // new directory dependency
735 {
736 AUTO_TRACE_ADD("{} => {} new file dependency",srcFd->name(),dstFd->name());
737 auto newUsedDir = std::make_unique<UsedDir>(dir);
738 newUsedDir->addFileDep(srcFd,dstFd, srcDirect, dstDirect);
739 m_usedDirs.add(dir->getOutputFileBase(),std::move(newUsedDir));
740 added=TRUE;
741 }
742 if (added)
743 {
744 if (dir->parent())
745 {
746 // add relation to parent of used dir
748 srcFd,
749 dstFd,
750 srcDirect,
751 false); // indirect dependency on dest dir
752 }
753 if (parent())
754 {
755 // add relation for the parent of this dir as well
757 srcFd,
758 dstFd,
759 false, // indirect dependency from source dir
760 dstDirect);
761 }
762 }
763}
virtual QCString getOutputFileBase() const =0
virtual const QCString & name() const =0
virtual DirDef * parent() const =0
virtual void addUsesDependency(const DirDef *usedDir, const FileDef *srcFd, const FileDef *dstFd, bool srcDirect, bool dstDirect)=0
virtual const QCString shortName() const =0
const QCString shortName() const override
Definition dirdef.cpp:51
DirDef * parent() const override
Definition dirdef.cpp:58
void addUsesDependency(const DirDef *usedDir, const FileDef *srcFd, const FileDef *dstFd, bool srcDirect, bool dstDirect) override
Add as "uses" dependency between this dir and dir, that was caused by a dependency on file fd.
Definition dirdef.cpp:707
UsedDirLinkedMap m_usedDirs
Definition dirdef.cpp:105
static QCString key(const FileDef *srcFd, const FileDef *dstFd)
Definition dirdef.cpp:913
void addFileDep(const FileDef *srcFd, const FileDef *dstFd, bool srcDirect, bool dstDirect)
Take up dependency between files.
Definition dirdef.cpp:827
FilePair * findFilePair(const QCString &name)
Definition dirdef.cpp:848
#define AUTO_TRACE_ADD(...)
Definition docnode.cpp:47
#define AUTO_TRACE(...)
Definition docnode.cpp:46
const char * qPrint(const char *s)
Definition qcstring.h:672
#define TRUE
Definition qcstring.h:37
#define FALSE
Definition qcstring.h:34

References UsedDir::addFileDep(), DirDef::addUsesDependency(), addUsesDependency(), AUTO_TRACE, AUTO_TRACE_ADD, FALSE, UsedDir::findFilePair(), Definition::getOutputFileBase(), FilePair::key(), m_usedDirs, Definition::name(), DirDef::parent(), parent(), qPrint(), DirDef::shortName(), shortName(), and TRUE.

Referenced by addUsesDependency(), and computeDependencies().

◆ anchor()

QCString DirDefImpl::anchor ( ) const
inlineoverridevirtual

Returns the anchor within a page where this item can be found

Implements Definition.

Definition at line 47 of file dirdef.cpp.

47{ return QCString(); }

◆ codeSymbolType()

CodeSymbolType DirDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 45 of file dirdef.cpp.

References Default.

◆ computeDependencies()

void DirDefImpl::computeDependencies ( )
overridevirtual

Computes the dependencies between directories.

Implements DirDef.

Definition at line 773 of file dirdef.cpp.

774{
775 AUTO_TRACE();
776 for (const auto &fd : m_fileList)
777 {
778 AUTO_TRACE_ADD("dir={} file={}",shortName(),fd->name());
779 for (const auto &ii : fd->includeFileList())
780 {
781 AUTO_TRACE_ADD("#include {}",ii.includeName);
782 if (ii.fileDef && ii.fileDef->isLinkable()) // linkable file
783 {
784 DirDef *usedDir = ii.fileDef->getDirDef();
785 if (usedDir)
786 {
787 // add dependency: thisDir->usedDir
788 AUTO_TRACE_ADD("add dependency {}->{}",name(),usedDir->name());
789 addUsesDependency(usedDir,fd,ii.fileDef,true,true);
790 }
791 }
792 }
793 }
794
795 std::stable_sort(m_usedDirs.begin(),m_usedDirs.end(),
796 [](const auto &u1,const auto &u2)
797 { return qstricmp_sort(u1->dir()->getOutputFileBase(),u2->dir()->getOutputFileBase())<0; });
798
799 for (const auto& usedDirectory : m_usedDirs)
800 {
801 usedDirectory->sort();
802 }
803}
const QCString & name() const override

References addUsesDependency(), AUTO_TRACE, AUTO_TRACE_ADD, m_fileList, m_usedDirs, Definition::name(), DefinitionMixin< DirDef >::name(), and shortName().

◆ createNewDir()

DirDef * DirDefImpl::createNewDir ( const QCString & path)
staticprivate

Definition at line 853 of file dirdef.cpp.

854{
855 AUTO_TRACE();
856 ASSERT(path!=nullptr);
857 DirDef *dir = Doxygen::dirLinkedMap->find(path);
858 if (dir==nullptr) // new dir
859 {
860 dir = Doxygen::dirLinkedMap->add(path,
861 std::unique_ptr<DirDef>(
862 createDirDef(path)));
863 AUTO_TRACE_ADD("Adding new dir {} shortName {}",path,dir->shortName());
864 }
865 return dir;
866}
static DirLinkedMap * dirLinkedMap
Definition doxygen.h:129
T * add(const char *k, Args &&... args)
Definition linkedmap.h:90
const T * find(const std::string &key) const
Definition linkedmap.h:47
DirDef * createDirDef(const QCString &path)
Definition dirdef.cpp:109
#define ASSERT(x)
Definition qcstring.h:39

References ASSERT, AUTO_TRACE, AUTO_TRACE_ADD, createDirDef(), Doxygen::dirLinkedMap, and DirDef::shortName().

Referenced by mergeDirectoryInTree().

◆ definitionType()

DefType DirDefImpl::definitionType ( ) const
inlineoverridevirtual

Use this for dynamic inspection of the type of the derived class

Implements Definition.

Definition at line 44 of file dirdef.cpp.

44{ return TypeDir; }

References definitionType(), and Definition::TypeDir.

Referenced by definitionType().

◆ depGraphIsTrivial()

bool DirDefImpl::depGraphIsTrivial ( ) const
overridevirtual

Implements DirDef.

Definition at line 815 of file dirdef.cpp.

816{
817 return m_usedDirs.empty() && m_parent==nullptr;
818}

References m_parent, and m_usedDirs.

◆ dirIndex()

int DirDefImpl::dirIndex ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 59 of file dirdef.cpp.

59{ return m_dirIndex; }
int m_dirIndex
Definition dirdef.cpp:102

References m_dirIndex.

◆ displayName()

QCString DirDefImpl::displayName ( bool includeScope = TRUE) const
inlineoverridevirtual

Returns the name of the definition as it appears in the output

Implements Definition.

Definition at line 50 of file dirdef.cpp.

50{ return m_dispName; }

References m_dispName, and TRUE.

Referenced by writeDirectoryGraph(), and writeTagFile().

◆ endMemberDeclarations()

void DirDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 491 of file dirdef.cpp.

492{
494}
void endMemberSections()
Definition outputlist.h:465

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ findSectionsInDocumentation()

void DirDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements DirDef.

Definition at line 765 of file dirdef.cpp.

766{
769}
QCString docFile() const override
QCString briefDescription(bool abbreviate=FALSE) const override
QCString documentation() const override
void docFindSections(const QCString &input, const Definition *d, const QCString &fileName)

References DefinitionMixin< DirDef >::briefDescription(), DefinitionMixin< DirDef >::docFile(), docFindSections(), and DefinitionMixin< DirDef >::documentation().

◆ getFiles()

const FileList & DirDefImpl::getFiles ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 53 of file dirdef.cpp.

53{ return m_fileList; }

References m_fileList.

◆ getOutputFileBase()

QCString DirDefImpl::getOutputFileBase ( ) const
overridevirtual

Returns the base file name (without extension) of this definition. as it is referenced to/written to disk.

Implements Definition.

Definition at line 224 of file dirdef.cpp.

225{
226 QCString dir = "dir_"+encodeDirName(m_diskName);
227 AUTO_TRACE("diskName={} result={}",m_diskName,dir);
228 return dir;
229}
static QCString encodeDirName(const QCString &anchor)
Definition dirdef.cpp:190

References AUTO_TRACE, encodeDirName(), and m_diskName.

Referenced by writeDocumentation(), and writeTagFile().

◆ hasDetailedDescription()

bool DirDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements DirDef.

Definition at line 508 of file dirdef.cpp.

509{
510 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
511 return (!briefDescription().isEmpty() && repeatBrief) || !documentation().isEmpty();
512}
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:150

References DefinitionMixin< DirDef >::briefDescription(), Config_getBool, DefinitionMixin< DirDef >::documentation(), and QCString::isEmpty().

◆ hasDirectoryGraph()

bool DirDefImpl::hasDirectoryGraph ( ) const
overridevirtual

Implements DirDef.

Definition at line 906 of file dirdef.cpp.

907{
908 return m_hasDirectoryGraph;
909}

References m_hasDirectoryGraph.

◆ hasSubdirs()

bool DirDefImpl::hasSubdirs ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 56 of file dirdef.cpp.

56{ return !m_subdirs.empty(); }

References m_subdirs.

◆ isLinkable()

bool DirDefImpl::isLinkable ( ) const
overridevirtual

Returns TRUE iff it is possible to link to this item. This can be a link to another project imported via a tag file.

Implements Definition.

Definition at line 156 of file dirdef.cpp.

157{
158 return isReference() || isLinkableInProject();
159}
bool isReference() const override
bool isLinkableInProject() const override
Definition dirdef.cpp:151

References isLinkableInProject(), and DefinitionMixin< DirDef >::isReference().

◆ isLinkableInProject()

bool DirDefImpl::isLinkableInProject ( ) const
overridevirtual

Returns TRUE iff it is possible to link to this item within this project.

Implements Definition.

Definition at line 151 of file dirdef.cpp.

152{
153 return !isReference() && hasDocumentation();
154}
bool hasDocumentation() const override

References DefinitionMixin< DirDef >::hasDocumentation(), and DefinitionMixin< DirDef >::isReference().

Referenced by isLinkable().

◆ isParentOf()

bool DirDefImpl::isParentOf ( const DirDef * dir) const
overridevirtual

Implements DirDef.

Definition at line 805 of file dirdef.cpp.

806{
807 if (dir->parent()==this) // this is a parent of dir
808 return TRUE;
809 else if (dir->parent()) // repeat for the parent of dir
810 return isParentOf(dir->parent());
811 else
812 return FALSE;
813}
bool isParentOf(const DirDef *dir) const override
Definition dirdef.cpp:805

References FALSE, isParentOf(), DirDef::parent(), and TRUE.

Referenced by isParentOf().

◆ level()

int DirDefImpl::level ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 57 of file dirdef.cpp.

57{ return m_level; }

References m_level.

◆ matchPath()

bool DirDefImpl::matchPath ( const QCString & path,
const StringVector & l )
staticprivate

Definition at line 868 of file dirdef.cpp.

869{
870 for (const auto &s : l)
871 {
872 std::string prefix = s.substr(0,path.length());
873 if (qstricmp_sort(prefix.c_str(),path)==0) // case insensitive compare
874 {
875 return TRUE;
876 }
877 }
878 return FALSE;
879}
constexpr auto prefix
Definition anchor.cpp:44
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition qcstring.h:153
int qstricmp_sort(const char *str1, const char *str2)
Definition qcstring.h:86

References FALSE, QCString::length(), prefix, qstricmp_sort(), and TRUE.

Referenced by mergeDirectoryInTree().

◆ mergeDirectoryInTree()

DirDef * DirDefImpl::mergeDirectoryInTree ( const QCString & path)
static

strip part of path if it matches one of the paths in the Config_getList(STRIP_FROM_PATH) list

Definition at line 884 of file dirdef.cpp.

885{
886 AUTO_TRACE("path={}",path);
887 int p=0,i=0;
888 DirDef *dir=nullptr;
889 while ((i=path.find('/',p))!=-1)
890 {
891 QCString part=path.left(i+1);
892 if (!matchPath(part,Config_getList(STRIP_FROM_PATH)) && (part!="/" && part!="//" && part!="//?/"))
893 {
895 }
896 p=i+1;
897 }
898 return dir;
899}
static DirDef * createNewDir(const QCString &path)
Definition dirdef.cpp:853
static bool matchPath(const QCString &path, const StringVector &l)
Definition dirdef.cpp:868
int find(char c, int index=0, bool cs=TRUE) const
Definition qcstring.cpp:43
QCString left(size_t len) const
Definition qcstring.h:214
#define Config_getList(name)
Definition config.h:38
QCString removeLongPathMarker(QCString path)
Definition util.cpp:299

References AUTO_TRACE, Config_getList, createNewDir(), QCString::find(), QCString::left(), matchPath(), and removeLongPathMarker().

Referenced by buildDirectories().

◆ overrideDirectoryGraph()

void DirDefImpl::overrideDirectoryGraph ( bool e)
overridevirtual

Implements DirDef.

Definition at line 901 of file dirdef.cpp.

902{
904}

References m_hasDirectoryGraph.

◆ parent()

DirDef * DirDefImpl::parent ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 58 of file dirdef.cpp.

58{ return m_parent; }

References m_parent.

Referenced by addUsesDependency(), and setLevel().

◆ setDirIndex()

void DirDefImpl::setDirIndex ( int index)
overridevirtual

Implements DirDef.

Definition at line 173 of file dirdef.cpp.

174{
175 m_dirIndex=index;
176}

References m_dirIndex.

◆ setDiskName()

void DirDefImpl::setDiskName ( const QCString & name)
inlineoverridevirtual

Implements DirDef.

Definition at line 68 of file dirdef.cpp.

68{ m_diskName = name; }

References m_diskName, and DefinitionMixin< DirDef >::name().

◆ setLevel()

void DirDefImpl::setLevel ( )
overridevirtual

Implements DirDef.

Definition at line 685 of file dirdef.cpp.

686{
687 if (m_level==-1) // level not set before
688 {
689 DirDef *p = parent();
690 if (p)
691 {
692 p->setLevel();
693 m_level = p->level()+1;
694 }
695 else
696 {
697 m_level = 0;
698 }
699 }
700}
virtual int level() const =0
virtual void setLevel()=0

References DirDef::level(), m_level, parent(), and DirDef::setLevel().

◆ setParent()

void DirDefImpl::setParent ( DirDef * parent)
overridevirtual

Implements DirDef.

Definition at line 168 of file dirdef.cpp.

169{
170 m_parent=p;
171}

References m_parent.

◆ shortName()

const QCString DirDefImpl::shortName ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 51 of file dirdef.cpp.

51{ return m_shortName; }

References m_shortName.

Referenced by addUsesDependency(), computeDependencies(), and writeDirectoryGraph().

◆ shortTitle()

QCString DirDefImpl::shortTitle ( ) const
overridevirtual

Implements DirDef.

Definition at line 496 of file dirdef.cpp.

497{
498 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
499 {
500 return m_shortName;
501 }
502 else
503 {
505 }
506}
virtual QCString trDirReference(const QCString &dirName)=0
Translator * theTranslator
Definition language.cpp:71

References Config_getBool, m_shortName, and theTranslator.

Referenced by writeDocumentation().

◆ sort()

void DirDefImpl::sort ( )
overridevirtual

Implements DirDef.

Definition at line 184 of file dirdef.cpp.

185{
186 std::stable_sort(m_subdirs.begin(), m_subdirs.end(), compareDirDefs);
187 std::stable_sort(m_fileList.begin(), m_fileList.end(), compareFileDefs);
188}
bool compareDirDefs(const DirDef *item1, const DirDef *item2)
Definition dirdef.cpp:1198
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
Definition filedef.cpp:1925

References compareDirDefs(), compareFileDefs(), m_fileList, and m_subdirs.

◆ startMemberDeclarations()

void DirDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 486 of file dirdef.cpp.

487{
489}
void startMemberSections()
Definition outputlist.h:463

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ subDirs()

const DirList & DirDefImpl::subDirs ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 55 of file dirdef.cpp.

55{ return m_subdirs; }

References m_subdirs.

◆ usedDirs()

const UsedDirLinkedMap & DirDefImpl::usedDirs ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 60 of file dirdef.cpp.

60{ return m_usedDirs; }

References m_usedDirs.

◆ writeBriefDescription()

void DirDefImpl::writeBriefDescription ( OutputList & ol)
private

Definition at line 278 of file dirdef.cpp.

279{
280 AUTO_TRACE();
282 {
283 auto parser { createDocParser() };
284 auto ast { validatingParseDoc(
285 *parser.get(), briefFile(),briefLine(),this,nullptr,briefDescription(),TRUE,FALSE,
286 QCString(),FALSE,FALSE) };
287 if (!ast->isEmpty())
288 {
289 ol.startParagraph();
292 ol.writeString(" - ");
294 ol.writeDoc(ast.get(),this,nullptr);
297 ol.writeString(" \n");
299
300 if (Config_getBool(REPEAT_BRIEF) ||
301 !documentation().isEmpty()
302 )
303 {
305 ol.startTextLink(QCString(),"details");
307 ol.endTextLink();
308 }
310
311 ol.endParagraph();
312 }
313 }
314 ol.writeSynopsis();
315}
virtual QCString briefFile() const =0
bool hasBriefDescription() const override
int briefLine() const override
void writeString(const QCString &text)
Definition outputlist.h:413
void disable(OutputType o)
void enable(OutputType o)
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md)
Definition outputlist.h:385
void startParagraph(const QCString &classDef=QCString())
Definition outputlist.h:409
void endParagraph()
Definition outputlist.h:411
void endTextLink()
Definition outputlist.h:446
void writeSynopsis()
Definition outputlist.h:594
void pushGeneratorState()
void disableAllBut(OutputType o)
void popGeneratorState()
void parseText(const QCString &textStr)
void startTextLink(const QCString &file, const QCString &anchor)
Definition outputlist.h:444
virtual QCString trMore()=0
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &input, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport, bool autolinkSupport)
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:55

References AUTO_TRACE, DefinitionMixin< DirDef >::briefDescription(), DefinitionMixin< DirDef >::briefFile(), DefinitionMixin< DirDef >::briefLine(), Config_getBool, createDocParser(), OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< DirDef >::documentation(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTextLink(), FALSE, DefinitionMixin< DirDef >::hasBriefDescription(), Html, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startParagraph(), OutputList::startTextLink(), theTranslator, TRUE, validatingParseDoc(), OutputList::writeDoc(), OutputList::writeString(), and OutputList::writeSynopsis().

Referenced by writeDocumentation().

◆ writeDetailedDescription()

void DirDefImpl::writeDetailedDescription ( OutputList & ol,
const QCString & title )
private

Definition at line 231 of file dirdef.cpp.

232{
233 AUTO_TRACE();
234 if ((!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF)) ||
235 !documentation().isEmpty())
236 {
239 ol.writeRuler();
243 ol.writeAnchor(QCString(),"details");
245 ol.startGroupHeader("details");
246 ol.parseText(title);
247 ol.endGroupHeader();
248
249 // repeat brief description
250 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
251 {
253 QCString(),FALSE,FALSE);
254 }
255 // separator between brief and details
256 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
257 !documentation().isEmpty())
258 {
262 ol.enableAll();
265 ol.writeString("\n\n");
267 }
268
269 // write documentation
270 if (!documentation().isEmpty())
271 {
272 ol.generateDoc(docFile(),docLine(),this,nullptr,documentation()+"\n",TRUE,FALSE,
273 QCString(),FALSE,FALSE);
274 }
275 }
276}
QCString briefFile() const override
int docLine() const override
void writeRuler()
Definition outputlist.h:523
void startGroupHeader(const QCString &id=QCString(), int extraLevels=0)
Definition outputlist.h:455
void writeAnchor(const QCString &fileName, const QCString &name)
Definition outputlist.h:525
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:457
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport=Config_getBool(MARKDOWN_SUPPORT), bool autolinkSupport=Config_getBool(AUTOLINK_SUPPORT))
void enableAll()

References AUTO_TRACE, DefinitionMixin< DirDef >::briefDescription(), DefinitionMixin< DirDef >::briefFile(), DefinitionMixin< DirDef >::briefLine(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< DirDef >::docFile(), DefinitionMixin< DirDef >::docLine(), DefinitionMixin< DirDef >::documentation(), OutputList::enable(), OutputList::enableAll(), OutputList::endGroupHeader(), FALSE, OutputList::generateDoc(), Html, Latex, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startGroupHeader(), TRUE, OutputList::writeAnchor(), OutputList::writeRuler(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writeDirectoryGraph()

void DirDefImpl::writeDirectoryGraph ( OutputList & ol)
private

Definition at line 322 of file dirdef.cpp.

323{
324 // write graph dependency graph
325 if (Config_getBool(HAVE_DOT) && m_hasDirectoryGraph /*&& Config_getBool(DIRECTORY_GRAPH)*/)
326 {
327 DotDirDeps dirDep(this);
328 if (!dirDep.isTrivial())
329 {
330 msg("Generating dependency graph for directory {}\n",displayName());
332 //ol.startParagraph();
333 ol.startDirDepGraph();
335 ol.endDirDepGraph(dirDep);
336 //ol.endParagraph();
337 ol.enableAll();
338 }
339 }
340}
QCString displayName(bool=TRUE) const override
Definition dirdef.cpp:50
void endDirDepGraph(DotDirDeps &g)
Definition outputlist.h:664
void startDirDepGraph()
Definition outputlist.h:662
virtual QCString trDirDepGraph(const QCString &name)=0
#define msg(fmt,...)
Definition message.h:94

References Config_getBool, OutputList::disable(), displayName(), OutputList::enableAll(), OutputList::endDirDepGraph(), DotDirDeps::isTrivial(), m_hasDirectoryGraph, Man, msg, OutputList::parseText(), shortName(), OutputList::startDirDepGraph(), and theTranslator.

Referenced by writeDocumentation().

◆ writeDocumentation()

void DirDefImpl::writeDocumentation ( OutputList & ol)
overridevirtual

Implements DirDef.

Definition at line 553 of file dirdef.cpp.

554{
555 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
557
558 QCString title;
559 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
560 {
561 title=m_dispName;
562 }
563 else
564 {
566 }
567 AUTO_TRACE("title={}",title);
568 startFile(ol,getOutputFileBase(),name(),title,HighlightedItem::Files,!generateTreeView);
569
570 if (!generateTreeView)
571 {
572 // write navigation path
574 ol.endQuickIndices();
575 }
576
580 ol.parseText(shortTitle());
581 ol.enableAll();
583 ol.parseText(title);
585 endTitle(ol,getOutputFileBase(),title);
586 ol.startContents();
587
588 //---------------------------------------- start flexible part -------------------------------
589
590 SrcLangExt lang = getLanguage();
591 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Directory))
592 {
593 switch (lde->kind())
594 {
595 case LayoutDocEntry::BriefDesc:
597 break;
598 case LayoutDocEntry::DirGraph:
600 break;
601 case LayoutDocEntry::MemberDeclStart:
603 break;
604 case LayoutDocEntry::DirSubDirs:
605 writeSubDirList(ol);
606 break;
607 case LayoutDocEntry::DirFiles:
608 writeFileList(ol);
609 break;
610 case LayoutDocEntry::MemberDeclEnd:
612 break;
613 case LayoutDocEntry::DetailedDesc:
614 {
615 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
616 if (ls)
617 {
618 writeDetailedDescription(ol,ls->title(lang));
619 }
620 }
621 break;
622 case LayoutDocEntry::ClassIncludes:
623 case LayoutDocEntry::ClassInlineClasses:
624 case LayoutDocEntry::ClassInheritanceGraph:
625 case LayoutDocEntry::ClassNestedClasses:
626 case LayoutDocEntry::ClassCollaborationGraph:
627 case LayoutDocEntry::ClassAllMembersLink:
628 case LayoutDocEntry::ClassUsedFiles:
629 case LayoutDocEntry::NamespaceNestedNamespaces:
630 case LayoutDocEntry::NamespaceNestedConstantGroups:
631 case LayoutDocEntry::NamespaceClasses:
632 case LayoutDocEntry::NamespaceConcepts:
633 case LayoutDocEntry::NamespaceInterfaces:
634 case LayoutDocEntry::NamespaceStructs:
635 case LayoutDocEntry::NamespaceExceptions:
636 case LayoutDocEntry::NamespaceInlineClasses:
637 case LayoutDocEntry::ConceptDefinition:
638 case LayoutDocEntry::FileClasses:
639 case LayoutDocEntry::FileConcepts:
640 case LayoutDocEntry::FileInterfaces:
641 case LayoutDocEntry::FileStructs:
642 case LayoutDocEntry::FileExceptions:
643 case LayoutDocEntry::FileNamespaces:
644 case LayoutDocEntry::FileConstantGroups:
645 case LayoutDocEntry::FileIncludes:
646 case LayoutDocEntry::FileIncludeGraph:
647 case LayoutDocEntry::FileIncludedByGraph:
648 case LayoutDocEntry::FileSourceLink:
649 case LayoutDocEntry::FileInlineClasses:
650 case LayoutDocEntry::GroupClasses:
651 case LayoutDocEntry::GroupConcepts:
652 case LayoutDocEntry::GroupModules:
653 case LayoutDocEntry::GroupInlineClasses:
654 case LayoutDocEntry::GroupNamespaces:
655 case LayoutDocEntry::GroupDirs:
656 case LayoutDocEntry::GroupNestedGroups:
657 case LayoutDocEntry::GroupFiles:
658 case LayoutDocEntry::GroupGraph:
659 case LayoutDocEntry::GroupPageDocs:
660 case LayoutDocEntry::ModuleExports:
661 case LayoutDocEntry::ModuleClasses:
662 case LayoutDocEntry::ModuleConcepts:
663 case LayoutDocEntry::ModuleUsedFiles:
664 case LayoutDocEntry::AuthorSection:
665 case LayoutDocEntry::MemberGroups:
666 case LayoutDocEntry::MemberDecl:
667 case LayoutDocEntry::MemberDef:
668 case LayoutDocEntry::MemberDefStart:
669 case LayoutDocEntry::MemberDefEnd:
670 err("Internal inconsistency: member '{}' should not be part of "
671 "LayoutDocManager::Directory entry list\n",qPrint(lde->entryToString()));
672 break;
673 }
674 }
675
676 //---------------------------------------- end flexible part -------------------------------
677
678 ol.endContents();
679
680 endFileWithNavPath(ol,this);
681
683}
void writeNavigationPath(OutputList &ol) const override
SrcLangExt getLanguage() const override
void writeSubDirList(OutputList &ol)
Definition dirdef.cpp:342
void startMemberDeclarations(OutputList &ol)
Definition dirdef.cpp:486
void writeDetailedDescription(OutputList &ol, const QCString &title)
Definition dirdef.cpp:231
QCString getOutputFileBase() const override
Definition dirdef.cpp:224
void writeDirectoryGraph(OutputList &ol)
Definition dirdef.cpp:322
void writeFileList(OutputList &ol)
Definition dirdef.cpp:402
QCString shortTitle() const override
Definition dirdef.cpp:496
void endMemberDeclarations(OutputList &ol)
Definition dirdef.cpp:491
void writeBriefDescription(OutputList &ol)
Definition dirdef.cpp:278
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1435
void endContents()
Definition outputlist.h:622
void endQuickIndices()
Definition outputlist.h:606
void startContents()
Definition outputlist.h:620
void startTitle(OutputList &ol, const QCString &fileName, const DefinitionMutable *def)
Definition index.cpp:384
void endTitle(OutputList &ol, const QCString &fileName, const QCString &name)
Definition index.cpp:394
void startFile(OutputList &ol, const QCString &name, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName, int hierarchyLevel, const QCString &allMembersFile)
Definition index.cpp:401
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
Definition index.cpp:448
#define err(fmt,...)
Definition message.h:127
QCString title(SrcLangExt lang) const
Definition layout.cpp:1779
SrcLangExt
Definition types.h:207

References AUTO_TRACE, Config_getBool, OutputList::disable(), OutputList::disableAllBut(), OutputList::enableAll(), OutputList::endContents(), endFileWithNavPath(), endMemberDeclarations(), OutputList::endQuickIndices(), endTitle(), err, Files, DefinitionMixin< DirDef >::getLanguage(), getOutputFileBase(), Html, LayoutDocManager::instance(), m_dispName, DefinitionMixin< DirDef >::name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), qPrint(), shortTitle(), OutputList::startContents(), startFile(), startMemberDeclarations(), startTitle(), theTranslator, LayoutDocEntrySection::title(), writeBriefDescription(), writeDetailedDescription(), writeDirectoryGraph(), writeFileList(), DefinitionMixin< DirDef >::writeNavigationPath(), and writeSubDirList().

◆ writeFileList()

void DirDefImpl::writeFileList ( OutputList & ol)
private

Definition at line 402 of file dirdef.cpp.

403{
404 AUTO_TRACE();
405 int numFiles = 0;
406 for (const auto &fd : m_fileList)
407 {
408 bool genSourceFile=false;
409 if (fileVisibleInIndex(fd,genSourceFile))
410 {
411 numFiles++;
412 }
413 else if (genSourceFile)
414 {
415 numFiles++;
416 }
417 }
418
419 AUTO_TRACE_ADD("numFiles={}",numFiles);
420 // write file list
421 if (numFiles>0)
422 {
423 ol.startMemberHeader("files");
425 ol.endMemberHeader();
426 ol.startMemberList();
427 for (const auto &fd : m_fileList)
428 {
429 bool src = false;
430 bool doc = fileVisibleInIndex(fd,src);
431 if (doc || src)
432 {
434 QCString anc = fd->anchor();
435 if (anc.isEmpty()) anc=fd->displayName(); else anc.prepend(fd->displayName()+"_");
437 {
440 bool genSrc = fd->generateSourceFile();
441 if (genSrc)
442 {
443 ol.startTextLink(fd->includeName(),QCString());
444 }
445 ol.writeString("<span class=\"icondoc\"><div class=\"doc-icon\"></div></span>");
446 if (genSrc)
447 {
448 ol.endTextLink();
449 }
450 ol.enableAll();
454 }
456 if (fd->isLinkable())
457 {
458 ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),QCString(),fd->displayName());
459 }
460 else
461 {
462 ol.startBold();
463 ol.docify(fd->displayName());
464 ol.endBold();
465 }
467 if (!fd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
468 {
469 ol.startMemberDescription(fd->getOutputFileBase());
470 ol.generateDoc(briefFile(),briefLine(),fd,nullptr,fd->briefDescription(),
471 FALSE, // indexWords
472 FALSE, // isExample
473 QCString(), // exampleName
474 TRUE, // single line
475 TRUE // link from index
476 );
478 }
479 ol.endMemberDeclaration(fd->anchor(),QCString());
480 }
481 }
482 ol.endMemberList();
483 }
484}
void startMemberDeclaration()
Definition outputlist.h:571
void endMemberDescription()
Definition outputlist.h:569
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition outputlist.h:441
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
Definition outputlist.h:567
void docify(const QCString &s)
Definition outputlist.h:439
void startMemberList()
Definition outputlist.h:483
void startBold()
Definition outputlist.h:563
void endMemberItem(OutputGenerator::MemberItemType type)
Definition outputlist.h:497
void endMemberList()
Definition outputlist.h:485
void insertMemberAlign(bool templ=FALSE)
Definition outputlist.h:519
void endBold()
Definition outputlist.h:565
void endMemberDeclaration(const QCString &anchor, const QCString &inheritId)
Definition outputlist.h:573
void endMemberHeader()
Definition outputlist.h:473
void startMemberItem(const QCString &anchor, OutputGenerator::MemberItemType type, const QCString &id=QCString())
Definition outputlist.h:495
void startMemberHeader(const QCString &anchor, int typ=2)
Definition outputlist.h:471
QCString & prepend(const char *s)
Definition qcstring.h:407
virtual QCString trFile(bool first_capital, bool singular)=0
bool fileVisibleInIndex(const FileDef *fd, bool &genSourceFile)
Definition util.cpp:6600

References AUTO_TRACE, AUTO_TRACE_ADD, DefinitionMixin< DirDef >::briefFile(), DefinitionMixin< DirDef >::briefLine(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), OutputList::enableAll(), OutputList::endBold(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), OutputList::endTextLink(), FALSE, fileVisibleInIndex(), OutputList::generateDoc(), Html, OutputList::insertMemberAlign(), QCString::isEmpty(), m_fileList, OutputGenerator::Normal, OutputList::parseText(), OutputList::popGeneratorState(), QCString::prepend(), OutputList::pushGeneratorState(), OutputList::startBold(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), OutputList::startTextLink(), theTranslator, TRUE, OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writePageNavigation()

void DirDefImpl::writePageNavigation ( OutputList & ol) const
overridevirtual

Reimplemented from DefinitionMixin< DirDef >.

Definition at line 317 of file dirdef.cpp.

318{
319 ol.writePageOutline();
320}
void writePageOutline()
Definition outputlist.h:618

References OutputList::writePageOutline().

◆ writeSubDirList()

void DirDefImpl::writeSubDirList ( OutputList & ol)
private

Definition at line 342 of file dirdef.cpp.

343{
344 AUTO_TRACE();
345 int numSubdirs = 0;
346 for(const auto dd : m_subdirs)
347 {
348 if (dd->hasDocumentation() || !dd->getFiles().empty())
349 {
350 numSubdirs++;
351 }
352 }
353
354 AUTO_TRACE_ADD("numSubdirs={}",numSubdirs);
355 // write subdir list
356 if (numSubdirs>0)
357 {
358 ol.startMemberHeader("subdirs");
360 ol.endMemberHeader();
361 ol.startMemberList();
362 for(const auto dd : m_subdirs)
363 {
364 if (dd->hasDocumentation() || !dd->getFiles().empty())
365 {
367 QCString anc=dd->anchor();
368 if (anc.isEmpty()) anc=dd->shortName(); else anc.prepend(dd->shortName()+"_");
370 {
373 ol.writeString("<span class=\"iconfolder\"><div class=\"folder-icon\"></div></span>");
374 ol.enableAll();
378 }
380 ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),QCString(),dd->shortName());
382 if (!dd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
383 {
384 ol.startMemberDescription(dd->getOutputFileBase());
385 ol.generateDoc(briefFile(),briefLine(),dd,nullptr,dd->briefDescription(),
386 FALSE, // indexWords
387 FALSE, // isExample
388 QCString(), // exampleName
389 TRUE, // single line
390 TRUE // link from index
391 );
393 }
394 ol.endMemberDeclaration(dd->anchor(),QCString());
395 }
396 }
397
398 ol.endMemberList();
399 }
400}
virtual QCString trDir(bool first_capital, bool singular)=0

References AUTO_TRACE, AUTO_TRACE_ADD, DefinitionMixin< DirDef >::briefFile(), DefinitionMixin< DirDef >::briefLine(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), OutputList::enableAll(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), FALSE, OutputList::generateDoc(), Html, OutputList::insertMemberAlign(), QCString::isEmpty(), m_subdirs, OutputGenerator::Normal, OutputList::parseText(), OutputList::popGeneratorState(), QCString::prepend(), OutputList::pushGeneratorState(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), theTranslator, TRUE, OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writeTagFile()

void DirDefImpl::writeTagFile ( TextStream & t)
overridevirtual

Implements DirDef.

Definition at line 514 of file dirdef.cpp.

515{
516 tagFile << " <compound kind=\"dir\">\n";
517 tagFile << " <name>" << convertToXML(displayName()) << "</name>\n";
518 tagFile << " <path>" << convertToXML(stripFromPath(name())) << "</path>\n";
519 QCString fn=getOutputFileBase();
521 tagFile << " <filename>" << fn << "</filename>\n";
522 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Directory))
523 {
524 switch (lde->kind())
525 {
526 case LayoutDocEntry::DirSubDirs:
527 {
528 if (m_subdirs.size()>0)
529 {
530 for(const auto dd : m_subdirs)
531 {
532 tagFile << " <dir>" << convertToXML(dd->displayName()) << "</dir>\n";
533 }
534 }
535 }
536 break;
537 case LayoutDocEntry::DirFiles:
538 {
539 for (const auto &fd : m_fileList)
540 {
541 tagFile << " <file>" << convertToXML(fd->name()) << "</file>\n";
542 }
543 }
544 break;
545 default:
546 break;
547 }
548 }
550 tagFile << " </compound>\n";
551}
void writeDocAnchorsToTagFile(TextStream &fs) const override
QCString convertToXML(const QCString &s, bool keepEntities)
Definition util.cpp:4425
void addHtmlExtensionIfMissing(QCString &fName)
Definition util.cpp:5412

References addHtmlExtensionIfMissing(), convertToXML(), displayName(), getOutputFileBase(), LayoutDocManager::instance(), m_fileList, m_subdirs, DefinitionMixin< DirDef >::name(), stripFromPath(), and DefinitionMixin< DirDef >::writeDocAnchorsToTagFile().

Member Data Documentation

◆ m_dirIndex

int DirDefImpl::m_dirIndex = -1
private

Definition at line 102 of file dirdef.cpp.

Referenced by dirIndex(), and setDirIndex().

◆ m_diskName

QCString DirDefImpl::m_diskName
private

Definition at line 100 of file dirdef.cpp.

Referenced by DirDefImpl(), getOutputFileBase(), and setDiskName().

◆ m_dispName

QCString DirDefImpl::m_dispName
private

Definition at line 98 of file dirdef.cpp.

Referenced by DirDefImpl(), displayName(), and writeDocumentation().

◆ m_fileList

FileList DirDefImpl::m_fileList
private

Definition at line 101 of file dirdef.cpp.

Referenced by addFile(), computeDependencies(), getFiles(), sort(), writeFileList(), and writeTagFile().

◆ m_hasDirectoryGraph

bool DirDefImpl::m_hasDirectoryGraph = false
private

◆ m_level

int DirDefImpl::m_level
private

Definition at line 103 of file dirdef.cpp.

Referenced by DirDefImpl(), level(), and setLevel().

◆ m_parent

DirDef* DirDefImpl::m_parent
private

Definition at line 104 of file dirdef.cpp.

Referenced by depGraphIsTrivial(), DirDefImpl(), parent(), and setParent().

◆ m_shortName

QCString DirDefImpl::m_shortName
private

Definition at line 99 of file dirdef.cpp.

Referenced by DirDefImpl(), shortName(), and shortTitle().

◆ m_subdirs

DirList DirDefImpl::m_subdirs
private

Definition at line 97 of file dirdef.cpp.

Referenced by addSubDir(), hasSubdirs(), sort(), subDirs(), writeSubDirList(), and writeTagFile().

◆ m_usedDirs

UsedDirLinkedMap DirDefImpl::m_usedDirs
private

Definition at line 105 of file dirdef.cpp.

Referenced by addUsesDependency(), computeDependencies(), depGraphIsTrivial(), and usedDirs().


The documentation for this class was generated from the following file: