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

Public Member Functions

 DirDefImpl (const DString &path)
 ~DirDefImpl () override
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
DString getOutputFileBase () const override
DString anchor () const override
bool isLinkableInProject () const override
bool isLinkable () const override
DString displayName (bool=true) const override
const DString 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
DString 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 DString &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 DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
DefinitionMixinoperator= (const DefinitionMixin &other)
 ~DefinitionMixin () override=default
bool isAlias () const override
const DStringname () const override
bool isAnonymous () const override
const DStringlocalName () const override
DString qualifiedName () const override
DString symbolName () const override
DString getSourceFileBase () const override
DString getSourceAnchor () const override
DString documentation () const override
int docLine () const override
DString docFile () const override
DString briefDescription (bool abbreviate=false) const override
DString briefDescriptionAsTooltip () const override
int briefLine () const override
DString inbodyDocumentation () const override
DString inbodyFile () const override
int inbodyLine () const override
DString briefFile () const override
DString getDefFileName () const override
DString getDefFileExtension () const override
int getDefLine () const override
size_t 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
DString getReference () const override
bool isReference () const override
DString externalReference (const DString &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 DString &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
DString id () const override
const SectionRefsgetSectionRefs () const override
void setName (const DString &name) override
void setId (const DString &name) override
void setDefFile (const DString &df, int defLine, size_t defColumn) override
void setDocumentation (const DString &doc, const DString &docFile, int docLine, bool stripWhiteSpace=true) override
void setBriefDescription (const DString &brief, const DString &briefFile, int briefLine) override
void setInbodyDocumentation (const DString &doc, const DString &docFile, int docLine) override
void setReference (const DString &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 DString &sourceRefName) override
void addSourceReferences (MemberDef *md, const DString &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 DString &scopeName) const override
bool hasSourceRefs () const override
bool hasSourceReffedBy () const override
void writeSourceRefs (OutputList &ol, const DString &scopeName) const override
void writeSourceReffedBy (OutputList &ol, const DString &scopeName) const override
bool hasRequirementRefs () const override
void writeRequirementRefs (OutputList &ol) const override
void makePartOfGroup (GroupDef *gd) override
void writeNavigationPath (OutputList &ol) const override
DString navigationPathAsString () const override
void writeQuickMemberLinks (OutputList &ol, const MemberDef *md) const override
void writeSummaryLinks (OutputList &ol) const override
DString pathFragment () const override
void writeDocAnchorsToTagFile (TextStream &fs) const override
void setLocalName (const DString &name) override
void writeToc (OutputList &ol, const LocalToc &lt) const override
void computeTooltip () override
void _setSymbolName (const DString &name) override
DString _symbolName () const override

Static Public Member Functions

static DirDefmergeDirectoryInTree (const DString &path)

Private Member Functions

void writeDetailedDescription (OutputList &ol, const DString &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 DString &path)
static bool matchPath (const DString &path)

Private Attributes

DirList m_subdirs
DString m_dispName
DString m_shortName
DString 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 38 of file dirdef.cpp.

Constructor & Destructor Documentation

◆ DirDefImpl()

DirDefImpl::DirDefImpl ( const DString & path)

Definition at line 121 of file dirdef.cpp.

121 : DefinitionMixin(path,1,1,path)
122{
123 bool fullPathNames = Config_getBool(FULL_PATH_NAMES);
124 // get display name (stripping the paths mentioned in STRIP_FROM_PATH)
125 // get short name (last part of path)
126 m_shortName = path;
127 m_diskName = path;
128 if (m_shortName.at(m_shortName.length()-1)=='/')
129 { // strip trailing /
131 }
132 if (size_t pi=m_shortName.rfind('/'); pi!=DString::npos)
133 { // remove everything till the last /
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 /
141 }
142
143 m_level=-1;
144 m_parent=nullptr;
145 m_hasDirectoryGraph=Config_getBool(DIRECTORY_GRAPH);
146
147}
size_t rfind(char c, size_t pos=npos) const
Definition dstring.h:248
DString mid(size_t index, size_t len=npos) const
Definition dstring.h:322
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
Definition dstring.h:182
char & at(size_t i)
Returns a reference to the character at index i.
Definition dstring.h:690
DString left(size_t len) const
Definition dstring.h:310
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:155
DefinitionMixin(const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
void setLocalName(const DString &name) override
DirDef * m_parent
Definition dirdef.cpp:107
DString m_dispName
Definition dirdef.cpp:101
DString m_shortName
Definition dirdef.cpp:102
DString m_diskName
Definition dirdef.cpp:103
int m_level
Definition dirdef.cpp:106
bool m_hasDirectoryGraph
Definition dirdef.cpp:109
#define Config_getBool(name)
Definition config.h:33
DString stripFromPath(const DString &path)
Definition util.cpp:221

References DString::at(), Config_getBool, DefinitionMixin< DirDef >::DefinitionMixin(), DString::left(), DString::length(), m_diskName, m_dispName, m_hasDirectoryGraph, m_level, m_parent, m_shortName, DString::mid(), DString::npos, DString::rfind(), 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:104
virtual void setDirDef(DirDef *dd)=0

References m_fileList, and FileDef::setDirDef().

◆ addListReferences()

void DirDefImpl::addListReferences ( )
overridevirtual

Implements DirDef.

Definition at line 767 of file dirdef.cpp.

768{
769 DString name = getOutputFileBase();
771 theTranslator->trDir(true,true),
772 name,displayName(),DString(),nullptr);
773}
virtual const DString & name() const =0
const RefItemVector & xrefListItems() const override
DString displayName(bool=true) const override
Definition dirdef.cpp:51
DString getOutputFileBase() const override
Definition dirdef.cpp:201
virtual DString trDir(bool first_capital, bool singular)=0
Translator * theTranslator
Definition language.cpp:71
void addRefItem(const RefItemVector &sli, const DString &key, const DString &prefix, const DString &name, const DString &title, const DString &args, const Definition *scope)
Definition reflist.h:134

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

◆ addRequirementReferences()

void DirDefImpl::addRequirementReferences ( )
overridevirtual

Implements DirDef.

Definition at line 775 of file dirdef.cpp.

776{
778}
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:100

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

705{
706 if (this==dir) return; // do not add self-dependencies
707 AUTO_TRACE("add dependency {}->{} due to {}->{}",
708 qPrint(shortName()),
709 qPrint(dir->shortName()),
710 qPrint(srcFd->name()),
711 qPrint(dstFd->name()));
712
713 // levels match => add direct dependency
714 bool added=false;
715 UsedDir *usedDir = m_usedDirs.find(dir->getOutputFileBase());
716 if (usedDir) // dir dependency already present
717 {
718 const FilePair *usedPair = usedDir->findFilePair(FilePair::key(srcFd,dstFd));
719 if (usedPair==nullptr) // new file dependency
720 {
721 AUTO_TRACE_ADD("{} => {} new file dependency",srcFd->name(),dstFd->name());
722 usedDir->addFileDep(srcFd,dstFd, srcDirect, dstDirect);
723 added=true;
724 }
725 else
726 {
727 // dir & file dependency already added
728 }
729 }
730 else // new directory dependency
731 {
732 AUTO_TRACE_ADD("{} => {} new file dependency",srcFd->name(),dstFd->name());
733 auto newUsedDir = std::make_unique<UsedDir>(dir);
734 newUsedDir->addFileDep(srcFd,dstFd, srcDirect, dstDirect);
735 m_usedDirs.add(dir->getOutputFileBase(),std::move(newUsedDir));
736 added=true;
737 }
738 if (added)
739 {
740 if (dir->parent())
741 {
742 // add relation to parent of used dir
744 srcFd,
745 dstFd,
746 srcDirect,
747 false); // indirect dependency on dest dir
748 }
749 if (parent())
750 {
751 // add relation for the parent of this dir as well
753 srcFd,
754 dstFd,
755 false, // indirect dependency from source dir
756 dstDirect);
757 }
758 }
759}
virtual DString getOutputFileBase() const =0
virtual const DString shortName() const =0
virtual DirDef * parent() const =0
virtual void addUsesDependency(const DirDef *usedDir, const FileDef *srcFd, const FileDef *dstFd, bool srcDirect, bool dstDirect)=0
DirDef * parent() const override
Definition dirdef.cpp:59
const DString shortName() const override
Definition dirdef.cpp:52
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:703
UsedDirLinkedMap m_usedDirs
Definition dirdef.cpp:108
static DString key(const FileDef *srcFd, const FileDef *dstFd)
Definition dirdef.cpp:923
T * add(const char *k, Args &&... args)
Definition linkedmap.h:90
const T * find(const std::string &key) const
Definition linkedmap.h:47
FilePair * findFilePair(const DString &name)
Definition dirdef.cpp:857
void addFileDep(const FileDef *srcFd, const FileDef *dstFd, bool srcDirect, bool dstDirect)
Take up dependency between files.
Definition dirdef.cpp:836
#define AUTO_TRACE_ADD(...)
Definition docnode.cpp:52
#define AUTO_TRACE(...)
Definition docnode.cpp:51
const char * qPrint(const char *s)
Definition dstring.h:787

References LinkedMap< T, Hash, KeyEqual, Map >::add(), UsedDir::addFileDep(), DirDef::addUsesDependency(), addUsesDependency(), AUTO_TRACE, AUTO_TRACE_ADD, LinkedMap< T, Hash, KeyEqual, Map >::find(), UsedDir::findFilePair(), Definition::getOutputFileBase(), FilePair::key(), m_usedDirs, Definition::name(), DirDef::parent(), parent(), qPrint(), DirDef::shortName(), and shortName().

Referenced by addUsesDependency(), and computeDependencies().

◆ anchor()

DString DirDefImpl::anchor ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 48 of file dirdef.cpp.

48{ return DString(); }

◆ codeSymbolType()

CodeSymbolType DirDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 46 of file dirdef.cpp.

References Default.

◆ computeDependencies()

void DirDefImpl::computeDependencies ( )
overridevirtual

Computes the dependencies between directories.

Implements DirDef.

Definition at line 782 of file dirdef.cpp.

783{
784 AUTO_TRACE();
785 for (const auto &fd : m_fileList)
786 {
787 AUTO_TRACE_ADD("dir={} file={}",shortName(),fd->name());
788 for (const auto &ii : fd->includeFileList())
789 {
790 AUTO_TRACE_ADD("#include {}",ii.includeName);
791 if (ii.fileDef && ii.fileDef->isLinkable()) // linkable file
792 {
793 DirDef *usedDir = ii.fileDef->getDirDef();
794 if (usedDir)
795 {
796 // add dependency: thisDir->usedDir
797 AUTO_TRACE_ADD("add dependency {}->{}",name(),usedDir->name());
798 addUsesDependency(usedDir,fd,ii.fileDef,true,true);
799 }
800 }
801 }
802 }
803
804 std::stable_sort(m_usedDirs.begin(),m_usedDirs.end(),
805 [](const auto &u1,const auto &u2)
806 { return dstricmp_sort(u1->dir()->getOutputFileBase(),u2->dir()->getOutputFileBase())<0; });
807
808 for (const auto& usedDirectory : m_usedDirs)
809 {
810 usedDirectory->sort();
811 }
812}
const DString & name() const override
iterator begin()
Definition linkedmap.h:201
iterator end()
Definition linkedmap.h:202

References addUsesDependency(), AUTO_TRACE, AUTO_TRACE_ADD, LinkedMap< T, Hash, KeyEqual, Map >::begin(), LinkedMap< T, Hash, KeyEqual, Map >::end(), m_fileList, m_usedDirs, Definition::name(), DefinitionMixin< DirDef >::name(), and shortName().

◆ createNewDir()

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

Definition at line 862 of file dirdef.cpp.

863{
864 AUTO_TRACE();
865 ASSERT(path!=nullptr);
866 DirDef *dir = Doxygen::dirLinkedMap->find(path);
867 if (dir==nullptr) // new dir
868 {
869 dir = Doxygen::dirLinkedMap->add(path,
870 std::unique_ptr<DirDef>(
871 createDirDef(path)));
872 AUTO_TRACE_ADD("Adding new dir {} shortName {}",path,dir->shortName());
873 }
874 return dir;
875}
static DirLinkedMap * dirLinkedMap
Definition doxygen.h:120
DirDef * createDirDef(const DString &path)
Definition dirdef.cpp:112
#define ASSERT(x)
Definition dstring.h:28

References LinkedMap< T, Hash, KeyEqual, Map >::add(), ASSERT, AUTO_TRACE, AUTO_TRACE_ADD, createDirDef(), Doxygen::dirLinkedMap, LinkedMap< T, Hash, KeyEqual, Map >::find(), 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 45 of file dirdef.cpp.

45{ return TypeDir; }

References definitionType(), and Definition::TypeDir.

Referenced by definitionType().

◆ depGraphIsTrivial()

bool DirDefImpl::depGraphIsTrivial ( ) const
overridevirtual

Implements DirDef.

Definition at line 824 of file dirdef.cpp.

825{
826 return m_usedDirs.empty() && m_parent==nullptr;
827}
bool empty() const
Definition linkedmap.h:209

References LinkedMap< T, Hash, KeyEqual, Map >::empty(), m_parent, and m_usedDirs.

◆ dirIndex()

int DirDefImpl::dirIndex ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 60 of file dirdef.cpp.

60{ return m_dirIndex; }
int m_dirIndex
Definition dirdef.cpp:105

References m_dirIndex.

◆ displayName()

DString DirDefImpl::displayName ( bool includeScope = true) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 51 of file dirdef.cpp.

51{ return m_dispName; }

References m_dispName.

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

◆ endMemberDeclarations()

void DirDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 487 of file dirdef.cpp.

488{
490}
void endMemberSections()
Definition outputlist.h:459

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ findSectionsInDocumentation()

void DirDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements DirDef.

Definition at line 761 of file dirdef.cpp.

762{
765}
DString docFile() const override
DString briefDescription(bool abbreviate=false) const override
DString documentation() const override
void docFindSections(const DString &input, const Definition *d, const DString &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 54 of file dirdef.cpp.

54{ return m_fileList; }

References m_fileList.

◆ getOutputFileBase()

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

202{
203 DString dir = "dir_"+encodeDirName(m_diskName);
204 AUTO_TRACE("diskName={} result={}",m_diskName,dir);
205 return dir;
206}
static DString encodeDirName(const DString &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 504 of file dirdef.cpp.

505{
506 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
507 return (!briefDescription().empty() && repeatBrief) || !documentation().empty() || hasRequirementRefs();
508}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:152
bool hasRequirementRefs() const override

References DefinitionMixin< DirDef >::briefDescription(), Config_getBool, DefinitionMixin< DirDef >::documentation(), DString::empty(), and DefinitionMixin< DirDef >::hasRequirementRefs().

Referenced by writeDetailedDescription().

◆ hasDirectoryGraph()

bool DirDefImpl::hasDirectoryGraph ( ) const
overridevirtual

Implements DirDef.

Definition at line 916 of file dirdef.cpp.

917{
918 return m_hasDirectoryGraph;
919}

References m_hasDirectoryGraph.

◆ hasSubdirs()

bool DirDefImpl::hasSubdirs ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 57 of file dirdef.cpp.

57{ 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 814 of file dirdef.cpp.

815{
816 if (dir->parent()==this) // this is a parent of dir
817 return true;
818 else if (dir->parent()) // repeat for the parent of dir
819 return isParentOf(dir->parent());
820 else
821 return false;
822}
bool isParentOf(const DirDef *dir) const override
Definition dirdef.cpp:814

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

Referenced by isParentOf().

◆ level()

int DirDefImpl::level ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 58 of file dirdef.cpp.

58{ return m_level; }

References m_level.

◆ matchPath()

bool DirDefImpl::matchPath ( const DString & path)
staticprivate

Definition at line 877 of file dirdef.cpp.

878{
879 StringVector l = Config_getList(STRIP_FROM_PATH);
880 for (const auto &s : l)
881 {
882 std::string prefix = s.substr(0,path.length());
883 if (dstricmp_sort(prefix.c_str(),path)==0) // case insensitive compare
884 {
885 return true;
886 }
887 }
888 return false;
889}
constexpr auto prefix
Definition anchor.cpp:44
#define Config_getList(name)
Definition config.h:38
std::vector< std::string > StringVector
Definition containers.h:33
int dstricmp_sort(const char *str1, const char *str2)
Definition dstring.h:71

References Config_getList, dstricmp_sort(), DString::length(), and prefix.

Referenced by mergeDirectoryInTree().

◆ mergeDirectoryInTree()

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

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

Definition at line 894 of file dirdef.cpp.

895{
896 AUTO_TRACE("path={}",path);
897 size_t p=0,i=0;
898 DirDef *dir=nullptr;
899 while ((i=path.find('/',p))!=DString::npos)
900 {
901 DString part=path.left(i+1);
902 if (!matchPath(part) && (part!="/" && part!="//" && part!="//?/"))
903 {
905 }
906 p=i+1;
907 }
908 return dir;
909}
size_t find(char c, size_t pos=0) const
Definition dstring.h:243
static DirDef * createNewDir(const DString &path)
Definition dirdef.cpp:862
static bool matchPath(const DString &path)
Definition dirdef.cpp:877
DString removeLongPathMarker(const DString &path)
Definition portable.cpp:640

References AUTO_TRACE, createNewDir(), DString::find(), DString::left(), matchPath(), DString::npos, and Portable::removeLongPathMarker().

Referenced by buildDirectories().

◆ overrideDirectoryGraph()

void DirDefImpl::overrideDirectoryGraph ( bool e)
overridevirtual

Implements DirDef.

Definition at line 911 of file dirdef.cpp.

912{
914}

References m_hasDirectoryGraph.

◆ parent()

DirDef * DirDefImpl::parent ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 59 of file dirdef.cpp.

59{ 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 DString & name)
inlineoverridevirtual

Implements DirDef.

Definition at line 69 of file dirdef.cpp.

69{ m_diskName = name; }

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

◆ setLevel()

void DirDefImpl::setLevel ( )
overridevirtual

Implements DirDef.

Definition at line 681 of file dirdef.cpp.

682{
683 if (m_level==-1) // level not set before
684 {
685 DirDef *p = parent();
686 if (p)
687 {
688 p->setLevel();
689 m_level = p->level()+1;
690 }
691 else
692 {
693 m_level = 0;
694 }
695 }
696}
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 DString DirDefImpl::shortName ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 52 of file dirdef.cpp.

52{ return m_shortName; }

References m_shortName.

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

◆ shortTitle()

DString DirDefImpl::shortTitle ( ) const
overridevirtual

Implements DirDef.

Definition at line 492 of file dirdef.cpp.

493{
494 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
495 {
496 return m_shortName;
497 }
498 else
499 {
501 }
502}
virtual DString trDirReference(const DString &dirName)=0

References Config_getBool, m_shortName, theTranslator, and Translator::trDirReference().

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:1208
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
Definition filedef.cpp:1969

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

◆ startMemberDeclarations()

void DirDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 482 of file dirdef.cpp.

483{
485}
void startMemberSections()
Definition outputlist.h:457

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ subDirs()

const DirList & DirDefImpl::subDirs ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 56 of file dirdef.cpp.

56{ return m_subdirs; }

References m_subdirs.

◆ usedDirs()

const UsedDirLinkedMap & DirDefImpl::usedDirs ( ) const
inlineoverridevirtual

Implements DirDef.

Definition at line 61 of file dirdef.cpp.

61{ return m_usedDirs; }

References m_usedDirs.

◆ writeBriefDescription()

void DirDefImpl::writeBriefDescription ( OutputList & ol)
private

Definition at line 266 of file dirdef.cpp.

267{
268 AUTO_TRACE();
270 {
271 auto parser { createDocParser() };
272 auto ast { validatingParseDoc(*parser.get(),
273 briefFile(),
274 briefLine(),
275 this,
276 nullptr,
278 DocOptions()
279 .setIndexWords(true))
280 };
281 if (!ast->empty())
282 {
283 ol.startParagraph();
286 ol.writeString(" - ");
288 ol.writeDoc(ast.get(),this,nullptr);
291 ol.writeString(" \n");
293
294 if (Config_getBool(REPEAT_BRIEF) ||
295 !documentation().empty()
296 )
297 {
299 ol.startTextLink(DString(),"details");
301 ol.endTextLink();
302 }
304
305 ol.endParagraph();
306 }
307 }
308 ol.writeSynopsis();
309}
virtual DString 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:379
void parseText(const DString &textStr)
void disable(OutputType o)
void startParagraph(const DString &classDef=DString())
Definition outputlist.h:403
void enable(OutputType o)
void writeString(const DString &text)
Definition outputlist.h:407
void endParagraph()
Definition outputlist.h:405
void endTextLink()
Definition outputlist.h:440
void writeSynopsis()
Definition outputlist.h:588
void pushGeneratorState()
void disableAllBut(OutputType o)
void popGeneratorState()
void startTextLink(const DString &file, const DString &anchor)
Definition outputlist.h:438
virtual DString trMore()=0
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:59
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &input, const DocOptions &options)

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, Translator::trMore(), validatingParseDoc(), OutputList::writeDoc(), OutputList::writeString(), and OutputList::writeSynopsis().

Referenced by writeDocumentation().

◆ writeDetailedDescription()

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

Definition at line 208 of file dirdef.cpp.

209{
210 AUTO_TRACE();
212 {
215 ol.writeRuler();
219 ol.writeAnchor(DString(),"details");
221 ol.startGroupHeader("details");
222 ol.parseText(title);
223 ol.endGroupHeader();
224
225 // repeat brief description
226 ol.startTextBlock();
227 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF))
228 {
230 briefLine(),
231 this,
232 nullptr,
234 DocOptions());
235 }
236 // separator between brief and details
237 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF) &&
238 !documentation().empty())
239 {
243 ol.enableAll();
246 ol.writeString("\n\n");
248 }
249
250 // write documentation
251 if (!documentation().empty())
252 {
253 ol.generateDoc(docFile(),
254 docLine(),
255 this,
256 nullptr,
257 documentation()+"\n",
258 DocOptions()
259 .setIndexWords(true));
260 }
262 ol.endTextBlock();
263 }
264}
DString briefFile() const override
void writeRequirementRefs(OutputList &ol) const override
int docLine() const override
bool hasDetailedDescription() const override
Definition dirdef.cpp:504
void writeRuler()
Definition outputlist.h:517
void endTextBlock(bool paraBreak=false)
Definition outputlist.h:668
void writeAnchor(const DString &fileName, const DString &name)
Definition outputlist.h:519
void startTextBlock(bool dense=false)
Definition outputlist.h:666
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:451
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
void startGroupHeader(const DString &id=DString(), int extraLevels=0)
Definition outputlist.h:449
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 316 of file dirdef.cpp.

317{
318 // write graph dependency graph
319 if (Config_getBool(HAVE_DOT) && m_hasDirectoryGraph /*&& Config_getBool(DIRECTORY_GRAPH)*/)
320 {
321 DotDirDeps dirDep(this);
322 if (!dirDep.isTrivial())
323 {
324 msg("Generating dependency graph for directory {}\n",displayName());
326 //ol.startParagraph();
327 ol.startDirDepGraph();
329 ol.endDirDepGraph(dirDep);
330 //ol.endParagraph();
331 ol.enableAll();
332 }
333 }
334}
void endDirDepGraph(DotDirDeps &g)
Definition outputlist.h:658
void startDirDepGraph()
Definition outputlist.h:656
virtual DString trDirDepGraph(const DString &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(), theTranslator, and Translator::trDirDepGraph().

Referenced by writeDocumentation().

◆ writeDocumentation()

void DirDefImpl::writeDocumentation ( OutputList & ol)
overridevirtual

Implements DirDef.

Definition at line 549 of file dirdef.cpp.

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

◆ writeFileList()

void DirDefImpl::writeFileList ( OutputList & ol)
private

Definition at line 397 of file dirdef.cpp.

398{
399 AUTO_TRACE();
400 int numFiles = 0;
401 for (const auto &fd : m_fileList)
402 {
403 bool genSourceFile=false;
404 if (fd->visibleInIndex(genSourceFile))
405 {
406 numFiles++;
407 }
408 else if (genSourceFile)
409 {
410 numFiles++;
411 }
412 }
413
414 AUTO_TRACE_ADD("numFiles={}",numFiles);
415 // write file list
416 if (numFiles>0)
417 {
418 ol.startMemberHeader("files");
419 ol.parseText(theTranslator->trFile(true,false));
420 ol.endMemberHeader();
421 ol.startMemberList();
422 for (const auto &fd : m_fileList)
423 {
424 bool src = false;
425 bool doc = fd->visibleInIndex(src);
426 if (doc || src)
427 {
429 DString anc = fd->anchor();
430 if (anc.empty()) anc=fd->displayName(); else anc.prepend(fd->displayName()+"_");
432 {
435 bool genSrc = fd->generateSourceFile();
436 if (genSrc)
437 {
438 ol.startTextLink(fd->includeName(),DString());
439 }
440 ol.writeString("<span class=\"icondoc\"><div class=\"doc-icon\"></div></span>");
441 if (genSrc)
442 {
443 ol.endTextLink();
444 }
445 ol.enableAll();
447 ol.docify(theTranslator->trFile(false,true)+" ");
449 }
451 if (fd->isLinkable())
452 {
453 ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),DString(),fd->displayName());
454 }
455 else
456 {
457 ol.startBold();
458 ol.docify(fd->displayName());
459 ol.endBold();
460 }
462 if (!fd->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
463 {
464 ol.startMemberDescription(fd->getOutputFileBase());
466 briefLine(),
467 fd,
468 nullptr,
469 fd->briefDescription(),
470 DocOptions()
471 .setSingleLine(true)
472 .setLinkFromIndex(true));
474 }
475 ol.endMemberDeclaration(fd->anchor(),DString());
476 }
477 }
478 ol.endMemberList();
479 }
480}
DString & prepend(const char *s)
Definition dstring.h:519
void startMemberDeclaration()
Definition outputlist.h:565
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:435
void endMemberDescription()
Definition outputlist.h:563
void endMemberDeclaration(const DString &anchor, const DString &inheritId)
Definition outputlist.h:567
void docify(const DString &s)
Definition outputlist.h:433
void startMemberHeader(const DString &anchor, int typ=2)
Definition outputlist.h:465
void insertMemberAlign(bool templ=false)
Definition outputlist.h:513
void startMemberList()
Definition outputlist.h:477
void startBold()
Definition outputlist.h:557
void endMemberItem(OutputGenerator::MemberItemType type)
Definition outputlist.h:491
void endMemberList()
Definition outputlist.h:479
void endBold()
Definition outputlist.h:559
void startMemberItem(const DString &anchor, OutputGenerator::MemberItemType type, const DString &id=DString())
Definition outputlist.h:489
void startMemberDescription(const DString &anchor, const DString &inheritId=DString(), bool typ=false)
Definition outputlist.h:561
void endMemberHeader()
Definition outputlist.h:467
virtual DString trFile(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::docify(), DString::empty(), OutputList::enableAll(), OutputList::endBold(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), OutputList::endTextLink(), OutputList::generateDoc(), Html, OutputList::insertMemberAlign(), m_fileList, OutputGenerator::Normal, OutputList::parseText(), OutputList::popGeneratorState(), DString::prepend(), OutputList::pushGeneratorState(), OutputList::startBold(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), OutputList::startTextLink(), theTranslator, Translator::trFile(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writePageNavigation()

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

Reimplemented from DefinitionMixin< DirDef >.

Definition at line 311 of file dirdef.cpp.

312{
313 ol.writePageOutline();
314}
void writePageOutline()
Definition outputlist.h:612

References OutputList::writePageOutline().

◆ writeSubDirList()

void DirDefImpl::writeSubDirList ( OutputList & ol)
private

Definition at line 336 of file dirdef.cpp.

337{
338 AUTO_TRACE();
339 int numSubdirs = 0;
340 for(const auto &dd : m_subdirs)
341 {
342 if (dd->hasDocumentation() || !dd->getFiles().empty())
343 {
344 numSubdirs++;
345 }
346 }
347
348 AUTO_TRACE_ADD("numSubdirs={}",numSubdirs);
349 // write subdir list
350 if (numSubdirs>0)
351 {
352 ol.startMemberHeader("subdirs");
353 ol.parseText(theTranslator->trDir(true,false));
354 ol.endMemberHeader();
355 ol.startMemberList();
356 for(const auto &dd : m_subdirs)
357 {
358 if (dd->hasDocumentation() || !dd->getFiles().empty())
359 {
361 DString anc=dd->anchor();
362 if (anc.empty()) anc=dd->shortName(); else anc.prepend(dd->shortName()+"_");
364 {
367 ol.writeString("<span class=\"iconfolder\"><div class=\"folder-icon\"></div></span>");
368 ol.enableAll();
370 ol.parseText(theTranslator->trDir(false,true)+" ");
372 }
374 ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),DString(),dd->shortName());
376 if (!dd->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
377 {
378 ol.startMemberDescription(dd->getOutputFileBase());
380 briefLine(),
381 dd,
382 nullptr,
383 dd->briefDescription(),
384 DocOptions()
385 .setSingleLine(true)
386 .setLinkFromIndex(true));
388 }
389 ol.endMemberDeclaration(dd->anchor(),DString());
390 }
391 }
392
393 ol.endMemberList();
394 }
395}

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

Referenced by writeDocumentation().

◆ writeTagFile()

void DirDefImpl::writeTagFile ( TextStream & t)
overridevirtual

Implements DirDef.

Definition at line 510 of file dirdef.cpp.

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

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

Referenced by dirIndex(), and setDirIndex().

◆ m_diskName

DString DirDefImpl::m_diskName
private

Definition at line 103 of file dirdef.cpp.

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

◆ m_dispName

DString DirDefImpl::m_dispName
private

Definition at line 101 of file dirdef.cpp.

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

◆ m_fileList

FileList DirDefImpl::m_fileList
private

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

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

◆ m_parent

DirDef* DirDefImpl::m_parent
private

Definition at line 107 of file dirdef.cpp.

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

◆ m_shortName

DString DirDefImpl::m_shortName
private

Definition at line 102 of file dirdef.cpp.

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

◆ m_subdirs

DirList DirDefImpl::m_subdirs
private

Definition at line 100 of file dirdef.cpp.

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

◆ m_usedDirs

UsedDirLinkedMap DirDefImpl::m_usedDirs
private

Definition at line 108 of file dirdef.cpp.

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


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