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
void addListReferences () override
void addRequirementReferences () 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 RequirementRefsrequirementReferences () 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 setRequirementReferences (const RequirementRefs &rqli) 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
bool hasRequirementRefs () const override
void writeRequirementRefs (OutputList &ol) 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 120 of file dirdef.cpp.

120 : DefinitionMixin(path,1,1,path)
121{
122 bool fullPathNames = Config_getBool(FULL_PATH_NAMES);
123 // get display name (stripping the paths mentioned in STRIP_FROM_PATH)
124 // get short name (last part of path)
125 m_shortName = path;
126 m_diskName = path;
127 if (m_shortName.at(m_shortName.length()-1)=='/')
128 { // strip trailing /
129 m_shortName = m_shortName.left(m_shortName.length()-1);
130 }
131 int pi=m_shortName.findRev('/');
132 if (pi!=-1)
133 { // remove everything till the last /
134 m_shortName = m_shortName.mid(pi+1);
135 }
137 m_dispName = fullPathNames ? stripFromPath(path) : m_shortName;
138 if (m_dispName.length()>0 && m_dispName.at(m_dispName.length()-1)=='/')
139 { // strip trailing /
140 m_dispName = m_dispName.left(m_dispName.length()-1);
141 }
142
143 m_level=-1;
144 m_parent=nullptr;
145 m_hasDirectoryGraph=Config_getBool(DIRECTORY_GRAPH);
146
147}
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:106
QCString m_diskName
Definition dirdef.cpp:102
QCString m_shortName
Definition dirdef.cpp:101
QCString m_dispName
Definition dirdef.cpp:100
int m_level
Definition dirdef.cpp:105
bool m_hasDirectoryGraph
Definition dirdef.cpp:108
#define Config_getBool(name)
Definition config.h:33
static QCString stripFromPath(const QCString &p, const StringVector &l)
Definition util.cpp:299

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 149 of file dirdef.cpp.

150{
151}

Member Function Documentation

◆ addFile()

void DirDefImpl::addFile ( FileDef * fd)
overridevirtual

Implements DirDef.

Definition at line 180 of file dirdef.cpp.

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

References m_fileList, and FileDef::setDirDef().

◆ addListReferences()

void DirDefImpl::addListReferences ( )
overridevirtual

Implements DirDef.

Definition at line 792 of file dirdef.cpp.

793{
794 QCString name = getOutputFileBase();
797 name,displayName(),QCString(),nullptr);
798}
virtual const QCString & name() const =0
const RefItemVector & xrefListItems() const override
QCString getOutputFileBase() const override
Definition dirdef.cpp:226
QCString displayName(bool=TRUE) const override
Definition dirdef.cpp:50
virtual QCString trDir(bool first_capital, bool singular)=0
Translator * theTranslator
Definition language.cpp:71
#define TRUE
Definition qcstring.h:37
void addRefItem(const RefItemVector &sli, const QCString &key, const QCString &prefix, const QCString &name, const QCString &title, const QCString &args, const Definition *scope)
Definition util.cpp:4805

References addRefItem(), displayName(), getOutputFileBase(), DefinitionMixin< DirDef >::name(), theTranslator, TRUE, and DefinitionMixin< DirDef >::xrefListItems().

◆ addRequirementReferences()

void DirDefImpl::addRequirementReferences ( )
overridevirtual

Implements DirDef.

Definition at line 800 of file dirdef.cpp.

801{
803}
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)

References RequirementManager::addRequirementRefsForSymbol(), and RequirementManager::instance().

◆ addSubDir()

void DirDefImpl::addSubDir ( DirDef * subdir)
overridevirtual

Implements DirDef.

Definition at line 163 of file dirdef.cpp.

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

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 728 of file dirdef.cpp.

730{
731 if (this==dir) return; // do not add self-dependencies
732 AUTO_TRACE("add dependency {}->{} due to {}->{}",
733 qPrint(shortName()),
734 qPrint(dir->shortName()),
735 qPrint(srcFd->name()),
736 qPrint(dstFd->name()));
737
738 // levels match => add direct dependency
739 bool added=FALSE;
740 UsedDir *usedDir = m_usedDirs.find(dir->getOutputFileBase());
741 if (usedDir) // dir dependency already present
742 {
743 const FilePair *usedPair = usedDir->findFilePair(FilePair::key(srcFd,dstFd));
744 if (usedPair==nullptr) // new file dependency
745 {
746 AUTO_TRACE_ADD("{} => {} new file dependency",srcFd->name(),dstFd->name());
747 usedDir->addFileDep(srcFd,dstFd, srcDirect, dstDirect);
748 added=TRUE;
749 }
750 else
751 {
752 // dir & file dependency already added
753 }
754 }
755 else // new directory dependency
756 {
757 AUTO_TRACE_ADD("{} => {} new file dependency",srcFd->name(),dstFd->name());
758 auto newUsedDir = std::make_unique<UsedDir>(dir);
759 newUsedDir->addFileDep(srcFd,dstFd, srcDirect, dstDirect);
760 m_usedDirs.add(dir->getOutputFileBase(),std::move(newUsedDir));
761 added=TRUE;
762 }
763 if (added)
764 {
765 if (dir->parent())
766 {
767 // add relation to parent of used dir
769 srcFd,
770 dstFd,
771 srcDirect,
772 false); // indirect dependency on dest dir
773 }
774 if (parent())
775 {
776 // add relation for the parent of this dir as well
778 srcFd,
779 dstFd,
780 false, // indirect dependency from source dir
781 dstDirect);
782 }
783 }
784}
virtual QCString getOutputFileBase() 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:728
UsedDirLinkedMap m_usedDirs
Definition dirdef.cpp:107
static QCString key(const FileDef *srcFd, const FileDef *dstFd)
Definition dirdef.cpp:947
void addFileDep(const FileDef *srcFd, const FileDef *dstFd, bool srcDirect, bool dstDirect)
Take up dependency between files.
Definition dirdef.cpp:861
FilePair * findFilePair(const QCString &name)
Definition dirdef.cpp:882
#define AUTO_TRACE_ADD(...)
Definition docnode.cpp:48
#define AUTO_TRACE(...)
Definition docnode.cpp:47
const char * qPrint(const char *s)
Definition qcstring.h:687
#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 807 of file dirdef.cpp.

808{
809 AUTO_TRACE();
810 for (const auto &fd : m_fileList)
811 {
812 AUTO_TRACE_ADD("dir={} file={}",shortName(),fd->name());
813 for (const auto &ii : fd->includeFileList())
814 {
815 AUTO_TRACE_ADD("#include {}",ii.includeName);
816 if (ii.fileDef && ii.fileDef->isLinkable()) // linkable file
817 {
818 DirDef *usedDir = ii.fileDef->getDirDef();
819 if (usedDir)
820 {
821 // add dependency: thisDir->usedDir
822 AUTO_TRACE_ADD("add dependency {}->{}",name(),usedDir->name());
823 addUsesDependency(usedDir,fd,ii.fileDef,true,true);
824 }
825 }
826 }
827 }
828
829 std::stable_sort(m_usedDirs.begin(),m_usedDirs.end(),
830 [](const auto &u1,const auto &u2)
831 { return qstricmp_sort(u1->dir()->getOutputFileBase(),u2->dir()->getOutputFileBase())<0; });
832
833 for (const auto& usedDirectory : m_usedDirs)
834 {
835 usedDirectory->sort();
836 }
837}
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 887 of file dirdef.cpp.

888{
889 AUTO_TRACE();
890 ASSERT(path!=nullptr);
891 DirDef *dir = Doxygen::dirLinkedMap->find(path);
892 if (dir==nullptr) // new dir
893 {
894 dir = Doxygen::dirLinkedMap->add(path,
895 std::unique_ptr<DirDef>(
896 createDirDef(path)));
897 AUTO_TRACE_ADD("Adding new dir {} shortName {}",path,dir->shortName());
898 }
899 return dir;
900}
static DirLinkedMap * dirLinkedMap
Definition doxygen.h:128
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:111
#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 849 of file dirdef.cpp.

850{
851 return m_usedDirs.empty() && m_parent==nullptr;
852}

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:104

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 addListReferences(), writeDirectoryGraph(), and writeTagFile().

◆ endMemberDeclarations()

void DirDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 512 of file dirdef.cpp.

513{
515}
void endMemberSections()
Definition outputlist.h:463

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ findSectionsInDocumentation()

void DirDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements DirDef.

Definition at line 786 of file dirdef.cpp.

787{
790}
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 226 of file dirdef.cpp.

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

References AUTO_TRACE, encodeDirName(), and m_diskName.

Referenced by addListReferences(), writeDocumentation(), and writeTagFile().

◆ hasDetailedDescription()

bool DirDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements DirDef.

Definition at line 529 of file dirdef.cpp.

530{
531 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
532 return (!briefDescription().isEmpty() && repeatBrief) || !documentation().isEmpty() || hasRequirementRefs();
533}
bool hasRequirementRefs() const override
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:163

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

Referenced by writeDetailedDescription().

◆ hasDirectoryGraph()

bool DirDefImpl::hasDirectoryGraph ( ) const
overridevirtual

Implements DirDef.

Definition at line 940 of file dirdef.cpp.

941{
942 return m_hasDirectoryGraph;
943}

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 158 of file dirdef.cpp.

159{
160 return isReference() || isLinkableInProject();
161}
bool isReference() const override
bool isLinkableInProject() const override
Definition dirdef.cpp:153

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 153 of file dirdef.cpp.

154{
155 return !isReference() && hasDocumentation();
156}
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 839 of file dirdef.cpp.

840{
841 if (dir->parent()==this) // this is a parent of dir
842 return TRUE;
843 else if (dir->parent()) // repeat for the parent of dir
844 return isParentOf(dir->parent());
845 else
846 return FALSE;
847}
bool isParentOf(const DirDef *dir) const override
Definition dirdef.cpp:839

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 902 of file dirdef.cpp.

903{
904 for (const auto &s : l)
905 {
906 std::string prefix = s.substr(0,path.length());
907 if (qstricmp_sort(prefix.c_str(),path)==0) // case insensitive compare
908 {
909 return TRUE;
910 }
911 }
912 return FALSE;
913}
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:166
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 918 of file dirdef.cpp.

919{
920 AUTO_TRACE("path={}",path);
921 int p=0,i=0;
922 DirDef *dir=nullptr;
923 while ((i=path.find('/',p))!=-1)
924 {
925 QCString part=path.left(i+1);
926 if (!matchPath(part,Config_getList(STRIP_FROM_PATH)) && (part!="/" && part!="//" && part!="//?/"))
927 {
929 }
930 p=i+1;
931 }
932 return dir;
933}
static DirDef * createNewDir(const QCString &path)
Definition dirdef.cpp:887
static bool matchPath(const QCString &path, const StringVector &l)
Definition dirdef.cpp:902
int find(char c, int index=0, bool cs=TRUE) const
Definition qcstring.cpp:43
QCString left(size_t len) const
Definition qcstring.h:229
#define Config_getList(name)
Definition config.h:38
QCString removeLongPathMarker(QCString path)
Definition util.cpp:288

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 935 of file dirdef.cpp.

936{
938}

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 175 of file dirdef.cpp.

176{
177 m_dirIndex=index;
178}

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 706 of file dirdef.cpp.

707{
708 if (m_level==-1) // level not set before
709 {
710 DirDef *p = parent();
711 if (p)
712 {
713 p->setLevel();
714 m_level = p->level()+1;
715 }
716 else
717 {
718 m_level = 0;
719 }
720 }
721}
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 170 of file dirdef.cpp.

171{
172 m_parent=p;
173}

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 517 of file dirdef.cpp.

518{
519 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
520 {
521 return m_shortName;
522 }
523 else
524 {
526 }
527}
virtual QCString trDirReference(const QCString &dirName)=0

References Config_getBool, m_shortName, and theTranslator.

Referenced by writeDocumentation().

◆ sort()

void DirDefImpl::sort ( )
overridevirtual

Implements DirDef.

Definition at line 186 of file dirdef.cpp.

187{
188 std::stable_sort(m_subdirs.begin(), m_subdirs.end(), compareDirDefs);
189 std::stable_sort(m_fileList.begin(), m_fileList.end(), compareFileDefs);
190}
bool compareDirDefs(const DirDef *item1, const DirDef *item2)
Definition dirdef.cpp:1232
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
Definition filedef.cpp:1960

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

◆ startMemberDeclarations()

void DirDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 507 of file dirdef.cpp.

508{
510}
void startMemberSections()
Definition outputlist.h:461

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 291 of file dirdef.cpp.

292{
293 AUTO_TRACE();
295 {
296 auto parser { createDocParser() };
297 auto ast { validatingParseDoc(*parser.get(),
298 briefFile(),
299 briefLine(),
300 this,
301 nullptr,
303 DocOptions()
304 .setIndexWords(true))
305 };
306 if (!ast->isEmpty())
307 {
308 ol.startParagraph();
311 ol.writeString(" - ");
313 ol.writeDoc(ast.get(),this,nullptr);
316 ol.writeString(" \n");
318
319 if (Config_getBool(REPEAT_BRIEF) ||
320 !documentation().isEmpty()
321 )
322 {
324 ol.startTextLink(QCString(),"details");
326 ol.endTextLink();
327 }
329
330 ol.endParagraph();
331 }
332 }
333 ol.writeSynopsis();
334}
virtual QCString briefFile() const =0
bool hasBriefDescription() const override
int briefLine() const override
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
Definition outputlist.h:383
void writeString(const QCString &text)
Definition outputlist.h:411
void disable(OutputType o)
void enable(OutputType o)
void startParagraph(const QCString &classDef=QCString())
Definition outputlist.h:407
void endParagraph()
Definition outputlist.h:409
void endTextLink()
Definition outputlist.h:444
void writeSynopsis()
Definition outputlist.h:592
void pushGeneratorState()
void disableAllBut(OutputType o)
void popGeneratorState()
void parseText(const QCString &textStr)
void startTextLink(const QCString &file, const QCString &anchor)
Definition outputlist.h:442
virtual QCString trMore()=0
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &input, const DocOptions &options)
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(), DefinitionMixin< DirDef >::hasBriefDescription(), Html, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startParagraph(), OutputList::startTextLink(), theTranslator, validatingParseDoc(), OutputList::writeDoc(), OutputList::writeString(), and OutputList::writeSynopsis().

Referenced by writeDocumentation().

◆ writeDetailedDescription()

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

Definition at line 233 of file dirdef.cpp.

234{
235 AUTO_TRACE();
237 {
240 ol.writeRuler();
244 ol.writeAnchor(QCString(),"details");
246 ol.startGroupHeader("details");
247 ol.parseText(title);
248 ol.endGroupHeader();
249
250 // repeat brief description
251 ol.startTextBlock();
252 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
253 {
255 briefLine(),
256 this,
257 nullptr,
259 DocOptions());
260 }
261 // separator between brief and details
262 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
263 !documentation().isEmpty())
264 {
268 ol.enableAll();
271 ol.writeString("\n\n");
273 }
274
275 // write documentation
276 if (!documentation().isEmpty())
277 {
278 ol.generateDoc(docFile(),
279 docLine(),
280 this,
281 nullptr,
282 documentation()+"\n",
283 DocOptions()
284 .setIndexWords(true));
285 }
287 ol.endTextBlock();
288 }
289}
QCString briefFile() const override
void writeRequirementRefs(OutputList &ol) const override
int docLine() const override
bool hasDetailedDescription() const override
Definition dirdef.cpp:529
void endTextBlock(bool paraBreak=FALSE)
Definition outputlist.h:672
void writeRuler()
Definition outputlist.h:521
void startGroupHeader(const QCString &id=QCString(), int extraLevels=0)
Definition outputlist.h:453
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, const DocOptions &options)
void startTextBlock(bool dense=FALSE)
Definition outputlist.h:670
void writeAnchor(const QCString &fileName, const QCString &name)
Definition outputlist.h:523
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:455
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(), OutputList::endTextBlock(), OutputList::generateDoc(), hasDetailedDescription(), DefinitionMixin< DirDef >::hasRequirementRefs(), Html, Latex, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startGroupHeader(), OutputList::startTextBlock(), OutputList::writeAnchor(), DefinitionMixin< DirDef >::writeRequirementRefs(), OutputList::writeRuler(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writeDirectoryGraph()

void DirDefImpl::writeDirectoryGraph ( OutputList & ol)
private

Definition at line 341 of file dirdef.cpp.

342{
343 // write graph dependency graph
344 if (Config_getBool(HAVE_DOT) && m_hasDirectoryGraph /*&& Config_getBool(DIRECTORY_GRAPH)*/)
345 {
346 DotDirDeps dirDep(this);
347 if (!dirDep.isTrivial())
348 {
349 msg("Generating dependency graph for directory {}\n",displayName());
351 //ol.startParagraph();
352 ol.startDirDepGraph();
354 ol.endDirDepGraph(dirDep);
355 //ol.endParagraph();
356 ol.enableAll();
357 }
358 }
359}
void endDirDepGraph(DotDirDeps &g)
Definition outputlist.h:662
void startDirDepGraph()
Definition outputlist.h:660
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 574 of file dirdef.cpp.

575{
576 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
578
579 QCString title;
580 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
581 {
582 title=m_dispName;
583 }
584 else
585 {
587 }
588 AUTO_TRACE("title={}",title);
589 startFile(ol,getOutputFileBase(),false,name(),title,HighlightedItem::Files,!generateTreeView);
590
591 if (!generateTreeView)
592 {
593 // write navigation path
595 ol.endQuickIndices();
596 }
597
601 ol.parseText(shortTitle());
602 ol.enableAll();
604 ol.parseText(title);
606 endTitle(ol,getOutputFileBase(),title);
607 ol.startContents();
608
609 //---------------------------------------- start flexible part -------------------------------
610
611 SrcLangExt lang = getLanguage();
612 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Directory))
613 {
614 switch (lde->kind())
615 {
616 case LayoutDocEntry::BriefDesc:
618 break;
619 case LayoutDocEntry::DirGraph:
621 break;
622 case LayoutDocEntry::MemberDeclStart:
624 break;
625 case LayoutDocEntry::DirSubDirs:
626 writeSubDirList(ol);
627 break;
628 case LayoutDocEntry::DirFiles:
629 writeFileList(ol);
630 break;
631 case LayoutDocEntry::MemberDeclEnd:
633 break;
634 case LayoutDocEntry::DetailedDesc:
635 {
636 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
637 if (ls)
638 {
639 writeDetailedDescription(ol,ls->title(lang));
640 }
641 }
642 break;
643 case LayoutDocEntry::ClassIncludes:
644 case LayoutDocEntry::ClassInlineClasses:
645 case LayoutDocEntry::ClassInheritanceGraph:
646 case LayoutDocEntry::ClassNestedClasses:
647 case LayoutDocEntry::ClassCollaborationGraph:
648 case LayoutDocEntry::ClassAllMembersLink:
649 case LayoutDocEntry::ClassUsedFiles:
650 case LayoutDocEntry::NamespaceNestedNamespaces:
651 case LayoutDocEntry::NamespaceNestedConstantGroups:
652 case LayoutDocEntry::NamespaceClasses:
653 case LayoutDocEntry::NamespaceConcepts:
654 case LayoutDocEntry::NamespaceInterfaces:
655 case LayoutDocEntry::NamespaceStructs:
656 case LayoutDocEntry::NamespaceExceptions:
657 case LayoutDocEntry::NamespaceInlineClasses:
658 case LayoutDocEntry::ConceptDefinition:
659 case LayoutDocEntry::FileClasses:
660 case LayoutDocEntry::FileConcepts:
661 case LayoutDocEntry::FileInterfaces:
662 case LayoutDocEntry::FileStructs:
663 case LayoutDocEntry::FileExceptions:
664 case LayoutDocEntry::FileNamespaces:
665 case LayoutDocEntry::FileConstantGroups:
666 case LayoutDocEntry::FileIncludes:
667 case LayoutDocEntry::FileIncludeGraph:
668 case LayoutDocEntry::FileIncludedByGraph:
669 case LayoutDocEntry::FileSourceLink:
670 case LayoutDocEntry::FileInlineClasses:
671 case LayoutDocEntry::GroupClasses:
672 case LayoutDocEntry::GroupConcepts:
673 case LayoutDocEntry::GroupModules:
674 case LayoutDocEntry::GroupInlineClasses:
675 case LayoutDocEntry::GroupNamespaces:
676 case LayoutDocEntry::GroupDirs:
677 case LayoutDocEntry::GroupNestedGroups:
678 case LayoutDocEntry::GroupFiles:
679 case LayoutDocEntry::GroupGraph:
680 case LayoutDocEntry::GroupPageDocs:
681 case LayoutDocEntry::ModuleExports:
682 case LayoutDocEntry::ModuleClasses:
683 case LayoutDocEntry::ModuleConcepts:
684 case LayoutDocEntry::ModuleUsedFiles:
685 case LayoutDocEntry::AuthorSection:
686 case LayoutDocEntry::MemberGroups:
687 case LayoutDocEntry::MemberDecl:
688 case LayoutDocEntry::MemberDef:
689 case LayoutDocEntry::MemberDefStart:
690 case LayoutDocEntry::MemberDefEnd:
691 err("Internal inconsistency: member '{}' should not be part of "
692 "LayoutDocManager::Directory entry list\n",qPrint(lde->entryToString()));
693 break;
694 }
695 }
696
697 //---------------------------------------- end flexible part -------------------------------
698
699 ol.endContents();
700
701 endFileWithNavPath(ol,this);
702
704}
void writeNavigationPath(OutputList &ol) const override
SrcLangExt getLanguage() const override
void writeSubDirList(OutputList &ol)
Definition dirdef.cpp:361
void startMemberDeclarations(OutputList &ol)
Definition dirdef.cpp:507
void writeDetailedDescription(OutputList &ol, const QCString &title)
Definition dirdef.cpp:233
void writeDirectoryGraph(OutputList &ol)
Definition dirdef.cpp:341
void writeFileList(OutputList &ol)
Definition dirdef.cpp:422
QCString shortTitle() const override
Definition dirdef.cpp:517
void endMemberDeclarations(OutputList &ol)
Definition dirdef.cpp:512
void writeBriefDescription(OutputList &ol)
Definition dirdef.cpp:291
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1437
void endContents()
Definition outputlist.h:620
void endQuickIndices()
Definition outputlist.h:604
void startContents()
Definition outputlist.h:618
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, bool isSource, 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:1781
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 422 of file dirdef.cpp.

423{
424 AUTO_TRACE();
425 int numFiles = 0;
426 for (const auto &fd : m_fileList)
427 {
428 bool genSourceFile=false;
429 if (fileVisibleInIndex(fd,genSourceFile))
430 {
431 numFiles++;
432 }
433 else if (genSourceFile)
434 {
435 numFiles++;
436 }
437 }
438
439 AUTO_TRACE_ADD("numFiles={}",numFiles);
440 // write file list
441 if (numFiles>0)
442 {
443 ol.startMemberHeader("files");
445 ol.endMemberHeader();
446 ol.startMemberList();
447 for (const auto &fd : m_fileList)
448 {
449 bool src = false;
450 bool doc = fileVisibleInIndex(fd,src);
451 if (doc || src)
452 {
454 QCString anc = fd->anchor();
455 if (anc.isEmpty()) anc=fd->displayName(); else anc.prepend(fd->displayName()+"_");
457 {
460 bool genSrc = fd->generateSourceFile();
461 if (genSrc)
462 {
463 ol.startTextLink(fd->includeName(),QCString());
464 }
465 ol.writeString("<span class=\"icondoc\"><div class=\"doc-icon\"></div></span>");
466 if (genSrc)
467 {
468 ol.endTextLink();
469 }
470 ol.enableAll();
474 }
476 if (fd->isLinkable())
477 {
478 ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),QCString(),fd->displayName());
479 }
480 else
481 {
482 ol.startBold();
483 ol.docify(fd->displayName());
484 ol.endBold();
485 }
487 if (!fd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
488 {
489 ol.startMemberDescription(fd->getOutputFileBase());
491 briefLine(),
492 fd,
493 nullptr,
494 fd->briefDescription(),
495 DocOptions()
496 .setSingleLine(true)
497 .setLinkFromIndex(true));
499 }
500 ol.endMemberDeclaration(fd->anchor(),QCString());
501 }
502 }
503 ol.endMemberList();
504 }
505}
void startMemberDeclaration()
Definition outputlist.h:569
void endMemberDescription()
Definition outputlist.h:567
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition outputlist.h:439
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
Definition outputlist.h:565
void docify(const QCString &s)
Definition outputlist.h:437
void startMemberList()
Definition outputlist.h:481
void startBold()
Definition outputlist.h:561
void endMemberItem(OutputGenerator::MemberItemType type)
Definition outputlist.h:495
void endMemberList()
Definition outputlist.h:483
void insertMemberAlign(bool templ=FALSE)
Definition outputlist.h:517
void endBold()
Definition outputlist.h:563
void endMemberDeclaration(const QCString &anchor, const QCString &inheritId)
Definition outputlist.h:571
void endMemberHeader()
Definition outputlist.h:471
void startMemberItem(const QCString &anchor, OutputGenerator::MemberItemType type, const QCString &id=QCString())
Definition outputlist.h:493
void startMemberHeader(const QCString &anchor, int typ=2)
Definition outputlist.h:469
QCString & prepend(const char *s)
Definition qcstring.h:422
virtual QCString trFile(bool first_capital, bool singular)=0
bool fileVisibleInIndex(const FileDef *fd, bool &genSourceFile)
Definition util.cpp:6089

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 336 of file dirdef.cpp.

337{
338 ol.writePageOutline();
339}
void writePageOutline()
Definition outputlist.h:616

References OutputList::writePageOutline().

◆ writeSubDirList()

void DirDefImpl::writeSubDirList ( OutputList & ol)
private

Definition at line 361 of file dirdef.cpp.

362{
363 AUTO_TRACE();
364 int numSubdirs = 0;
365 for(const auto dd : m_subdirs)
366 {
367 if (dd->hasDocumentation() || !dd->getFiles().empty())
368 {
369 numSubdirs++;
370 }
371 }
372
373 AUTO_TRACE_ADD("numSubdirs={}",numSubdirs);
374 // write subdir list
375 if (numSubdirs>0)
376 {
377 ol.startMemberHeader("subdirs");
379 ol.endMemberHeader();
380 ol.startMemberList();
381 for(const auto dd : m_subdirs)
382 {
383 if (dd->hasDocumentation() || !dd->getFiles().empty())
384 {
386 QCString anc=dd->anchor();
387 if (anc.isEmpty()) anc=dd->shortName(); else anc.prepend(dd->shortName()+"_");
389 {
392 ol.writeString("<span class=\"iconfolder\"><div class=\"folder-icon\"></div></span>");
393 ol.enableAll();
397 }
399 ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),QCString(),dd->shortName());
401 if (!dd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
402 {
403 ol.startMemberDescription(dd->getOutputFileBase());
405 briefLine(),
406 dd,
407 nullptr,
408 dd->briefDescription(),
409 DocOptions()
410 .setSingleLine(true)
411 .setLinkFromIndex(true));
413 }
414 ol.endMemberDeclaration(dd->anchor(),QCString());
415 }
416 }
417
418 ol.endMemberList();
419 }
420}

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 535 of file dirdef.cpp.

536{
537 tagFile << " <compound kind=\"dir\">\n";
538 tagFile << " <name>" << convertToXML(displayName()) << "</name>\n";
539 tagFile << " <path>" << convertToXML(stripFromPath(name())) << "</path>\n";
540 QCString fn=getOutputFileBase();
542 tagFile << " <filename>" << fn << "</filename>\n";
543 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Directory))
544 {
545 switch (lde->kind())
546 {
547 case LayoutDocEntry::DirSubDirs:
548 {
549 if (m_subdirs.size()>0)
550 {
551 for(const auto dd : m_subdirs)
552 {
553 tagFile << " <dir>" << convertToXML(dd->displayName()) << "</dir>\n";
554 }
555 }
556 }
557 break;
558 case LayoutDocEntry::DirFiles:
559 {
560 for (const auto &fd : m_fileList)
561 {
562 tagFile << " <file>" << convertToXML(fd->name()) << "</file>\n";
563 }
564 }
565 break;
566 default:
567 break;
568 }
569 }
571 tagFile << " </compound>\n";
572}
void writeDocAnchorsToTagFile(TextStream &fs) const override
QCString convertToXML(const QCString &s, bool keepEntities)
Definition util.cpp:3893
void addHtmlExtensionIfMissing(QCString &fName)
Definition util.cpp:4902

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 104 of file dirdef.cpp.

Referenced by dirIndex(), and setDirIndex().

◆ m_diskName

QCString DirDefImpl::m_diskName
private

Definition at line 102 of file dirdef.cpp.

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

◆ m_dispName

QCString DirDefImpl::m_dispName
private

Definition at line 100 of file dirdef.cpp.

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

◆ m_fileList

FileList DirDefImpl::m_fileList
private

Definition at line 103 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 105 of file dirdef.cpp.

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

◆ m_parent

DirDef* DirDefImpl::m_parent
private

Definition at line 106 of file dirdef.cpp.

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

◆ m_shortName

QCString DirDefImpl::m_shortName
private

Definition at line 101 of file dirdef.cpp.

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

◆ m_subdirs

DirList DirDefImpl::m_subdirs
private

Definition at line 99 of file dirdef.cpp.

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

◆ m_usedDirs

UsedDirLinkedMap DirDefImpl::m_usedDirs
private

Definition at line 107 of file dirdef.cpp.

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


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