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

283 : DefinitionMixin(p+nm,1,1,nm,nullptr,nullptr,!p.isEmpty())
284{
286 m_filePath=p+nm;
287 m_fileName=nm;
288
289 setReference(lref);
290 setDiskNameLocal(!dn.isEmpty() ? dn : nm);
291 m_isSource = guessSection(nm).isSource();
292 m_docname = nm;
293 m_dir = nullptr;
294 if (Config_getBool(FULL_PATH_NAMES))
295 {
297 }
299 Config_getBool(FULL_PATH_NAMES) ? m_fileName : DefinitionMixin::name()));
301 m_subGrouping=Config_getBool(SUBGROUPING);
302}
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:254
QCString m_path
Definition filedef.cpp:243
void setDiskNameLocal(const QCString &name)
Definition filedef.cpp:309
void acquireFileVersion()
Definition filedef.cpp:1699
QCString m_fileName
Definition filedef.cpp:248
bool m_isSource
Definition filedef.cpp:252
bool m_subGrouping
Definition filedef.cpp:264
QCString m_docname
Definition filedef.cpp:249
QCString m_filePath
Definition filedef.cpp:244
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:5191
static QCString stripFromPath(const QCString &p, const StringVector &l)
Definition util.cpp:299
EntryType guessSection(const QCString &name)
Definition util.cpp:339
QCString removeLongPathMarker(QCString path)
Definition util.cpp:288

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

306{
307}

Member Function Documentation

◆ absFilePath()

QCString FileDefImpl::absFilePath ( ) const
inlineoverridevirtual

Returns the absolute path including the file name.

Implements FileDef.

Definition at line 141 of file filedef.cpp.

141{ return m_filePath; }

References m_filePath.

Referenced by parseSource(), and writeSourceBody().

◆ acquireFileVersion()

void FileDefImpl::acquireFileVersion ( )
private

Definition at line 1699 of file filedef.cpp.

1700{
1701 QCString vercmd = Config_getString(FILE_VERSION_FILTER);
1702 if (!vercmd.isEmpty() && !m_filePath.isEmpty() && !isReference() &&
1703 m_filePath!="generated" && m_filePath!="graph_legend.dox")
1704 {
1705 msg("Version of {} : ",m_filePath);
1706 QCString cmd = vercmd+" \""+m_filePath+"\"";
1707 Debug::print(Debug::ExtCmd,0,"Executing popen(`{}`)\n",cmd);
1708 FILE *f=Portable::popen(cmd,"r");
1709 if (!f)
1710 {
1711 err("could not execute {}\n",vercmd);
1712 return;
1713 }
1714 const int bufSize=1024;
1715 char buf[bufSize];
1716 int numRead = static_cast<int>(fread(buf,1,bufSize-1,f));
1718 if (numRead>0 && numRead<bufSize)
1719 {
1720 buf[numRead]='\0';
1721 m_fileVersion=QCString(buf,numRead).stripWhiteSpace();
1722 if (!m_fileVersion.isEmpty())
1723 {
1724 msg("{}\n",m_fileVersion);
1725 return;
1726 }
1727 }
1728 msg("no version available\n");
1729 }
1730}
@ 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:253
#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:480
int pclose(FILE *stream)
Definition portable.cpp:489

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

1593{
1594 //printf("FileDefImpl::addIncludedByDependency(%p,%s,%d)\n",fd,incName,local);
1595 QCString iName = fd ? fd->absFilePath() : incName;
1596 if (!iName.isEmpty() && m_includedByMap.find(iName.str())==m_includedByMap.end())
1597 {
1598 m_includedByList.emplace_back(fd,incName,kind);
1599 m_includedByMap.emplace(iName.str(),&m_includedByList.back());
1600 }
1601}
virtual QCString absFilePath() const =0
IncludeInfoList m_includedByList
Definition filedef.cpp:240
IncludeInfoMap m_includedByMap
Definition filedef.cpp:239
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 1533 of file filedef.cpp.

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

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

◆ addIncludedUsingDirectives()

void FileDefImpl::addIncludedUsingDirectives ( FileDefSet & visitedFiles)
overridevirtual

Implements FileDef.

Definition at line 1544 of file filedef.cpp.

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

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

Referenced by addIncludedUsingDirectives().

◆ addListReferences()

void FileDefImpl::addListReferences ( )
overridevirtual

Implements FileDef.

Definition at line 1621 of file filedef.cpp.

1622{
1627 QCString(),
1628 nullptr
1629 );
1630 for (const auto &mg : m_memberGroups)
1631 {
1632 mg->addListReferences(this);
1633 }
1634 for (auto &ml : m_memberLists)
1635 {
1636 if (ml->listType().isDocumentation())
1637 {
1638 ml->addListReferences(this);
1639 }
1640 }
1641}
const RefItemVector & xrefListItems() const override
QCString getOutputFileBase() const override
Definition filedef.cpp:1745
MemberGroupList m_memberGroups
Definition filedef.cpp:257
const QCString & name() const override
Definition filedef.cpp:1481
MemberLists m_memberLists
Definition filedef.cpp:256
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:4805

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

◆ addMembersToMemberGroup()

void FileDefImpl::addMembersToMemberGroup ( )
overridevirtual

Implements FileDef.

Definition at line 1298 of file filedef.cpp.

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

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

Referenced by addMembersToMemberGroup().

◆ addMemberToList()

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

Definition at line 1756 of file filedef.cpp.

1757{
1758 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1759 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1760 const auto &ml = m_memberLists.get(lt,MemberListContainer::File);
1761 ml->setNeedsSorting(
1762 (ml->listType().isDeclaration() && sortBriefDocs) ||
1763 (ml->listType().isDocumentation() && sortMemberDocs));
1764 ml->push_back(md);
1765 if (ml->listType().isDeclaration())
1766 {
1767 MemberDefMutable *mdm = toMemberDefMutable(md);
1768 if (mdm)
1769 {
1770 mdm->setSectionList(this,ml.get());
1771 }
1772 }
1773}
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 1643 of file filedef.cpp.

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

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

References m_srcDefMap, and m_srcMemberMap.

◆ addUsingDeclaration()

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

Implements FileDef.

Definition at line 1528 of file filedef.cpp.

1529{
1530 m_usingDeclList.add(d->qualifiedName(),d);
1531}
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 1516 of file filedef.cpp.

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

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

136{ return QCString(); }

◆ codeSymbolType()

CodeSymbolType FileDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 130 of file filedef.cpp.

130{ return CodeSymbolType::Default; }

References Default.

◆ combineUsingRelations()

void FileDefImpl::combineUsingRelations ( )
overridevirtual

Implements FileDef.

Definition at line 1661 of file filedef.cpp.

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

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

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

◆ countMembers()

void FileDefImpl::countMembers ( )
overridevirtual

Implements FileDef.

Definition at line 1912 of file filedef.cpp.

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

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

129{ 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 133 of file filedef.cpp.

133{ 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 337 of file filedef.cpp.

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

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

142{ return m_docname; }

References m_docname.

◆ endMemberDeclarations()

void FileDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 754 of file filedef.cpp.

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

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void FileDefImpl::endMemberDocumentation ( OutputList & ol)
private

Definition at line 768 of file filedef.cpp.

769{
770 if (Config_getBool(SEPARATE_MEMBER_PAGES))
771 {
774 }
775}
static bool suppressDocWarnings
Definition doxygen.h:131
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 134 of file filedef.cpp.

134{ return m_fileName; }

References m_fileName.

◆ fileVersion()

QCString FileDefImpl::fileVersion ( ) const
overridevirtual

Implements FileDef.

Definition at line 1897 of file filedef.cpp.

1898{
1899 return m_fileVersion;
1900}

References m_fileVersion.

◆ findSectionsInDocumentation()

void FileDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements FileDef.

Definition at line 346 of file filedef.cpp.

347{
351 for (const auto &mg : m_memberGroups)
352 {
353 mg->findSectionsInDocumentation(this);
354 }
355
356 for (auto &ml : m_memberLists)
357 {
358 if (ml->listType().isDeclaration())
359 {
360 ml->findSectionsInDocumentation(this);
361 }
362 }
363}
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 1609 of file filedef.cpp.

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

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

1880{
1881 StringUnorderedSet includes;
1882 ::getAllIncludeFilesRecursively(includes,this,incFiles);
1883}
void getAllIncludeFilesRecursively(StringVector &incFiles) const override
Definition filedef.cpp:1879
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 164 of file filedef.cpp.

164{ return m_classes; }
ClassLinkedRefMap m_classes
Definition filedef.cpp:259

References m_classes.

◆ getConcepts()

const ConceptLinkedRefMap & FileDefImpl::getConcepts ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 163 of file filedef.cpp.

163{ return m_concepts; }
ConceptLinkedRefMap m_concepts
Definition filedef.cpp:263

References m_concepts.

◆ getDirDef()

DirDef * FileDefImpl::getDirDef ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 152 of file filedef.cpp.

152{ return m_dir; }

References m_dir.

Referenced by writeDocumentation(), and writeSourceHeader().

◆ getMemberGroups()

const MemberGroupList & FileDefImpl::getMemberGroups ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 161 of file filedef.cpp.

161{ return m_memberGroups; }

References m_memberGroups.

◆ getMemberList()

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

Implements FileDef.

Definition at line 1821 of file filedef.cpp.

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

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

160{ return m_memberLists; }

References m_memberLists.

◆ getModuleDef()

ModuleDef * FileDefImpl::getModuleDef ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 153 of file filedef.cpp.

153{ return m_moduleDef; }
ModuleDef * m_moduleDef
Definition filedef.cpp:255

References m_moduleDef.

◆ getNamespaces()

const NamespaceLinkedRefMap & FileDefImpl::getNamespaces ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 162 of file filedef.cpp.

162{ return m_namespaces; }
NamespaceLinkedRefMap m_namespaces
Definition filedef.cpp:258

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

1746{
1747 return m_outputDiskName;
1748}
QCString m_outputDiskName
Definition filedef.cpp:247

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

147{ return m_path; }

References m_path.

Referenced by writeTagFile().

◆ getSourceDefinition()

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

Implements FileDef.

Definition at line 1501 of file filedef.cpp.

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

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

1734{
1735 if (Htags::useHtags)
1736 {
1738 }
1739 else
1740 {
1741 return m_outputDiskName+"_source";
1742 }
1743}
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 1508 of file filedef.cpp.

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

References m_srcMemberMap.

◆ getUsedDefinitions()

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

Implements FileDef.

Definition at line 155 of file filedef.cpp.

155{ return m_usingDeclList; }

References m_usingDeclList.

◆ getUsedNamespaces()

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

Implements FileDef.

Definition at line 1522 of file filedef.cpp.

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

References m_usingDirList.

◆ getVersion()

QCString FileDefImpl::getVersion ( ) const
inlineoverridevirtual

Returns version of this file.

Implements FileDef.

Definition at line 148 of file filedef.cpp.

148{ return m_fileVersion; }

References m_fileVersion.

◆ hasDetailedDescription()

bool FileDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements FileDef.

Definition at line 365 of file filedef.cpp.

366{
367 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
368 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
369 return ((!briefDescription().isEmpty() && repeatBrief) ||
370 !documentation().stripWhiteSpace().isEmpty() || // avail empty section
371 (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef()) ||
373 );
374}
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 1953 of file filedef.cpp.

1954{
1955 return m_hasIncludedByGraph;
1956}
bool m_hasIncludedByGraph
Definition filedef.cpp:266

References m_hasIncludedByGraph.

◆ hasIncludeGraph()

bool FileDefImpl::hasIncludeGraph ( ) const
overridevirtual

Implements FileDef.

Definition at line 1948 of file filedef.cpp.

1949{
1950 return m_hasIncludeGraph;
1951}
bool m_hasIncludeGraph
Definition filedef.cpp:265

References m_hasIncludeGraph.

◆ includedByDependencyGraphFileName()

QCString FileDefImpl::includedByDependencyGraphFileName ( ) const
overridevirtual

Implements FileDef.

Definition at line 1907 of file filedef.cpp.

1908{
1909 return m_inclByDepFileName;
1910}
QCString m_inclByDepFileName
Definition filedef.cpp:246

References m_inclByDepFileName.

◆ includedByFileList()

const IncludeInfoList & FileDefImpl::includedByFileList ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 157 of file filedef.cpp.

157{ return m_includedByList; }

References m_includedByList.

◆ includeDependencyGraphFileName()

QCString FileDefImpl::includeDependencyGraphFileName ( ) const
overridevirtual

Implements FileDef.

Definition at line 1902 of file filedef.cpp.

1903{
1904 return m_inclDepFileName;
1905}
QCString m_inclDepFileName
Definition filedef.cpp:245

References m_inclDepFileName.

◆ includeFileList()

const IncludeInfoList & FileDefImpl::includeFileList ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 156 of file filedef.cpp.

156{ 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 1751 of file filedef.cpp.

1752{
1753 return getSourceFileBase();
1754}
QCString getSourceFileBase() const override
Definition filedef.cpp:1733

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

1444{
1445 if (cd->isHidden()) return;
1446
1447 ClassLinkedRefMap *list = &m_classes;
1448
1449 if (Config_getBool(OPTIMIZE_OUTPUT_SLICE))
1450 {
1452 {
1453 list = &m_interfaces;
1454 }
1455 else if (cd->compoundType()==ClassDef::Struct)
1456 {
1457 list = &m_structs;
1458 }
1459 else if (cd->compoundType()==ClassDef::Exception)
1460 {
1461 list = &m_exceptions;
1462 }
1463 }
1464
1465 list->add(cd->name(),cd);
1466}
@ 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:260
ClassLinkedRefMap m_structs
Definition filedef.cpp:261
ClassLinkedRefMap m_exceptions
Definition filedef.cpp:262
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 1468 of file filedef.cpp.

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

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

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

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

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

◆ isDocumentationFile()

bool FileDefImpl::isDocumentationFile ( ) const
overridevirtual

Implements FileDef.

Definition at line 1689 of file filedef.cpp.

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

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

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

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

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

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

1858{
1859 bool showFiles = Config_getBool(SHOW_FILES);
1860 return hasDocumentation() && !isReference() && (showFiles || isLinkableViaGroup());
1861}
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 143 of file filedef.cpp.

143{ return m_isSource; }

References m_isSource.

◆ name()

◆ numDecMembers()

int FileDefImpl::numDecMembers ( ) const
overridevirtual

Implements FileDef.

Definition at line 1932 of file filedef.cpp.

1933{
1934 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1935 return ml ? ml->numDecMembers() : 0;
1936}
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 1926 of file filedef.cpp.

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

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

◆ overrideIncludedByGraph()

void FileDefImpl::overrideIncludedByGraph ( bool e)
overridevirtual

Implements FileDef.

Definition at line 1943 of file filedef.cpp.

1944{
1946}

References m_hasIncludedByGraph.

◆ overrideIncludeGraph()

void FileDefImpl::overrideIncludeGraph ( bool e)
overridevirtual

Implements FileDef.

Definition at line 1938 of file filedef.cpp.

1939{
1941}

References m_hasIncludeGraph.

◆ parseSource()

void FileDefImpl::parseSource ( ClangTUParser * clangParser)
overridevirtual

Implements FileDef.

Definition at line 1269 of file filedef.cpp.

1270{
1271 bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1272 OutputCodeList devNullList;
1273 devNullList.add<DevNullCodeGenerator>();
1274#if USE_LIBCLANG
1275 if (Doxygen::clangAssistedParsing && clangParser &&
1276 (getLanguage()==SrcLangExt::Cpp || getLanguage()==SrcLangExt::ObjC))
1277 {
1278 clangParser->switchToFile(this);
1279 clangParser->writeSources(devNullList,this);
1280 }
1281 else
1282#endif
1283 {
1285 intf->resetCodeParserState();
1286 size_t indent = 0;
1287 intf->parseCode(
1288 devNullList,QCString(),
1289 detab(fileToString(absFilePath(),filterSourceFiles,TRUE),indent),
1290 getLanguage(),
1291 Config_getBool(STRIP_CODE_COMMENTS),
1292 CodeParserOptions()
1293 .setFileDef(this)
1294 );
1295 }
1296}
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:137
static ParserManager * parserManager
Definition doxygen.h:130
QCString absFilePath() const override
Definition filedef.cpp:141
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:1471
QCString detab(const QCString &s, size_t &refIndent)
Definition util.cpp:6720

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

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

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

1389{
1390 MemberList *ml = getMemberList(lt);
1391 if (ml) ml->remove(md);
1392}
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 190 of file filedef.cpp.

190{ m_dir=dd; }

References m_dir.

◆ setDiskName()

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

Implements FileDef.

Definition at line 325 of file filedef.cpp.

326{
328}

References name(), and setDiskNameLocal().

◆ setDiskNameLocal()

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

Definition at line 309 of file filedef.cpp.

310{
311 if (isReference())
312 {
314 m_inclDepFileName = name+"_incl";
315 m_inclByDepFileName = name+"_dep_incl";
316 }
317 else
318 {
322 }
323}
QCString convertNameToFile(const QCString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:3485

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

191{ m_moduleDef=mod; }

References m_moduleDef.

◆ sortMemberLists()

void FileDefImpl::sortMemberLists ( )
overridevirtual

Implements FileDef.

Definition at line 1775 of file filedef.cpp.

1776{
1777 for (auto &ml : m_memberLists)
1778 {
1779 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(FALSE); }
1780 }
1781
1782 for (const auto &mg : m_memberGroups)
1783 {
1784 MemberList &mlg = const_cast<MemberList&>(mg->members());
1785 if (mlg.needsSorting()) { mlg.sort(); mlg.setNeedsSorting(FALSE); }
1786 }
1787
1788 std::stable_sort(m_includedByList.begin(),m_includedByList.end(),
1789 [](const auto &fi1,const auto &fi2) { return fi1.includeName < fi2.includeName; });
1790
1791 if (Config_getBool(SORT_BRIEF_DOCS))
1792 {
1793 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
1794 {
1795 return Config_getBool(SORT_BY_SCOPE_NAME) ?
1796 qstricmp_sort(c1->name(), c2->name())<0 :
1797 qstricmp_sort(c1->className(), c2->className())<0;
1798 };
1799
1800 std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
1801 std::stable_sort(m_interfaces.begin(),m_interfaces.end(),classComp);
1802 std::stable_sort(m_structs.begin(), m_structs.end(), classComp);
1803 std::stable_sort(m_exceptions.begin(),m_exceptions.end(),classComp);
1804
1805 auto conceptComp = [](const ConceptLinkedRefMap::Ptr &c1,const ConceptLinkedRefMap::Ptr &c2)
1806 {
1807 return qstricmp_sort(c1->name(),c2->name())<0;
1808 };
1809
1810 std::stable_sort(m_concepts.begin(), m_concepts.end(), conceptComp);
1811
1812 auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
1813 {
1814 return qstricmp_sort(n1->name(),n2->name())<0;
1815 };
1816
1817 std::stable_sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1818 }
1819}
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 749 of file filedef.cpp.

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

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void FileDefImpl::startMemberDocumentation ( OutputList & ol)
private

Definition at line 759 of file filedef.cpp.

760{
761 if (Config_getBool(SEPARATE_MEMBER_PAGES))
762 {
765 }
766}
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 168 of file filedef.cpp.

168{ return m_subGrouping; }

References m_subGrouping.

◆ title()

QCString FileDefImpl::title ( ) const
overridevirtual

Implements FileDef.

Definition at line 1885 of file filedef.cpp.

1886{
1887 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
1888 {
1889 return name();
1890 }
1891 else
1892 {
1894 }
1895}
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 789 of file filedef.cpp.

790{
791 // write Author section (Man only)
794 ol.startGroupHeader();
796 ol.endGroupHeader();
799}
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 546 of file filedef.cpp.

547{
549 {
550 auto parser { createDocParser() };
551 auto ast { validatingParseDoc(*parser.get(),
552 briefFile(),
553 briefLine(),
554 this,
555 nullptr,
557 DocOptions()
558 .setIndexWords(true)
559 .setSingleLine(true))
560 };
561 if (!ast->isEmpty())
562 {
563 ol.startParagraph();
566 ol.writeString(" - ");
568 ol.writeDoc(ast.get(),this,nullptr);
571 ol.writeString(" \n");
573
574 if (Config_getBool(REPEAT_BRIEF) ||
575 !documentation().stripWhiteSpace().isEmpty()
576 )
577 {
579 ol.startTextLink(QCString(),"details");
581 ol.endTextLink();
582 }
584 ol.endParagraph();
585 }
586 }
587 ol.writeSynopsis();
588}
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 724 of file filedef.cpp.

725{
726 // write list of classes
727 list.writeDeclaration(ol,nullptr,title,FALSE);
728}
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:1885

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

Referenced by writeDocumentation().

◆ writeClassesToTagFile()

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

Definition at line 590 of file filedef.cpp.

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

References convertToXML().

Referenced by writeTagFile().

◆ writeConcepts()

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

Definition at line 730 of file filedef.cpp.

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

References FALSE, m_concepts, and title().

Referenced by writeDocumentation().

◆ writeDetailedDescription()

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

Definition at line 474 of file filedef.cpp.

475{
477 {
480 ol.writeRuler();
484 ol.writeAnchor(QCString(),"details");
486 ol.startGroupHeader("details");
487 ol.parseText(title);
488 ol.endGroupHeader();
489
490 ol.startTextBlock();
491 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
492 {
494 briefLine(),
495 this,
496 nullptr,
498 DocOptions());
499 }
500 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
501 !documentation().isEmpty())
502 {
506 ol.enableAll();
509 ol.writeString("\n\n");
511 }
512 if (!documentation().isEmpty())
513 {
514 ol.generateDoc(docFile(),
515 docLine(),
516 this,
517 nullptr,
518 documentation()+"\n",
519 DocOptions()
520 .setIndexWords(true));
521 }
522 //printf("Writing source ref for file %s\n",qPrint(name()));
523 if (Config_getBool(SOURCE_BROWSER))
524 {
525 ol.startParagraph("definition");
526 QCString refText = theTranslator->trDefinedInSourceFile();
527 int fileMarkerPos = refText.find("@0");
528 if (fileMarkerPos!=-1) // should always pass this.
529 {
530 ol.parseText(refText.left(fileMarkerPos)); //text left from marker 1
531 ol.writeObjectLink(QCString(),getSourceFileBase(),QCString(),name());
532 ol.parseText(refText.right(
533 refText.length()-fileMarkerPos-2)); // text right from marker 2
534 }
535 else
536 {
537 err("translation error: invalid marker in trDefinedInSourceFile()\n");
538 }
539 ol.endParagraph();
540 }
542 ol.endTextBlock();
543 }
544}
QCString briefFile() const override
void writeRequirementRefs(OutputList &ol) const override
int docLine() const override
bool hasDetailedDescription() const override
Definition filedef.cpp:365
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 875 of file filedef.cpp.

876{
877 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
878 //funcList->countDecMembers();
879
880 //QCString fn = name();
881 //if (Config_getBool(FULL_PATH_NAMES))
882 //{
883 // fn.prepend(stripFromPath(getPath()));
884 //}
885
886 //printf("WriteDocumentation diskname=%s\n",qPrint(diskname));
887
888 QCString versionTitle;
889 if (!m_fileVersion.isEmpty())
890 {
891 versionTitle=" ("+m_fileVersion+")";
892 }
893 QCString title = m_docname+versionTitle;
894 QCString pageTitle;
895 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
896 {
897 pageTitle=m_docname;
898 }
899 else
900 {
902 }
903
904 if (getDirDef())
905 {
906 startFile(ol,getOutputFileBase(),false,name(),pageTitle,HighlightedItem::FileVisible,!generateTreeView);
907 if (!generateTreeView)
908 {
910 ol.endQuickIndices();
911 }
912 startTitle(ol,getOutputFileBase(),this);
915 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
916 {
917 ol.parseText(displayName()); // Html only
918 }
919 else
920 {
922 }
923 ol.enableAll();
925 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
926 {
927 ol.parseText(Config_getBool(FULL_PATH_NAMES) ? // other output formats
928 pageTitle :
929 name());
930 }
931 else
932 {
933 ol.parseText(Config_getBool(FULL_PATH_NAMES) ? // other output formats
934 pageTitle :
936 }
938 addGroupListToTitle(ol,this);
940 }
941 else
942 {
943 startFile(ol,getOutputFileBase(),false,name(),pageTitle,HighlightedItem::FileVisible,!generateTreeView);
944 if (!generateTreeView)
945 {
946 ol.endQuickIndices();
947 }
948 startTitle(ol,getOutputFileBase(),this);
949 ol.parseText(pageTitle);
950 addGroupListToTitle(ol,this);
952 }
953
954 ol.startContents();
955
956 if (!m_fileVersion.isEmpty())
957 {
960 ol.docify(versionTitle);
961 ol.endProjectNumber();
962 ol.enableAll();
963 }
964
965 //---------------------------------------- start flexible part -------------------------------
966
967 SrcLangExt lang = getLanguage();
968 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
969 {
970 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
971 switch (lde->kind())
972 {
973 case LayoutDocEntry::BriefDesc:
975 break;
976 case LayoutDocEntry::MemberDeclStart:
978 break;
979 case LayoutDocEntry::FileIncludes:
981 break;
982 case LayoutDocEntry::FileIncludeGraph:
984 break;
985 case LayoutDocEntry::FileIncludedByGraph:
987 break;
988 case LayoutDocEntry::FileSourceLink:
989 writeSourceLink(ol);
990 break;
991 case LayoutDocEntry::FileClasses:
992 if (ls) writeClassDeclarations(ol,ls->title(lang),m_classes);
993 break;
994 case LayoutDocEntry::FileInterfaces:
995 if (ls) writeClassDeclarations(ol,ls->title(lang),m_interfaces);
996 break;
997 case LayoutDocEntry::FileStructs:
998 if (ls) writeClassDeclarations(ol,ls->title(lang),m_structs);
999 break;
1000 case LayoutDocEntry::FileExceptions:
1001 if (ls) writeClassDeclarations(ol,ls->title(lang),m_exceptions);
1002 break;
1003 case LayoutDocEntry::FileConcepts:
1004 if (ls) writeConcepts(ol,ls->title(lang));
1005 break;
1006 case LayoutDocEntry::FileNamespaces:
1007 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),false);
1008 break;
1009 case LayoutDocEntry::FileConstantGroups:
1010 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),true);
1011 break;
1012 case LayoutDocEntry::MemberGroups:
1014 break;
1015 case LayoutDocEntry::MemberDecl:
1016 {
1017 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1018 if (lmd) writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
1019 }
1020 break;
1021 case LayoutDocEntry::MemberDeclEnd:
1023 break;
1024 case LayoutDocEntry::DetailedDesc:
1025 if (ls) writeDetailedDescription(ol,ls->title(lang));
1026 break;
1027 case LayoutDocEntry::MemberDefStart:
1029 break;
1030 case LayoutDocEntry::FileInlineClasses:
1032 break;
1033 case LayoutDocEntry::MemberDef:
1034 {
1035 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1036 if (lmd) writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1037 }
1038 break;
1039 case LayoutDocEntry::MemberDefEnd:
1041 break;
1042 case LayoutDocEntry::AuthorSection:
1044 break;
1045 case LayoutDocEntry::ClassIncludes:
1046 case LayoutDocEntry::ClassInheritanceGraph:
1047 case LayoutDocEntry::ClassNestedClasses:
1048 case LayoutDocEntry::ClassCollaborationGraph:
1049 case LayoutDocEntry::ClassAllMembersLink:
1050 case LayoutDocEntry::ClassUsedFiles:
1051 case LayoutDocEntry::ClassInlineClasses:
1052 case LayoutDocEntry::NamespaceNestedNamespaces:
1053 case LayoutDocEntry::NamespaceNestedConstantGroups:
1054 case LayoutDocEntry::NamespaceClasses:
1055 case LayoutDocEntry::NamespaceConcepts:
1056 case LayoutDocEntry::NamespaceInterfaces:
1057 case LayoutDocEntry::NamespaceStructs:
1058 case LayoutDocEntry::NamespaceExceptions:
1059 case LayoutDocEntry::NamespaceInlineClasses:
1060 case LayoutDocEntry::ConceptDefinition:
1061 case LayoutDocEntry::GroupClasses:
1062 case LayoutDocEntry::GroupConcepts:
1063 case LayoutDocEntry::GroupModules:
1064 case LayoutDocEntry::GroupInlineClasses:
1065 case LayoutDocEntry::GroupNamespaces:
1066 case LayoutDocEntry::GroupDirs:
1067 case LayoutDocEntry::GroupNestedGroups:
1068 case LayoutDocEntry::GroupFiles:
1069 case LayoutDocEntry::GroupGraph:
1070 case LayoutDocEntry::GroupPageDocs:
1071 case LayoutDocEntry::ModuleExports:
1072 case LayoutDocEntry::ModuleClasses:
1073 case LayoutDocEntry::ModuleConcepts:
1074 case LayoutDocEntry::ModuleUsedFiles:
1075 case LayoutDocEntry::DirSubDirs:
1076 case LayoutDocEntry::DirFiles:
1077 case LayoutDocEntry::DirGraph:
1078 err("Internal inconsistency: member '{}' should not be part of "
1079 "LayoutDocManager::File entry list\n",lde->entryToString());
1080 break;
1081 }
1082 }
1083
1084 //---------------------------------------- end flexible part -------------------------------
1085
1086 ol.endContents();
1087
1088 endFileWithNavPath(ol,this);
1089
1090 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1091 {
1092 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1093 if (ml) ml->sort();
1094 writeMemberPages(ol);
1095 }
1096}
virtual void writeNavigationPath(OutputList &ol) const =0
void writeBriefDescription(OutputList &ol)
Definition filedef.cpp:546
void writeSourceLink(OutputList &ol)
Definition filedef.cpp:702
void writeNamespaceDeclarations(OutputList &ol, const QCString &title, bool isConstantGroup)
Definition filedef.cpp:717
void writeClassDeclarations(OutputList &ol, const QCString &title, const ClassLinkedRefMap &list)
Definition filedef.cpp:724
void endMemberDeclarations(OutputList &ol)
Definition filedef.cpp:754
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const QCString &title)
Definition filedef.cpp:1833
void writeInlineClasses(OutputList &ol)
Definition filedef.cpp:736
void writeIncludeFiles(OutputList &ol)
Definition filedef.cpp:602
void writeDetailedDescription(OutputList &ol, const QCString &title)
Definition filedef.cpp:474
void writeMemberPages(OutputList &ol) override
Definition filedef.cpp:1098
void writeConcepts(OutputList &ol, const QCString &title)
Definition filedef.cpp:730
void writeIncludedByGraph(OutputList &ol)
Definition filedef.cpp:676
void writeAuthorSection(OutputList &ol)
Definition filedef.cpp:789
DirDef * getDirDef() const override
Definition filedef.cpp:152
QCString displayName(bool=TRUE) const override
Definition filedef.cpp:133
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title)
Definition filedef.cpp:1851
void writeIncludeGraph(OutputList &ol)
Definition filedef.cpp:651
void startMemberDocumentation(OutputList &ol)
Definition filedef.cpp:759
void startMemberDeclarations(OutputList &ol)
Definition filedef.cpp:749
void endMemberDocumentation(OutputList &ol)
Definition filedef.cpp:768
void writeMemberGroups(OutputList &ol)
Definition filedef.cpp:777
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:384
void endTitle(OutputList &ol, const QCString &fileName, const QCString &name)
Definition index.cpp:394
void startFile(OutputList &ol, const QCString &name, bool isSource, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName, int hierarchyLevel, const QCString &allMembersFile)
Definition index.cpp:401
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
Definition index.cpp:448
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:4892

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

677{
678 if (Config_getBool(HAVE_DOT) && m_hasIncludedByGraph /*&& Config_getBool(INCLUDED_BY_GRAPH)*/)
679 {
680 //printf("Graph for file %s\n",qPrint(name()));
681 DotInclDepGraph incDepGraph(this,TRUE);
682 if (incDepGraph.isTooBig())
683 {
684 warn_uncond("Included by graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
685 qPrint(name()), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
686 }
687 else if (!incDepGraph.isTrivial())
688 {
689 ol.startTextBlock();
693 ol.endInclDepGraph(incDepGraph);
694 ol.enableAll();
695 ol.endTextBlock(TRUE);
696 }
697 //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
698 }
699}
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 602 of file filedef.cpp.

603{
604 if (!m_includeList.empty())
605 {
607 for (const auto &ii : m_includeList)
608 {
609 const FileDef *fd=ii.fileDef;
610 ol.startTypewriter();
611 SrcLangExt lang = fd ? fd->getLanguage() : SrcLangExt::Cpp;
612 ol.docify(::includeStatement(lang,ii.kind));
613 ol.docify(::includeOpen(lang,ii.kind));
615 ol.docify(ii.includeName);
616 ol.enableAll();
618
619 // Here we use the include file name as it appears in the file.
620 // we could also we the name as it is used within doxygen,
621 // then we should have used fd->docName() instead of ii->includeName
622 if (fd && fd->isLinkable())
623 {
626 QCString(),ii.includeName);
627 }
628 else
629 {
630 ModuleDef *mod = ModuleManager::instance().getPrimaryInterface(ii.includeName);
631 if (ii.kind==IncludeKind::ImportModule && mod && mod->isLinkable())
632 {
634 QCString(),ii.includeName);
635 }
636 else
637 {
638 ol.docify(ii.includeName);
639 }
640 }
641
642 ol.enableAll();
643 ol.docify(::includeClose(lang,ii.kind));
644 ol.endTypewriter();
645 ol.lineBreak();
646 }
647 ol.endTextBlock();
648 }
649}
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:86
QCString includeStatement(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:56
QCString includeOpen(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:73
@ 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 651 of file filedef.cpp.

652{
653 if (Config_getBool(HAVE_DOT) && m_hasIncludeGraph /*&& Config_getBool(INCLUDE_GRAPH)*/)
654 {
655 //printf("Graph for file %s\n",qPrint(name()));
656 DotInclDepGraph incDepGraph(this,FALSE);
657 if (incDepGraph.isTooBig())
658 {
659 warn_uncond("Include graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
660 qPrint(name()), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
661 }
662 else if (!incDepGraph.isTrivial())
663 {
664 ol.startTextBlock();
668 ol.endInclDepGraph(incDepGraph);
669 ol.enableAll();
670 ol.endTextBlock(TRUE);
671 }
672 //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
673 }
674}
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 736 of file filedef.cpp.

737{
738 // temporarily undo the disabling could be done by startMemberDocumentation()
739 // as a result of setting SEPARATE_MEMBER_PAGES to YES; see bug730512
740 bool isEnabled = ol.isEnabled(OutputType::Html);
742
743 m_classes.writeDocumentation(ol,this);
744
745 // restore the initial state if needed
746 if (!isEnabled) ol.disable(OutputType::Html);
747}
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 1833 of file filedef.cpp.

1834{
1835 bool optVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
1836 MemberList * ml = getMemberList(lt);
1837 if (ml)
1838 {
1839 if (optVhdl) // use specific declarations function
1840 {
1841
1842 VhdlDocGen::writeVhdlDeclarations(ml,ol,nullptr,nullptr,this,nullptr,nullptr);
1843 }
1844 else
1845 {
1846 ml->writeDeclarations(ol,nullptr,nullptr,this,nullptr,nullptr,title,QCString());
1847 }
1848 }
1849}
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 1851 of file filedef.cpp.

1852{
1853 MemberList * ml = getMemberList(lt);
1854 if (ml) ml->writeDocumentation(ol,name(),this,title,ml->listType().toLabel());
1855}
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 777 of file filedef.cpp.

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

References m_memberGroups, and m_subGrouping.

Referenced by writeDocumentation().

◆ writeMemberPages()

void FileDefImpl::writeMemberPages ( OutputList & ol)
overridevirtual

Implements FileDef.

Definition at line 1098 of file filedef.cpp.

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

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

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

References m_namespaces, and title().

Referenced by writeDocumentation().

◆ writePageNavigation()

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

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 867 of file filedef.cpp.

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

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

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

◆ writeSourceBody()

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

Implements FileDef.

Definition at line 1211 of file filedef.cpp.

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

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

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

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

1159{
1160 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1161 QCString title = m_docname;
1162 if (!m_fileVersion.isEmpty())
1163 {
1164 title+=" ("+m_fileVersion+")";
1165 }
1166 QCString pageTitle = theTranslator->trSourceFile(title);
1168
1169 bool isDocFile = isDocumentationFile();
1170 bool genSourceFile = !isDocFile && generateSourceFile();
1171 if (getDirDef())
1172 {
1173 startFile(ol,getSourceFileBase(),true,QCString(),pageTitle,HighlightedItem::FileVisible,
1174 !generateTreeView,
1175 !isDocFile && genSourceFile ? QCString() : getOutputFileBase(),
1176 0);
1177 if (!generateTreeView)
1178 {
1180 ol.endQuickIndices();
1181 }
1183 ol.parseText(name());
1185 }
1186 else
1187 {
1188 startFile(ol,getSourceFileBase(),true,QCString(),pageTitle,HighlightedItem::FileVisible,false,
1189 !isDocFile && genSourceFile ? QCString() : getOutputFileBase(),
1190 0);
1192 ol.parseText(title);
1193 endTitle(ol,getSourceFileBase(),QCString());
1194 }
1195
1196 ol.startContents();
1197
1198 if (isLinkable())
1199 {
1200 ol.startTextLink(getOutputFileBase(),QCString());
1202 ol.endTextLink();
1203
1204 ol.pushGeneratorState();
1206 ol.writeString("\\par\n");
1207 ol.popGeneratorState();
1208 }
1209}
bool generateSourceFile() const override
Definition filedef.cpp:1609
bool isLinkable() const override
Definition filedef.cpp:150
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 702 of file filedef.cpp.

703{
704 //printf("%s: generateSourceFile()=%d\n",qPrint(name()),generateSourceFile());
705 if (generateSourceFile())
706 {
708 ol.startParagraph();
709 ol.startTextLink(includeName(),QCString());
711 ol.endTextLink();
712 ol.endParagraph();
713 ol.enableAll();
714 }
715}
QCString includeName() const override
Definition filedef.cpp:1751
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 801 of file filedef.cpp.

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

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

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

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

◆ m_docname

QCString FileDefImpl::m_docname
private

Definition at line 249 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 248 of file filedef.cpp.

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

◆ m_filePath

QCString FileDefImpl::m_filePath
private

Definition at line 244 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 266 of file filedef.cpp.

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

◆ m_hasIncludeGraph

bool FileDefImpl::m_hasIncludeGraph = Config_getBool(INCLUDE_GRAPH)
private

Definition at line 265 of file filedef.cpp.

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

◆ m_inclByDepFileName

QCString FileDefImpl::m_inclByDepFileName
private

Definition at line 246 of file filedef.cpp.

Referenced by includedByDependencyGraphFileName(), and setDiskNameLocal().

◆ m_inclDepFileName

QCString FileDefImpl::m_inclDepFileName
private

Definition at line 245 of file filedef.cpp.

Referenced by includeDependencyGraphFileName(), and setDiskNameLocal().

◆ m_includedByList

IncludeInfoList FileDefImpl::m_includedByList
private

Definition at line 240 of file filedef.cpp.

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

◆ m_includedByMap

IncludeInfoMap FileDefImpl::m_includedByMap
private

Definition at line 239 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 237 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 252 of file filedef.cpp.

Referenced by FileDefImpl(), and isSource().

◆ m_memberGroups

◆ m_memberLists

◆ m_moduleDef

ModuleDef* FileDefImpl::m_moduleDef = nullptr
private

Definition at line 255 of file filedef.cpp.

Referenced by getModuleDef(), and setModuleDef().

◆ m_namespaces

◆ m_outputDiskName

QCString FileDefImpl::m_outputDiskName
private

Definition at line 247 of file filedef.cpp.

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

◆ m_path

QCString FileDefImpl::m_path
private

Definition at line 243 of file filedef.cpp.

Referenced by FileDefImpl(), and getPath().

◆ m_srcDefMap

DefinitionLineMap FileDefImpl::m_srcDefMap
private

Definition at line 250 of file filedef.cpp.

Referenced by addSourceRef(), and getSourceDefinition().

◆ m_srcMemberMap

MemberDefLineMap FileDefImpl::m_srcMemberMap
private

Definition at line 251 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 264 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: