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

Public Member Functions

 FileDefImpl (const DString &p, const DString &n, const DString &ref=DString(), const DString &dn=DString())
 ~FileDefImpl () override
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
const DStringname () const override
DString displayName (bool=true) const override
DString fileName () const override
DString getOutputFileBase () const override
DString anchor () const override
DString getSourceFileBase () const override
DString includeName () const override
DString includeDependencyGraphFileName () const override
DString includedByDependencyGraphFileName () const override
DString absFilePath () const override
const DStringdocName () const override
bool isSource () const override
bool isDocumentationFile () const override
const DefinitiongetSourceDefinition (int lineNr) const override
const MemberDefgetSourceMember (int lineNr) const override
DString getPath () const override
DString getVersion () const override
bool isLinkableInProject () const override
bool isLinkable () const override
bool isIncluded (const DString &name) const override
DirDefgetDirDef () const override
ModuleDefgetModuleDef () const override
const LinkedRefMap< NamespaceDef > & getUsedNamespaces () const override
const LinkedRefMap< const Definition > & getUsedDefinitions () const override
const IncludeInfoListincludeFileList () const override
const IncludeInfoListincludedByFileList () const override
void getAllIncludeFilesRecursively (StringVector &incFiles) const override
MemberListgetMemberList (MemberListType lt) const override
const MemberListsgetMemberLists () const override
const MemberGroupListgetMemberGroups () const override
const NamespaceLinkedRefMapgetNamespaces () const override
const ConceptLinkedRefMapgetConcepts () const override
const ClassLinkedRefMapgetClasses () const override
DString title () const override
bool hasDetailedDescription () const override
DString fileVersion () const override
bool subGrouping () const override
void countMembers () override
int numDocMembers () const override
int numDecMembers () const override
void addSourceRef (int line, const Definition *d, const MemberDef *md) override
void writeDocumentation (OutputList &ol) override
void writeMemberPages (OutputList &ol) override
void writeQuickMemberLinks (OutputList &ol, const MemberDef *currentMd) const override
void writeSummaryLinks (OutputList &ol) const override
void writePageNavigation (OutputList &ol) const override
void writeTagFile (TextStream &t) override
void writeSourceHeader (OutputList &ol) override
void writeSourceBody (OutputList &ol, ClangTUParser *clangParser) override
void writeSourceFooter (OutputList &ol) override
void parseSource (ClangTUParser *clangParser) override
void setDiskName (const DString &name) override
void insertMember (MemberDef *md) override
void removeMember (MemberDef *md) override
void insertClass (ClassDef *cd) override
void insertConcept (ConceptDef *cd) override
void insertNamespace (NamespaceDef *nd) override
void computeAnchors () override
void setDirDef (DirDef *dd) override
void setModuleDef (ModuleDef *mod) override
void addUsingDirective (NamespaceDef *nd) override
void addUsingDeclaration (const Definition *d) override
void combineUsingRelations () override
bool generateSourceFile () const override
void sortMemberLists () override
void addIncludeDependency (const FileDef *fd, const DString &incName, IncludeKind kind) override
void addIncludedByDependency (const FileDef *fd, const DString &incName, IncludeKind kind) override
void addMembersToMemberGroup () override
void distributeMemberGroupDocumentation () override
void findSectionsInDocumentation () override
void addIncludedUsingDirectives (FileDefSet &visitedFiles) override
void addListReferences () override
void addRequirementReferences () override
bool hasIncludeGraph () const override
bool hasIncludedByGraph () const override
void overrideIncludeGraph (bool e) override
void overrideIncludedByGraph (bool e) override
Public Member Functions inherited from DefinitionMixin< FileDef >
 DefinitionMixin (const DString &defFileName, int defLine, int 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
bool isAnonymous () const override
const DStringlocalName () const override
DString qualifiedName () const override
DString symbolName () 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
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
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, int 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
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

Private Member Functions

void setDiskNameLocal (const DString &name)
void acquireFileVersion ()
void addMemberToList (MemberListType lt, MemberDef *md)
void writeMemberDeclarations (OutputList &ol, MemberListType lt, const DString &title)
void writeMemberDocumentation (OutputList &ol, MemberListType lt, const DString &title)
void writeIncludeFiles (OutputList &ol)
void writeIncludeGraph (OutputList &ol)
void writeIncludedByGraph (OutputList &ol)
void writeMemberGroups (OutputList &ol)
void writeAuthorSection (OutputList &ol)
void writeSourceLink (OutputList &ol)
void writeNamespaceDeclarations (OutputList &ol, const DString &title, bool isConstantGroup)
void writeClassDeclarations (OutputList &ol, const DString &title, const ClassLinkedRefMap &list)
void writeConcepts (OutputList &ol, const DString &title)
void writeInlineClasses (OutputList &ol)
void startMemberDeclarations (OutputList &ol)
void endMemberDeclarations (OutputList &ol)
void startMemberDocumentation (OutputList &ol)
void endMemberDocumentation (OutputList &ol)
void writeDetailedDescription (OutputList &ol, const DString &title)
void writeBriefDescription (OutputList &ol)
void writeClassesToTagFile (TextStream &t, const ClassLinkedRefMap &list)
void removeMemberFromList (MemberListType lt, MemberDef *md)

Private Attributes

IncludeInfoMap m_includeMap
IncludeInfoList m_includeList
IncludeInfoMap m_includedByMap
IncludeInfoList m_includedByList
LinkedRefMap< NamespaceDefm_usingDirList
LinkedRefMap< const Definitionm_usingDeclList
DString m_path
DString m_filePath
DString m_inclDepFileName
DString m_inclByDepFileName
DString m_outputDiskName
DString m_fileName
DString m_docname
DefinitionLineMap m_srcDefMap
MemberDefLineMap m_srcMemberMap
bool m_isSource
DString m_fileVersion
DirDefm_dir = nullptr
ModuleDefm_moduleDef = nullptr
MemberLists m_memberLists
MemberGroupList m_memberGroups
NamespaceLinkedRefMap m_namespaces
ClassLinkedRefMap m_classes
ClassLinkedRefMap m_interfaces
ClassLinkedRefMap m_structs
ClassLinkedRefMap m_exceptions
ConceptLinkedRefMap m_concepts
bool m_subGrouping
bool m_hasIncludeGraph = Config_getBool(INCLUDE_GRAPH)
bool m_hasIncludedByGraph = Config_getBool(INCLUDED_BY_GRAPH)

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 121 of file filedef.cpp.

Constructor & Destructor Documentation

◆ FileDefImpl()

FileDefImpl::FileDefImpl ( const DString & p,
const DString & nm,
const DString & lref = DString(),
const DString & dn = DString() )

create a new file definition, where p is the file path, nm the file name, and lref is an HTML anchor name if the file was read from a tag file or nullptr otherwise

Definition at line 280 of file filedef.cpp.

282 : DefinitionMixin(p+nm,1,1,nm,nullptr,nullptr,!p.empty())
283{
285 m_filePath=p+nm;
286 m_fileName=nm;
287
288 setReference(lref);
289 setDiskNameLocal(!dn.empty() ? dn : nm);
290 m_isSource = guessSection(nm).isSource();
291 m_docname = nm;
292 m_dir = nullptr;
293 if (Config_getBool(FULL_PATH_NAMES))
294 {
296 }
298 Config_getBool(FULL_PATH_NAMES) ? m_fileName : DefinitionMixin::name()));
300 m_subGrouping=Config_getBool(SUBGROUPING);
301}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:153
DString & prepend(const char *s)
Definition dstring.h:504
DefinitionMixin(const DString &defFileName, int defLine, int defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
const DString & name() const override
virtual void setReference(const DString &r)=0
virtual void setLanguage(SrcLangExt lang)=0
DirDef * m_dir
Definition filedef.cpp:253
void setDiskNameLocal(const DString &name)
Definition filedef.cpp:308
void acquireFileVersion()
Definition filedef.cpp:1698
bool m_isSource
Definition filedef.cpp:251
DString m_path
Definition filedef.cpp:242
bool m_subGrouping
Definition filedef.cpp:263
DString m_fileName
Definition filedef.cpp:247
DString m_docname
Definition filedef.cpp:248
DString m_filePath
Definition filedef.cpp:243
#define Config_getBool(name)
Definition config.h:33
DString removeLongPathMarker(DString path)
Definition util.cpp:287
SrcLangExt getLanguageFromFileName(const DString &fileName, SrcLangExt defLang)
Definition util.cpp:5252
DString stripFromPath(const DString &path)
Definition util.cpp:321
EntryType guessSection(const DString &name)
Definition util.cpp:338

References acquireFileVersion(), Config_getBool, DefinitionMixin< FileDef >::DefinitionMixin(), DString::empty(), getLanguageFromFileName(), guessSection(), m_dir, m_docname, m_fileName, m_filePath, m_isSource, m_path, m_subGrouping, DefinitionMixin< Base >::name(), DString::prepend(), removeLongPathMarker(), setDiskNameLocal(), DefinitionMixin< FileDef >::setLanguage(), DefinitionMixin< FileDef >::setReference(), and stripFromPath().

◆ ~FileDefImpl()

FileDefImpl::~FileDefImpl ( )
override

destroy the file definition

Definition at line 304 of file filedef.cpp.

305{
306}

Member Function Documentation

◆ absFilePath()

DString FileDefImpl::absFilePath ( ) const
inlineoverridevirtual

Returns the absolute path including the file name.

Implements FileDef.

Definition at line 140 of file filedef.cpp.

140{ return m_filePath; }

References m_filePath.

Referenced by parseSource(), and writeSourceBody().

◆ acquireFileVersion()

void FileDefImpl::acquireFileVersion ( )
private

Definition at line 1698 of file filedef.cpp.

1699{
1700 DString vercmd = Config_getString(FILE_VERSION_FILTER);
1701 if (!vercmd.empty() && !m_filePath.empty() && !isReference() &&
1702 m_filePath!="generated" && m_filePath!="graph_legend.dox")
1703 {
1704 msg("Version of {} : ",m_filePath);
1705 DString cmd = vercmd+" \""+m_filePath+"\"";
1706 Debug::print(Debug::ExtCmd,0,"Executing popen(`{}`)\n",cmd);
1707 FILE *f=Portable::popen(cmd,"r");
1708 if (!f)
1709 {
1710 err("could not execute {}\n",vercmd);
1711 return;
1712 }
1713 const int bufSize=1024;
1714 char buf[bufSize];
1715 int numRead = static_cast<int>(fread(buf,1,bufSize-1,f));
1717 if (numRead>0 && numRead<bufSize)
1718 {
1719 buf[numRead]='\0';
1720 m_fileVersion=DString(buf,numRead).stripWhiteSpace();
1721 if (!m_fileVersion.empty())
1722 {
1723 msg("{}\n",m_fileVersion);
1724 return;
1725 }
1726 }
1727 msg("no version available\n");
1728 }
1729}
DString()=default
DString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition dstring.h:342
@ ExtCmd
Definition debug.h:36
static void print(DebugMask mask, int prio, fmt::format_string< Args... > fmt, Args &&... args)
Definition debug.h:77
virtual bool isReference() const =0
DString m_fileVersion
Definition filedef.cpp:252
#define Config_getString(name)
Definition config.h:32
#define msg(fmt,...)
Definition message.h:94
#define err(fmt,...)
Definition message.h:127
FILE * popen(const DString &name, const DString &type)
Definition portable.cpp:479
int pclose(FILE *stream)
Definition portable.cpp:488

References Config_getString, DString::DString(), DString::empty(), err, Debug::ExtCmd, DefinitionMixin< FileDef >::isReference(), m_filePath, m_fileVersion, msg, Portable::pclose(), Portable::popen(), Debug::print(), and DString::stripWhiteSpace().

Referenced by FileDefImpl().

◆ addIncludedByDependency()

void FileDefImpl::addIncludedByDependency ( const FileDef * fd,
const DString & incName,
IncludeKind kind )
overridevirtual

Implements FileDef.

Definition at line 1590 of file filedef.cpp.

1591{
1592 //printf("FileDefImpl::addIncludedByDependency(%p,%s,%d)\n",fd,incName,local);
1593 DString iName = fd ? fd->absFilePath() : incName;
1594 if (!iName.empty() && m_includedByMap.find(iName.str())==m_includedByMap.end())
1595 {
1596 m_includedByList.emplace_back(fd,incName,kind);
1597 m_includedByMap.emplace(iName.str(),&m_includedByList.back());
1598 }
1599}
const std::string & str() const
Definition dstring.h:634
virtual DString absFilePath() const =0
IncludeInfoList m_includedByList
Definition filedef.cpp:239
IncludeInfoMap m_includedByMap
Definition filedef.cpp:238

References FileDef::absFilePath(), DString::empty(), m_includedByList, m_includedByMap, and DString::str().

◆ addIncludeDependency()

void FileDefImpl::addIncludeDependency ( const FileDef * fd,
const DString & incName,
IncludeKind kind )
overridevirtual

Implements FileDef.

Definition at line 1531 of file filedef.cpp.

1532{
1533 //printf("FileDefImpl::addIncludeDependency(%p,%s,%d)\n",(void*)fd,qPrint(incName),kind);
1534 DString iName = fd ? fd->absFilePath() : incName;
1535 if (!iName.empty() && m_includeMap.find(iName.str())==m_includeMap.end())
1536 {
1537 m_includeList.emplace_back(fd,incName,kind);
1538 m_includeMap.emplace(iName.str(),&m_includeList.back());
1539 }
1540}
IncludeInfoMap m_includeMap
Definition filedef.cpp:236
IncludeInfoList m_includeList
Definition filedef.cpp:237

References FileDef::absFilePath(), DString::empty(), m_includeList, m_includeMap, and DString::str().

◆ addIncludedUsingDirectives()

void FileDefImpl::addIncludedUsingDirectives ( FileDefSet & visitedFiles)
overridevirtual

Implements FileDef.

Definition at line 1542 of file filedef.cpp.

1543{
1544 if (visitedFiles.find(this)!=visitedFiles.end()) return; // file already processed
1545 visitedFiles.insert(this);
1546 //printf("( FileDefImpl::addIncludedUsingDirectives for file %s\n",qPrint(name()));
1547
1548 if (!m_includeList.empty()) // file contains #includes
1549 {
1550 {
1551 for (const auto &ii : m_includeList) // foreach #include...
1552 {
1553 if (ii.fileDef) // ...that is a known file
1554 {
1555 // recurse into this file
1556 const_cast<FileDef*>(ii.fileDef)->addIncludedUsingDirectives(visitedFiles);
1557 }
1558 }
1559 }
1560 {
1561 // iterate through list from last to first
1562 for (auto ii_it = m_includeList.rbegin(); ii_it!=m_includeList.rend(); ++ii_it)
1563 {
1564 auto &ii = *ii_it;
1565 if (ii.fileDef && ii.fileDef!=this)
1566 {
1567 // add using directives
1568 auto unl = ii.fileDef->getUsedNamespaces();
1569 for (auto it = unl.rbegin(); it!=unl.rend(); ++it)
1570 {
1571 auto *nd = *it;
1572 //printf(" adding using directive for %s\n",qPrint(nd->qualifiedName()));
1573 m_usingDirList.prepend(nd->qualifiedName(),nd);
1574 }
1575 // add using declarations
1576 auto udl = ii.fileDef->getUsedDefinitions();
1577 for (auto it = udl.rbegin(); it!=udl.rend(); ++it)
1578 {
1579 auto *d = *it;
1580 m_usingDeclList.prepend(d->qualifiedName(),d);
1581 }
1582 }
1583 }
1584 }
1585 }
1586 //printf(") end FileDefImpl::addIncludedUsingDirectives for file %s\n",qPrint(name()));
1587}
void addIncludedUsingDirectives(FileDefSet &visitedFiles) override
Definition filedef.cpp:1542
LinkedRefMap< const Definition > m_usingDeclList
Definition filedef.cpp:241
LinkedRefMap< NamespaceDef > m_usingDirList
Definition filedef.cpp:240
bool prepend(const char *k, T *obj)
Definition linkedmap.h:317

References addIncludedUsingDirectives(), DString::insert(), m_includeList, m_usingDeclList, m_usingDirList, and LinkedRefMap< T, Hash, KeyEqual, Map >::prepend().

Referenced by addIncludedUsingDirectives().

◆ addListReferences()

void FileDefImpl::addListReferences ( )
overridevirtual

Implements FileDef.

Definition at line 1619 of file filedef.cpp.

1620{
1623 theTranslator->trFile(true,true),
1625 DString(),
1626 nullptr
1627 );
1628 for (const auto &mg : m_memberGroups)
1629 {
1630 mg->addListReferences(this);
1631 }
1632 for (auto &ml : m_memberLists)
1633 {
1634 if (ml->listType().isDocumentation())
1635 {
1636 ml->addListReferences(this);
1637 }
1638 }
1639}
virtual const RefItemVector & xrefListItems() const =0
const DString & name() const override
Definition filedef.cpp:1479
MemberGroupList m_memberGroups
Definition filedef.cpp:256
DString getOutputFileBase() const override
Definition filedef.cpp:1744
MemberLists m_memberLists
Definition filedef.cpp:255
virtual DString trFile(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 util.cpp:4866

References addRefItem(), DString::DString(), getOutputFileBase(), m_memberGroups, m_memberLists, name(), theTranslator, Translator::trFile(), and DefinitionMixin< FileDef >::xrefListItems().

◆ addMembersToMemberGroup()

void FileDefImpl::addMembersToMemberGroup ( )
overridevirtual

Implements FileDef.

Definition at line 1296 of file filedef.cpp.

1297{
1298 for (auto &ml : m_memberLists)
1299 {
1300 if (ml->listType().isDeclaration())
1301 {
1303 }
1304 }
1305
1306 // add members inside sections to their groups
1307 for (const auto &mg : m_memberGroups)
1308 {
1309 if (mg->allMembersInSameSection() && m_subGrouping)
1310 {
1311 //printf("----> addToDeclarationSection(%s)\n",qPrint(mg->header()));
1312 mg->addToDeclarationSection();
1313 }
1314 }
1315}
void addMembersToMemberGroup() override
Definition filedef.cpp:1296

References addMembersToMemberGroup(), m_memberGroups, m_memberLists, and m_subGrouping.

Referenced by addMembersToMemberGroup().

◆ addMemberToList()

void FileDefImpl::addMemberToList ( MemberListType lt,
MemberDef * md )
private

Definition at line 1755 of file filedef.cpp.

1756{
1757 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1758 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1759 const auto &ml = m_memberLists.get(lt,MemberListContainer::File);
1760 ml->setNeedsSorting(
1761 (ml->listType().isDeclaration() && sortBriefDocs) ||
1762 (ml->listType().isDocumentation() && sortMemberDocs));
1763 ml->push_back(md);
1764 if (ml->listType().isDeclaration())
1765 {
1766 MemberDefMutable *mdm = toMemberDefMutable(md);
1767 if (mdm)
1768 {
1769 mdm->setSectionList(this,ml.get());
1770 }
1771 }
1772}
virtual void setSectionList(const Definition *container, const MemberList *sl)=0
const std::unique_ptr< MemberList > & get(MemberListType lt, MemberListContainer con)
Definition memberlist.h:191
MemberDefMutable * toMemberDefMutable(Definition *d)

References Config_getBool, File, MemberLists::get(), m_memberLists, MemberDefMutable::setSectionList(), and toMemberDefMutable().

Referenced by insertMember().

◆ addRequirementReferences()

void FileDefImpl::addRequirementReferences ( )
overridevirtual

Implements FileDef.

Definition at line 1641 of file filedef.cpp.

1642{
1644 for (const auto &mg : m_memberGroups)
1645 {
1646 mg->addRequirementReferences(this);
1647 }
1648 for (auto &ml : m_memberLists)
1649 {
1650 if (ml->listType().isDocumentation())
1651 {
1652 ml->addRequirementReferences(this);
1653 }
1654 }
1655}
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)

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

◆ addSourceRef()

void FileDefImpl::addSourceRef ( int line,
const Definition * d,
const MemberDef * md )
overridevirtual

Implements FileDef.

Definition at line 1487 of file filedef.cpp.

1488{
1489 //printf("FileDefImpl::addSourceRef(%d,%s,%s)\n",line,qPrint(d?d->name():"nullptr"),qPrint(md?md->name():"nullptr"));
1490 if (d)
1491 {
1492 m_srcDefMap.emplace(line,d);
1493 if (md) m_srcMemberMap.emplace(line,md);
1494 //printf("Adding member %s with anchor %s at line %d to file %s\n",
1495 // md?qPrint(md->name()):"<none>",md?qPrint(md->anchor()):"<none>",line,qPrint(name()));
1496 }
1497}
MemberDefLineMap m_srcMemberMap
Definition filedef.cpp:250
DefinitionLineMap m_srcDefMap
Definition filedef.cpp:249

References m_srcDefMap, and m_srcMemberMap.

◆ addUsingDeclaration()

void FileDefImpl::addUsingDeclaration ( const Definition * d)
overridevirtual

Implements FileDef.

Definition at line 1526 of file filedef.cpp.

1527{
1529}
virtual DString qualifiedName() const =0
bool add(const char *k, T *obj)
Definition linkedmap.h:284

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), m_usingDeclList, and Definition::qualifiedName().

Referenced by combineUsingRelations().

◆ addUsingDirective()

void FileDefImpl::addUsingDirective ( NamespaceDef * nd)
overridevirtual

Implements FileDef.

Definition at line 1514 of file filedef.cpp.

1515{
1517 //printf("%p: FileDefImpl::addUsingDirective: %s:%d\n",this,qPrint(name()),usingDirList->count());
1518}

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), m_usingDirList, and Definition::qualifiedName().

Referenced by combineUsingRelations().

◆ anchor()

DString FileDefImpl::anchor ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 135 of file filedef.cpp.

135{ return DString(); }

References DString::DString().

◆ codeSymbolType()

CodeSymbolType FileDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 129 of file filedef.cpp.

129{ return CodeSymbolType::Default; }

References Default.

◆ combineUsingRelations()

void FileDefImpl::combineUsingRelations ( )
overridevirtual

Implements FileDef.

Definition at line 1659 of file filedef.cpp.

1660{
1661 LinkedRefMap<NamespaceDef> usingDirList = m_usingDirList;
1662 NamespaceDefSet visitedNamespaces;
1663 for (auto &nd : usingDirList)
1664 {
1665 NamespaceDefMutable *ndm = toNamespaceDefMutable(nd);
1666 if (ndm)
1667 {
1668 ndm->combineUsingRelations(visitedNamespaces);
1669 }
1670 }
1671
1672 for (auto &nd : usingDirList)
1673 {
1674 // add used namespaces of namespace nd to this namespace
1675 for (const auto &und : nd->getUsedNamespaces())
1676 {
1677 addUsingDirective(und);
1678 }
1679 // add used classes of namespace nd to this namespace
1680 for (const auto &ud : nd->getUsedDefinitions())
1681 {
1683 }
1684 }
1685}
void addUsingDirective(NamespaceDef *nd) override
Definition filedef.cpp:1514
void addUsingDeclaration(const Definition *d) override
Definition filedef.cpp:1526
virtual void combineUsingRelations(NamespaceDefSet &visitedNamespace)=0
NamespaceDefMutable * toNamespaceDefMutable(Definition *d)
std::unordered_set< const NamespaceDef * > NamespaceDefSet

References addUsingDeclaration(), addUsingDirective(), NamespaceDefMutable::combineUsingRelations(), m_usingDirList, and toNamespaceDefMutable().

◆ computeAnchors()

void FileDefImpl::computeAnchors ( )
overridevirtual

Compute the HTML anchor names for all members in the class

Implements FileDef.

Definition at line 330 of file filedef.cpp.

331{
332 MemberList *ml = getMemberList(MemberListType::AllMembersList());
333 if (ml) ml->setAnchors();
334}
MemberList * getMemberList(MemberListType lt) const override
Definition filedef.cpp:1820
void setAnchors()

References getMemberList(), and MemberList::setAnchors().

◆ countMembers()

void FileDefImpl::countMembers ( )
overridevirtual

Implements FileDef.

Definition at line 1911 of file filedef.cpp.

1912{
1913 for (auto &ml : m_memberLists)
1914 {
1915 ml->countDecMembers();
1916 ml->countDocMembers();
1917 }
1918 for (const auto &mg : m_memberGroups)
1919 {
1920 mg->countDecMembers();
1921 mg->countDocMembers();
1922 }
1923}

References m_memberGroups, and m_memberLists.

◆ definitionType()

DefType FileDefImpl::definitionType ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 128 of file filedef.cpp.

128{ return TypeFile; }

References definitionType(), and Definition::TypeFile.

Referenced by definitionType().

◆ displayName()

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

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

Implements Definition.

Definition at line 132 of file filedef.cpp.

132{ return localName(); }
virtual const DString & localName() const =0

References DefinitionMixin< FileDef >::localName().

Referenced by writeDocumentation().

◆ distributeMemberGroupDocumentation()

void FileDefImpl::distributeMemberGroupDocumentation ( )
overridevirtual

Implements FileDef.

Definition at line 336 of file filedef.cpp.

337{
338 //printf("FileDefImpl::distributeMemberGroupDocumentation()\n");
339 for (const auto &mg : m_memberGroups)
340 {
341 mg->distributeMemberGroupDocumentation();
342 }
343}

References m_memberGroups.

◆ docName()

const DString & FileDefImpl::docName ( ) const
inlineoverridevirtual

Returns the name as it is used in the documentation

Implements FileDef.

Definition at line 141 of file filedef.cpp.

141{ return m_docname; }

References m_docname.

◆ endMemberDeclarations()

void FileDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 752 of file filedef.cpp.

753{
755}
void endMemberSections()
Definition outputlist.h:463

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void FileDefImpl::endMemberDocumentation ( OutputList & ol)
private

Definition at line 766 of file filedef.cpp.

767{
768 if (Config_getBool(SEPARATE_MEMBER_PAGES))
769 {
772 }
773}
static bool suppressDocWarnings
Definition doxygen.h:130
void enable(OutputType o)

References Config_getBool, OutputList::enable(), Html, and Doxygen::suppressDocWarnings.

Referenced by writeDocumentation().

◆ fileName()

DString FileDefImpl::fileName ( ) const
inlineoverridevirtual

Returns the unique file name (this may include part of the path).

Implements FileDef.

Definition at line 133 of file filedef.cpp.

133{ return m_fileName; }

References m_fileName.

◆ fileVersion()

DString FileDefImpl::fileVersion ( ) const
overridevirtual

Implements FileDef.

Definition at line 1896 of file filedef.cpp.

1897{
1898 return m_fileVersion;
1899}

References m_fileVersion.

◆ findSectionsInDocumentation()

void FileDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements FileDef.

Definition at line 345 of file filedef.cpp.

346{
350 for (const auto &mg : m_memberGroups)
351 {
352 mg->findSectionsInDocumentation(this);
353 }
354
355 for (auto &ml : m_memberLists)
356 {
357 if (ml->listType().isDeclaration())
358 {
359 ml->findSectionsInDocumentation(this);
360 }
361 }
362}
virtual DString briefDescription(bool abbreviate=false) const =0
virtual DString documentation() const =0
virtual DString inbodyDocumentation() const =0
virtual DString docFile() const =0
void docFindSections(const DString &input, const Definition *d, const DString &fileName)

References DefinitionMixin< FileDef >::briefDescription(), DefinitionMixin< FileDef >::docFile(), docFindSections(), DefinitionMixin< FileDef >::documentation(), DefinitionMixin< FileDef >::inbodyDocumentation(), m_memberGroups, and m_memberLists.

◆ generateSourceFile()

bool FileDefImpl::generateSourceFile ( ) const
overridevirtual

Implements FileDef.

Definition at line 1607 of file filedef.cpp.

1608{
1609 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1610 bool verbatimHeaders = Config_getBool(VERBATIM_HEADERS);
1611 return !isReference() &&
1612 (sourceBrowser ||
1613 (verbatimHeaders && (guessSection(name()).isHeader() || !m_includedByMap.empty()))
1614 ) &&
1616}
bool isDocumentationFile() const override
Definition filedef.cpp:1687

References Config_getBool, guessSection(), isDocumentationFile(), DefinitionMixin< FileDef >::isReference(), m_includedByMap, and name().

Referenced by writeSourceHeader(), and writeSourceLink().

◆ getAllIncludeFilesRecursively()

void FileDefImpl::getAllIncludeFilesRecursively ( StringVector & incFiles) const
overridevirtual

Implements FileDef.

Definition at line 1878 of file filedef.cpp.

1879{
1880 StringUnorderedSet includes;
1881 ::getAllIncludeFilesRecursively(includes,this,incFiles);
1882}
void getAllIncludeFilesRecursively(StringVector &incFiles) const override
Definition filedef.cpp:1878
std::unordered_set< std::string > StringUnorderedSet
Definition containers.h:29

References getAllIncludeFilesRecursively().

Referenced by getAllIncludeFilesRecursively().

◆ getClasses()

const ClassLinkedRefMap & FileDefImpl::getClasses ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 163 of file filedef.cpp.

163{ return m_classes; }
ClassLinkedRefMap m_classes
Definition filedef.cpp:258

References m_classes.

◆ getConcepts()

const ConceptLinkedRefMap & FileDefImpl::getConcepts ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 162 of file filedef.cpp.

162{ return m_concepts; }
ConceptLinkedRefMap m_concepts
Definition filedef.cpp:262

References m_concepts.

◆ getDirDef()

DirDef * FileDefImpl::getDirDef ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 151 of file filedef.cpp.

151{ return m_dir; }

References m_dir.

Referenced by writeDocumentation(), and writeSourceHeader().

◆ getMemberGroups()

const MemberGroupList & FileDefImpl::getMemberGroups ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 160 of file filedef.cpp.

160{ return m_memberGroups; }

References m_memberGroups.

◆ getMemberList()

MemberList * FileDefImpl::getMemberList ( MemberListType lt) const
overridevirtual

Implements FileDef.

Definition at line 1820 of file filedef.cpp.

1821{
1822 for (auto &ml : m_memberLists)
1823 {
1824 if (ml->listType()==lt)
1825 {
1826 return ml.get();
1827 }
1828 }
1829 return nullptr;
1830}

References m_memberLists.

Referenced by computeAnchors(), insertMember(), numDecMembers(), numDocMembers(), removeMemberFromList(), writeDocumentation(), writeMemberDeclarations(), writeMemberDocumentation(), writeQuickMemberLinks(), writeSummaryLinks(), and writeTagFile().

◆ getMemberLists()

const MemberLists & FileDefImpl::getMemberLists ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 159 of file filedef.cpp.

159{ return m_memberLists; }

References m_memberLists.

◆ getModuleDef()

ModuleDef * FileDefImpl::getModuleDef ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 152 of file filedef.cpp.

152{ return m_moduleDef; }
ModuleDef * m_moduleDef
Definition filedef.cpp:254

References m_moduleDef.

◆ getNamespaces()

const NamespaceLinkedRefMap & FileDefImpl::getNamespaces ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 161 of file filedef.cpp.

161{ return m_namespaces; }
NamespaceLinkedRefMap m_namespaces
Definition filedef.cpp:257

References m_namespaces.

◆ getOutputFileBase()

DString FileDefImpl::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 1744 of file filedef.cpp.

1745{
1746 return m_outputDiskName;
1747}
DString m_outputDiskName
Definition filedef.cpp:246

References m_outputDiskName.

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

◆ getPath()

DString FileDefImpl::getPath ( ) const
inlineoverridevirtual

Returns the absolute path of this file.

Implements FileDef.

Definition at line 146 of file filedef.cpp.

146{ return m_path; }

References m_path.

Referenced by writeTagFile().

◆ getSourceDefinition()

const Definition * FileDefImpl::getSourceDefinition ( int lineNr) const
overridevirtual

Implements FileDef.

Definition at line 1499 of file filedef.cpp.

1500{
1501 auto it = m_srcDefMap.find(lineNr);
1502 //printf("%s::getSourceDefinition(%d)=%s\n",qPrint(name()),lineNr,it!=m_srcDefMap.end()?qPrint(it->second->name()):"none");
1503 return it!=m_srcDefMap.end() ? it->second : nullptr;
1504}

References m_srcDefMap.

◆ getSourceFileBase()

DString FileDefImpl::getSourceFileBase ( ) const
overridevirtual

Returns the name of the source listing of this definition.

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 1732 of file filedef.cpp.

1733{
1734 if (Htags::useHtags)
1735 {
1737 }
1738 else
1739 {
1740 return m_outputDiskName+"_source";
1741 }
1742}
static DString path2URL(const DString &path)
Definition htags.cpp:156
static bool useHtags
Definition htags.h:23

References m_filePath, m_outputDiskName, Htags::path2URL(), and Htags::useHtags.

Referenced by includeName(), writeDetailedDescription(), and writeSourceHeader().

◆ getSourceMember()

const MemberDef * FileDefImpl::getSourceMember ( int lineNr) const
overridevirtual

Implements FileDef.

Definition at line 1506 of file filedef.cpp.

1507{
1508 auto it = m_srcMemberMap.find(lineNr);
1509 //printf("%s::getSourceMember(%d)=%s\n",qPrint(name()),lineNr,it!=m_srcMemberMap.end()?qPrint(it->second->name()):"none");
1510 return it!=m_srcMemberMap.end() ? it->second : nullptr;
1511}

References m_srcMemberMap.

◆ getUsedDefinitions()

const LinkedRefMap< const Definition > & FileDefImpl::getUsedDefinitions ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 154 of file filedef.cpp.

154{ return m_usingDeclList; }

References m_usingDeclList.

◆ getUsedNamespaces()

const LinkedRefMap< NamespaceDef > & FileDefImpl::getUsedNamespaces ( ) const
overridevirtual

Implements FileDef.

Definition at line 1520 of file filedef.cpp.

1521{
1522 //printf("%p: FileDefImpl::getUsedNamespace: %s:%d\n",this,qPrint(name()),usingDirList?usingDirList->count():0);
1523 return m_usingDirList;
1524}

References m_usingDirList.

◆ getVersion()

DString FileDefImpl::getVersion ( ) const
inlineoverridevirtual

Returns version of this file.

Implements FileDef.

Definition at line 147 of file filedef.cpp.

147{ return m_fileVersion; }

References m_fileVersion.

◆ hasDetailedDescription()

bool FileDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements FileDef.

Definition at line 364 of file filedef.cpp.

365{
366 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
367 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
368 return ((!briefDescription().empty() && repeatBrief) ||
369 !documentation().stripWhiteSpace().empty() || // avail empty section
370 (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef()) ||
372 );
373}
virtual const FileDef * getBodyDef() const =0
virtual int getStartBodyLine() const =0
virtual bool hasRequirementRefs() const =0
std::string_view stripWhiteSpace(std::string_view s)
Given a string view s, returns a new, narrower view on that string, skipping over any leading or trai...
Definition stringutil.h:72

References DefinitionMixin< FileDef >::briefDescription(), Config_getBool, DefinitionMixin< FileDef >::documentation(), DefinitionMixin< FileDef >::getBodyDef(), DefinitionMixin< FileDef >::getStartBodyLine(), DefinitionMixin< FileDef >::hasRequirementRefs(), and stripWhiteSpace().

Referenced by writeDetailedDescription().

◆ hasIncludedByGraph()

bool FileDefImpl::hasIncludedByGraph ( ) const
overridevirtual

Implements FileDef.

Definition at line 1952 of file filedef.cpp.

1953{
1954 return m_hasIncludedByGraph;
1955}
bool m_hasIncludedByGraph
Definition filedef.cpp:265

References m_hasIncludedByGraph.

◆ hasIncludeGraph()

bool FileDefImpl::hasIncludeGraph ( ) const
overridevirtual

Implements FileDef.

Definition at line 1947 of file filedef.cpp.

1948{
1949 return m_hasIncludeGraph;
1950}
bool m_hasIncludeGraph
Definition filedef.cpp:264

References m_hasIncludeGraph.

◆ includedByDependencyGraphFileName()

DString FileDefImpl::includedByDependencyGraphFileName ( ) const
overridevirtual

Implements FileDef.

Definition at line 1906 of file filedef.cpp.

1907{
1908 return m_inclByDepFileName;
1909}
DString m_inclByDepFileName
Definition filedef.cpp:245

References m_inclByDepFileName.

◆ includedByFileList()

const IncludeInfoList & FileDefImpl::includedByFileList ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 156 of file filedef.cpp.

156{ return m_includedByList; }

References m_includedByList.

◆ includeDependencyGraphFileName()

DString FileDefImpl::includeDependencyGraphFileName ( ) const
overridevirtual

Implements FileDef.

Definition at line 1901 of file filedef.cpp.

1902{
1903 return m_inclDepFileName;
1904}
DString m_inclDepFileName
Definition filedef.cpp:244

References m_inclDepFileName.

◆ includeFileList()

const IncludeInfoList & FileDefImpl::includeFileList ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 155 of file filedef.cpp.

155{ return m_includeList; }

References m_includeList.

◆ includeName()

DString FileDefImpl::includeName ( ) const
overridevirtual

Returns the name of the verbatim copy of this file (if any).

Implements FileDef.

Definition at line 1750 of file filedef.cpp.

1751{
1752 return getSourceFileBase();
1753}
DString getSourceFileBase() const override
Definition filedef.cpp:1732

References getSourceFileBase().

Referenced by writeSourceLink().

◆ insertClass()

void FileDefImpl::insertClass ( ClassDef * cd)
overridevirtual

Adds compound definition cd to the list of all compounds of this file

Implements FileDef.

Definition at line 1441 of file filedef.cpp.

1442{
1443 if (cd->isHidden()) return;
1444
1445 ClassLinkedRefMap *list = &m_classes;
1446
1447 if (Config_getBool(OPTIMIZE_OUTPUT_SLICE))
1448 {
1450 {
1451 list = &m_interfaces;
1452 }
1453 else if (cd->compoundType()==ClassDef::Struct)
1454 {
1455 list = &m_structs;
1456 }
1457 else if (cd->compoundType()==ClassDef::Exception)
1458 {
1459 list = &m_exceptions;
1460 }
1461 }
1462
1463 list->add(cd->name(),cd);
1464}
@ Interface
Definition classdef.h:112
@ Exception
Definition classdef.h:115
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e. class/struct/union/...
virtual const DString & name() const =0
virtual bool isHidden() const =0
ClassLinkedRefMap m_interfaces
Definition filedef.cpp:259
ClassLinkedRefMap m_structs
Definition filedef.cpp:260
ClassLinkedRefMap m_exceptions
Definition filedef.cpp:261

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), ClassDef::compoundType(), Config_getBool, ClassDef::Exception, ClassDef::Interface, Definition::isHidden(), m_classes, m_exceptions, m_interfaces, m_structs, Definition::name(), and ClassDef::Struct.

◆ insertConcept()

void FileDefImpl::insertConcept ( ConceptDef * cd)
overridevirtual

Implements FileDef.

Definition at line 1466 of file filedef.cpp.

1467{
1468 if (cd->isHidden()) return;
1469 m_concepts.add(cd->name(),cd);
1470}

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), Definition::isHidden(), m_concepts, and Definition::name().

◆ insertMember()

void FileDefImpl::insertMember ( MemberDef * md)
overridevirtual

Adds member definition md to the list of all members of this file

Implements FileDef.

Definition at line 1318 of file filedef.cpp.

1319{
1320 if (md->isHidden()) return;
1321 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1322 //printf("%s:FileDefImpl::insertMember(%s (=%p) list has %zu elements)\n",
1323 // qPrint(name()),qPrint(md->name()),(void*)md,allMemberList ? allMemberList->size() : 0);
1324 if (allMemberList && allMemberList->contains(md))
1325 {
1326 //printf("already added\n");
1327 return;
1328 }
1329
1330 if (allMemberList==nullptr)
1331 {
1332 m_memberLists.emplace_back(std::make_unique<MemberList>(MemberListType::AllMembersList(),MemberListContainer::File));
1333 allMemberList = m_memberLists.back().get();
1334 }
1335 allMemberList->push_back(md);
1336 switch (md->memberType())
1337 {
1338 case MemberType::Property:
1339 if (md->getLanguage() == SrcLangExt::Python)
1340 {
1341 addMemberToList(MemberListType::PropertyMembers(),md);
1342 addMemberToList(MemberListType::Properties(),md);
1343 break;
1344 }
1345 // fallthrough, explicitly no break here
1346 case MemberType::Variable:
1347 addMemberToList(MemberListType::DecVarMembers(),md);
1348 addMemberToList(MemberListType::DocVarMembers(),md);
1349 break;
1350 case MemberType::Function:
1351 addMemberToList(MemberListType::DecFuncMembers(),md);
1352 addMemberToList(MemberListType::DocFuncMembers(),md);
1353 break;
1354 case MemberType::Typedef:
1355 addMemberToList(MemberListType::DecTypedefMembers(),md);
1356 addMemberToList(MemberListType::DocTypedefMembers(),md);
1357 break;
1358 case MemberType::Sequence:
1359 addMemberToList(MemberListType::DecSequenceMembers(),md);
1360 addMemberToList(MemberListType::DocSequenceMembers(),md);
1361 break;
1362 case MemberType::Dictionary:
1363 addMemberToList(MemberListType::DecDictionaryMembers(),md);
1364 addMemberToList(MemberListType::DocDictionaryMembers(),md);
1365 break;
1366 case MemberType::Enumeration:
1367 addMemberToList(MemberListType::DecEnumMembers(),md);
1368 addMemberToList(MemberListType::DocEnumMembers(),md);
1369 break;
1370 case MemberType::EnumValue: // enum values are shown inside their enums
1371 break;
1372 case MemberType::Define:
1373 addMemberToList(MemberListType::DecDefineMembers(),md);
1374 addMemberToList(MemberListType::DocDefineMembers(),md);
1375 break;
1376 default:
1377 err("FileDefImpl::insertMembers(): "
1378 "member '{}' with class scope '{}' inserted in file scope '{}'!\n",
1379 md->name(),
1380 md->getClassDef() ? md->getClassDef()->name() : "<global>",
1381 name());
1382 }
1383 //addMemberToGroup(md,groupId);
1384}
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
void addMemberToList(MemberListType lt, MemberDef *md)
Definition filedef.cpp:1755
virtual const ClassDef * getClassDef() const =0
virtual MemberType memberType() const =0
bool contains(const MemberDef *md) const
Definition memberlist.h:89
void push_back(const T &value)
Definition memberlist.h:48

References addMemberToList(), MemberVector::contains(), err, File, MemberLists::get(), MemberDef::getClassDef(), Definition::getLanguage(), getMemberList(), Definition::isHidden(), m_memberLists, MemberDef::memberType(), Definition::name(), name(), and MemberVector::push_back().

◆ insertNamespace()

void FileDefImpl::insertNamespace ( NamespaceDef * nd)
overridevirtual

Adds namespace definition nd to the list of all compounds of this file

Implements FileDef.

Definition at line 1473 of file filedef.cpp.

1474{
1475 if (nd->isHidden()) return;
1476 m_namespaces.add(nd->name(),nd);
1477}

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), Definition::isHidden(), m_namespaces, and Definition::name().

◆ isDocumentationFile()

bool FileDefImpl::isDocumentationFile ( ) const
overridevirtual

Implements FileDef.

Definition at line 1687 of file filedef.cpp.

1688{
1689 static const std::unordered_set<std::string> docExtensions =
1690 { "doc", "txt", "dox", "md", "markdown" };
1691
1692 size_t lastDot = name().rfind('.');
1693 return (lastDot!=DString::npos &&
1694 docExtensions.find(name().mid(lastDot+1).str())!=docExtensions.end()) ||
1695 getLanguageFromFileName(getFileNameExtension(name())) == SrcLangExt::Markdown;
1696}
size_t rfind(char c, size_t pos=npos) const
Definition dstring.h:249
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:183
DString getFileNameExtension(const DString &fn)
Definition util.cpp:5294

References getFileNameExtension(), getLanguageFromFileName(), name(), DString::npos, and DString::rfind().

Referenced by generateSourceFile(), and writeSourceHeader().

◆ isIncluded()

bool FileDefImpl::isIncluded ( const DString & name) const
overridevirtual

Implements FileDef.

Definition at line 1601 of file filedef.cpp.

1602{
1603 if (name.empty()) return false;
1604 return m_includeMap.find(name.str())!=m_includeMap.end();
1605}

References DString::empty(), m_includeMap, name(), and DString::str().

◆ isLinkable()

bool FileDefImpl::isLinkable ( ) const
inlineoverridevirtual

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

149{ return isLinkableInProject() || isReference(); }
bool isLinkableInProject() const override
Definition filedef.cpp:1856

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

Referenced by writeSourceHeader().

◆ isLinkableInProject()

bool FileDefImpl::isLinkableInProject ( ) const
overridevirtual

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

Implements Definition.

Definition at line 1856 of file filedef.cpp.

1857{
1858 bool showFiles = Config_getBool(SHOW_FILES);
1859 return hasDocumentation() && !isReference() && (showFiles || isLinkableViaGroup());
1860}
virtual bool isLinkableViaGroup() const =0
virtual bool hasDocumentation() const =0

References Config_getBool, DefinitionMixin< FileDef >::hasDocumentation(), DefinitionMixin< FileDef >::isLinkableViaGroup(), and DefinitionMixin< FileDef >::isReference().

Referenced by isLinkable().

◆ isSource()

bool FileDefImpl::isSource ( ) const
inlineoverridevirtual

Returns true if this file is a source file.

Implements FileDef.

Definition at line 142 of file filedef.cpp.

142{ return m_isSource; }

References m_isSource.

◆ name()

const DString & FileDefImpl::name ( ) const
overridevirtual

◆ numDecMembers()

int FileDefImpl::numDecMembers ( ) const
overridevirtual

Implements FileDef.

Definition at line 1931 of file filedef.cpp.

1932{
1933 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1934 return ml ? ml->numDecMembers() : 0;
1935}
int numDecMembers(const ClassDef *inheritedFrom) const
Definition memberlist.h:133

References getMemberList(), and MemberList::numDecMembers().

◆ numDocMembers()

int FileDefImpl::numDocMembers ( ) const
overridevirtual

Implements FileDef.

Definition at line 1925 of file filedef.cpp.

1926{
1927 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1928 return ml ? ml->numDocMembers() : 0;
1929}
int numDocMembers() const
Definition memberlist.h:138

References getMemberList(), and MemberList::numDocMembers().

◆ overrideIncludedByGraph()

void FileDefImpl::overrideIncludedByGraph ( bool e)
overridevirtual

Implements FileDef.

Definition at line 1942 of file filedef.cpp.

1943{
1945}

References m_hasIncludedByGraph.

◆ overrideIncludeGraph()

void FileDefImpl::overrideIncludeGraph ( bool e)
overridevirtual

Implements FileDef.

Definition at line 1937 of file filedef.cpp.

1938{
1940}

References m_hasIncludeGraph.

◆ parseSource()

void FileDefImpl::parseSource ( ClangTUParser * clangParser)
overridevirtual

Implements FileDef.

Definition at line 1267 of file filedef.cpp.

1268{
1269 bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1270 OutputCodeList devNullList;
1271 devNullList.add<DevNullCodeGenerator>();
1272#if USE_LIBCLANG
1273 if (Doxygen::clangAssistedParsing && clangParser &&
1274 (getLanguage()==SrcLangExt::Cpp || getLanguage()==SrcLangExt::ObjC))
1275 {
1276 clangParser->switchToFile(this);
1277 clangParser->writeSources(devNullList,this);
1278 }
1279 else
1280#endif
1281 {
1283 intf->resetCodeParserState();
1284 size_t indent = 0;
1285 intf->parseCode(
1286 devNullList,DString(),
1287 detab(fileToString(absFilePath(),filterSourceFiles,true),indent),
1288 getLanguage(),
1289 Config_getBool(STRIP_CODE_COMMENTS),
1290 CodeParserOptions()
1291 .setFileDef(this)
1292 );
1293 }
1294}
void switchToFile(const FileDef *fd)
Switches to another file within the translation unit started with start().
void writeSources(OutputCodeList &ol, const FileDef *fd)
writes the syntax highlighted source code for a file
virtual DString getDefFileExtension() const =0
static bool clangAssistedParsing
Definition doxygen.h:136
static ParserManager * parserManager
Definition doxygen.h:129
DString absFilePath() const override
Definition filedef.cpp:140
void add(OutputCodeIntfPtr &&p)
Definition outputlist.h:195
std::unique_ptr< CodeParserInterface > getCodeParser(const DString &extension)
Gets the interface to the parser associated with a given extension.
Definition parserintf.h:254
DString detab(const DString &s, size_t &refIndent)
Definition util.cpp:6758
DString fileToString(const DString &name, bool filter, bool isSourceCode)
Definition util.cpp:1491

References absFilePath(), OutputCodeList::add(), Doxygen::clangAssistedParsing, Config_getBool, detab(), DString::DString(), fileToString(), ParserManager::getCodeParser(), DefinitionMixin< FileDef >::getDefFileExtension(), DefinitionMixin< FileDef >::getLanguage(), and Doxygen::parserManager.

◆ removeMember()

void FileDefImpl::removeMember ( MemberDef * md)
overridevirtual

Implements FileDef.

Definition at line 1392 of file filedef.cpp.

1393{
1394 removeMemberFromList(MemberListType::AllMembersList(),md);
1395 switch(md->memberType())
1396 {
1397 case MemberType::Property:
1398 if (md->getLanguage() == SrcLangExt::Python)
1399 {
1400 removeMemberFromList(MemberListType::PropertyMembers(),md);
1401 removeMemberFromList(MemberListType::Properties(),md);
1402 break;
1403 }
1404 // fallthrough, explicitly no break here
1405 case MemberType::Variable:
1406 removeMemberFromList(MemberListType::DecVarMembers(),md);
1407 removeMemberFromList(MemberListType::DocVarMembers(),md);
1408 break;
1409 case MemberType::Function:
1410 removeMemberFromList(MemberListType::DecFuncMembers(),md);
1411 removeMemberFromList(MemberListType::DocFuncMembers(),md);
1412 break;
1413 case MemberType::Typedef:
1414 removeMemberFromList(MemberListType::DecTypedefMembers(),md);
1415 removeMemberFromList(MemberListType::DocTypedefMembers(),md);
1416 break;
1417 case MemberType::Sequence:
1418 removeMemberFromList(MemberListType::DecSequenceMembers(),md);
1419 removeMemberFromList(MemberListType::DocSequenceMembers(),md);
1420 break;
1421 case MemberType::Dictionary:
1422 removeMemberFromList(MemberListType::DecDictionaryMembers(),md);
1423 removeMemberFromList(MemberListType::DocDictionaryMembers(),md);
1424 break;
1425 case MemberType::Enumeration:
1426 removeMemberFromList(MemberListType::DecEnumMembers(),md);
1427 removeMemberFromList(MemberListType::DocEnumMembers(),md);
1428 break;
1429 case MemberType::EnumValue: // enum values are shown inside their enums
1430 break;
1431 case MemberType::Define:
1432 removeMemberFromList(MemberListType::DecDefineMembers(),md);
1433 removeMemberFromList(MemberListType::DocDefineMembers(),md);
1434 break;
1435 default:
1436 err("FileDefImpl::removeMember(): unexpected member remove in file!\n");
1437 }
1438}
void removeMemberFromList(MemberListType lt, MemberDef *md)
Definition filedef.cpp:1386

References err, Definition::getLanguage(), MemberDef::memberType(), and removeMemberFromList().

◆ removeMemberFromList()

void FileDefImpl::removeMemberFromList ( MemberListType lt,
MemberDef * md )
private

Definition at line 1386 of file filedef.cpp.

1387{
1388 MemberList *ml = getMemberList(lt);
1389 if (ml) ml->remove(md);
1390}
void remove(const MemberDef *md)
Definition memberlist.h:84

References getMemberList(), and MemberVector::remove().

Referenced by removeMember().

◆ setDirDef()

void FileDefImpl::setDirDef ( DirDef * dd)
inlineoverridevirtual

Implements FileDef.

Definition at line 189 of file filedef.cpp.

189{ m_dir=dd; }

References m_dir.

◆ setDiskName()

void FileDefImpl::setDiskName ( const DString & name)
overridevirtual

Implements FileDef.

Definition at line 324 of file filedef.cpp.

325{
327}

References name(), and setDiskNameLocal().

◆ setDiskNameLocal()

void FileDefImpl::setDiskNameLocal ( const DString & name)
private

Definition at line 308 of file filedef.cpp.

309{
310 if (isReference())
311 {
313 m_inclDepFileName = name+"_incl";
314 m_inclByDepFileName = name+"_dep_incl";
315 }
316 else
317 {
321 }
322}
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:3545

References convertNameToFile(), DefinitionMixin< FileDef >::isReference(), m_inclByDepFileName, m_inclDepFileName, m_outputDiskName, and name().

Referenced by FileDefImpl(), and setDiskName().

◆ setModuleDef()

void FileDefImpl::setModuleDef ( ModuleDef * mod)
inlineoverridevirtual

Implements FileDef.

Definition at line 190 of file filedef.cpp.

190{ m_moduleDef=mod; }

References m_moduleDef.

◆ sortMemberLists()

void FileDefImpl::sortMemberLists ( )
overridevirtual

Implements FileDef.

Definition at line 1774 of file filedef.cpp.

1775{
1776 for (auto &ml : m_memberLists)
1777 {
1778 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(false); }
1779 }
1780
1781 for (const auto &mg : m_memberGroups)
1782 {
1783 MemberList &mlg = const_cast<MemberList&>(mg->members());
1784 if (mlg.needsSorting()) { mlg.sort(); mlg.setNeedsSorting(false); }
1785 }
1786
1787 std::stable_sort(m_includedByList.begin(),m_includedByList.end(),
1788 [](const auto &fi1,const auto &fi2) { return fi1.includeName < fi2.includeName; });
1789
1790 if (Config_getBool(SORT_BRIEF_DOCS))
1791 {
1792 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
1793 {
1794 return Config_getBool(SORT_BY_SCOPE_NAME) ?
1795 dstricmp_sort(c1->name(), c2->name())<0 :
1796 dstricmp_sort(c1->className(), c2->className())<0;
1797 };
1798
1799 std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
1800 std::stable_sort(m_interfaces.begin(),m_interfaces.end(),classComp);
1801 std::stable_sort(m_structs.begin(), m_structs.end(), classComp);
1802 std::stable_sort(m_exceptions.begin(),m_exceptions.end(),classComp);
1803
1804 auto conceptComp = [](const ConceptLinkedRefMap::Ptr &c1,const ConceptLinkedRefMap::Ptr &c2)
1805 {
1806 return dstricmp_sort(c1->name(),c2->name())<0;
1807 };
1808
1809 std::stable_sort(m_concepts.begin(), m_concepts.end(), conceptComp);
1810
1811 auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
1812 {
1813 return dstricmp_sort(n1->name(),n2->name())<0;
1814 };
1815
1816 std::stable_sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1817 }
1818}
virtual DString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
iterator end()
Definition linkedmap.h:367
iterator begin()
Definition linkedmap.h:366
bool needsSorting() const
Definition memberlist.h:140
void setNeedsSorting(bool b)
void sort()
Definition memberlist.h:76
int dstricmp_sort(const char *str1, const char *str2)
Definition dstring.h:72

References LinkedRefMap< T, Hash, KeyEqual, Map >::begin(), ClassDef::className(), Config_getBool, dstricmp_sort(), LinkedRefMap< T, Hash, KeyEqual, Map >::end(), m_classes, m_concepts, m_exceptions, m_includedByList, m_interfaces, m_memberGroups, m_memberLists, m_namespaces, m_structs, Definition::name(), MemberList::needsSorting(), MemberList::setNeedsSorting(), and MemberVector::sort().

◆ startMemberDeclarations()

void FileDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 747 of file filedef.cpp.

748{
750}
void startMemberSections()
Definition outputlist.h:461

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void FileDefImpl::startMemberDocumentation ( OutputList & ol)
private

Definition at line 757 of file filedef.cpp.

758{
759 if (Config_getBool(SEPARATE_MEMBER_PAGES))
760 {
763 }
764}
void disable(OutputType o)

References Config_getBool, OutputList::disable(), Html, and Doxygen::suppressDocWarnings.

Referenced by writeDocumentation().

◆ subGrouping()

bool FileDefImpl::subGrouping ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 167 of file filedef.cpp.

167{ return m_subGrouping; }

References m_subGrouping.

◆ title()

DString FileDefImpl::title ( ) const
overridevirtual

Implements FileDef.

Definition at line 1884 of file filedef.cpp.

1885{
1886 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
1887 {
1888 return name();
1889 }
1890 else
1891 {
1893 }
1894}
virtual DString trFileReference(const DString &fileName)=0

References Config_getBool, name(), theTranslator, and Translator::trFileReference().

Referenced by writeClassDeclarations(), writeConcepts(), writeDetailedDescription(), writeDocumentation(), writeMemberDeclarations(), writeMemberDocumentation(), writeNamespaceDeclarations(), and writeSourceHeader().

◆ writeAuthorSection()

void FileDefImpl::writeAuthorSection ( OutputList & ol)
private

Definition at line 787 of file filedef.cpp.

788{
789 // write Author section (Man only)
792 ol.startGroupHeader();
793 ol.parseText(theTranslator->trAuthor(true,true));
794 ol.endGroupHeader();
797}
void parseText(const DString &textStr)
void pushGeneratorState()
void disableAllBut(OutputType o)
void popGeneratorState()
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:455
void startGroupHeader(const DString &id=DString(), int extraLevels=0)
Definition outputlist.h:453
virtual DString trAuthor(bool first_capital, bool singular)=0
virtual DString trGeneratedAutomatically(const DString &s)=0

References Config_getString, OutputList::disableAllBut(), OutputList::endGroupHeader(), Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startGroupHeader(), theTranslator, Translator::trAuthor(), and Translator::trGeneratedAutomatically().

Referenced by writeDocumentation().

◆ writeBriefDescription()

void FileDefImpl::writeBriefDescription ( OutputList & ol)
private

Definition at line 544 of file filedef.cpp.

545{
547 {
548 auto parser { createDocParser() };
549 auto ast { validatingParseDoc(*parser.get(),
550 briefFile(),
551 briefLine(),
552 this,
553 nullptr,
555 DocOptions()
556 .setIndexWords(true)
557 .setSingleLine(true))
558 };
559 if (!ast->empty())
560 {
561 ol.startParagraph();
564 ol.writeString(" - ");
566 ol.writeDoc(ast.get(),this,nullptr);
569 ol.writeString(" \n");
571
572 if (Config_getBool(REPEAT_BRIEF) ||
573 !documentation().stripWhiteSpace().empty()
574 )
575 {
577 ol.startTextLink(DString(),"details");
579 ol.endTextLink();
580 }
582 ol.endParagraph();
583 }
584 }
585 ol.writeSynopsis();
586}
virtual DString briefFile() const =0
virtual bool hasBriefDescription() const =0
returns true if this class has a brief description
virtual int briefLine() const =0
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
Definition outputlist.h:383
void startParagraph(const DString &classDef=DString())
Definition outputlist.h:407
void writeString(const DString &text)
Definition outputlist.h:411
void endParagraph()
Definition outputlist.h:409
void endTextLink()
Definition outputlist.h:444
void writeSynopsis()
Definition outputlist.h:592
void startTextLink(const DString &file, const DString &anchor)
Definition outputlist.h:442
virtual DString trMore()=0
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:55
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &input, const DocOptions &options)

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

Referenced by writeDocumentation().

◆ writeClassDeclarations()

void FileDefImpl::writeClassDeclarations ( OutputList & ol,
const DString & title,
const ClassLinkedRefMap & list )
private

Definition at line 722 of file filedef.cpp.

723{
724 // write list of classes
725 list.writeDeclaration(ol,nullptr,title,false);
726}
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const DString &header, bool localNames) const
Definition classlist.cpp:53
DString title() const override
Definition filedef.cpp:1884

References title(), and ClassLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeClassesToTagFile()

void FileDefImpl::writeClassesToTagFile ( TextStream & t,
const ClassLinkedRefMap & list )
private

Definition at line 588 of file filedef.cpp.

589{
590 for (const auto &cd : list)
591 {
592 if (cd->isLinkableInProject())
593 {
594 tagFile << " <class kind=\"" << cd->compoundTypeString() <<
595 "\">" << convertToXML(cd->name()) << "</class>\n";
596 }
597 }
598}
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
Definition util.cpp:3950

References convertToXML().

Referenced by writeTagFile().

◆ writeConcepts()

void FileDefImpl::writeConcepts ( OutputList & ol,
const DString & title )
private

Definition at line 728 of file filedef.cpp.

729{
730 // write list of classes
732}
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const

References m_concepts, title(), and ConceptLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeDetailedDescription()

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

Definition at line 473 of file filedef.cpp.

474{
476 {
479 ol.writeRuler();
483 ol.writeAnchor(DString(),"details");
485 ol.startGroupHeader("details");
486 ol.parseText(title);
487 ol.endGroupHeader();
488
489 ol.startTextBlock();
490 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF))
491 {
493 briefLine(),
494 this,
495 nullptr,
497 DocOptions());
498 }
499 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF) &&
500 !documentation().empty())
501 {
505 ol.enableAll();
508 ol.writeString("\n\n");
510 }
511 if (!documentation().empty())
512 {
513 ol.generateDoc(docFile(),
514 docLine(),
515 this,
516 nullptr,
517 documentation()+"\n",
518 DocOptions()
519 .setIndexWords(true));
520 }
521 //printf("Writing source ref for file %s\n",qPrint(name()));
522 if (Config_getBool(SOURCE_BROWSER))
523 {
524 ol.startParagraph("definition");
525 DString refText = theTranslator->trDefinedInSourceFile();
526 if (size_t fileMarkerPos = refText.find("@0"); fileMarkerPos!=DString::npos) // should always pass this.
527 {
528 ol.parseText(refText.left(fileMarkerPos)); //text left from marker 1
530 ol.parseText(refText.right(
531 refText.length()-fileMarkerPos-2)); // text right from marker 2
532 }
533 else
534 {
535 err("translation error: invalid marker in trDefinedInSourceFile()\n");
536 }
537 ol.endParagraph();
538 }
540 ol.endTextBlock();
541 }
542}
DString right(size_t len) const
Definition dstring.h:316
size_t find(char c, size_t pos=0) const
Definition dstring.h:244
DString left(size_t len) const
Definition dstring.h:311
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:156
virtual int docLine() const =0
virtual void writeRequirementRefs(OutputList &ol) const =0
bool hasDetailedDescription() const override
Definition filedef.cpp:364
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:439
void writeRuler()
Definition outputlist.h:521
void endTextBlock(bool paraBreak=false)
Definition outputlist.h:672
void writeAnchor(const DString &fileName, const DString &name)
Definition outputlist.h:523
void startTextBlock(bool dense=false)
Definition outputlist.h:670
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
void enableAll()
virtual DString trDefinedInSourceFile()=0

References DefinitionMixin< FileDef >::briefDescription(), DefinitionMixin< FileDef >::briefFile(), DefinitionMixin< FileDef >::briefLine(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< FileDef >::docFile(), DefinitionMixin< FileDef >::docLine(), DefinitionMixin< FileDef >::documentation(), DString::DString(), OutputList::enable(), OutputList::enableAll(), OutputList::endGroupHeader(), OutputList::endParagraph(), OutputList::endTextBlock(), err, DString::find(), OutputList::generateDoc(), getSourceFileBase(), hasDetailedDescription(), DefinitionMixin< FileDef >::hasRequirementRefs(), Html, Latex, DString::left(), DString::length(), Man, name(), DString::npos, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), DString::right(), RTF, OutputList::startGroupHeader(), OutputList::startParagraph(), OutputList::startTextBlock(), theTranslator, title(), Translator::trDefinedInSourceFile(), OutputList::writeAnchor(), OutputList::writeObjectLink(), DefinitionMixin< FileDef >::writeRequirementRefs(), OutputList::writeRuler(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writeDocumentation()

void FileDefImpl::writeDocumentation ( OutputList & ol)
overridevirtual

Write the documentation page for this file to the file of output generators ol.

Implements FileDef.

Definition at line 873 of file filedef.cpp.

874{
875 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
876 //funcList->countDecMembers();
877
878 //DString fn = name();
879 //if (Config_getBool(FULL_PATH_NAMES))
880 //{
881 // fn.prepend(stripFromPath(getPath()));
882 //}
883
884 //printf("WriteDocumentation diskname=%s\n",qPrint(diskname));
885
886 DString versionTitle;
887 if (!m_fileVersion.empty())
888 {
889 versionTitle=" ("+m_fileVersion+")";
890 }
891 DString title = m_docname+versionTitle;
892 DString pageTitle;
893 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
894 {
895 pageTitle=m_docname;
896 }
897 else
898 {
900 }
901
902 if (getDirDef())
903 {
904 startFile(ol,getOutputFileBase(),false,name(),pageTitle,HighlightedItem::FileVisible,!generateTreeView);
905 if (!generateTreeView)
906 {
908 ol.endQuickIndices();
909 }
910 startTitle(ol,getOutputFileBase(),this);
913 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
914 {
915 ol.parseText(displayName()); // Html only
916 }
917 else
918 {
920 }
921 ol.enableAll();
923 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
924 {
925 ol.parseText(Config_getBool(FULL_PATH_NAMES) ? // other output formats
926 pageTitle :
927 name());
928 }
929 else
930 {
931 ol.parseText(Config_getBool(FULL_PATH_NAMES) ? // other output formats
932 pageTitle :
934 }
936 addGroupListToTitle(ol,this);
938 }
939 else
940 {
941 startFile(ol,getOutputFileBase(),false,name(),pageTitle,HighlightedItem::FileVisible,!generateTreeView);
942 if (!generateTreeView)
943 {
944 ol.endQuickIndices();
945 }
946 startTitle(ol,getOutputFileBase(),this);
947 ol.parseText(pageTitle);
948 addGroupListToTitle(ol,this);
950 }
951
952 ol.startContents();
953
954 if (!m_fileVersion.empty())
955 {
958 ol.docify(versionTitle);
959 ol.endProjectNumber();
960 ol.enableAll();
961 }
962
963 //---------------------------------------- start flexible part -------------------------------
964
965 SrcLangExt lang = getLanguage();
966 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
967 {
968 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
969 switch (lde->kind())
970 {
971 case LayoutDocEntry::BriefDesc:
973 break;
974 case LayoutDocEntry::MemberDeclStart:
976 break;
977 case LayoutDocEntry::FileIncludes:
979 break;
980 case LayoutDocEntry::FileIncludeGraph:
982 break;
983 case LayoutDocEntry::FileIncludedByGraph:
985 break;
986 case LayoutDocEntry::FileSourceLink:
987 writeSourceLink(ol);
988 break;
989 case LayoutDocEntry::FileClasses:
990 if (ls) writeClassDeclarations(ol,ls->title(lang),m_classes);
991 break;
992 case LayoutDocEntry::FileInterfaces:
993 if (ls) writeClassDeclarations(ol,ls->title(lang),m_interfaces);
994 break;
995 case LayoutDocEntry::FileStructs:
996 if (ls) writeClassDeclarations(ol,ls->title(lang),m_structs);
997 break;
998 case LayoutDocEntry::FileExceptions:
999 if (ls) writeClassDeclarations(ol,ls->title(lang),m_exceptions);
1000 break;
1001 case LayoutDocEntry::FileConcepts:
1002 if (ls) writeConcepts(ol,ls->title(lang));
1003 break;
1004 case LayoutDocEntry::FileNamespaces:
1005 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),false);
1006 break;
1007 case LayoutDocEntry::FileConstantGroups:
1008 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),true);
1009 break;
1010 case LayoutDocEntry::MemberGroups:
1012 break;
1013 case LayoutDocEntry::MemberDecl:
1014 {
1015 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1016 if (lmd) writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
1017 }
1018 break;
1019 case LayoutDocEntry::MemberDeclEnd:
1021 break;
1022 case LayoutDocEntry::DetailedDesc:
1023 if (ls) writeDetailedDescription(ol,ls->title(lang));
1024 break;
1025 case LayoutDocEntry::MemberDefStart:
1027 break;
1028 case LayoutDocEntry::FileInlineClasses:
1030 break;
1031 case LayoutDocEntry::MemberDef:
1032 {
1033 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1034 if (lmd) writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1035 }
1036 break;
1037 case LayoutDocEntry::MemberDefEnd:
1039 break;
1040 case LayoutDocEntry::AuthorSection:
1042 break;
1043 case LayoutDocEntry::ClassIncludes:
1044 case LayoutDocEntry::ClassInheritanceGraph:
1045 case LayoutDocEntry::ClassNestedClasses:
1046 case LayoutDocEntry::ClassCollaborationGraph:
1047 case LayoutDocEntry::ClassAllMembersLink:
1048 case LayoutDocEntry::ClassUsedFiles:
1049 case LayoutDocEntry::ClassInlineClasses:
1050 case LayoutDocEntry::NamespaceNestedNamespaces:
1051 case LayoutDocEntry::NamespaceNestedConstantGroups:
1052 case LayoutDocEntry::NamespaceClasses:
1053 case LayoutDocEntry::NamespaceConcepts:
1054 case LayoutDocEntry::NamespaceInterfaces:
1055 case LayoutDocEntry::NamespaceStructs:
1056 case LayoutDocEntry::NamespaceExceptions:
1057 case LayoutDocEntry::NamespaceInlineClasses:
1058 case LayoutDocEntry::ConceptDefinition:
1059 case LayoutDocEntry::GroupClasses:
1060 case LayoutDocEntry::GroupConcepts:
1061 case LayoutDocEntry::GroupModules:
1062 case LayoutDocEntry::GroupInlineClasses:
1063 case LayoutDocEntry::GroupNamespaces:
1064 case LayoutDocEntry::GroupDirs:
1065 case LayoutDocEntry::GroupNestedGroups:
1066 case LayoutDocEntry::GroupFiles:
1067 case LayoutDocEntry::GroupGraph:
1068 case LayoutDocEntry::GroupPageDocs:
1069 case LayoutDocEntry::ModuleExports:
1070 case LayoutDocEntry::ModuleClasses:
1071 case LayoutDocEntry::ModuleConcepts:
1072 case LayoutDocEntry::ModuleUsedFiles:
1073 case LayoutDocEntry::DirSubDirs:
1074 case LayoutDocEntry::DirFiles:
1075 case LayoutDocEntry::DirGraph:
1076 err("Internal inconsistency: member '{}' should not be part of "
1077 "LayoutDocManager::File entry list\n",lde->entryToString());
1078 break;
1079 }
1080 }
1081
1082 //---------------------------------------- end flexible part -------------------------------
1083
1084 ol.endContents();
1085
1086 endFileWithNavPath(ol,this);
1087
1088 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1089 {
1090 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1091 if (ml) ml->sort();
1092 writeMemberPages(ol);
1093 }
1094}
virtual void writeNavigationPath(OutputList &ol) const =0
void writeBriefDescription(OutputList &ol)
Definition filedef.cpp:544
void writeSourceLink(OutputList &ol)
Definition filedef.cpp:700
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const DString &title)
Definition filedef.cpp:1850
DString displayName(bool=true) const override
Definition filedef.cpp:132
void endMemberDeclarations(OutputList &ol)
Definition filedef.cpp:752
void writeConcepts(OutputList &ol, const DString &title)
Definition filedef.cpp:728
void writeInlineClasses(OutputList &ol)
Definition filedef.cpp:734
void writeIncludeFiles(OutputList &ol)
Definition filedef.cpp:600
void writeNamespaceDeclarations(OutputList &ol, const DString &title, bool isConstantGroup)
Definition filedef.cpp:715
void writeMemberPages(OutputList &ol) override
Definition filedef.cpp:1096
void writeIncludedByGraph(OutputList &ol)
Definition filedef.cpp:674
void writeClassDeclarations(OutputList &ol, const DString &title, const ClassLinkedRefMap &list)
Definition filedef.cpp:722
void writeAuthorSection(OutputList &ol)
Definition filedef.cpp:787
void writeDetailedDescription(OutputList &ol, const DString &title)
Definition filedef.cpp:473
DirDef * getDirDef() const override
Definition filedef.cpp:151
void writeIncludeGraph(OutputList &ol)
Definition filedef.cpp:649
void startMemberDocumentation(OutputList &ol)
Definition filedef.cpp:757
void startMemberDeclarations(OutputList &ol)
Definition filedef.cpp:747
void endMemberDocumentation(OutputList &ol)
Definition filedef.cpp:766
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const DString &title)
Definition filedef.cpp:1832
void writeMemberGroups(OutputList &ol)
Definition filedef.cpp:775
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1435
void endContents()
Definition outputlist.h:620
void docify(const DString &s)
Definition outputlist.h:437
void startProjectNumber()
Definition outputlist.h:391
void endQuickIndices()
Definition outputlist.h:604
void startContents()
Definition outputlist.h:618
void endProjectNumber()
Definition outputlist.h:393
void endTitle(OutputList &ol, const DString &fileName, const DString &name)
Definition index.cpp:396
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
Definition index.cpp:450
void startTitle(OutputList &ol, const DString &fileName, const DefinitionMutable *def)
Definition index.cpp:386
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:403
MemberListType type
Definition layout.h:118
DString title(SrcLangExt lang) const
Definition layout.cpp:1786
MemberListType type
Definition layout.h:137
DString title(SrcLangExt lang) const
Definition layout.cpp:1798
DString title(SrcLangExt lang) const
Definition layout.cpp:1779
SrcLangExt
Definition types.h:207
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition util.cpp:4953

References addGroupListToTitle(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), displayName(), OutputList::docify(), DString::empty(), OutputList::enableAll(), OutputList::endContents(), endFileWithNavPath(), endMemberDeclarations(), endMemberDocumentation(), OutputList::endProjectNumber(), OutputList::endQuickIndices(), endTitle(), err, FileVisible, getDirDef(), DefinitionMixin< FileDef >::getLanguage(), getMemberList(), getOutputFileBase(), Html, LayoutDocManager::instance(), m_classes, m_docname, m_exceptions, m_fileVersion, m_interfaces, m_structs, name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), MemberVector::sort(), OutputList::startContents(), startFile(), startMemberDeclarations(), startMemberDocumentation(), OutputList::startProjectNumber(), startTitle(), theTranslator, title(), LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDef::title(), LayoutDocEntrySection::title(), Translator::trFileReference(), LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDef::type, writeAuthorSection(), writeBriefDescription(), writeClassDeclarations(), writeConcepts(), writeDetailedDescription(), writeIncludedByGraph(), writeIncludeFiles(), writeIncludeGraph(), writeInlineClasses(), writeMemberDeclarations(), writeMemberDocumentation(), writeMemberGroups(), writeMemberPages(), writeNamespaceDeclarations(), DefinitionMutable::writeNavigationPath(), and writeSourceLink().

◆ writeIncludedByGraph()

void FileDefImpl::writeIncludedByGraph ( OutputList & ol)
private

Definition at line 674 of file filedef.cpp.

675{
676 if (Config_getBool(HAVE_DOT) && m_hasIncludedByGraph /*&& Config_getBool(INCLUDED_BY_GRAPH)*/)
677 {
678 //printf("Graph for file %s\n",qPrint(name()));
679 DotInclDepGraph incDepGraph(this,true);
680 if (incDepGraph.isTooBig())
681 {
682 warn_uncond("Included by graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
683 qPrint(name()), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
684 }
685 else if (!incDepGraph.isTrivial())
686 {
687 ol.startTextBlock();
691 ol.endInclDepGraph(incDepGraph);
692 ol.enableAll();
693 ol.endTextBlock(true);
694 }
695 //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
696 }
697}
void startInclDepGraph()
Definition outputlist.h:652
void endInclDepGraph(DotInclDepGraph &g)
Definition outputlist.h:654
virtual DString trInclByDepGraph()=0
#define Config_getInt(name)
Definition config.h:34
const char * qPrint(const char *s)
Definition dstring.h:769
#define warn_uncond(fmt,...)
Definition message.h:122

References Config_getBool, Config_getInt, OutputList::disable(), OutputList::enableAll(), OutputList::endInclDepGraph(), OutputList::endTextBlock(), DotInclDepGraph::isTooBig(), DotInclDepGraph::isTrivial(), m_hasIncludedByGraph, Man, name(), DotInclDepGraph::numNodes(), OutputList::parseText(), qPrint(), OutputList::startInclDepGraph(), OutputList::startTextBlock(), theTranslator, Translator::trInclByDepGraph(), and warn_uncond.

Referenced by writeDocumentation().

◆ writeIncludeFiles()

void FileDefImpl::writeIncludeFiles ( OutputList & ol)
private

Definition at line 600 of file filedef.cpp.

601{
602 if (!m_includeList.empty())
603 {
604 ol.startTextBlock(true);
605 for (const auto &ii : m_includeList)
606 {
607 const FileDef *fd=ii.fileDef;
608 ol.startTypewriter();
609 SrcLangExt lang = fd ? fd->getLanguage() : SrcLangExt::Cpp;
610 ol.docify(::includeStatement(lang,ii.kind));
611 ol.docify(::includeOpen(lang,ii.kind));
613 ol.docify(ii.includeName);
614 ol.enableAll();
616
617 // Here we use the include file name as it appears in the file.
618 // we could also we the name as it is used within doxygen,
619 // then we should have used fd->docName() instead of ii->includeName
620 if (fd && fd->isLinkable())
621 {
624 DString(),ii.includeName);
625 }
626 else
627 {
628 ModuleDef *mod = ModuleManager::instance().getPrimaryInterface(ii.includeName);
629 if (ii.kind==IncludeKind::ImportModule && mod && mod->isLinkable())
630 {
632 DString(),ii.includeName);
633 }
634 else
635 {
636 ol.docify(ii.includeName);
637 }
638 }
639
640 ol.enableAll();
641 ol.docify(::includeClose(lang,ii.kind));
642 ol.endTypewriter();
643 ol.lineBreak();
644 }
645 ol.endTextBlock();
646 }
647}
virtual bool isLinkable() const =0
virtual DString getReference() const =0
virtual DString getOutputFileBase() const =0
virtual DString includeName() const =0
virtual bool generateSourceFile() const =0
static ModuleManager & instance()
ModuleDef * getPrimaryInterface(const DString &moduleName) const
void lineBreak(const DString &style=DString())
Definition outputlist.h:559
void startTypewriter()
Definition outputlist.h:449
void endTypewriter()
Definition outputlist.h:451
DString includeClose(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:85
DString includeOpen(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:72
DString includeStatement(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:55
@ ImportModule
Definition filedef.h:55

References OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), OutputList::enableAll(), OutputList::endTextBlock(), OutputList::endTypewriter(), FileDef::generateSourceFile(), Definition::getLanguage(), Definition::getOutputFileBase(), ModuleManager::getPrimaryInterface(), Definition::getReference(), Html, ImportModule, includeClose(), FileDef::includeName(), includeOpen(), includeStatement(), ModuleManager::instance(), Definition::isLinkable(), OutputList::lineBreak(), m_includeList, OutputList::startTextBlock(), OutputList::startTypewriter(), and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ writeIncludeGraph()

void FileDefImpl::writeIncludeGraph ( OutputList & ol)
private

Definition at line 649 of file filedef.cpp.

650{
651 if (Config_getBool(HAVE_DOT) && m_hasIncludeGraph /*&& Config_getBool(INCLUDE_GRAPH)*/)
652 {
653 //printf("Graph for file %s\n",qPrint(name()));
654 DotInclDepGraph incDepGraph(this,false);
655 if (incDepGraph.isTooBig())
656 {
657 warn_uncond("Include graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
658 qPrint(name()), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
659 }
660 else if (!incDepGraph.isTrivial())
661 {
662 ol.startTextBlock();
666 ol.endInclDepGraph(incDepGraph);
667 ol.enableAll();
668 ol.endTextBlock(true);
669 }
670 //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
671 }
672}
virtual DString trInclDepGraph(const DString &fName)=0

References Config_getBool, Config_getInt, OutputList::disable(), OutputList::enableAll(), OutputList::endInclDepGraph(), OutputList::endTextBlock(), DotInclDepGraph::isTooBig(), DotInclDepGraph::isTrivial(), m_hasIncludeGraph, Man, name(), DotInclDepGraph::numNodes(), OutputList::parseText(), qPrint(), OutputList::startInclDepGraph(), OutputList::startTextBlock(), theTranslator, Translator::trInclDepGraph(), and warn_uncond.

Referenced by writeDocumentation().

◆ writeInlineClasses()

void FileDefImpl::writeInlineClasses ( OutputList & ol)
private

Definition at line 734 of file filedef.cpp.

735{
736 // temporarily undo the disabling could be done by startMemberDocumentation()
737 // as a result of setting SEPARATE_MEMBER_PAGES to YES; see bug730512
738 bool isEnabled = ol.isEnabled(OutputType::Html);
740
742
743 // restore the initial state if needed
744 if (!isEnabled) ol.disable(OutputType::Html);
745}
void writeDocumentation(OutputList &ol, const Definition *container=nullptr) const
Definition classlist.cpp:74
bool isEnabled(OutputType o)

References OutputList::disable(), OutputList::enable(), Html, OutputList::isEnabled(), m_classes, and ClassLinkedRefMap::writeDocumentation().

Referenced by writeDocumentation().

◆ writeMemberDeclarations()

void FileDefImpl::writeMemberDeclarations ( OutputList & ol,
MemberListType lt,
const DString & title )
private

Definition at line 1832 of file filedef.cpp.

1833{
1834 bool optVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
1835 MemberList * ml = getMemberList(lt);
1836 if (ml)
1837 {
1838 if (optVhdl) // use specific declarations function
1839 {
1840
1841 VhdlDocGen::writeVhdlDeclarations(ml,ol,nullptr,nullptr,this,nullptr,nullptr);
1842 }
1843 else
1844 {
1845 ml->writeDeclarations(ol,nullptr,nullptr,this,nullptr,nullptr,title,DString());
1846 }
1847 }
1848}
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, const DString &title, const DString &subtitle, bool showEnumValues=false, bool showInline=false, const ClassDef *inheritedFrom=nullptr, MemberListType lt=MemberListType::PubMethods(), bool showSectionTitle=true) const
Writes the list of members to the output.
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *, const ModuleDef *)

References Config_getBool, DString::DString(), getMemberList(), title(), MemberList::writeDeclarations(), and VhdlDocGen::writeVhdlDeclarations().

Referenced by writeDocumentation().

◆ writeMemberDocumentation()

void FileDefImpl::writeMemberDocumentation ( OutputList & ol,
MemberListType lt,
const DString & title )
private

Definition at line 1850 of file filedef.cpp.

1851{
1852 MemberList * ml = getMemberList(lt);
1853 if (ml) ml->writeDocumentation(ol,name(),this,title,ml->listType().toLabel());
1854}
void writeDocumentation(OutputList &ol, const DString &scopeName, const Definition *container, const DString &title, const DString &anchor, bool showEnumValues=false, bool showInline=false) const
MemberListType listType() const
Definition memberlist.h:130
constexpr const char * toLabel() const noexcept
Definition types.h:402

References getMemberList(), MemberList::listType(), name(), title(), MemberListType::toLabel(), and MemberList::writeDocumentation().

Referenced by writeDocumentation().

◆ writeMemberGroups()

void FileDefImpl::writeMemberGroups ( OutputList & ol)
private

Definition at line 775 of file filedef.cpp.

776{
777 /* write user defined member groups */
778 for (const auto &mg : m_memberGroups)
779 {
780 if (!mg->allMembersInSameSection() || !m_subGrouping)
781 {
782 mg->writeDeclarations(ol,nullptr,nullptr,this,nullptr,nullptr);
783 }
784 }
785}

References m_memberGroups, and m_subGrouping.

Referenced by writeDocumentation().

◆ writeMemberPages()

void FileDefImpl::writeMemberPages ( OutputList & ol)
overridevirtual

Implements FileDef.

Definition at line 1096 of file filedef.cpp.

1097{
1098 ol.pushGeneratorState();
1100
1101 for (const auto &ml : m_memberLists)
1102 {
1103 if (ml->listType().isDocumentation())
1104 {
1105 ml->writeDocumentationPage(ol,name(),this);
1106 }
1107 }
1108
1109 ol.popGeneratorState();
1110}

References OutputList::disableAllBut(), Html, m_memberLists, name(), OutputList::popGeneratorState(), and OutputList::pushGeneratorState().

Referenced by writeDocumentation().

◆ writeNamespaceDeclarations()

void FileDefImpl::writeNamespaceDeclarations ( OutputList & ol,
const DString & title,
bool isConstantGroup )
private

Definition at line 715 of file filedef.cpp.

717{
718 // write list of namespaces
719 m_namespaces.writeDeclaration(ol,title,isConstantGroup);
720}
void writeDeclaration(OutputList &ol, const DString &title, bool isConstantGroup=false, bool localName=false)

References m_namespaces, title(), and NamespaceLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writePageNavigation()

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

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 865 of file filedef.cpp.

866{
867 ol.writePageOutline();
868}
void writePageOutline()
Definition outputlist.h:616

References OutputList::writePageOutline().

◆ writeQuickMemberLinks()

void FileDefImpl::writeQuickMemberLinks ( OutputList & ol,
const MemberDef * currentMd ) const
overridevirtual

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 1112 of file filedef.cpp.

1113{
1114 bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
1115
1116 ol.writeString(" <div class=\"navtab\">\n");
1117 ol.writeString(" <table>\n");
1118
1119 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1120 if (allMemberList)
1121 {
1122 for (const auto &md : *allMemberList)
1123 {
1124 if (md->getFileDef()==this && md->getNamespaceDef()==nullptr && md->isLinkable() && !md->isEnumValue())
1125 {
1126 if (md->isLinkableInProject())
1127 {
1128 DString fn=md->getOutputFileBase();
1130 if (md==currentMd) // selected item => highlight
1131 {
1132 ol.writeString(" <tr><td class=\"navtabHL\">");
1133 }
1134 else
1135 {
1136 ol.writeString(" <tr><td class=\"navtab\">");
1137 }
1138 ol.writeString("<span class=\"label\"><a ");
1139 ol.writeString("href=\"");
1140 if (createSubDirs) ol.writeString("../../");
1141 ol.writeString(fn+"#"+md->anchor());
1142 ol.writeString("\">");
1143 ol.writeString(convertToHtml(md->localName()));
1144 ol.writeString("</a></span>");
1145 ol.writeString("</td></tr>\n");
1146 }
1147 }
1148 }
1149 }
1150
1151 ol.writeString(" </table>\n");
1152 ol.writeString(" </div>\n");
1153}
void createSubDirs(const Dir &d)
Definition util.cpp:3677
DString convertToHtml(const DString &s, bool keepEntities)
Definition util.cpp:4005
void addHtmlExtensionIfMissing(DString &fName)
Definition util.cpp:4963

References addHtmlExtensionIfMissing(), Config_getBool, convertToHtml(), createSubDirs(), getMemberList(), and OutputList::writeString().

◆ writeSourceBody()

void FileDefImpl::writeSourceBody ( OutputList & ol,
ClangTUParser * clangParser )
overridevirtual

Implements FileDef.

Definition at line 1209 of file filedef.cpp.

1210{
1211 bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1212 OutputCodeList devNullList;
1213 devNullList.add<DevNullCodeGenerator>();
1214#if USE_LIBCLANG
1215 if (Doxygen::clangAssistedParsing && clangParser &&
1216 (getLanguage()==SrcLangExt::Cpp || getLanguage()==SrcLangExt::ObjC))
1217 {
1218 auto &codeOL = ol.codeGenerators();
1219 codeOL.startCodeFragment("DoxyCode");
1220 clangParser->switchToFile(this);
1221 clangParser->writeSources(codeOL,this);
1222 codeOL.endCodeFragment("DoxyCode");
1223 }
1224 else
1225#endif
1226 {
1228 intf->resetCodeParserState();
1229 auto &codeOL = ol.codeGenerators();
1230 codeOL.startCodeFragment("DoxyCode");
1231 bool needs2PassParsing =
1232 Doxygen::parseSourcesNeeded && // we need to parse (filtered) sources for cross-references
1233 !filterSourceFiles && // but user wants to show sources as-is
1234 !getFileFilter(absFilePath(),true).empty(); // and there is a filter used while parsing
1235
1236 if (needs2PassParsing)
1237 {
1238 // parse code for cross-references only (see bug707641)
1239 intf->parseCode(devNullList,DString(),
1240 fileToString(absFilePath(),true,true),
1241 getLanguage(),
1242 Config_getBool(STRIP_CODE_COMMENTS),
1243 CodeParserOptions()
1244 .setFileDef(this)
1245 );
1246 }
1247 size_t indent = 0;
1248 intf->parseCode(codeOL,DString(),
1249 detab(fileToString(absFilePath(),filterSourceFiles,true),indent),
1250 getLanguage(), // lang
1251 Config_getBool(STRIP_CODE_COMMENTS),
1252 CodeParserOptions()
1253 .setFileDef(this)
1254 .setCollectXRefs(!needs2PassParsing)
1255 );
1256 codeOL.endCodeFragment("DoxyCode");
1257 }
1258}
static bool parseSourcesNeeded
Definition doxygen.h:123
void startCodeFragment(const DString &style)
Definition outputlist.h:279
const OutputCodeList & codeGenerators() const
Definition outputlist.h:358
DString getFileFilter(const DString &name, bool isSourceCode)
Definition util.cpp:1419

References absFilePath(), OutputCodeList::add(), Doxygen::clangAssistedParsing, OutputList::codeGenerators(), Config_getBool, detab(), DString::DString(), DString::empty(), fileToString(), ParserManager::getCodeParser(), DefinitionMixin< FileDef >::getDefFileExtension(), getFileFilter(), DefinitionMixin< FileDef >::getLanguage(), Doxygen::parserManager, Doxygen::parseSourcesNeeded, and OutputCodeList::startCodeFragment().

◆ writeSourceFooter()

void FileDefImpl::writeSourceFooter ( OutputList & ol)
overridevirtual

Implements FileDef.

Definition at line 1260 of file filedef.cpp.

1261{
1262 ol.endContents();
1263 endFileWithNavPath(ol,this,false);
1264 ol.enableAll();
1265}

References OutputList::enableAll(), OutputList::endContents(), and endFileWithNavPath().

◆ writeSourceHeader()

void FileDefImpl::writeSourceHeader ( OutputList & ol)
overridevirtual

Write a source listing of this file to the output

Implements FileDef.

Definition at line 1156 of file filedef.cpp.

1157{
1158 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1159 DString title = m_docname;
1160 if (!m_fileVersion.empty())
1161 {
1162 title+=" ("+m_fileVersion+")";
1163 }
1164 DString pageTitle = theTranslator->trSourceFile(title);
1166
1167 bool isDocFile = isDocumentationFile();
1168 bool genSourceFile = !isDocFile && generateSourceFile();
1169 if (getDirDef())
1170 {
1172 !generateTreeView,
1173 !isDocFile && genSourceFile ? DString() : getOutputFileBase(),
1174 0);
1175 if (!generateTreeView)
1176 {
1178 ol.endQuickIndices();
1179 }
1181 ol.parseText(name());
1183 }
1184 else
1185 {
1187 !isDocFile && genSourceFile ? DString() : getOutputFileBase(),
1188 0);
1190 ol.parseText(title);
1192 }
1193
1194 ol.startContents();
1195
1196 if (isLinkable())
1197 {
1200 ol.endTextLink();
1201
1202 ol.pushGeneratorState();
1204 ol.writeString("\\par\n");
1205 ol.popGeneratorState();
1206 }
1207}
bool generateSourceFile() const override
Definition filedef.cpp:1607
bool isLinkable() const override
Definition filedef.cpp:149
virtual DString trGotoDocumentation()=0
virtual DString trSourceFile(const DString &filename)=0

References Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DString::DString(), DString::empty(), OutputList::endQuickIndices(), OutputList::endTextLink(), endTitle(), FileVisible, generateSourceFile(), getDirDef(), getOutputFileBase(), getSourceFileBase(), isDocumentationFile(), isLinkable(), m_docname, m_fileVersion, Man, name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startContents(), startFile(), OutputList::startTextLink(), startTitle(), theTranslator, title(), Translator::trGotoDocumentation(), Translator::trSourceFile(), DefinitionMutable::writeNavigationPath(), and OutputList::writeString().

◆ writeSourceLink()

void FileDefImpl::writeSourceLink ( OutputList & ol)
private

Definition at line 700 of file filedef.cpp.

701{
702 //printf("%s: generateSourceFile()=%d\n",qPrint(name()),generateSourceFile());
703 if (generateSourceFile())
704 {
706 ol.startParagraph();
709 ol.endTextLink();
710 ol.endParagraph();
711 ol.enableAll();
712 }
713}
DString includeName() const override
Definition filedef.cpp:1750
virtual DString trGotoSourceCode()=0

References OutputList::disableAllBut(), DString::DString(), OutputList::enableAll(), OutputList::endParagraph(), OutputList::endTextLink(), generateSourceFile(), Html, includeName(), OutputList::parseText(), OutputList::startParagraph(), OutputList::startTextLink(), theTranslator, and Translator::trGotoSourceCode().

Referenced by writeDocumentation().

◆ writeSummaryLinks()

void FileDefImpl::writeSummaryLinks ( OutputList & ol) const
overridevirtual

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 799 of file filedef.cpp.

800{
803 bool first=true;
804 SrcLangExt lang=getLanguage();
805 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
806 {
807 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
808 if (lde->kind()==LayoutDocEntry::FileClasses && m_classes.declVisible() && ls)
809 {
810 DString label = "nested-classes";
811 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
812 first=false;
813 }
814 else if (lde->kind()==LayoutDocEntry::FileInterfaces && m_interfaces.declVisible() && ls)
815 {
816 DString label = "interfaces";
817 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
818 first=false;
819 }
820 else if (lde->kind()==LayoutDocEntry::FileStructs && m_structs.declVisible() && ls)
821 {
822 DString label = "structs";
823 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
824 first=false;
825 }
826 else if (lde->kind()==LayoutDocEntry::FileExceptions && m_exceptions.declVisible() && ls)
827 {
828 DString label = "exceptions";
829 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
830 first=false;
831 }
832 else if (lde->kind()==LayoutDocEntry::FileNamespaces && m_namespaces.declVisible(false) && ls)
833 {
834 DString label = "namespaces";
835 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
836 first=false;
837 }
838 else if (lde->kind()==LayoutDocEntry::FileConcepts && m_concepts.declVisible() && ls)
839 {
840 DString label = "concepts";
841 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
842 first=false;
843 }
844 else if (lde->kind()==LayoutDocEntry::MemberDecl)
845 {
846 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
847 if (lmd)
848 {
849 MemberList * ml = getMemberList(lmd->type);
850 if (ml && ml->declVisible())
851 {
852 ol.writeSummaryLink(DString(),ml->listType().toLabel(),lmd->title(lang),first);
853 first=false;
854 }
855 }
856 }
857 }
858 if (!first)
859 {
860 ol.writeString(" </div>\n");
861 }
863}
bool declVisible(const ClassDef::CompoundType *filter=nullptr) const
Definition classlist.cpp:29
bool declVisible() const
bool declVisible() const
bool declVisible(bool isContantGroup) const
void writeSummaryLink(const DString &file, const DString &anchor, const DString &title, bool first)
Definition outputlist.h:614

References ClassLinkedRefMap::declVisible(), ConceptLinkedRefMap::declVisible(), MemberList::declVisible(), NamespaceLinkedRefMap::declVisible(), OutputList::disableAllBut(), DString::DString(), DefinitionMixin< FileDef >::getLanguage(), getMemberList(), Html, LayoutDocManager::instance(), MemberList::listType(), m_classes, m_concepts, m_exceptions, m_interfaces, m_namespaces, m_structs, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocEntryMemberDecl::title(), LayoutDocEntrySection::title(), MemberListType::toLabel(), LayoutDocEntryMemberDecl::type, OutputList::writeString(), and OutputList::writeSummaryLink().

◆ writeTagFile()

void FileDefImpl::writeTagFile ( TextStream & t)
overridevirtual

Implements FileDef.

Definition at line 375 of file filedef.cpp.

376{
377 DString fn=getOutputFileBase();
379 tagFile << " <compound kind=\"file\">\n";
380 tagFile << " <name>" << convertToXML(name()) << "</name>\n";
381 tagFile << " <path>" << convertToXML(stripFromPath(getPath())) << "</path>\n";
382 tagFile << " <filename>" << fn << "</filename>\n";
383 for (const auto &ii : m_includeList)
384 {
385 const FileDef *fd=ii.fileDef;
386 if (fd && fd->isLinkable() && !fd->isReference())
387 {
388 DString attr = includeTagFileAttributes(fd->getLanguage(),ii.kind);
389 tagFile << " <includes id=\""
390 << convertToXML(fd->getOutputFileBase()) << "\" "
391 << "name=\"" << convertToXML(fd->name()) << "\" "
392 << attr << ">"
393 << convertToXML(ii.includeName)
394 << "</includes>\n";
395 }
396 }
397 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
398 {
399 switch (lde->kind())
400 {
401 case LayoutDocEntry::FileClasses:
402 {
404 }
405 break;
406 case LayoutDocEntry::FileInterfaces:
407 {
409 }
410 break;
411 case LayoutDocEntry::FileStructs:
412 {
414 }
415 break;
416 case LayoutDocEntry::FileExceptions:
417 {
419 }
420 break;
421 case LayoutDocEntry::FileConcepts:
422 {
423 for (const auto *nd : m_concepts)
424 {
425 if (nd->isLinkableInProject())
426 {
427 tagFile << " <concept>" << convertToXML(nd->name()) << "</concept>\n";
428 }
429 }
430 }
431 break;
432 case LayoutDocEntry::FileNamespaces:
433 {
434 for (const auto *nd : m_namespaces)
435 {
436 if (nd->isLinkableInProject())
437 {
438 tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>\n";
439 }
440 }
441 }
442 break;
443 case LayoutDocEntry::MemberDecl:
444 {
445 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
446 if (lmd)
447 {
448 MemberList * ml = getMemberList(lmd->type);
449 if (ml)
450 {
451 ml->writeTagFile(tagFile,false,false);
452 }
453 }
454 }
455 break;
456 case LayoutDocEntry::MemberGroups:
457 {
458 for (const auto &mg : m_memberGroups)
459 {
460 mg->writeTagFile(tagFile);
461 }
462 }
463 break;
464 default:
465 break;
466 }
467 }
468
470 tagFile << " </compound>\n";
471}
virtual void writeDocAnchorsToTagFile(TextStream &) const =0
DString getPath() const override
Definition filedef.cpp:146
void writeClassesToTagFile(TextStream &t, const ClassLinkedRefMap &list)
Definition filedef.cpp:588
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
DString includeTagFileAttributes(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:103

References addHtmlExtensionIfMissing(), convertToXML(), Definition::getLanguage(), getMemberList(), Definition::getOutputFileBase(), getOutputFileBase(), getPath(), includeTagFileAttributes(), LayoutDocManager::instance(), Definition::isLinkable(), Definition::isReference(), m_classes, m_concepts, m_exceptions, m_includeList, m_interfaces, m_memberGroups, m_namespaces, m_structs, Definition::name(), name(), stripFromPath(), LayoutDocEntryMemberDecl::type, writeClassesToTagFile(), DefinitionMixin< FileDef >::writeDocAnchorsToTagFile(), and MemberList::writeTagFile().

Member Data Documentation

◆ m_classes

◆ m_concepts

ConceptLinkedRefMap FileDefImpl::m_concepts
private

◆ m_dir

DirDef* FileDefImpl::m_dir = nullptr
private

Definition at line 253 of file filedef.cpp.

Referenced by FileDefImpl(), getDirDef(), and setDirDef().

◆ m_docname

DString FileDefImpl::m_docname
private

Definition at line 248 of file filedef.cpp.

Referenced by docName(), FileDefImpl(), writeDocumentation(), and writeSourceHeader().

◆ m_exceptions

ClassLinkedRefMap FileDefImpl::m_exceptions
private

◆ m_fileName

DString FileDefImpl::m_fileName
private

Definition at line 247 of file filedef.cpp.

Referenced by FileDefImpl(), fileName(), and name().

◆ m_filePath

DString FileDefImpl::m_filePath
private

Definition at line 243 of file filedef.cpp.

Referenced by absFilePath(), acquireFileVersion(), FileDefImpl(), and getSourceFileBase().

◆ m_fileVersion

DString FileDefImpl::m_fileVersion
private

◆ m_hasIncludedByGraph

bool FileDefImpl::m_hasIncludedByGraph = Config_getBool(INCLUDED_BY_GRAPH)
private

Definition at line 265 of file filedef.cpp.

Referenced by hasIncludedByGraph(), overrideIncludedByGraph(), and writeIncludedByGraph().

◆ m_hasIncludeGraph

bool FileDefImpl::m_hasIncludeGraph = Config_getBool(INCLUDE_GRAPH)
private

Definition at line 264 of file filedef.cpp.

Referenced by hasIncludeGraph(), overrideIncludeGraph(), and writeIncludeGraph().

◆ m_inclByDepFileName

DString FileDefImpl::m_inclByDepFileName
private

Definition at line 245 of file filedef.cpp.

Referenced by includedByDependencyGraphFileName(), and setDiskNameLocal().

◆ m_inclDepFileName

DString FileDefImpl::m_inclDepFileName
private

Definition at line 244 of file filedef.cpp.

Referenced by includeDependencyGraphFileName(), and setDiskNameLocal().

◆ m_includedByList

IncludeInfoList FileDefImpl::m_includedByList
private

Definition at line 239 of file filedef.cpp.

Referenced by addIncludedByDependency(), includedByFileList(), and sortMemberLists().

◆ m_includedByMap

IncludeInfoMap FileDefImpl::m_includedByMap
private

Definition at line 238 of file filedef.cpp.

Referenced by addIncludedByDependency(), and generateSourceFile().

◆ m_includeList

IncludeInfoList FileDefImpl::m_includeList
private

◆ m_includeMap

IncludeInfoMap FileDefImpl::m_includeMap
private

Definition at line 236 of file filedef.cpp.

Referenced by addIncludeDependency(), and isIncluded().

◆ m_interfaces

ClassLinkedRefMap FileDefImpl::m_interfaces
private

◆ m_isSource

bool FileDefImpl::m_isSource
private

Definition at line 251 of file filedef.cpp.

Referenced by FileDefImpl(), and isSource().

◆ m_memberGroups

◆ m_memberLists

◆ m_moduleDef

ModuleDef* FileDefImpl::m_moduleDef = nullptr
private

Definition at line 254 of file filedef.cpp.

Referenced by getModuleDef(), and setModuleDef().

◆ m_namespaces

◆ m_outputDiskName

DString FileDefImpl::m_outputDiskName
private

Definition at line 246 of file filedef.cpp.

Referenced by getOutputFileBase(), getSourceFileBase(), and setDiskNameLocal().

◆ m_path

DString FileDefImpl::m_path
private

Definition at line 242 of file filedef.cpp.

Referenced by FileDefImpl(), and getPath().

◆ m_srcDefMap

DefinitionLineMap FileDefImpl::m_srcDefMap
private

Definition at line 249 of file filedef.cpp.

Referenced by addSourceRef(), and getSourceDefinition().

◆ m_srcMemberMap

MemberDefLineMap FileDefImpl::m_srcMemberMap
private

Definition at line 250 of file filedef.cpp.

Referenced by addSourceRef(), and getSourceMember().

◆ m_structs

ClassLinkedRefMap FileDefImpl::m_structs
private

◆ m_subGrouping

bool FileDefImpl::m_subGrouping
private

Definition at line 263 of file filedef.cpp.

Referenced by addMembersToMemberGroup(), FileDefImpl(), subGrouping(), and writeMemberGroups().

◆ m_usingDeclList

LinkedRefMap<const Definition> FileDefImpl::m_usingDeclList
private

◆ m_usingDirList

LinkedRefMap<NamespaceDef> FileDefImpl::m_usingDirList
private

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