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

Public Member Functions

 FileDefImpl (const QCString &p, const QCString &n, const QCString &ref=QCString(), const QCString &dn=QCString())
 ~FileDefImpl () override
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
const QCStringname () const override
QCString displayName (bool=TRUE) const override
QCString fileName () const override
QCString getOutputFileBase () const override
QCString anchor () const override
QCString getSourceFileBase () const override
QCString includeName () const override
QCString includeDependencyGraphFileName () const override
QCString includedByDependencyGraphFileName () const override
QCString absFilePath () const override
const QCStringdocName () const override
bool isSource () const override
bool isDocumentationFile () const override
const DefinitiongetSourceDefinition (int lineNr) const override
const MemberDefgetSourceMember (int lineNr) const override
QCString getPath () const override
QCString getVersion () const override
bool isLinkableInProject () const override
bool isLinkable () const override
bool isIncluded (const QCString &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
QCString title () const override
bool hasDetailedDescription () const override
QCString 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 QCString &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 QCString &incName, IncludeKind kind) override
void addIncludedByDependency (const FileDef *fd, const QCString &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 QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
DefinitionMixinoperator= (const DefinitionMixin &other)
 ~DefinitionMixin () override=default
bool isAlias () const override
bool isAnonymous () const override
const QCStringlocalName () const override
QCString qualifiedName () const override
QCString symbolName () const override
QCString getSourceAnchor () const override
QCString documentation () const override
int docLine () const override
QCString docFile () const override
QCString briefDescription (bool abbreviate=FALSE) const override
QCString briefDescriptionAsTooltip () const override
int briefLine () const override
QCString inbodyDocumentation () const override
QCString inbodyFile () const override
int inbodyLine () const override
QCString briefFile () const override
QCString getDefFileName () const override
QCString getDefFileExtension () const override
int getDefLine () const override
int getDefColumn () const override
bool hasDocumentation () const override
bool hasUserDocumentation () const override
bool isVisibleInProject () const override
bool isVisible () const override
bool isHidden () const override
bool isArtificial () const override
bool isExported () const override
QCString getReference () const override
bool isReference () const override
QCString externalReference (const QCString &relPath) const override
int getStartDefLine () const override
int getStartBodyLine () const override
int getEndBodyLine () const override
const FileDefgetBodyDef () const override
SrcLangExt getLanguage () const override
const GroupListpartOfGroups () const override
bool isLinkableViaGroup () const override
const RefItemVectorxrefListItems () const override
const RequirementRefsrequirementReferences () const override
const DefinitionfindInnerCompound (const QCString &name) const override
DefinitiongetOuterScope () const override
const MemberVectorgetReferencesMembers () const override
const MemberVectorgetReferencedByMembers () const override
bool hasSections () const override
bool hasSources () const override
bool hasBriefDescription () const override
QCString id () const override
const SectionRefsgetSectionRefs () const override
void setName (const QCString &name) override
void setId (const QCString &name) override
void setDefFile (const QCString &df, int defLine, int defColumn) override
void setDocumentation (const QCString &doc, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE) override
void setBriefDescription (const QCString &brief, const QCString &briefFile, int briefLine) override
void setInbodyDocumentation (const QCString &doc, const QCString &docFile, int docLine) override
void setReference (const QCString &r) override
void addSectionsToDefinition (const std::vector< const SectionInfo * > &anchorList) override
void setBodySegment (int defLine, int bls, int ble) override
void setBodyDef (const FileDef *fd) override
void addSourceReferencedBy (MemberDef *md, const QCString &sourceRefName) override
void addSourceReferences (MemberDef *md, const QCString &sourceRefName) override
void setRefItems (const RefItemVector &sli) override
void setRequirementReferences (const RequirementRefs &rqli) override
void mergeRefItems (Definition *def) override
void mergeReferences (const Definition *other) override
void mergeReferencedBy (const Definition *other) override
void addInnerCompound (Definition *def) override
void setOuterScope (Definition *def) override
void setHidden (bool b) override
void setArtificial (bool b) override
void setExported (bool b) override
void setLanguage (SrcLangExt lang) override
void writeSourceDef (OutputList &ol) const override
void writeInlineCode (OutputList &ol, const QCString &scopeName) const override
bool hasSourceRefs () const override
bool hasSourceReffedBy () const override
void writeSourceRefs (OutputList &ol, const QCString &scopeName) const override
void writeSourceReffedBy (OutputList &ol, const QCString &scopeName) const override
bool hasRequirementRefs () const override
void writeRequirementRefs (OutputList &ol) const override
void makePartOfGroup (GroupDef *gd) override
void writeNavigationPath (OutputList &ol) const override
QCString navigationPathAsString () const override
QCString pathFragment () const override
void writeDocAnchorsToTagFile (TextStream &fs) const override
void setLocalName (const QCString &name) override
void writeToc (OutputList &ol, const LocalToc &lt) const override
void computeTooltip () override
void _setSymbolName (const QCString &name) override
QCString _symbolName () const override

Private Member Functions

void setDiskNameLocal (const QCString &name)
void acquireFileVersion ()
void addMemberToList (MemberListType lt, MemberDef *md)
void writeMemberDeclarations (OutputList &ol, MemberListType lt, const QCString &title)
void writeMemberDocumentation (OutputList &ol, MemberListType lt, const QCString &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 QCString &title, bool isConstantGroup)
void writeClassDeclarations (OutputList &ol, const QCString &title, const ClassLinkedRefMap &list)
void writeConcepts (OutputList &ol, const QCString &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 QCString &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
QCString m_path
QCString m_filePath
QCString m_inclDepFileName
QCString m_inclByDepFileName
QCString m_outputDiskName
QCString m_fileName
QCString m_docname
DefinitionLineMap m_srcDefMap
MemberDefLineMap m_srcMemberMap
bool m_isSource
QCString 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 QCString & p,
const QCString & nm,
const QCString & lref = QCString(),
const QCString & dn = QCString() )

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.isEmpty())
283{
285 m_filePath=p+nm;
286 m_fileName=nm;
287
288 setReference(lref);
289 setDiskNameLocal(!dn.isEmpty() ? 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}
const QCString & name() const override
void setLanguage(SrcLangExt lang) override
void setReference(const QCString &r) override
DefinitionMixin(const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
DirDef * m_dir
Definition filedef.cpp:253
QCString m_path
Definition filedef.cpp:242
void setDiskNameLocal(const QCString &name)
Definition filedef.cpp:308
void acquireFileVersion()
Definition filedef.cpp:1698
QCString m_fileName
Definition filedef.cpp:247
bool m_isSource
Definition filedef.cpp:251
bool m_subGrouping
Definition filedef.cpp:263
QCString m_docname
Definition filedef.cpp:248
QCString m_filePath
Definition filedef.cpp:243
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:163
#define Config_getBool(name)
Definition config.h:33
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
Definition util.cpp:5209
static QCString stripFromPath(const QCString &p, const StringVector &l)
Definition util.cpp:298
EntryType guessSection(const QCString &name)
Definition util.cpp:338
QCString removeLongPathMarker(QCString path)
Definition util.cpp:287

References acquireFileVersion(), Config_getBool, DefinitionMixin< FileDef >::DefinitionMixin(), getLanguageFromFileName(), guessSection(), QCString::isEmpty(), m_dir, m_docname, m_fileName, m_filePath, m_isSource, m_path, m_subGrouping, DefinitionMixin< Base >::name(), 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()

QCString 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 QCString vercmd = Config_getString(FILE_VERSION_FILTER);
1701 if (!vercmd.isEmpty() && !m_filePath.isEmpty() && !isReference() &&
1702 m_filePath!="generated" && m_filePath!="graph_legend.dox")
1703 {
1704 msg("Version of {} : ",m_filePath);
1705 QCString 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=QCString(buf,numRead).stripWhiteSpace();
1721 if (!m_fileVersion.isEmpty())
1722 {
1723 msg("{}\n",m_fileVersion);
1724 return;
1725 }
1726 }
1727 msg("no version available\n");
1728 }
1729}
@ ExtCmd
Definition debug.h:36
static void print(DebugMask mask, int prio, fmt::format_string< Args... > fmt, Args &&... args)
Definition debug.h:76
virtual bool isReference() const =0
QCString 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 QCString &name, const QCString &type)
Definition portable.cpp:479
int pclose(FILE *stream)
Definition portable.cpp:488

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

Referenced by FileDefImpl().

◆ addIncludedByDependency()

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

Implements FileDef.

Definition at line 1591 of file filedef.cpp.

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

References FileDef::absFilePath(), QCString::isEmpty(), m_includedByList, m_includedByMap, and QCString::str().

◆ addIncludeDependency()

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

Implements FileDef.

Definition at line 1532 of file filedef.cpp.

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

References FileDef::absFilePath(), QCString::isEmpty(), m_includeList, m_includeMap, and QCString::str().

◆ addIncludedUsingDirectives()

void FileDefImpl::addIncludedUsingDirectives ( FileDefSet & visitedFiles)
overridevirtual

Implements FileDef.

Definition at line 1543 of file filedef.cpp.

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

References addIncludedUsingDirectives(), QCString::insert(), m_includeList, m_usingDeclList, and m_usingDirList.

Referenced by addIncludedUsingDirectives().

◆ addListReferences()

void FileDefImpl::addListReferences ( )
overridevirtual

Implements FileDef.

Definition at line 1620 of file filedef.cpp.

1621{
1626 QCString(),
1627 nullptr
1628 );
1629 for (const auto &mg : m_memberGroups)
1630 {
1631 mg->addListReferences(this);
1632 }
1633 for (auto &ml : m_memberLists)
1634 {
1635 if (ml->listType().isDocumentation())
1636 {
1637 ml->addListReferences(this);
1638 }
1639 }
1640}
const RefItemVector & xrefListItems() const override
QCString getOutputFileBase() const override
Definition filedef.cpp:1744
MemberGroupList m_memberGroups
Definition filedef.cpp:256
const QCString & name() const override
Definition filedef.cpp:1480
MemberLists m_memberLists
Definition filedef.cpp:255
virtual QCString trFile(bool first_capital, bool singular)=0
Translator * theTranslator
Definition language.cpp:71
#define TRUE
Definition qcstring.h:37
void addRefItem(const RefItemVector &sli, const QCString &key, const QCString &prefix, const QCString &name, const QCString &title, const QCString &args, const Definition *scope)
Definition util.cpp:4823

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

◆ addMembersToMemberGroup()

void FileDefImpl::addMembersToMemberGroup ( )
overridevirtual

Implements FileDef.

Definition at line 1297 of file filedef.cpp.

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

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
MemberDefMutable * toMemberDefMutable(Definition *d)

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

Referenced by insertMember().

◆ addRequirementReferences()

void FileDefImpl::addRequirementReferences ( )
overridevirtual

Implements FileDef.

Definition at line 1642 of file filedef.cpp.

1643{
1645 for (const auto &mg : m_memberGroups)
1646 {
1647 mg->addRequirementReferences(this);
1648 }
1649 for (auto &ml : m_memberLists)
1650 {
1651 if (ml->listType().isDocumentation())
1652 {
1653 ml->addRequirementReferences(this);
1654 }
1655 }
1656}
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 1488 of file filedef.cpp.

1489{
1490 //printf("FileDefImpl::addSourceRef(%d,%s,%s)\n",line,qPrint(d?d->name():"nullptr"),qPrint(md?md->name():"nullptr"));
1491 if (d)
1492 {
1493 m_srcDefMap.emplace(line,d);
1494 if (md) m_srcMemberMap.emplace(line,md);
1495 //printf("Adding member %s with anchor %s at line %d to file %s\n",
1496 // md?qPrint(md->name()):"<none>",md?qPrint(md->anchor()):"<none>",line,qPrint(name()));
1497 }
1498}
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 1527 of file filedef.cpp.

1528{
1529 m_usingDeclList.add(d->qualifiedName(),d);
1530}
virtual QCString qualifiedName() const =0

References m_usingDeclList, and Definition::qualifiedName().

Referenced by combineUsingRelations().

◆ addUsingDirective()

void FileDefImpl::addUsingDirective ( NamespaceDef * nd)
overridevirtual

Implements FileDef.

Definition at line 1515 of file filedef.cpp.

1516{
1517 m_usingDirList.add(nd->qualifiedName(),nd);
1518 //printf("%p: FileDefImpl::addUsingDirective: %s:%d\n",this,qPrint(name()),usingDirList->count());
1519}

References m_usingDirList, and Definition::qualifiedName().

Referenced by combineUsingRelations().

◆ anchor()

QCString 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 QCString(); }

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

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

QCString 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(); }
const QCString & localName() const override

References DefinitionMixin< FileDef >::localName(), and TRUE.

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 QCString & 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 753 of file filedef.cpp.

754{
756}
void endMemberSections()
Definition outputlist.h:463

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void FileDefImpl::endMemberDocumentation ( OutputList & ol)
private

Definition at line 767 of file filedef.cpp.

768{
769 if (Config_getBool(SEPARATE_MEMBER_PAGES))
770 {
773 }
774}
static bool suppressDocWarnings
Definition doxygen.h:129
void enable(OutputType o)
#define FALSE
Definition qcstring.h:34

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

Referenced by writeDocumentation().

◆ fileName()

QCString 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()

QCString 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}
QCString docFile() const override
QCString briefDescription(bool abbreviate=FALSE) const override
QCString inbodyDocumentation() const override
QCString documentation() const override
void docFindSections(const QCString &input, const Definition *d, const QCString &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 1608 of file filedef.cpp.

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

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()

QCString 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}
QCString m_outputDiskName
Definition filedef.cpp:246

References m_outputDiskName.

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

◆ getPath()

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

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

References m_srcDefMap.

◆ getSourceFileBase()

QCString 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 QCString path2URL(const QCString &path)
Definition htags.cpp:157
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 1507 of file filedef.cpp.

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

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

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

References m_usingDirList.

◆ getVersion()

QCString 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().isEmpty() && repeatBrief) ||
369 !documentation().stripWhiteSpace().isEmpty() || // avail empty section
370 (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef()) ||
372 );
373}
bool hasRequirementRefs() const override
const FileDef * getBodyDef() const override
int getStartBodyLine() const override
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()

QCString FileDefImpl::includedByDependencyGraphFileName ( ) const
overridevirtual

Implements FileDef.

Definition at line 1906 of file filedef.cpp.

1907{
1908 return m_inclByDepFileName;
1909}
QCString 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()

QCString FileDefImpl::includeDependencyGraphFileName ( ) const
overridevirtual

Implements FileDef.

Definition at line 1901 of file filedef.cpp.

1902{
1903 return m_inclDepFileName;
1904}
QCString 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()

QCString 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}
QCString 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 1442 of file filedef.cpp.

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

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

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

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

1320{
1321 if (md->isHidden()) return;
1322 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1323 //printf("%s:FileDefImpl::insertMember(%s (=%p) list has %zu elements)\n",
1324 // qPrint(name()),qPrint(md->name()),(void*)md,allMemberList ? allMemberList->size() : 0);
1325 if (allMemberList && allMemberList->contains(md))
1326 {
1327 //printf("already added\n");
1328 return;
1329 }
1330
1331 if (allMemberList==nullptr)
1332 {
1333 m_memberLists.emplace_back(std::make_unique<MemberList>(MemberListType::AllMembersList(),MemberListContainer::File));
1334 allMemberList = m_memberLists.back().get();
1335 }
1336 allMemberList->push_back(md);
1337 switch (md->memberType())
1338 {
1340 if (md->getLanguage() == SrcLangExt::Python)
1341 {
1342 addMemberToList(MemberListType::PropertyMembers(),md);
1343 addMemberToList(MemberListType::Properties(),md);
1344 break;
1345 }
1346 // fallthrough, explicitly no break here
1348 addMemberToList(MemberListType::DecVarMembers(),md);
1349 addMemberToList(MemberListType::DocVarMembers(),md);
1350 break;
1352 addMemberToList(MemberListType::DecFuncMembers(),md);
1353 addMemberToList(MemberListType::DocFuncMembers(),md);
1354 break;
1356 addMemberToList(MemberListType::DecTypedefMembers(),md);
1357 addMemberToList(MemberListType::DocTypedefMembers(),md);
1358 break;
1360 addMemberToList(MemberListType::DecSequenceMembers(),md);
1361 addMemberToList(MemberListType::DocSequenceMembers(),md);
1362 break;
1364 addMemberToList(MemberListType::DecDictionaryMembers(),md);
1365 addMemberToList(MemberListType::DocDictionaryMembers(),md);
1366 break;
1368 addMemberToList(MemberListType::DecEnumMembers(),md);
1369 addMemberToList(MemberListType::DocEnumMembers(),md);
1370 break;
1371 case MemberType::EnumValue: // enum values are shown inside their enums
1372 break;
1373 case MemberType::Define:
1374 addMemberToList(MemberListType::DecDefineMembers(),md);
1375 addMemberToList(MemberListType::DocDefineMembers(),md);
1376 break;
1377 default:
1378 err("FileDefImpl::insertMembers(): "
1379 "member '{}' with class scope '{}' inserted in file scope '{}'!\n",
1380 md->name(),
1381 md->getClassDef() ? md->getClassDef()->name() : "<global>",
1382 name());
1383 }
1384 //addMemberToGroup(md,groupId);
1385}
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
@ Enumeration
Definition types.h:557
@ EnumValue
Definition types.h:558
@ Dictionary
Definition types.h:568
@ Sequence
Definition types.h:567
@ Variable
Definition types.h:555
@ Property
Definition types.h:563
@ Typedef
Definition types.h:556
@ Function
Definition types.h:554

References addMemberToList(), MemberVector::contains(), Define, Dictionary, Enumeration, EnumValue, err, File, Function, MemberDef::getClassDef(), Definition::getLanguage(), getMemberList(), Definition::isHidden(), m_memberLists, MemberDef::memberType(), Definition::name(), name(), Property, MemberVector::push_back(), Sequence, Typedef, and Variable.

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

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

References Definition::isHidden(), m_namespaces, and Definition::name().

◆ isDocumentationFile()

bool FileDefImpl::isDocumentationFile ( ) const
overridevirtual

Implements FileDef.

Definition at line 1688 of file filedef.cpp.

1689{
1690 static const std::unordered_set<std::string> docExtensions =
1691 { "doc", "txt", "dox", "md", "markdown" };
1692
1693 int lastDot = name().findRev('.');
1694 return (lastDot!=-1 && docExtensions.find(name().mid(lastDot+1).str())!=docExtensions.end()) ||
1695 getLanguageFromFileName(getFileNameExtension(name())) == SrcLangExt::Markdown;
1696}
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition qcstring.cpp:96
QCString getFileNameExtension(const QCString &fn)
Definition util.cpp:5251

References QCString::findRev(), getFileNameExtension(), getLanguageFromFileName(), and name().

Referenced by generateSourceFile(), and writeSourceHeader().

◆ isIncluded()

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

Implements FileDef.

Definition at line 1602 of file filedef.cpp.

1603{
1604 if (name.isEmpty()) return FALSE;
1605 return m_includeMap.find(name.str())!=m_includeMap.end();
1606}

References FALSE, m_includeMap, and name().

◆ 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}
bool isLinkableViaGroup() const override
bool hasDocumentation() const override

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()

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

1269{
1270 bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1271 OutputCodeList devNullList;
1272 devNullList.add<DevNullCodeGenerator>();
1273#if USE_LIBCLANG
1274 if (Doxygen::clangAssistedParsing && clangParser &&
1275 (getLanguage()==SrcLangExt::Cpp || getLanguage()==SrcLangExt::ObjC))
1276 {
1277 clangParser->switchToFile(this);
1278 clangParser->writeSources(devNullList,this);
1279 }
1280 else
1281#endif
1282 {
1284 intf->resetCodeParserState();
1285 size_t indent = 0;
1286 intf->parseCode(
1287 devNullList,QCString(),
1288 detab(fileToString(absFilePath(),filterSourceFiles,TRUE),indent),
1289 getLanguage(),
1290 Config_getBool(STRIP_CODE_COMMENTS),
1291 CodeParserOptions()
1292 .setFileDef(this)
1293 );
1294 }
1295}
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
QCString getDefFileExtension() const override
SrcLangExt getLanguage() const override
static bool clangAssistedParsing
Definition doxygen.h:135
static ParserManager * parserManager
Definition doxygen.h:128
QCString absFilePath() const override
Definition filedef.cpp:140
void add(OutputCodeIntfPtr &&p)
Definition outputlist.h:195
std::unique_ptr< CodeParserInterface > getCodeParser(const QCString &extension)
Gets the interface to the parser associated with a given extension.
Definition parserintf.h:254
QCString fileToString(const QCString &name, bool filter, bool isSourceCode)
Definition util.cpp:1489
QCString detab(const QCString &s, size_t &refIndent)
Definition util.cpp:6738

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

◆ removeMember()

void FileDefImpl::removeMember ( MemberDef * md)
overridevirtual

Implements FileDef.

Definition at line 1393 of file filedef.cpp.

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

References Define, Dictionary, Enumeration, EnumValue, err, Function, Definition::getLanguage(), MemberDef::memberType(), Property, removeMemberFromList(), Sequence, Typedef, and Variable.

◆ removeMemberFromList()

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

Definition at line 1387 of file filedef.cpp.

1388{
1389 MemberList *ml = getMemberList(lt);
1390 if (ml) ml->remove(md);
1391}
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 QCString & name)
overridevirtual

Implements FileDef.

Definition at line 324 of file filedef.cpp.

325{
327}

References name(), and setDiskNameLocal().

◆ setDiskNameLocal()

void FileDefImpl::setDiskNameLocal ( const QCString & 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}
QCString convertNameToFile(const QCString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:3503

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 qstricmp_sort(c1->name(), c2->name())<0 :
1796 qstricmp_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 qstricmp_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 qstricmp_sort(n1->name(),n2->name())<0;
1814 };
1815
1816 std::stable_sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1817 }
1818}
virtual QCString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
bool needsSorting() const
Definition memberlist.h:140
void setNeedsSorting(bool b)
void sort()
Definition memberlist.h:76
int qstricmp_sort(const char *str1, const char *str2)
Definition qcstring.h:86

References ClassDef::className(), Config_getBool, FALSE, m_classes, m_concepts, m_exceptions, m_includedByList, m_interfaces, m_memberGroups, m_memberLists, m_namespaces, m_structs, Definition::name(), MemberList::needsSorting(), qstricmp_sort(), MemberList::setNeedsSorting(), and MemberVector::sort().

◆ startMemberDeclarations()

void FileDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 748 of file filedef.cpp.

749{
751}
void startMemberSections()
Definition outputlist.h:461

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void FileDefImpl::startMemberDocumentation ( OutputList & ol)
private

Definition at line 758 of file filedef.cpp.

759{
760 if (Config_getBool(SEPARATE_MEMBER_PAGES))
761 {
764 }
765}
void disable(OutputType o)

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

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()

QCString 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 QCString trFileReference(const QCString &fileName)=0

References Config_getBool, name(), and theTranslator.

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

◆ writeAuthorSection()

void FileDefImpl::writeAuthorSection ( OutputList & ol)
private

Definition at line 788 of file filedef.cpp.

789{
790 // write Author section (Man only)
793 ol.startGroupHeader();
795 ol.endGroupHeader();
798}
void startGroupHeader(const QCString &id=QCString(), int extraLevels=0)
Definition outputlist.h:453
void pushGeneratorState()
void disableAllBut(OutputType o)
void popGeneratorState()
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:455
void parseText(const QCString &textStr)
virtual QCString trGeneratedAutomatically(const QCString &s)=0
virtual QCString trAuthor(bool first_capital, bool singular)=0

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

Referenced by writeDocumentation().

◆ writeBriefDescription()

void FileDefImpl::writeBriefDescription ( OutputList & ol)
private

Definition at line 545 of file filedef.cpp.

546{
548 {
549 auto parser { createDocParser() };
550 auto ast { validatingParseDoc(*parser.get(),
551 briefFile(),
552 briefLine(),
553 this,
554 nullptr,
556 DocOptions()
557 .setIndexWords(true)
558 .setSingleLine(true))
559 };
560 if (!ast->isEmpty())
561 {
562 ol.startParagraph();
565 ol.writeString(" - ");
567 ol.writeDoc(ast.get(),this,nullptr);
570 ol.writeString(" \n");
572
573 if (Config_getBool(REPEAT_BRIEF) ||
574 !documentation().stripWhiteSpace().isEmpty()
575 )
576 {
578 ol.startTextLink(QCString(),"details");
580 ol.endTextLink();
581 }
583 ol.endParagraph();
584 }
585 }
586 ol.writeSynopsis();
587}
virtual QCString briefFile() const =0
bool hasBriefDescription() const override
int briefLine() const override
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
Definition outputlist.h:383
void writeString(const QCString &text)
Definition outputlist.h:411
void startParagraph(const QCString &classDef=QCString())
Definition outputlist.h:407
void endParagraph()
Definition outputlist.h:409
void endTextLink()
Definition outputlist.h:444
void writeSynopsis()
Definition outputlist.h:592
void startTextLink(const QCString &file, const QCString &anchor)
Definition outputlist.h:442
virtual QCString trMore()=0
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &input, const DocOptions &options)
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:55

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

Referenced by writeDocumentation().

◆ writeClassDeclarations()

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

Definition at line 723 of file filedef.cpp.

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

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

Referenced by writeDocumentation().

◆ writeClassesToTagFile()

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

Definition at line 589 of file filedef.cpp.

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

References convertToXML().

Referenced by writeTagFile().

◆ writeConcepts()

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

Definition at line 729 of file filedef.cpp.

730{
731 // write list of classes
732 m_concepts.writeDeclaration(ol,title,FALSE);
733}

References FALSE, m_concepts, and title().

Referenced by writeDocumentation().

◆ writeDetailedDescription()

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

Definition at line 473 of file filedef.cpp.

474{
476 {
479 ol.writeRuler();
483 ol.writeAnchor(QCString(),"details");
485 ol.startGroupHeader("details");
486 ol.parseText(title);
487 ol.endGroupHeader();
488
489 ol.startTextBlock();
490 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
491 {
493 briefLine(),
494 this,
495 nullptr,
497 DocOptions());
498 }
499 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
500 !documentation().isEmpty())
501 {
505 ol.enableAll();
508 ol.writeString("\n\n");
510 }
511 if (!documentation().isEmpty())
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 QCString refText = theTranslator->trDefinedInSourceFile();
526 int fileMarkerPos = refText.find("@0");
527 if (fileMarkerPos!=-1) // should always pass this.
528 {
529 ol.parseText(refText.left(fileMarkerPos)); //text left from marker 1
530 ol.writeObjectLink(QCString(),getSourceFileBase(),QCString(),name());
531 ol.parseText(refText.right(
532 refText.length()-fileMarkerPos-2)); // text right from marker 2
533 }
534 else
535 {
536 err("translation error: invalid marker in trDefinedInSourceFile()\n");
537 }
538 ol.endParagraph();
539 }
541 ol.endTextBlock();
542 }
543}
QCString briefFile() const override
void writeRequirementRefs(OutputList &ol) const override
int docLine() const override
bool hasDetailedDescription() const override
Definition filedef.cpp:364
void endTextBlock(bool paraBreak=FALSE)
Definition outputlist.h:672
void writeRuler()
Definition outputlist.h:521
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition outputlist.h:439
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, const DocOptions &options)
void startTextBlock(bool dense=FALSE)
Definition outputlist.h:670
void writeAnchor(const QCString &fileName, const QCString &name)
Definition outputlist.h:523
void enableAll()
int find(char c, int index=0, bool cs=TRUE) const
Definition qcstring.cpp:43
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition qcstring.h:166
QCString right(size_t len) const
Definition qcstring.h:234
QCString left(size_t len) const
Definition qcstring.h:229
virtual QCString 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(), OutputList::enable(), OutputList::enableAll(), OutputList::endGroupHeader(), OutputList::endParagraph(), OutputList::endTextBlock(), err, QCString::find(), OutputList::generateDoc(), getSourceFileBase(), hasDetailedDescription(), DefinitionMixin< FileDef >::hasRequirementRefs(), Html, Latex, QCString::left(), QCString::length(), Man, name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), QCString::right(), RTF, OutputList::startGroupHeader(), OutputList::startParagraph(), OutputList::startTextBlock(), theTranslator, title(), 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 874 of file filedef.cpp.

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

References addGroupListToTitle(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), displayName(), OutputList::docify(), 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(), 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 675 of file filedef.cpp.

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

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, TRUE, and warn_uncond.

Referenced by writeDocumentation().

◆ writeIncludeFiles()

void FileDefImpl::writeIncludeFiles ( OutputList & ol)
private

Definition at line 601 of file filedef.cpp.

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

Referenced by writeDocumentation().

◆ writeIncludeGraph()

void FileDefImpl::writeIncludeGraph ( OutputList & ol)
private

Definition at line 650 of file filedef.cpp.

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

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

Referenced by writeDocumentation().

◆ writeInlineClasses()

void FileDefImpl::writeInlineClasses ( OutputList & ol)
private

Definition at line 735 of file filedef.cpp.

736{
737 // temporarily undo the disabling could be done by startMemberDocumentation()
738 // as a result of setting SEPARATE_MEMBER_PAGES to YES; see bug730512
739 bool isEnabled = ol.isEnabled(OutputType::Html);
741
742 m_classes.writeDocumentation(ol,this);
743
744 // restore the initial state if needed
745 if (!isEnabled) ol.disable(OutputType::Html);
746}
bool isEnabled(OutputType o)

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

Referenced by writeDocumentation().

◆ writeMemberDeclarations()

void FileDefImpl::writeMemberDeclarations ( OutputList & ol,
MemberListType lt,
const QCString & 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,QCString());
1846 }
1847 }
1848}
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, const QCString &title, const QCString &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, getMemberList(), title(), MemberList::writeDeclarations(), and VhdlDocGen::writeVhdlDeclarations().

Referenced by writeDocumentation().

◆ writeMemberDocumentation()

void FileDefImpl::writeMemberDocumentation ( OutputList & ol,
MemberListType lt,
const QCString & 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}
MemberListType listType() const
Definition memberlist.h:130
void writeDocumentation(OutputList &ol, const QCString &scopeName, const Definition *container, const QCString &title, const QCString &anchor, bool showEnumValues=FALSE, bool showInline=FALSE) const
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 776 of file filedef.cpp.

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

References m_memberGroups, and m_subGrouping.

Referenced by writeDocumentation().

◆ writeMemberPages()

void FileDefImpl::writeMemberPages ( OutputList & ol)
overridevirtual

Implements FileDef.

Definition at line 1097 of file filedef.cpp.

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

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

Referenced by writeDocumentation().

◆ writeNamespaceDeclarations()

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

Definition at line 716 of file filedef.cpp.

718{
719 // write list of namespaces
720 m_namespaces.writeDeclaration(ol,title,isConstantGroup);
721}

References m_namespaces, and title().

Referenced by writeDocumentation().

◆ writePageNavigation()

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

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 866 of file filedef.cpp.

867{
868 ol.writePageOutline();
869}
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 1113 of file filedef.cpp.

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

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

◆ writeSourceBody()

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

Implements FileDef.

Definition at line 1210 of file filedef.cpp.

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

References absFilePath(), OutputCodeList::add(), Doxygen::clangAssistedParsing, OutputList::codeGenerators(), Config_getBool, detab(), fileToString(), DefinitionMixin< FileDef >::getDefFileExtension(), getFileFilter(), DefinitionMixin< FileDef >::getLanguage(), QCString::isEmpty(), Doxygen::parserManager, Doxygen::parseSourcesNeeded, OutputCodeList::startCodeFragment(), and TRUE.

◆ writeSourceFooter()

void FileDefImpl::writeSourceFooter ( OutputList & ol)
overridevirtual

Implements FileDef.

Definition at line 1261 of file filedef.cpp.

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

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

1158{
1159 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1160 QCString title = m_docname;
1161 if (!m_fileVersion.isEmpty())
1162 {
1163 title+=" ("+m_fileVersion+")";
1164 }
1165 QCString pageTitle = theTranslator->trSourceFile(title);
1167
1168 bool isDocFile = isDocumentationFile();
1169 bool genSourceFile = !isDocFile && generateSourceFile();
1170 if (getDirDef())
1171 {
1172 startFile(ol,getSourceFileBase(),true,QCString(),pageTitle,HighlightedItem::FileVisible,
1173 !generateTreeView,
1174 !isDocFile && genSourceFile ? QCString() : getOutputFileBase(),
1175 0);
1176 if (!generateTreeView)
1177 {
1179 ol.endQuickIndices();
1180 }
1182 ol.parseText(name());
1184 }
1185 else
1186 {
1187 startFile(ol,getSourceFileBase(),true,QCString(),pageTitle,HighlightedItem::FileVisible,false,
1188 !isDocFile && genSourceFile ? QCString() : getOutputFileBase(),
1189 0);
1191 ol.parseText(title);
1192 endTitle(ol,getSourceFileBase(),QCString());
1193 }
1194
1195 ol.startContents();
1196
1197 if (isLinkable())
1198 {
1199 ol.startTextLink(getOutputFileBase(),QCString());
1201 ol.endTextLink();
1202
1203 ol.pushGeneratorState();
1205 ol.writeString("\\par\n");
1206 ol.popGeneratorState();
1207 }
1208}
bool generateSourceFile() const override
Definition filedef.cpp:1608
bool isLinkable() const override
Definition filedef.cpp:149
virtual QCString trSourceFile(const QCString &filename)=0
virtual QCString trGotoDocumentation()=0

References Config_getBool, OutputList::disable(), OutputList::disableAllBut(), 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(), DefinitionMutable::writeNavigationPath(), and OutputList::writeString().

◆ writeSourceLink()

void FileDefImpl::writeSourceLink ( OutputList & ol)
private

Definition at line 701 of file filedef.cpp.

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

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

Referenced by writeDocumentation().

◆ writeSummaryLinks()

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

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 800 of file filedef.cpp.

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

References MemberList::declVisible(), OutputList::disableAllBut(), FALSE, 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(), TRUE, 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 QCString 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 QCString 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}
void writeDocAnchorsToTagFile(TextStream &fs) const override
QCString getPath() const override
Definition filedef.cpp:146
void writeClassesToTagFile(TextStream &t, const ClassLinkedRefMap &list)
Definition filedef.cpp:589
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
QCString 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

QCString 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

QCString FileDefImpl::m_fileName
private

Definition at line 247 of file filedef.cpp.

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

◆ m_filePath

QCString FileDefImpl::m_filePath
private

Definition at line 243 of file filedef.cpp.

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

◆ m_fileVersion

QCString 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

QCString FileDefImpl::m_inclByDepFileName
private

Definition at line 245 of file filedef.cpp.

Referenced by includedByDependencyGraphFileName(), and setDiskNameLocal().

◆ m_inclDepFileName

QCString 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

QCString FileDefImpl::m_outputDiskName
private

Definition at line 246 of file filedef.cpp.

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

◆ m_path

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